cziegeler    2004/03/16 07:56:43

  Modified:    src/blocks/portal/java/org/apache/cocoon/portal/pluto/test
                        TestPortlet.java
               
src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl
                        PortletWindowAspect.java
               src/blocks/portal/java/org/apache/cocoon/portal/pluto
                        PortletURLProviderImpl.java
               src/blocks/portal/java/org/apache/cocoon/portal/pluto/om
                        PortletWindowImpl.java
  Log:
  Hopefully fixing bug 27518 now
  Enhancing test portlet
  
  Revision  Changes    Path
  1.6       +39 -1     
cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/pluto/test/TestPortlet.java
  
  Index: TestPortlet.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/pluto/test/TestPortlet.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- TestPortlet.java  5 Mar 2004 13:02:16 -0000       1.5
  +++ TestPortlet.java  16 Mar 2004 15:56:43 -0000      1.6
  @@ -23,8 +23,11 @@
   import javax.portlet.Portlet;
   import javax.portlet.PortletConfig;
   import javax.portlet.PortletException;
  +import javax.portlet.PortletMode;
  +import javax.portlet.PortletURL;
   import javax.portlet.RenderRequest;
   import javax.portlet.RenderResponse;
  +import javax.portlet.WindowState;
   
   /**
    * This is a very simple test portlet
  @@ -69,6 +72,41 @@
           writer.write("<p>I'm running in: " + 
req.getPortalContext().getPortalInfo());
           writer.write("<p>Current portlet mode: " + req.getPortletMode() + 
"</p>");
           writer.write("<p>Current window state: " + req.getWindowState() + 
"</p>");
  +        writer.write("<table><tr><td>Change Portlet Mode:</td>");
  +        PortletURL url;
  +        url = res.createRenderURL();
  +        url.setPortletMode(PortletMode.EDIT);
  +        this.writeLink(writer, url, "Edit");
  +        
  +        url = res.createRenderURL();
  +        url.setPortletMode(PortletMode.HELP);
  +        this.writeLink(writer, url, "Help");
  +
  +        url = res.createRenderURL();
  +        url.setPortletMode(PortletMode.VIEW);
  +        this.writeLink(writer, url, "View");
  +        
  +        writer.write("</tr><tr><td>Change Window Mode:</td>");
  +        url = res.createRenderURL();
  +        url.setWindowState(WindowState.MINIMIZED);
  +        this.writeLink(writer, url, "Minimized");
  +
  +        url = res.createRenderURL();
  +        url.setWindowState(WindowState.NORMAL);
  +        this.writeLink(writer, url, "Normal");
  +
  +        url = res.createRenderURL();
  +        url.setWindowState(WindowState.MAXIMIZED);
  +        this.writeLink(writer, url, "Maximized");
  +        writer.write("</tr></table>");
       }
   
  +    protected void writeLink(Writer writer, PortletURL url, String text) 
  +    throws IOException {
  +        writer.write("<td><a href=\"");
  +        writer.write(url.toString());
  +        writer.write("\">");
  +        writer.write(text);
  +        writer.write("</a></td>");
  +    }
   }
  
  
  
  1.7       +9 -12     
cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/PortletWindowAspect.java
  
  Index: PortletWindowAspect.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/PortletWindowAspect.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- PortletWindowAspect.java  15 Mar 2004 14:29:09 -0000      1.6
  +++ PortletWindowAspect.java  16 Mar 2004 15:56:43 -0000      1.7
  @@ -28,13 +28,12 @@
   import org.apache.cocoon.portal.PortalManager;
   import org.apache.cocoon.portal.PortalService;
   import org.apache.cocoon.portal.coplet.CopletInstanceData;
  -import org.apache.cocoon.portal.event.Event;
  -import org.apache.cocoon.portal.event.impl.FullScreenCopletEvent;
   import org.apache.cocoon.portal.impl.PortletPortalManager;
   import org.apache.cocoon.portal.layout.Layout;
   import org.apache.cocoon.portal.layout.impl.CopletLayout;
   import org.apache.cocoon.portal.layout.renderer.aspect.RendererAspectContext;
   import org.apache.cocoon.portal.pluto.PortletURLProviderImpl;
  +import org.apache.cocoon.portal.pluto.om.PortletWindowImpl;
   import org.apache.cocoon.servlet.CocoonServlet;
   import org.apache.cocoon.xml.XMLUtils;
   import org.apache.pluto.om.portlet.PortletDefinition;
  @@ -97,6 +96,10 @@
               // no portlet window, so use a default behaviour
               XMLUtils.createElement(contenthandler, "title", 
copletInstanceData.getCopletData().getTitle());
           } else {
  +            if ( ((PortletWindowImpl)window).getLayout() == null ) {
  +                ((PortletWindowImpl)window).setLayout((CopletLayout)layout);
  +            }
  +            
               String title = (String) 
copletInstanceData.getAttribute("dynamic-title");
               if ( title == null ) {
                   final PortletDefinition def = 
window.getPortletEntity().getPortletDefinition();
  @@ -119,32 +122,26 @@
                       ws = WindowState.NORMAL;
                   }
                   
  -                Event fullScreenEvent = null;
  -                if ( ws.equals(WindowState.MAXIMIZED) ) {
  -                    fullScreenEvent = new FullScreenCopletEvent( 
copletInstanceData, null );
  -                } 
  -                
                   if ( !ws.equals(WindowState.MINIMIZED) && 
!ws.equals(WindowState.MAXIMIZED)) {
                       PortletURLProviderImpl url = 
(PortletURLProviderImpl)dip.getPortletURLProvider(window);
                       url.clearParameters();
                       url.setWindowState(WindowState.MINIMIZED);
                       
  -                    XMLUtils.createElement(contenthandler, "minimize-uri", 
url.toString(fullScreenEvent));
  +                    XMLUtils.createElement(contenthandler, "minimize-uri", 
url.toString());
                   }
   
                   if ( !ws.equals(WindowState.NORMAL)) {
                       PortletURLProviderImpl url = 
(PortletURLProviderImpl)dip.getPortletURLProvider(window);
                       url.clearParameters();
                       url.setWindowState(WindowState.NORMAL);
  -                    XMLUtils.createElement(contenthandler, "maximize-uri", 
url.toString(fullScreenEvent));
  +                    XMLUtils.createElement(contenthandler, "maximize-uri", 
url.toString());
                   }
   
                   if ( !ws.equals(WindowState.MAXIMIZED)) {
  -                    fullScreenEvent = new FullScreenCopletEvent( 
copletInstanceData, layout );
                       PortletURLProviderImpl url = 
(PortletURLProviderImpl)dip.getPortletURLProvider(window);
                       url.clearParameters();
                       url.setWindowState(WindowState.MAXIMIZED);
  -                    XMLUtils.createElement(contenthandler, "fullscreen-uri", 
url.toString(fullScreenEvent));
  +                    XMLUtils.createElement(contenthandler, "fullscreen-uri", 
url.toString());
                   }
   
                   // portlet modes
  
  
  
  1.4       +28 -14    
cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/pluto/PortletURLProviderImpl.java
  
  Index: PortletURLProviderImpl.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/pluto/PortletURLProviderImpl.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- PortletURLProviderImpl.java       15 Mar 2004 14:29:09 -0000      1.3
  +++ PortletURLProviderImpl.java       16 Mar 2004 15:56:43 -0000      1.4
  @@ -28,9 +28,13 @@
   import org.apache.avalon.framework.service.ServiceManager;
   import org.apache.cocoon.portal.LinkService;
   import org.apache.cocoon.portal.PortalService;
  +import org.apache.cocoon.portal.coplet.CopletInstanceData;
   import org.apache.cocoon.portal.event.CopletInstanceEvent;
   import org.apache.cocoon.portal.event.Event;
  +import org.apache.cocoon.portal.event.impl.FullScreenCopletEvent;
  +import org.apache.cocoon.portal.layout.impl.CopletLayout;
   import org.apache.cocoon.portal.pluto.om.PortletEntityImpl;
  +import org.apache.cocoon.portal.pluto.om.PortletWindowImpl;
   import org.apache.pluto.om.window.PortletWindow;
   import org.apache.pluto.services.information.PortletURLProvider;
   
  @@ -161,25 +165,32 @@
        * @see java.lang.Object#toString()
        */
       public String toString() {
  -        PortalService service = null;
  -        try {
  -            service = (PortalService) 
this.manager.lookup(PortalService.ROLE);
  -            LinkService linkService = 
service.getComponentManager().getLinkService();
  -            
  -            //TODO - secure
  -            return linkService.getLinkURI(this);
  -            
  -        } catch (ServiceException se) {
  -            throw new CascadingRuntimeException("Unable to lookup portal 
service.", se);
  -        } finally {
  -            this.manager.release(service);
  -        }
  +        return this.toString(null);
       }
   
       /**
        * Get the URI and add the event
        */
       public String toString(Event additionalEvent) {
  +        final PortletWindowImpl impl = (PortletWindowImpl)this.portletWindow;
  +        final CopletLayout cl = impl.getLayout();
  +        Event sizingEvent = null;
  +        if ( cl != null ) {
  +            final CopletInstanceData cid = cl.getCopletInstanceData();
  +            WindowState oldState = 
(WindowState)cid.getAttribute("window-state"); 
  +            if ( oldState == null ) {
  +                oldState = WindowState.NORMAL;
  +            }
  +            if ( this.state != null && !this.state.equals(oldState) ) {
  +                if ( oldState.equals(WindowState.MAXIMIZED) ) {
  +                    sizingEvent = new FullScreenCopletEvent( cid, null );    
                
  +                } else {
  +                    if ( this.state.equals(WindowState.MAXIMIZED) ) {
  +                        sizingEvent = new FullScreenCopletEvent( cid, cl );  
                                          
  +                    }
  +                }
  +            }
  +        }
           PortalService service = null;
           try {
               service = (PortalService) 
this.manager.lookup(PortalService.ROLE);
  @@ -189,6 +200,9 @@
               List l = new ArrayList();
               if ( additionalEvent != null ) {
                   l.add(additionalEvent);
  +            }
  +            if ( sizingEvent != null ) {
  +                l.add(sizingEvent);
               }
               l.add(this);
               return linkService.getLinkURI(l);
  
  
  
  1.5       +12 -2     
cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/PortletWindowImpl.java
  
  Index: PortletWindowImpl.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/pluto/om/PortletWindowImpl.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- PortletWindowImpl.java    5 Mar 2004 13:02:15 -0000       1.4
  +++ PortletWindowImpl.java    16 Mar 2004 15:56:43 -0000      1.5
  @@ -15,6 +15,7 @@
    */
   package org.apache.cocoon.portal.pluto.om;
   
  +import org.apache.cocoon.portal.layout.impl.CopletLayout;
   import org.apache.pluto.om.common.ObjectID;
   import org.apache.pluto.om.entity.PortletEntity;
   import org.apache.pluto.om.window.PortletWindow;
  @@ -33,7 +34,8 @@
       private ObjectID objectId;
       private String id;
       private PortletEntity portletEntity;
  -
  +    private CopletLayout layout;
  +    
       public PortletWindowImpl(String id) {
           this.id = id;
       }
  @@ -53,6 +55,7 @@
           }
           return objectId;
       }
  +    
       /**
        * Returns the portlet entity
        *
  @@ -84,4 +87,11 @@
           this.portletEntity = portletEntity;
       }
   
  +    public CopletLayout getLayout() {
  +        return this.layout;
  +    }
  +    
  +    public void setLayout(CopletLayout layout) {
  +        this.layout = layout;
  +    }
   }
  
  
  

Reply via email to