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;
+ }
}