⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 portletframelayout.java

📁 GridSphere 门户 提供一个基于 portlet 的高级开放源代码门户。GridSphere 是在欧盟提供基金的 GridLab 项目下开发的
💻 JAVA
字号:
/* * @author <a href="mailto:novotny@gridsphere.org">Jason Novotny</a> * @author <a href="mailto:wehren@aei.mpg.de">Oliver Wehrens</a> * @version $Id: PortletFrameLayout.java 4986 2006-08-04 09:54:38Z novotny $ */package org.gridsphere.layout;import org.gridsphere.layout.event.PortletComponentEvent;import org.gridsphere.layout.event.PortletFrameEvent;import org.gridsphere.portletcontainer.GridSphereEvent;import javax.portlet.PortletRequest;import java.io.Serializable;import java.util.ArrayList;import java.util.Collections;import java.util.Iterator;import java.util.List;/** * The abstract <code>PortletFrameLayout</code> acts a container for the layout of portlet frame * components and handles PortletFrame events. * <p/> * The <code>PortletTableLayout</code> is a concrete implementation of the <code>PortletFrameLayout</code> * that organizes portlets into a grid with a provided number of rows and columns. * * @see PortletFrame * @see PortletFrameEvent */public abstract class PortletFrameLayout extends BasePortletComponent implements        Serializable, PortletLayout, Cloneable {    protected List<PortletComponent> components = new ArrayList<PortletComponent>();    protected boolean hasFrameMaximized = false;    public boolean hasFrameMaximized() {        return hasFrameMaximized;    }    /**     * Initializes the portlet component. 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);        Iterator it = components.iterator();        PortletComponent p;        while (it.hasNext()) {            p = (PortletComponent) it.next();            if (!p.getRequiredRole().equals("") && (!req.isUserInRole(p.getRequiredRole()))) {                it.remove();            } else {                p.setCanModify(canModify);                // invoke init on each component                list = p.init(req, list);                p.addComponentListener(this);                p.setParentComponent(this);            }        }        return list;    }    protected void customActionPerformed(GridSphereEvent event) {    }    public void doRender(GridSphereEvent event) {        super.doRender(event);    }    public void actionPerformed(GridSphereEvent event) {        super.actionPerformed(event);        PortletComponentEvent compEvt = event.getLastRenderEvent();        if ((compEvt != null) && (compEvt instanceof PortletFrameEvent)) {            PortletFrameEvent frameEvent = (PortletFrameEvent) compEvt;            handleFrameEvent(frameEvent);        }        customActionPerformed(event);        Iterator it = listeners.iterator();        PortletComponent comp;        while (it.hasNext()) {            comp = (PortletComponent) it.next();            event.addNewRenderEvent(compEvt);            comp.actionPerformed(event);        }    }    public void remove(PortletComponent pc) {        components.remove(pc);        /*        if (getPortletComponents().isEmpty()) {            parent.remove(this);        }        */    }    /**     * Destroys this portlet component     */    public void destroy() {    }    /**     * Performed when a frame maximized event has been received     *     * @param event a portlet frame event     */    public void handleFrameMaximized(PortletFrameEvent event) {        //System.err.println("in frame layout: frame has been maximized");        Iterator it = components.iterator();        PortletComponent p;        int id = event.getID();        while (it.hasNext()) {            p = (PortletComponent) it.next();            // check for the frame that has been maximized            if (p.getComponentID() == id) {                p.setWidth("100%");            } else {                // If this is not the right frame, make it invisible                p.setVisible(false);            }        }    }    /**     * Performed when a frame minimized event has been received     *     * @param event a portlet frame event     */    public void handleFrameMinimized(PortletFrameEvent event) {        //System.err.println("in PortletFrameLayout Minimized");        List scomponents = Collections.synchronizedList(components);        synchronized (scomponents) {            Iterator it = scomponents.iterator();            PortletComponent p;            int id = event.getID();            while (it.hasNext()) {                p = (PortletComponent) it.next();                if (p.getComponentID() == id) {                    p.setWidth("");                }                p.setWidth(p.getDefaultWidth());                p.setVisible(true);            }        }    }    /**     * Performed when a frame restore event has been received     *     * @param event a portlet frame event     */    public void handleFrameRestore(PortletFrameEvent event) {        //System.err.println("in PortletFrameLayout Resized");        List scomponents = Collections.synchronizedList(components);        synchronized (scomponents) {            Iterator it = scomponents.iterator();            PortletComponent p;            int id = event.getID();            while (it.hasNext()) {                p = (PortletComponent) it.next();                if (p.getComponentID() == id) {                    if (p instanceof PortletFrame) {                        PortletFrame f = (PortletFrame) p;                        f.setWidth(event.getOriginalWidth());                    } else {                        p.setWidth(p.getDefaultWidth());                    }                } else {                    p.setVisible(true);                }            }        }    }    /**     * Performed when a frame close event has been received     *     * @param event a portlet frame event     */    public void handleFrameClosed(PortletFrameEvent event) {        //System.err.println("Portlet FrameLAyout: in frame closed");        List scomponents = Collections.synchronizedList(components);        synchronized (scomponents) {            Iterator it = scomponents.iterator();            PortletComponent p;            int id = event.getID();            while (it.hasNext()) {                p = (PortletComponent) it.next();                // check for the frame that has been closed                if (p.getComponentID() == id) {                    if (p instanceof PortletFrame) {                        it.remove();                    }                } else {                    p.setVisible(true);                }            }        }    }    /**     * Performed when a frame event has been received     *     * @param event a portlet frame event     */    public void handleFrameEvent(PortletFrameEvent event) {        if (event.getAction() == PortletFrameEvent.FrameAction.FRAME_MAXIMIZED) {            hasFrameMaximized = true;            handleFrameMaximized(event);        } else if (event.getAction() == PortletFrameEvent.FrameAction.FRAME_MINIMIZED) {            hasFrameMaximized = false;            handleFrameMinimized(event);        } else if (event.getAction() == PortletFrameEvent.FrameAction.FRAME_RESTORED) {            hasFrameMaximized = false;            handleFrameRestore(event);        } else if (event.getAction() == PortletFrameEvent.FrameAction.FRAME_CLOSED) {            hasFrameMaximized = false;            handleFrameClosed(event);        }    }    /**     * Adds a new portlet component to the layout     *     * @param component a portlet component     */    public void addPortletComponent(PortletComponent component) {        components.add(component);    }    /**     * Removes a new portlet component to the layout     *     * @param component a portlet component     */    public void removePortletComponent(PortletComponent component) {        components.remove(component);    }    /**     * Sets the list of new portlet component to the layout     *     * @param components an ArrayList of portlet components     */    public void setPortletComponents(List<PortletComponent> components) {        this.components = components;    }    /**     * Returns a list containing the portlet components in this layout     *     * @return a list of portlet components     */    public List<PortletComponent> getPortletComponents() {        return components;    }    public Object clone() throws CloneNotSupportedException {        PortletFrameLayout f = (PortletFrameLayout) super.clone();        f.components = new ArrayList<PortletComponent>(components.size());        for (int i = 0; i < components.size(); i++) {            PortletComponent comp = (PortletComponent) components.get(i);            f.components.add((PortletComponent) comp.clone());        }        return f;    }    public String toString() {        StringBuffer sb = new StringBuffer();        sb.append(super.toString());        for (int i = 0; i < components.size(); i++) {            sb.append(components.toString());        }        return sb.toString();    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -