You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by sm...@apache.org on 2007/01/25 05:59:45 UTC

svn commit: r499664 - in /portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl: AddPortletAction.java MovePortletAction.java

Author: smilek
Date: Wed Jan 24 20:59:44 2007
New Revision: 499664

URL: http://svn.apache.org/viewvc?view=rev&rev=499664
Log:
added two new methods to MovePortletAction: moveFragment and placeFragment (designed for adding and moving portlets to any layout fragment, and now used by AddPortletAction); AddPortletAction now inherits from MovePortletAction

Modified:
    portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/AddPortletAction.java
    portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/MovePortletAction.java

Modified: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/AddPortletAction.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/AddPortletAction.java?view=diff&rev=499664&r1=499663&r2=499664
==============================================================================
--- portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/AddPortletAction.java (original)
+++ portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/AddPortletAction.java Wed Jan 24 20:59:44 2007
@@ -48,7 +48,7 @@
  * @version $Id: $
  */
 public class AddPortletAction 
-    extends BasePortletAction 
+    extends MovePortletAction 
     implements AjaxAction, AjaxBuilder, Constants
 {
     protected Log log = LogFactory.getLog(AddPortletAction.class);
@@ -56,6 +56,7 @@
     protected boolean allowDuplicatePortlets = true;
 
     public AddPortletAction(String template, String errorTemplate, GetPortletsAction getPortletsAction)
+        throws AJAXException
     {
         this(template, errorTemplate, null, null, getPortletsAction, true);
     }
@@ -65,6 +66,7 @@
                             PageManager pageManager,
                             PortletActionSecurityBehavior securityBehavior,
                             GetPortletsAction getPortletsAction)
+        throws AJAXException
     {
         this(template, errorTemplate, pageManager, securityBehavior, getPortletsAction, true);
     }
@@ -75,24 +77,14 @@
                             PortletActionSecurityBehavior securityBehavior,
                             GetPortletsAction getPortletsAction,
                             boolean allowDuplicatePortlets)
+        throws AJAXException
     {
         super(template, errorTemplate, pageManager, securityBehavior); 
         this.getPortletsAction = getPortletsAction;
         this.allowDuplicatePortlets = allowDuplicatePortlets;
     }
-
-    public boolean runBatch(RequestContext requestContext, Map resultMap) throws AJAXException
-    {
-        return runAction(requestContext, resultMap, true);
-    }    
-    
-    public boolean run(RequestContext requestContext, Map resultMap)
-            throws AJAXException
-    {
-        return runAction(requestContext, resultMap, false);
-    }
     
-    protected boolean runAction(RequestContext requestContext, Map resultMap, boolean batch) throws AJAXException
+    protected boolean runAction( RequestContext requestContext, Map resultMap, boolean batch ) throws AJAXException
     {
         boolean success = true;
         String status = "success";
@@ -126,43 +118,37 @@
                 }
                 status = "refresh";
             }           
-            // These are optional parameters
-            String col = getActionParameter(requestContext, COL);
-            String row = getActionParameter(requestContext, ROW);
-            // Convert the col and row into integers
-            int iCol = 0;
-            int iRow = 0;
-            if (col != null)
-            {
-                iCol = Integer.parseInt(col);
-                resultMap.put(NEWCOL, new Integer(iCol));
-            }
-            if (row != null)
-            {
-                iRow = Integer.parseInt(row);
-                resultMap.put(NEWROW, new Integer(iRow));
-            }
-            // Use the Portlet Placement Manager to accomplish the removal
-            PortletPlacementContext placement = new PortletPlacementContextImpl(requestContext);
+            
+            Page page = requestContext.getPage();
+            String layoutId = getActionParameter(requestContext, LAYOUTID);
             Fragment fragment = pageManager.newFragment();
             fragment.setType(Fragment.PORTLET);
             fragment.setName(portletId);
-            fragment.setLayoutColumn(iCol);
-            fragment.setLayoutRow(iRow);            
-            Coordinate coordinate = placement.add(fragment, new CoordinateImpl(iCol, iRow, iCol, iRow));
-            Page page = placement.syncPageFragments();                                                            
-            // TODO: this does not handle nested layouts            
-            Fragment root = requestContext.getPage().getRootFragment();
-            root.getFragments().add(fragment);    
-            if (!batch)
+            //fragment.setLayoutColumn(iCol);
+            //fragment.setLayoutRow(iRow);
+            
+            Fragment placeInLayoutFragment = null;
+            if ( layoutId != null && layoutId.length() > 0 )
+            {
+                placeInLayoutFragment = page.getFragmentById( layoutId );
+                if ( placeInLayoutFragment == null )
+                {
+                    throw new Exception( "layout id not found: " + layoutId );
+                }
+            }
+            else
             {
-                pageManager.updatePage(page);
+                placeInLayoutFragment = page.getRootFragment();
             }
+
+            success = placeFragment( requestContext,
+                                     pageManager,
+                                     batch,
+                                     resultMap,
+                                     fragment,
+                                     placeInLayoutFragment ) ;
+
             resultMap.put(STATUS, status);
