// set the title, so the header JSP page can use it when rendering
portletInfo.setTitle(title);
DynamicInformationProvider provider = FactoryAccess.getDynamicProvider(request);
ContentType supported = portletDefinition.getContentTypeSet().get(wrappedResponse.getContentType());
PortalContextProvider portalContextProvider = FactoryAccess.getStaticProvider().getPortalContextProvider();
// get the list of modes this Portlet supports
if (supported != null && portalContextProvider != null) {
// if portlet supports portlet modes
Iterator modes = supported.getPortletModes();
while (modes.hasNext()) {
PortletMode mode = (PortletMode) modes.next();
// check whether portal also supports portlet mode
boolean portalSupport = false;
Iterator portalSupportedModes = portalContextProvider.getSupportedPortletModes().iterator();
while (portalSupportedModes.hasNext()) {
PortletMode portalSupportedMode = (PortletMode) portalSupportedModes.next();
if (mode.equals(portalSupportedMode)) {
portalSupport = true;
break;
}
}
// create links for portlet modes in portlet header
if (portalSupport) {
env = (PortalEnvironment) request.getAttribute(PortalEnvironment.REQUEST_PORTALENV);
PortalURL modeURL = env.getRequestedPortalURL();
PortalControlParameter control = new PortalControlParameter(modeURL);
PortletMode currentMode = control.getMode(portletWindow);
control.setMode(portletWindow, mode);
portletInfo.addPortletMode(mode, modeURL.toString(control, new Boolean(request.isSecure())), mode.equals(currentMode));
}
}
// get the list of window states this Portlet supports
Iterator states = portalContextProvider.getSupportedWindowStates().iterator();
while (states.hasNext()) {
WindowState state = (WindowState) states.next();
env = (PortalEnvironment) request.getAttribute(PortalEnvironment.REQUEST_PORTALENV);
PortalURL stateURL = env.getRequestedPortalURL();
PortalControlParameter control = new PortalControlParameter(stateURL);