Author: taylor
Date: Fri Oct 13 18:00:45 2006
New Revision: 463875

URL: http://svn.apache.org/viewvc?view=rev&rev=463875
Log:
complete implementation of ajax "window" api: set window state and portlet mode

Modified:
    
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/container/state/impl/AbstractNavigationalState.java
    
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/ajax-xml/window.vm
    
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/ChangePortletAction.java

Modified: 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/container/state/impl/AbstractNavigationalState.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/container/state/impl/AbstractNavigationalState.java?view=diff&rev=463875&r1=463874&r2=463875
==============================================================================
--- 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/container/state/impl/AbstractNavigationalState.java
 (original)
+++ 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/container/state/impl/AbstractNavigationalState.java
 Fri Oct 13 18:00:45 2006
@@ -79,6 +79,10 @@
                 requestStates.addPortletWindowNavigationalState(windowId, 
state);
                 state.setWindowState(windowState);
             }
+            if (windowState.equals(WindowState.MAXIMIZED))
+            {
+                requestStates.setMaximizedWindow(window);
+            }
         }
     }
 

Modified: 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/ajax-xml/window.vm
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/ajax-xml/window.vm?view=diff&rev=463875&r1=463874&r2=463875
==============================================================================
--- 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/ajax-xml/window.vm
 (original)
+++ 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/ajax-xml/window.vm
 Fri Oct 13 18:00:45 2006
@@ -3,11 +3,11 @@
     <action>$action</action>
     <id>$id</id> 
 #if ($state)    
-    <old_state>$oldState</old_state>
+    <old_state>$!oldState</old_state>
     <new_state>$state</new_state>
 #end
 #if ($mode)    
-    <old_mode>$oldMode</old_mode>
+    <old_mode>$!oldMode</old_mode>
     <new_mode>$mode</new_mode>
 #end   
 </js>

Modified: 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/ChangePortletAction.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/ChangePortletAction.java?view=diff&rev=463875&r1=463874&r2=463875
==============================================================================
--- 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/ChangePortletAction.java
 (original)
+++ 
portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/ChangePortletAction.java
 Fri Oct 13 18:00:45 2006
@@ -19,17 +19,24 @@
 import java.util.Iterator;
 import java.util.Map;
 
+import javax.portlet.PortletMode;
+import javax.portlet.WindowState;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.jetspeed.JetspeedActions;
 import org.apache.jetspeed.ajax.AJAXException;
 import org.apache.jetspeed.ajax.AjaxAction;
 import org.apache.jetspeed.ajax.AjaxBuilder;
+import org.apache.jetspeed.container.state.MutableNavigationalState;
+import org.apache.jetspeed.container.window.PortletWindowAccessor;
 import org.apache.jetspeed.layout.PortletActionSecurityBehavior;
+import org.apache.jetspeed.om.page.ContentFragment;
+import org.apache.jetspeed.om.page.ContentPage;
 import org.apache.jetspeed.om.page.Fragment;
-import org.apache.jetspeed.om.page.Page;
 import org.apache.jetspeed.page.PageManager;
 import org.apache.jetspeed.request.RequestContext;
+import org.apache.pluto.om.window.PortletWindow;
 
 /**
  * Changes the window state or portlet mode for a given portlet window
@@ -51,24 +58,28 @@
     protected String action;
     protected Map validWindowStates = new HashMap();
     protected Map validPortletModes = new HashMap();
+    protected PortletWindowAccessor windowAccessor;
     
     public ChangePortletAction(String template, 
             String errorTemplate, 
-            String action)
+            String action,
+            PortletWindowAccessor windowAccessor)            
     throws AJAXException    
     {
-        this(template, errorTemplate, action, null, null);
+        this(template, errorTemplate, action, null, windowAccessor, null);
     }
     
     public ChangePortletAction(String template, 
                              String errorTemplate, 
                              String action,
                              PageManager pageManager,
+                             PortletWindowAccessor windowAccessor,             
                
                              PortletActionSecurityBehavior securityBehavior)
     throws AJAXException
     {
         super(template, errorTemplate, pageManager, securityBehavior);
         this.action = action;
+        this.windowAccessor = windowAccessor;
         
         // Build the maps of allowed (internal) modes and states
         Iterator modes = JetspeedActions.getStandardPortletModes().iterator(); 
       
@@ -140,8 +151,8 @@
                         
             if (false == checkAccess(requestContext, JetspeedActions.EDIT))
             {
-                Page page = requestContext.getPage();
-                Fragment fragment = page.getFragmentById(portletId);
+                ContentPage page = requestContext.getPage();
+                ContentFragment fragment = 
page.getContentFragmentById(portletId);
                 if (fragment == null)
                 {
                     success = false;
@@ -167,8 +178,8 @@
                 }                
                 portletId = newFragment.getId();
             }            
-            Page page = requestContext.getPage();            
-            Fragment fragment = page.getFragmentById(portletId);
+            ContentPage page = requestContext.getPage();            
+            ContentFragment fragment = page.getContentFragmentById(portletId);
             String oldState = fragment.getState();
             String oldMode = fragment.getMode();
             if (windowState != null)
@@ -180,6 +191,26 @@
             {
                 pageManager.updatePage(page);
             }
+            
+            // Now Change the transient navigational state
+            MutableNavigationalState navState = 
(MutableNavigationalState)requestContext.getPortalURL().getNavigationalState();
+            PortletWindow portletWindow = 
windowAccessor.getPortletWindow(fragment);
+            if (portletWindow != null)
+            {
+                oldState = navState.getState(portletWindow).toString();
+                oldMode =  navState.getMode(portletWindow).toString();
+                if (windowState != null)
+                {
+                    navState.setState(portletWindow, new 
WindowState(windowState));
+                }
+                if (portletMode != null)
+                {
+                    navState.setMode(portletWindow, new 
PortletMode(portletMode));
+                }
+                navState.sync(requestContext);                                
+            }
+            
+            //requestContext.getPortalURL().getNavigationalState().
             resultMap.put(STATUS, status);
             
             if (windowState != null)
@@ -210,7 +241,7 @@
     // TODO: The validWindowStates and validPortletModes maps only contain 
     //       internal (portal level) valid modes and states.
     //       *if* a pa defines a custom mode/state with a different name but
-    //       mapped onto a interal (portal) mode/state 
+    //       mapped onto a internal (portal) mode/state 
     //       *then* first the real internal mode/state needs to be retrieved 
from the 
     //       targetted portlet its application:
     //       
o.a.j.om.common.portlet.PortletApplication.getMappedMode(customMode) and



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to