001: /*
002: * (C) Copyright 2000 - 2006 Nabh Information Systems, Inc.
003: *
004: * This program is free software; you can redistribute it and/or
005: * modify it under the terms of the GNU General Public License
006: * as published by the Free Software Foundation; either version 2
007: * of the License, or (at your option) any later version.
008: *
009: * This program is distributed in the hope that it will be useful,
010: * but WITHOUT ANY WARRANTY; without even the implied warranty of
011: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
012: * GNU General Public License for more details.
013: *
014: * You should have received a copy of the GNU General Public License
015: * along with this program; if not, write to the Free Software
016: * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
017: *
018: */
019: package com.nabhinc.portal.model;
020:
021: import java.io.IOException;
022: import java.util.List;
023:
024: import javax.servlet.ServletContext;
025: import javax.servlet.ServletException;
026: import javax.servlet.http.HttpServletRequest;
027: import javax.servlet.http.HttpServletResponse;
028:
029: /**
030: *
031: *
032: * @author Padmanabh Dabke
033: * (c) 2006 Nabh Information Systems, Inc. All Rights Reserved.
034: */
035: public interface Renderable {
036:
037: /**
038: * Get the portal page this renderable belongs to.
039: * @return Top level portal page that contains this renderable.
040: */
041: PortalPage getPortalPage();
042:
043: /**
044: * Set the portal page this renderable belongs to.
045: * @param p PortalPage this Renderable belongs to.
046: */
047: void setPortalPage(PortalPage p);
048:
049: /**
050: * Supplies the portal application prefix so that the renderables can
051: * generate global id.
052: * @param prefix
053: */
054: void setIdPrefix(String prefix);
055:
056: /**
057: * Get numeric ID that is unique within a portal application
058: */
059: int getNumericId();
060:
061: /**
062: * Get a token that uniquely identifies this renderable within the user config.
063: */
064: String getId();
065:
066: /**
067: * Get the renderable refresh period in seconds.
068: * @return Refresh period in seconds.
069: */
070: int getRefreshSeconds();
071:
072: /**
073: * Set renderable refresh period
074: * @param sec Refresh period in seconds
075: */
076: void setRefreshSeconds(int sec);
077:
078: /**
079: * Remove portlet window if this renderable contains it.
080: * Returns true if it contains the window.
081: */
082: boolean removePortletWindow(PortletWindow pWindow);
083:
084: /**
085: * Get template name
086: * @return Relative template path
087: */
088: String getTemplate();
089:
090: /**
091: * Set template name
092: * @param template
093: */
094: void setTemplate(String template);
095:
096: /**
097: * Computed path to the template after checking existence of app-theme specific,
098: * app-specific, theme-specific template. If none is found, it falls back to
099: * files in templates directory.
100: */
101: String getTemplatePath();
102:
103: /**
104: * Computes path to the template after checking existence of app-theme specific,
105: * app-specific, theme-specific template. If none is found, it falls back to
106: * files in templates directory.
107: * @param servletContext
108: * @param appName
109: * @param appId
110: * @param theme
111: */
112: void computeTemplatePath(ServletContext servletContext,
113: String appPath, String theme);
114:
115: /**
116: * Is renderable title displayed?
117: */
118: boolean isTitleShown();
119:
120: /**
121: * Flag indicating if the renderable title is displayed.
122: */
123: void setTitleShown(boolean flag);
124:
125: /**
126: * Get renderable border width
127: */
128: int getBorderWidth();
129:
130: /**
131: * Set renderable border width
132: */
133: void setBorderWidth(int bWidth);
134:
135: /**
136: * Render yourself
137: */
138: void render(HttpServletRequest request, HttpServletResponse response)
139: throws ServletException, IOException;
140:
141: /**
142: * Set template for rendering individual portlets contained in this
143: * renderable. No-op for NavigationLayout classes.
144: * @param template Portlet template
145: */
146: // void setPortletTemplate(String template);
147: /**
148: * Returns content to be displayed below the main menu bar of a portal page.
149: * Most layouts return a spacer div. Horizontal menu layout returns an empty
150: * string since it does not want a gap between the main menu and the sub-menu.
151: * Cascading menu layout returns a nested list of menu options.
152: * @return Content to be displayed below the main menu bar.
153: */
154: String getContentBelowMainMenu();
155:
156: /**
157: * Add portlet windows in this renderable to the list.
158: * @param windowList
159: */
160: void addPortletWindows(List<PortletWindow> windowList);
161: }
|