portlettab.java
来自「GridSphere 门户 提供一个基于 portlet 的高级开放源代码门户。」· Java 代码 · 共 322 行
JAVA
322 行
/* * @author <a href="mailto:novotny@gridsphere.org">Jason Novotny</a> * @version $Id: PortletTab.java 5032 2006-08-17 18:15:06Z novotny $ */package org.gridsphere.layout;import org.gridsphere.layout.event.PortletTabEvent;import org.gridsphere.layout.event.impl.PortletTabEventImpl;import org.gridsphere.portlet.service.spi.impl.descriptor.Description;import org.gridsphere.portletcontainer.GridSphereEvent;import javax.portlet.PortletRequest;import javax.portlet.PortletURL;import javax.portlet.RenderResponse;import java.io.Serializable;import java.util.*;/** * A <code>PortletTab</code> represents the visual tab graphical interface and is contained * by a {@link PortletTabbedPane}. A tab contains a title and any additional * portlet component, such as another tabbed pane if a double level * tabbed pane is desired. */public class PortletTab extends BasePortletComponent implements Serializable, Cloneable, Comparator { public static final int DEFAULT_USERTAB_ORDER = 20; private List<Description> titles = new ArrayList<Description>(); private transient boolean selected = false; private String url = null; private PortletComponent portletComponent = null; private int tabOrder = 50; private String align = "left"; private boolean outline = true; private String padding = null; //protected StringBuffer tab = new StringBuffer(); /** * Constructs an instance of PortletTab */ public PortletTab() { } /** * Constructs an instance of PortletTab with the supplied title and * portlet component. * * @param titles the titles of the portlet tab * @param portletComponent any portlet component to represent beneath the tab */ public PortletTab(List<Description> titles, PortletComponent portletComponent) { this.titles = titles; this.portletComponent = portletComponent; } public String getAlign() { return align; } public void setAlign(String align) { this.align = align; } public boolean getOutline() { return outline; } public void setOutline(boolean outline) { this.outline = outline; } public String getPadding() { return padding; } public void setPadding(String padding) { this.padding = padding; } public int getTabOrder() { return tabOrder; } public void setTabOrder(int tabOrder) { this.tabOrder = tabOrder; } public void setUrl(String url) { this.url = url; } public String getUrl() { return url; } /** * Returns the portlet tab title * * @return the portlet tab title */ public List<Description> getTitles() { return titles; } /** * Sets the portlet tab title * * @param titles the portlet tab title */ public void setTitles(List<Description> titles) { this.titles = titles; } public String getTitle(String lang) { if (lang == null) throw new IllegalArgumentException("lang is NULL"); Iterator it = titles.iterator(); String defTitle = null; while (it.hasNext()) { Description t = (Description) it.next(); if (t.getLang() == null) t.setLang(Locale.ENGLISH.getLanguage()); if (lang.equals(t.getLang())) return t.getText(); if (t.getLang().regionMatches(0, lang, 0, 2)) return t.getText(); if (t.getLang().equals(Locale.ENGLISH.getLanguage())) defTitle = t.getText(); } return defTitle; } public void setTitle(String lang, String title) { Iterator it = titles.iterator(); boolean found = false; if (lang == null) throw new IllegalArgumentException("lang is NULL"); if (title == null) throw new IllegalArgumentException("title is NULL"); while (it.hasNext()) { Description t = (Description) it.next(); if (lang.equalsIgnoreCase(t.getLang())) { found = true; t.setText(title); } } if (!found) { Description t = new Description(); t.setLang(lang); t.setText(title); titles.add(t); } } /** * Creates the portlet tab title links that are rendered by the * {@link PortletTabbedPane} * * @param event the gridsphere event * @return the tab title hyperlink */ public String createTabTitleLink(GridSphereEvent event) { super.doRender(event); if (url != null) return url; RenderResponse res = event.getRenderResponse(); PortletURL portletURL = res.createRenderURL(); return portletURL.toString(); } /** * Sets the selected flag used in determining if this tab is selected and * should be rendered * * @param selected the selected flag is true if this tag is currently selected */ public void setSelected(boolean selected) { this.selected = selected; } /** * Returns the selected flag used in determining if this tab is selected and * hence rendered * * @return true if the tab is selected, false otherwise */ public boolean isSelected() { return selected; } /** * Sets the concrete portlet component contained by the portlet tab * * @param portletComponent a concrete portlet component instance */ public void setPortletComponent(PortletComponent portletComponent) { this.portletComponent = portletComponent; } /** * Returns the concrete portlet component contained by the portlet tab * * @return the concrete portlet component instance conatined by this tab */ public PortletComponent getPortletComponent() { return portletComponent; } public void removePortletComponent() { this.portletComponent = null; } /** * Initializes the portlet tab. Since the components are isolated * after Castor unmarshalls from XML, the ordering is determined by a * passed in List containing the previous portlet components in the tree. * * @param list a list of component identifiers * @return a list of updated component identifiers * @see ComponentIdentifier */ public List<ComponentIdentifier> init(PortletRequest req, List<ComponentIdentifier> list) { list = super.init(req, list); ComponentIdentifier compId = new ComponentIdentifier(); compId.setPortletComponent(this); compId.setComponentID(list.size()); compId.setComponentLabel(label); compId.setClassName(this.getClass().getName()); list.add(compId); if (portletComponent != null) { list = portletComponent.init(req, list); portletComponent.addComponentListener(this); portletComponent.setParentComponent(this); } return list; } /* public void remove(PortletComponent pc, PortletRequest req) { portletComponent = null; parent.remove(this); } */ /** * Performs an action on this portlet tab component * * @param event a gridsphere event */ public void actionPerformed(GridSphereEvent event) { super.actionPerformed(event); // pop last event from stack event.getLastRenderEvent(); PortletTabEvent tabEvent = new PortletTabEventImpl(this, PortletTabEvent.TabAction.TAB_SELECTED, COMPONENT_ID); Iterator it = listeners.iterator(); PortletComponent comp; while (it.hasNext()) { comp = (PortletComponent) it.next(); event.addNewRenderEvent(tabEvent); comp.actionPerformed(event); } } /** * Renders the portlet tab component * * @param event a gridsphere event */ public void doRender(GridSphereEvent event) { super.doRender(event); PortletRequest req = event.getRenderRequest(); if (portletComponent == null) return; StringBuffer tab = new StringBuffer(); if ((requiredRoleName.equals("")) || (req.isUserInRole(requiredRoleName))) { portletComponent.doRender(event); tab.append(portletComponent.getBufferedOutput(req)); } setBufferedOutput(req, tab); } public int compare(Object left, Object right) { int leftID = ((PortletTab) left).getTabOrder(); int rightID = ((PortletTab) right).getTabOrder(); int result; if (leftID < rightID) { result = -1; } else if (leftID > rightID) { result = 1; } else { result = 0; } return result; } public Object clone() throws CloneNotSupportedException { PortletTab t = (PortletTab) super.clone(); t.tabOrder = this.tabOrder; t.outline = this.outline; t.padding = this.padding; t.url = this.url; t.portletComponent = (this.portletComponent == null) ? null : (PortletComponent) this.portletComponent.clone(); t.selected = this.selected; t.titles = new ArrayList<Description>(titles.size()); for (int i = 0; i < titles.size(); i++) { Description title = (Description) titles.get(i); t.titles.add((Description) title.clone()); } return t; } public String toString() { StringBuffer sb = new StringBuffer(); sb.append("\ntab order=").append(tabOrder); sb.append("\ntab selected=").append(selected); for (Description desc : titles) { sb.append("\nlang=").append(desc.getLang()); sb.append("\ntitle=").append(desc.getText()); } return sb.toString(); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?