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