-            resultMap.put(NEWCOL, String.valueOf(coordinate
-                    .getNewCol()));
-            resultMap.put(NEWROW, String.valueOf(coordinate
-                    .getNewRow()));
             resultMap.put(PORTLETENTITY, fragment.getId());            
         } 
         catch (Exception e)

Modified: portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/MovePortletAction.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/MovePortletAction.java?view=diff&rev=499664&r1=499663&r2=499664
==============================================================================
--- portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/MovePortletAction.java (original)
+++ portals/jetspeed-2/trunk/components/portal/src/java/org/apache/jetspeed/layout/impl/MovePortletAction.java Wed Jan 24 20:59:44 2007
@@ -27,10 +27,12 @@
 import org.apache.jetspeed.ajax.AjaxBuilder;
 import org.apache.jetspeed.layout.Coordinate;
 import org.apache.jetspeed.layout.PortletActionSecurityBehavior;
+import org.apache.jetspeed.layout.PortletPlacementException;
 import org.apache.jetspeed.layout.PortletPlacementContext;
 import org.apache.jetspeed.om.page.Fragment;
 import org.apache.jetspeed.om.page.Page;
 import org.apache.jetspeed.page.PageManager;
+import org.apache.jetspeed.page.document.NodeException;
 import org.apache.jetspeed.request.RequestContext;
 
 /**
@@ -67,6 +69,15 @@
     
     public MovePortletAction(String template, 
                              String errorTemplate, 
+                             PageManager pageManager,
+                             PortletActionSecurityBehavior securityBehavior)
+    throws AJAXException
+    {
+        this( template, errorTemplate, "moveabs", pageManager, securityBehavior );
+    }
+
+    public MovePortletAction(String template, 
+                             String errorTemplate, 
                              String sMoveType,
                              PageManager pageManager,
                              PortletActionSecurityBehavior securityBehavior)
@@ -122,7 +133,7 @@
         return runAction(requestContext, resultMap, false);
     }
     
-    public boolean runAction(RequestContext requestContext, Map resultMap, boolean batch)
+    protected boolean runAction( RequestContext requestContext, Map resultMap, boolean batch )  throws AJAXException
     {
         boolean success = true;
         String status = "success";
@@ -141,7 +152,7 @@
             Fragment currentLayoutFragment = null;
             Fragment moveToLayoutFragment = null;
             // when layoutId is null we use old behavior, ignoring everything to do with multiple layout fragments
-            if ( layoutId != null && iMoveType != CARTESIAN )
+            if ( layoutId != null && layoutId.length() > 0 && iMoveType != CARTESIAN )
             {
                 Page page = requestContext.getPage();
                 currentLayoutFragment = page.getFragmentById( layoutId );
@@ -254,55 +265,13 @@
             
             if ( moveToLayoutFragment != null )
             {
-                // remove fragment
-                PortletPlacementContext placement = new PortletPlacementContextImpl(requestContext, currentLayoutFragment, 1);
-                Fragment fragment = placement.getFragmentById(portletId);
-                if (fragment == null)
-                {
-                    success = false;
-                    resultMap.put(REASON, "Failed to find fragment to move to another layout for portlet id: " + portletId );
-                    return success;                
-                }
-                
-                String posExtended = getActionParameter(requestContext, DESKTOP_EXTENDED);
-                if ( posExtended != null )
-                {
-                    Map fragmentProperties = fragment.getProperties();
-                    if ( fragmentProperties == null )
-                    {
-                        success = false;
-                        resultMap.put(REASON, "Failed to acquire fragment properties map for portlet id: " + portletId );
-                        return success;
-                    }
-                    String oldDeskExt = (String)fragmentProperties.get( DESKTOP_EXTENDED );
-                    resultMap.put( OLD_DESKTOP_EXTENDED, ( (oldDeskExt != null) ? oldDeskExt : "" ) );
-                    fragmentProperties.put( DESKTOP_EXTENDED, posExtended );
-                }
-                
-                placement.remove(fragment);
-                Page page = placement.syncPageFragments();
-                page.removeFragmentById(fragment.getId());
-                
-                // add fragment
-                placement = new PortletPlacementContextImpl(requestContext, moveToLayoutFragment, 1);
-                Coordinate returnCoordinate = placement.add(fragment, getCoordinateFromParams(requestContext));
-                page = placement.syncPageFragments();
-
-                moveToLayoutFragment.getFragments().add(fragment);
-                if (pageManager != null && !batch)
-                {
-                    pageManager.updatePage(page);
-                }
-                // Need to determine what the old col and row were
-                resultMap.put(OLDCOL, String.valueOf(returnCoordinate
-                        .getOldCol()));
-                resultMap.put(OLDROW, String.valueOf(returnCoordinate
-                        .getOldRow()));
-                // Need to determine what the new col and row were
-                resultMap.put(NEWCOL, String.valueOf(returnCoordinate
-                        .getNewCol()));
-                resultMap.put(NEWROW, String.valueOf(returnCoordinate
-                        .getNewRow()));
+                success = moveFragment( requestContext,
+                                        pageManager,
+                                        batch,
+                                        resultMap,
+                                        portletId,
+                                        moveToLayoutFragment,
+                                        currentLayoutFragment ) ;
             }
             else
             {
@@ -456,18 +425,124 @@
 
         return success;
     }
+
+    /*
+
+        Fragment placeFragment = placement.getFragmentById(portletId);
+        if (placeFragment == null)
+        {
+            success = false;
+            resultMap.put(REASON, "Failed to find fragment to move to another layout for portlet id: " + portletId );
+            return success;                
+        }
+
+    */
+    protected boolean moveFragment( RequestContext requestContext,
+                                    PageManager pageManager,
+                                    boolean batch,
+                                    Map resultMap,
+                                    String moveFragmentId,
+                                    Fragment moveToLayoutFragment,
+                                    Fragment removeFromLayoutFragment )
+        throws PortletPlacementException, NodeException
+    {
+        boolean success = true;
+        Fragment placeFragment = null;
+        if ( removeFromLayoutFragment != null )
+        {
+            PortletPlacementContext placement = new PortletPlacementContextImpl( requestContext, removeFromLayoutFragment, 1 );
+        
+            placeFragment = placement.getFragmentById( moveFragmentId );
+            if ( placeFragment == null )
+            {
+                success = false;
+                resultMap.put( REASON, "Failed to find fragment to move to another layout for fragment id: " + moveFragmentId );
+                return success;
+            }
+        }
+        if ( placeFragment != null )
+        {
+            return placeFragment( requestContext,
+                                  pageManager,
+                                  batch,
+                                  resultMap,
+                                  placeFragment,
+                                  moveToLayoutFragment );
+        }
+        return success;
+    }
+
+    protected boolean placeFragment( RequestContext requestContext,
+                                     PageManager pageManager,
+                                     boolean batch,
+                                     Map resultMap,
+                                     Fragment placeFragment,
+                                     Fragment placeInLayoutFragment )
+        throws PortletPlacementException, NodeException
+    {
+        boolean success = true;
+        if ( placeFragment == null )
+        {
+            success = false;
+            return success;
+        }
+
+        // desktop extended
+        String posExtended = getActionParameter(requestContext, DESKTOP_EXTENDED);
+        if ( posExtended != null )
+        {
+            Map fragmentProperties = placeFragment.getProperties();
+            if ( fragmentProperties == null )
+            {
+                success = false;
+                resultMap.put(REASON, "Failed to acquire fragment properties map for fragment id: " + placeFragment.getId() );
+                return success;
+            }
+            String oldDeskExt = (String)fragmentProperties.get( DESKTOP_EXTENDED );
+            resultMap.put( OLD_DESKTOP_EXTENDED, ( (oldDeskExt != null) ? oldDeskExt : "" ) );
+            fragmentProperties.put( DESKTOP_EXTENDED, posExtended );
+        }
+                
+        // add fragment
+        PortletPlacementContext placement = new PortletPlacementContextImpl( requestContext, placeInLayoutFragment, 1 );
+        Coordinate returnCoordinate = placement.add( placeFragment, getCoordinateFromParams( requestContext ) );
+        Page page = placement.syncPageFragments();
+
+        placeInLayoutFragment.getFragments().add( placeFragment );
+        if ( pageManager != null && ! batch )
+        {
+            pageManager.updatePage( page );
+        }
+
+        // Need to determine what the old col and row were
+        resultMap.put( OLDCOL, String.valueOf( returnCoordinate.getOldCol() ) );
+        resultMap.put( OLDROW, String.valueOf( returnCoordinate.getOldRow() ) );
+        // Need to determine what the new col and row were
+        resultMap.put( NEWCOL, String.valueOf( returnCoordinate.getNewCol() ) );
+        resultMap.put( NEWROW, String.valueOf( returnCoordinate.getNewRow() ) );
+
+        return success;
+    }
     
     protected Coordinate getCoordinateFromParams(RequestContext requestContext)
     {
-        String a_sCol = getActionParameter(requestContext, COL);
-        String a_sRow = getActionParameter(requestContext, ROW);
+        String a_sCol = getActionParameter( requestContext, COL );
+        String a_sRow = getActionParameter( requestContext, ROW );
+
+        int a_iCol = 0;
+        int a_iRow = 0;
 
         // Convert the col and row into integers
-        int a_iCol = Integer.parseInt(a_sCol);
-        int a_iRow = Integer.parseInt(a_sRow);
+        if ( a_sCol != null )
+        {
+            a_iCol = Integer.parseInt( a_sCol );
+        }
+        if ( a_sRow != null )
+        {
+            a_iRow = Integer.parseInt( a_sRow );
+        }
 
-        Coordinate a_oCoordinate = new CoordinateImpl(0, 0, a_iCol,
-                                                      a_iRow);
+        Coordinate a_oCoordinate = new CoordinateImpl( 0, 0, a_iCol, a_iRow );
         return a_oCoordinate;
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org