001: /*
002: * Copyright 2001 Sun Microsystems, Inc. All rights reserved.
003: * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to license terms.
004: */
005: package com.sun.portal.desktop.taglib.container.table;
006:
007: import javax.servlet.jsp.JspException;
008: import javax.servlet.http.HttpServletRequest;
009: import java.util.Map;
010: import java.util.Hashtable;
011: import java.util.Collections;
012:
013: import com.sun.portal.desktop.taglib.BaseDesktopTagSupport;
014: import com.sun.portal.desktop.taglib.DesktopTaglibConstants;
015: import com.sun.portal.desktop.taglib.DesktopTaglibException;
016:
017: import com.sun.portal.providers.ProviderException;
018: import com.sun.portal.providers.Provider;
019: import com.sun.portal.providers.containers.jsp.table.JSPTableContainerProvider;
020: import com.sun.portal.providers.context.ProviderContext;
021: import com.sun.portal.providers.context.ContainerProviderContext;
022: import com.sun.portal.providers.context.Theme;
023: import com.sun.portal.providers.util.ProviderProperties;
024: import com.sun.portal.providers.util.PropertyUtil;
025: import com.sun.portal.providers.util.ProviderCommands;
026:
027: public class GetProviderCommandTag extends BaseTableContainerTagSupport {
028: public int doStartTag() throws JspException {
029: JSPTableContainerProvider tcp = (JSPTableContainerProvider) getContainer();
030: ContainerProviderContext cpc = null;
031: Provider p = getProvider();
032:
033: if (p == null) {
034: throw new DesktopTaglibException(
035: DesktopTaglibException.INVALID_TAG_SEQUENCE,
036: "ProviderCommand");
037: }
038: Hashtable result = null;
039:
040: try {
041: cpc = tcp.getContainerProviderContext();
042: String desktopURL = getDesktopURLFromCache(cpc);
043: String sContext = getStaticContentPathFromCache(cpc);
044:
045: Map channelsIsDetachable = getMapProperty(
046: _ChannelsIsDetachable,
047: ProviderProperties.CHANNELS_IS_DETACHABLE);
048: Map channelsIsDetached = getMapProperty(
049: _ChannelsIsDetached,
050: ProviderProperties.CHANNELS_IS_DETACHED);
051: Map channelsIsMinimizable = getMapProperty(
052: _ChannelsIsMinimizable,
053: ProviderProperties.CHANNELS_IS_MINIMIZABLE);
054: Map channelsIsMinimized = getMapProperty(
055: _ChannelsIsMinimized,
056: ProviderProperties.CHANNELS_IS_MINIMIZED);
057: String maximizedChannel = "";
058: Map channelsIsMaximizable = Collections.EMPTY_MAP;
059: boolean dIsMaximizable = false;
060: if (cpc.getProviderVersion(tcp.getName()) > 1) {
061: channelsIsMaximizable = getMapProperty(
062: _ChannelsIsMaximizable,
063: ProviderProperties.CHANNELS_IS_MAXIMIZABLE);
064: maximizedChannel = getStringProperty(_MaximizedChannel,
065: ProviderProperties.MAXIMIZED_CHANNEL);
066: dIsMaximizable = getBooleanProperty(
067: _dChannelsIsMaximizable,
068: ProviderProperties.DEFAULT_CHANNEL_IS_MAXIMIZABLE);
069: }
070: Map channelsIsRemovable = getMapProperty(
071: _ChannelsIsRemovable,
072: ProviderProperties.CHANNELS_IS_REMOVABLE);
073:
074: boolean dIsMinimizable = getBooleanProperty(
075: _dChannelsIsMinimizable,
076: ProviderProperties.DEFAULT_CHANNEL_IS_MINIMIZABLE);
077: boolean dIsMinimized = getBooleanProperty(
078: _dChannelsIsMinimized,
079: ProviderProperties.DEFAULT_CHANNEL_IS_MINIMIZED);
080: boolean dIsDetached = getBooleanProperty(
081: _dChannelsIsDetached,
082: ProviderProperties.DEFAULT_CHANNEL_IS_DETACHED);
083: boolean dIsDetachable = getBooleanProperty(
084: _dChannelsIsDetachable,
085: ProviderProperties.DEFAULT_CHANNEL_IS_DETACHABLE);
086: boolean dIsRemovable = getBooleanProperty(
087: _dChannelsIsRemovable,
088: ProviderProperties.DEFAULT_CHANNEL_IS_REMOVABLE);
089:
090: Map themeMap = Theme.getMap(tcp.getName(), cpc, Theme
091: .getSelectedName(tcp.getName(), cpc));
092: String normalizeImage = (String) themeMap
093: .get(ProviderProperties.NORMALIZE_IMAGE);
094: String maximizeImage = (String) themeMap
095: .get(ProviderProperties.MAXIMIZE_IMAGE);
096: String minimizeImage = (String) themeMap
097: .get(ProviderProperties.MINIMIZE_IMAGE);
098: String helpImage = (String) themeMap
099: .get(ProviderProperties.HELP_IMAGE);
100: String editImage = (String) themeMap
101: .get(ProviderProperties.EDIT_IMAGE);
102: String removeImage = (String) themeMap
103: .get(ProviderProperties.REMOVE_IMAGE);
104: String attachImage = (String) themeMap
105: .get(ProviderProperties.ATTACH_IMAGE);
106: String detachImage = (String) themeMap
107: .get(ProviderProperties.DETACH_IMAGE);
108:
109: result = ProviderCommands.getProviderCommands(p, tcp
110: .getName(), cpc, (HttpServletRequest) pageContext
111: .getRequest(), tcp.getResourceBundle(), desktopURL,
112: sContext, channelsIsDetachable, channelsIsDetached,
113: channelsIsMinimizable, channelsIsMaximizable,
114: maximizedChannel, channelsIsMinimized,
115: channelsIsRemovable, dIsDetachable, dIsDetached,
116: dIsMinimizable, dIsMaximizable, dIsMinimized,
117: dIsRemovable, normalizeImage, maximizeImage,
118: minimizeImage, helpImage, editImage, removeImage,
119: attachImage, detachImage);
120: } catch (Throwable pe) {
121: //throw new DesktopTaglibException( pe );
122: processException(new DesktopTaglibException(pe),
123: new Hashtable());
124:
125: return SKIP_BODY;
126: }
127:
128: processResult(result);
129: return SKIP_BODY;
130: }
131:
132: private String getDesktopURLFromCache(ProviderContext pc)
133: throws ProviderException {
134: String desktopURL = (String) getCachedObj(_desktopURL);
135: if (desktopURL == null) {
136: desktopURL = pc
137: .getDesktopURL((HttpServletRequest) pageContext
138: .getRequest());
139: cacheObj(_desktopURL, desktopURL);
140: }
141:
142: return desktopURL;
143: }
144:
145: private String getStaticContentPathFromCache(ProviderContext pc)
146: throws ProviderException {
147: String sContext = (String) getCachedObj(_sContext);
148: if (sContext == null) {
149: sContext = pc.getStaticContentPath();
150: cacheObj(_sContext, sContext);
151: }
152: return sContext;
153: }
154:
155: }
|