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 ta...@apache.org on 2005/12/06 09:54:11 UTC
svn commit: r354369 - in /portals/jetspeed-2/trunk/layout-portlets/src:
java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java
webapp/WEB-INF/jetspeed-portlet.xml
Author: taylor
Date: Tue Dec 6 00:54:09 2005
New Revision: 354369
URL: http://svn.apache.org/viewcvs?rev=354369&view=rev
Log:
enhance customizer to support
* select portlet decoration
* select page decoration
* select layout (this is experimental, may come out tomorrow before code freeze)
Modified:
portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java
portals/jetspeed-2/trunk/layout-portlets/src/webapp/WEB-INF/jetspeed-portlet.xml
Modified: portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java?rev=354369&r1=354368&r2=354369&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java (original)
+++ portals/jetspeed-2/trunk/layout-portlets/src/java/org/apache/jetspeed/portlets/layout/MultiColumnPortlet.java Tue Dec 6 00:54:09 2005
@@ -31,7 +31,9 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.jetspeed.CommonPortletServices;
import org.apache.jetspeed.Jetspeed;
+import org.apache.jetspeed.decoration.DecorationFactory;
import org.apache.jetspeed.om.page.Fragment;
import org.apache.jetspeed.om.page.Page;
import org.apache.jetspeed.page.PageManager;
@@ -57,7 +59,7 @@
private String portletName = null;
private String layoutType;
private List columnSizes = null;
- protected PageManager pm;
+ protected DecorationFactory decorators;
private Map layouts ;
public void init( PortletConfig config ) throws PortletException
@@ -74,7 +76,13 @@
}
this.portletName = config.getPortletName();
this.layoutType = config.getInitParameter("layoutType");
- pm = (PageManager) Jetspeed.getComponentManager().getComponent(PageManager.class);
+
+ decorators = (DecorationFactory)getPortletContext().getAttribute(CommonPortletServices.CPS_DECORATION_FACTORY);
+ if (null == decorators)
+ {
+ throw new PortletException("Failed to find the Decoration Factory on portlet initialization");
+ }
+
}
public void doView( RenderRequest request, RenderResponse response ) throws PortletException, IOException
@@ -87,7 +95,7 @@
try
{
layout = new ColumnLayout(numColumns, layoutType, f.getFragments(), this.colSizes.split("\\,") );
- layout.addLayoutEventListener(new PageManagerLayoutEventListener(pm, page, layoutType));
+ layout.addLayoutEventListener(new PageManagerLayoutEventListener(pageManager, page, layoutType));
}
catch (LayoutEventException e1)
{
@@ -105,7 +113,7 @@
request.setAttribute("columnLayout", layout);
request.setAttribute("numberOfColumns", new Integer(numColumns));
-
+ request.setAttribute("decorationFactory", this.decorators);
List columnSizes = this.columnSizes;
// Determine custom column sizes in the psml
@@ -120,6 +128,7 @@
// now invoke the JSP associated with this portlet
super.doView(request, response);
+ request.removeAttribute("decorationFactory");
request.removeAttribute("columnLayout");
request.removeAttribute("numberOfColumns");
request.removeAttribute("columnSizes");
@@ -167,14 +176,20 @@
public void processAction(ActionRequest request, ActionResponse response) throws PortletException, IOException
{
+ String decoratorChange = request.getParameter("decorator");
+ String themeChange = request.getParameter("theme");
+ String layoutChange = request.getParameter("layout");
+ String editingPage = request.getParameter("editingPage");
+ String fragmentChange = request.getParameter("fragmentToMove");
+
if (request.getParameter("move") != null
- && request.getParameter("fragmentToMove") != null
- && request.getParameter("editingPage") != null)
+ && fragmentChange != null
+ && editingPage != null)
{
Page page;
try
{
- page = pm.getPage(request.getParameter("editingPage"));
+ page = pageManager.getPage(editingPage);
}
catch (Exception e)
{
@@ -182,14 +197,14 @@
}
Fragment rootFragment = page.getRootFragment();
- Fragment fragmentToMove = page.getFragmentById(request.getParameter("fragmentToMove"));
+ Fragment fragmentToMove = page.getFragmentById(fragmentChange);
int moveCode = Integer.parseInt(request.getParameter("move"));
ColumnLayout layout;
try
{
layout = new ColumnLayout(numColumns, layoutType, rootFragment.getFragments(), this.colSizes.split("\\,") );
- layout.addLayoutEventListener(new PageManagerLayoutEventListener(pm, page, layoutType));
+ layout.addLayoutEventListener(new PageManagerLayoutEventListener(pageManager, page, layoutType));
}
catch (LayoutEventException e1)
{
@@ -235,6 +250,64 @@
throw new PortletException("Unable to process layout for page " + page.getId() + " layout: " + e.toString(), e);
}
}
+ }
+ else if (decoratorChange != null
+ && fragmentChange != null
+ && editingPage != null)
+ {
+ Page page;
+ try
+ {
+ page = pageManager.getPage(editingPage);
+ }
+ catch (Exception e)
+ {
+ throw new PortletException("Unable to access page for editing: "+e.getMessage());
+ }
+
+ Fragment fragment = page.getFragmentById(fragmentChange);
+ if (fragment != null)
+ {
+ if (decoratorChange.trim().length() == 0)
+ fragment.setDecorator(null);
+ else
+ fragment.setDecorator(decoratorChange);
+ }
+ try
+ {
+ pageManager.updatePage(page);
+ }
+ catch (Exception e)
+ {
+ throw new PortletException("Unable to update page for fragment decorator: "+e.getMessage());
+ }
+ }
+ else if (themeChange != null &&
+ layoutChange != null &&
+ editingPage != null)
+ {
+ Page page;
+ try
+ {
+ page = pageManager.getPage(editingPage);
+ }
+ catch (Exception e)
+ {
+ throw new PortletException("Unable to access page for editing: "+e.getMessage());
+ }
+
+ page.setDefaultDecorator(themeChange, Fragment.LAYOUT);
+ page.getRootFragment().setName(layoutChange);
+
+ try
+ {
+ pageManager.updatePage(page);
+ }
+ catch (Exception e)
+ {
+ throw new PortletException("Unable to update page for fragment decorator: "+e.getMessage());
+ }
+
}
else
{
Modified: portals/jetspeed-2/trunk/layout-portlets/src/webapp/WEB-INF/jetspeed-portlet.xml
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/layout-portlets/src/webapp/WEB-INF/jetspeed-portlet.xml?rev=354369&r1=354368&r2=354369&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/layout-portlets/src/webapp/WEB-INF/jetspeed-portlet.xml (original)
+++ portals/jetspeed-2/trunk/layout-portlets/src/webapp/WEB-INF/jetspeed-portlet.xml Tue Dec 6 00:54:09 2005
@@ -30,7 +30,8 @@
<js:service name='PageManager'/>
<js:service name='TemplateLocator'/>
<js:service name='DecorationLocator'/>
- <js:service name='Powertools'/>
+ <js:service name='Powertools'/>
+ <js:service name='DecorationFactory'/>
</js:services>
</portlet-app>
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org