001: /* Copyright 2004 The JA-SIG Collaborative. All rights reserved.
002: * See license distributed with this file and
003: * available online at http://www.uportal.org/license.html
004: */
005:
006: package org.jasig.portal.container.services.information;
007:
008: import java.util.HashSet;
009: import java.util.Iterator;
010: import java.util.Set;
011: import java.util.Collection;
012:
013: import javax.portlet.PortletMode;
014: import javax.portlet.WindowState;
015:
016: import org.apache.pluto.om.window.PortletWindow;
017: import org.apache.pluto.services.information.DynamicInformationProvider;
018: import org.apache.pluto.services.information.InformationProviderAccess;
019: import org.apache.pluto.services.information.StaticInformationProvider;
020: import org.apache.pluto.services.information.PortletActionProvider;
021: import org.apache.pluto.services.information.PortletURLProvider;
022: import org.apache.pluto.services.information.ResourceURLProvider;
023:
024: /**
025: * Implementation of Apache Pluto DynamicInformationProvider.
026: * @author Michael Ivanov, mvi@immagic.com
027: * @version $Revision: 35428 $
028: */
029: public class DynamicInformationProviderImpl implements
030: DynamicInformationProvider {
031:
032: private static StaticInformationProvider staticInfoProvider;
033:
034: public DynamicInformationProviderImpl() {
035: if (staticInfoProvider == null)
036: staticInfoProvider = InformationProviderAccess
037: .getStaticProvider();
038: }
039:
040: // DynamicInformationProvider methods
041:
042: public String getResponseContentType() {
043: return "text/html";
044: }
045:
046: public Iterator getResponseContentTypes() {
047: Set responseMimeTypes = new HashSet(1); // number of known mime types
048: responseMimeTypes.add(getResponseContentType());
049: return responseMimeTypes.iterator();
050: }
051:
052: public PortletStateManager getPortletStateManager(
053: PortletWindow portletWindow) {
054: return new PortletStateManager(portletWindow);
055: }
056:
057: public PortletURLProvider getPortletURLProvider(
058: PortletWindow portletWindow) {
059: return new PortletURLProviderImpl(portletWindow);
060: }
061:
062: public ResourceURLProvider getResourceURLProvider(
063: PortletWindow portletWindow) {
064: return new ResourceURLProviderImpl(portletWindow);
065: }
066:
067: public PortletActionProvider getPortletActionProvider(
068: PortletWindow portletWindow) {
069: return new PortletActionProviderImpl(portletWindow);
070: }
071:
072: public PortletMode getPortletMode(PortletWindow portletWindow) {
073: return PortletStateManager.getMode(portletWindow);
074: }
075:
076: public PortletMode getPreviousPortletMode(
077: PortletWindow portletWindow) {
078: return PortletStateManager.getPrevMode(portletWindow);
079: }
080:
081: public WindowState getWindowState(PortletWindow portletWindow) {
082: return PortletStateManager.getState(portletWindow);
083: }
084:
085: public WindowState getPreviousWindowState(
086: PortletWindow portletWindow) {
087: return PortletStateManager.getPrevState(portletWindow);
088: }
089:
090: public boolean isPortletModeAllowed(PortletMode mode) {
091: Collection supportedModes = staticInfoProvider
092: .getPortalContextProvider().getSupportedPortletModes();
093: return supportedModes.contains(mode);
094: }
095:
096: public boolean isWindowStateAllowed(WindowState state) {
097: Collection supportedStates = staticInfoProvider
098: .getPortalContextProvider().getSupportedWindowStates();
099: return supportedStates.contains(state);
100: }
101:
102: }
|