1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.jsr286.pluto;
35
36 import fr.paris.lutece.portal.service.util.AppPropertiesService;
37
38 import java.util.ArrayList;
39 import java.util.Enumeration;
40 import java.util.Iterator;
41 import java.util.List;
42
43 import javax.portlet.PortletMode;
44 import javax.portlet.WindowState;
45
46 import javax.servlet.http.HttpServletRequest;
47 import javax.servlet.http.HttpServletResponse;
48
49 import org.apache.pluto.container.PortletURLProvider;
50 import org.apache.pluto.container.PortletWindowID;
51 import org.apache.pluto.container.om.portlet.PortletDefinition;
52 import org.apache.pluto.driver.core.PortletWindowImpl;
53 import org.apache.pluto.driver.services.container.PortletURLProviderImpl;
54 import org.apache.pluto.driver.url.PortalURL;
55 import org.apache.pluto.driver.url.PortalURLParser;
56 import org.apache.pluto.driver.url.impl.PortalURLParserImpl;
57 import org.apache.pluto.driver.url.impl.RelativePortalURLImpl;
58
59
60
61
62
63 public class Buttons
64 {
65 private static final String PROPERTIES_MODE_PREFIX = "portlet.jsr286.mode.";
66 private static final String PROPERTIES_STATE_PREFIX = "portlet.jsr286.state.";
67 private static final String PROPERTIES_IMAGE_SUFFIX = ".image";
68 private final List _listModes;
69 private final List _listStates;
70
71
72
73
74 Buttons( )
75 {
76 _listModes = new ArrayList( );
77 _listStates = new ArrayList( );
78 }
79
80
81
82
83
84
85
86
87
88 void init( HttpServletRequest request, HttpServletResponse response, PortletDefinition portletDef,
89 PortletWindowImpl portletWindow )
90 {
91 PortletWindowID portletID = portletWindow.getId( );
92
93 ArrayList listModes = new ArrayList( );
94
95 String strMimeType = "text/html";
96
97
98
99
100 String contextPath = request.getContextPath();
101 String servletName = request.getServletPath();
102 PortalURL portalURL = PortalURLParserImpl.getParser().parse(request);
103 Enumeration<String> paramNames = request.getParameterNames();
104 while(paramNames.hasMoreElements())
105 {
106 String paramName = paramNames.nextElement();
107 portalURL.getPrivateRenderParameters().put(paramName, request.getParameterValues(paramName));
108 }
109 PortletURLProviderImpl portletURLProvider = new PortletURLProviderImpl(portalURL, PortletURLProvider.TYPE.RENDER, portletWindow);
110 String strHelpRenderURL = null;
111
112
113 for ( Iterator itModes = portletDef.getSupports(strMimeType).getPortletModes().iterator(); itModes.hasNext( ); )
114 {
115 listModes.add( itModes.next( ) );
116 }
117
118 for ( Iterator itModesStr = listModes.iterator( ); itModesStr.hasNext( ); )
119 {
120
121 PortletMode mode = new PortletMode( (String)itModesStr.next( ) );
122
123 if ( !portletWindow.getPortletMode( ).equals( mode ) )
124 {
125 portletURLProvider.setPortletMode(mode);
126 strHelpRenderURL = portletURLProvider.toURL();
127 String strHelpImagePath = AppPropertiesService.getProperty( PROPERTIES_MODE_PREFIX + mode +
128 PROPERTIES_IMAGE_SUFFIX );
129
130 _listModes.add( new Button( strHelpRenderURL, strHelpImagePath ) );
131 }
132 }
133 portletURLProvider = new PortletURLProviderImpl(portalURL, PortletURLProvider.TYPE.RENDER, portletWindow);
134 portletURLProvider.setPortletMode(portletWindow.getPortletMode());
135 if ( !WindowState.MINIMIZED.equals( portletWindow.getWindowState( ) ) )
136 {
137 portletURLProvider.setWindowState(WindowState.MINIMIZED);
138 strHelpRenderURL = portletURLProvider.toURL();
139 String strHelpImagePath = AppPropertiesService.getProperty( PROPERTIES_STATE_PREFIX +
140 WindowState.MINIMIZED + PROPERTIES_IMAGE_SUFFIX );
141
142 _listStates.add( new Button( strHelpRenderURL, strHelpImagePath ) );
143 }
144
145
146 if ( !WindowState.NORMAL.equals( portletWindow.getWindowState( ) ) )
147 {
148 portletURLProvider.setWindowState(WindowState.NORMAL);
149 strHelpRenderURL = portletURLProvider.toURL();
150 String strHelpImagePath = AppPropertiesService.getProperty( PROPERTIES_STATE_PREFIX + WindowState.NORMAL +
151 PROPERTIES_IMAGE_SUFFIX );
152
153 _listStates.add( new Button( strHelpRenderURL, strHelpImagePath ) );
154 }
155
156 if ( !WindowState.MAXIMIZED.equals( portletWindow.getWindowState( ) ) )
157 {
158 portletURLProvider.setWindowState(WindowState.MAXIMIZED);
159 strHelpRenderURL = portletURLProvider.toURL();
160 String strHelpImagePath = AppPropertiesService.getProperty( PROPERTIES_STATE_PREFIX +
161 WindowState.MAXIMIZED + PROPERTIES_IMAGE_SUFFIX );
162
163 _listStates.add( new Button( strHelpRenderURL, strHelpImagePath ) );
164 }
165 }
166
167
168
169
170
171
172 public Iterator modes( )
173 {
174 return _listModes.iterator( );
175 }
176
177
178
179
180
181
182 public Iterator states( )
183 {
184 return _listStates.iterator( );
185 }
186 }