Author: julien(a)jboss.com
Date: 2008-02-07 07:04:09 -0500 (Thu, 07 Feb 2008)
New Revision: 9833
Added:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/EndPageChunk.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/StartPageChunk.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/portlet/StartPortletChunk.java
Removed:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/portlet/PortletTitleChunk.java
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/ControllerFilter.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/Page.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/PagePortletControllerContext.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/taglib/PageTag.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/taglib/PortletTag.java
modules/portlet/trunk/test/src/test/resources/simple-portal-war/index.jsp
Log:
add support for maximized window in page
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/ControllerFilter.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/ControllerFilter.java 2008-02-07
11:12:39 UTC (rev 9832)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/ControllerFilter.java 2008-02-07
12:04:09 UTC (rev 9833)
@@ -25,13 +25,15 @@
import org.jboss.portal.portlet.test.jsp.response.Chunk;
import org.jboss.portal.portlet.test.jsp.response.BytesChunk;
import org.jboss.portal.portlet.test.jsp.response.CharsChunk;
-import org.jboss.portal.portlet.test.jsp.response.portlet.PortletChunk;
+import org.jboss.portal.portlet.test.jsp.response.portlet.StartPortletChunk;
import org.jboss.portal.portlet.test.jsp.response.portlet.PortletMarkupChunk;
import org.jboss.portal.portlet.test.jsp.response.portlet.StartPortletTitleChunk;
import org.jboss.portal.portlet.test.jsp.response.portlet.PortletURLChunk;
import org.jboss.portal.portlet.test.jsp.response.portlet.EndPortletChunk;
import org.jboss.portal.portlet.test.jsp.response.BufferingResponse;
import org.jboss.portal.portlet.test.jsp.response.ResponseBuffer;
+import org.jboss.portal.portlet.test.jsp.response.StartPageChunk;
+import org.jboss.portal.portlet.test.jsp.response.EndPageChunk;
import org.jboss.portal.portlet.test.controller.PortletURLRenderer;
import org.jboss.portal.portlet.PortletInvoker;
import org.jboss.portal.portlet.PortletInvokerException;
@@ -65,6 +67,10 @@
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.Map;
+import java.util.Iterator;
+import java.util.List;
+import java.util.LinkedList;
+import java.util.Collections;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -220,6 +226,68 @@
pageState = context.getStateControllerContext().createPageState();
}
+ // Look if we need to handle maxmized rendering
+ for (Window window : page.getWindows())
+ {
+ WindowNavigationalState windowState =
pageState.getWindowNavigationalState(window.getId());
+ if (windowState != null &&
WindowState.MAXIMIZED.equals(windowState.getWindowState()))
+ {
+ List<Chunk> chunks = new LinkedList<Chunk>();
+ int mode = 0;
+ int count = 0;
+ for (Iterator<Chunk> i = page.getChunks().iterator();i.hasNext();)
+ {
+ Chunk chunk = i.next();
+
+ switch (mode)
+ {
+ case 0:
+ if (chunk instanceof StartPageChunk)
+ {
+ mode = 1;
+ chunks.add(chunk);
+ }
+ break;
+ case 1:
+ if (chunk instanceof StartPortletChunk)
+ {
+ StartPortletChunk startPortletChunk = (StartPortletChunk)chunk;
+ String windowId = "" + count;
+ if (window.getId().equals(windowId))
+ {
+ mode = 2;
+ chunks.add(startPortletChunk);
+ }
+ }
+ else if (chunk instanceof EndPageChunk)
+ {
+ mode = 0;
+ chunks.add(chunk);
+ }
+ break;
+ case 2:
+ if (chunk instanceof EndPortletChunk)
+ {
+ mode = 1;
+ }
+
+ //
+ chunks.add(chunk);
+ break;
+ }
+
+ //
+ if (chunk instanceof EndPortletChunk)
+ {
+ count++;
+ }
+ }
+
+ // New page
+ page = new Page(chunks, Collections.singletonMap(window.getId(), window));
+ }
+ }
+
//
Map<String, PortletInvocationResponse> responses = page.render(context,
pageState);
@@ -230,7 +298,7 @@
//
int count = 0;
String windowId = null;
- PortletChunk portletChunk = null;
+ StartPortletChunk startPortletChunk = null;
PortletInvocationResponse portletResponse = null;
for (Chunk chunk : page.getChunks())
{
@@ -246,9 +314,9 @@
writer.write(bytesChunk.getChars());
writer.flush();
}
- else if (chunk instanceof PortletChunk)
+ else if (chunk instanceof StartPortletChunk)
{
- portletChunk = (PortletChunk)chunk;
+ startPortletChunk = (StartPortletChunk)chunk;
windowId = "" + count++;
portletResponse = responses.get(windowId);
}
@@ -316,7 +384,7 @@
{
FragmentResponse fragment = (FragmentResponse)portletResponse;
WindowNavigationalState windowNS =
pageState.getWindowNavigationalState(windowId);
- if (windowNS == null ||
windowNS.getWindowState().equals(WindowState.NORMAL))
+ if (windowNS == null ||
!windowNS.getWindowState().equals(WindowState.MINIMIZED))
{
if (fragment.getType() != FragmentResponse.TYPE_EMPTY)
{
@@ -338,20 +406,20 @@
}
else
{
- writer.write(portletResponse.getClass().getSimpleName() + "["
+ portletChunk.getPortletName() + "," + portletChunk.getApplicationName() +
"]");
+ writer.write(portletResponse.getClass().getSimpleName() + "["
+ startPortletChunk.getPortletName() + "," +
startPortletChunk.getApplicationName() + "]");
writer.flush();
}
}
else
{
- writer.write("Empty[" + portletChunk.getPortletName() +
"," + portletChunk.getApplicationName() + "]");
+ writer.write("Empty[" + startPortletChunk.getPortletName() +
"," + startPortletChunk.getApplicationName() + "]");
writer.flush();
}
}
else if (chunk instanceof EndPortletChunk)
{
windowId = null;
- portletChunk = null;
+ startPortletChunk = null;
portletResponse = null;
}
}
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/Page.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/Page.java 2008-02-07
11:12:39 UTC (rev 9832)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/Page.java 2008-02-07
12:04:09 UTC (rev 9833)
@@ -30,6 +30,7 @@
import java.util.Map;
import java.util.HashMap;
import java.util.List;
+import java.util.Collection;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -60,6 +61,11 @@
return windows.get(windowId);
}
+ public Collection<Window> getWindows()
+ {
+ return windows.values();
+ }
+
public Map<String, PortletInvocationResponse> render(PortletControllerContext
context, PageNavigationalState pageState)
{
Map<String, PortletInvocationResponse> responses = new HashMap<String,
PortletInvocationResponse>();
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/PagePortletControllerContext.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/PagePortletControllerContext.java 2008-02-07
11:12:39 UTC (rev 9832)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/PagePortletControllerContext.java 2008-02-07
12:04:09 UTC (rev 9833)
@@ -24,7 +24,7 @@
import org.jboss.portal.portlet.test.controller.AbstractPortletControllerContext;
import org.jboss.portal.portlet.test.jsp.response.Chunk;
-import org.jboss.portal.portlet.test.jsp.response.portlet.PortletChunk;
+import org.jboss.portal.portlet.test.jsp.response.portlet.StartPortletChunk;
import org.jboss.portal.portlet.test.jsp.response.ResponseBuffer;
import org.jboss.portal.portlet.Portlet;
import org.jboss.portal.portlet.PortletInvokerException;
@@ -43,6 +43,7 @@
import java.io.IOException;
import java.util.Map;
import java.util.HashMap;
+import java.util.LinkedHashMap;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -72,12 +73,12 @@
// Collect portlets to create the page
int counter = 0;
- Map<String, Window> windows = new HashMap<String, Window>();
+ Map<String, Window> windows = new LinkedHashMap<String, Window>();
for (Chunk chunk : buffer.getChunks())
{
- if (chunk instanceof PortletChunk)
+ if (chunk instanceof StartPortletChunk)
{
- PortletChunk portletChunk = (PortletChunk)chunk;
+ StartPortletChunk startPortletChunk = (StartPortletChunk)chunk;
String windowId = "" + counter++;
//
@@ -90,7 +91,7 @@
String applicationName = portletInfo.getApplicationName();
//
- if (applicationName.equals(portletChunk.getApplicationName())
&& portletName.equals(portletChunk.getPortletName()))
+ if (applicationName.equals(startPortletChunk.getApplicationName())
&& portletName.equals(startPortletChunk.getPortletName()))
{
windows.put(windowId, new Window(windowId, portlet));
}
@@ -104,6 +105,9 @@
}
//
+
+
+ //
this.page = new Page(buffer.getChunks(), windows);
this.invoker = invoker;
this.eventControllerContext = new EventControllerContextImpl(invoker);
Added:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/EndPageChunk.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/EndPageChunk.java
(rev 0)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/EndPageChunk.java 2008-02-07
12:04:09 UTC (rev 9833)
@@ -0,0 +1,33 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2008, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * This is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation; either version 2.1 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This software is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this software; if not, write to the Free *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org. *
+ ******************************************************************************/
+package org.jboss.portal.portlet.test.jsp.response;
+
+import org.jboss.portal.portlet.test.jsp.response.Chunk;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 630 $
+ */
+public class EndPageChunk extends Chunk
+{
+}
Added:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/StartPageChunk.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/StartPageChunk.java
(rev 0)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/StartPageChunk.java 2008-02-07
12:04:09 UTC (rev 9833)
@@ -0,0 +1,33 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2008, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * This is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation; either version 2.1 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This software is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this software; if not, write to the Free *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org. *
+ ******************************************************************************/
+package org.jboss.portal.portlet.test.jsp.response;
+
+import org.jboss.portal.portlet.test.jsp.response.Chunk;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 630 $
+ */
+public class StartPageChunk extends Chunk
+{
+}
Deleted:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/portlet/PortletTitleChunk.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/portlet/PortletTitleChunk.java 2008-02-07
11:12:39 UTC (rev 9832)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/portlet/PortletTitleChunk.java 2008-02-07
12:04:09 UTC (rev 9833)
@@ -1,33 +0,0 @@
-/******************************************************************************
- * JBoss, a division of Red Hat *
- * Copyright 2008, Red Hat Middleware, LLC, and individual *
- * contributors as indicated by the @authors tag. See the *
- * copyright.txt in the distribution for a full listing of *
- * individual contributors. *
- * *
- * This is free software; you can redistribute it and/or modify it *
- * under the terms of the GNU Lesser General Public License as *
- * published by the Free Software Foundation; either version 2.1 of *
- * the License, or (at your option) any later version. *
- * *
- * This software is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
- * Lesser General Public License for more details. *
- * *
- * You should have received a copy of the GNU Lesser General Public *
- * License along with this software; if not, write to the Free *
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org. *
- ******************************************************************************/
-package org.jboss.portal.portlet.test.jsp.response.portlet;
-
-import org.jboss.portal.portlet.test.jsp.response.Chunk;
-
-/**
- * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
- * @version $Revision: 630 $
- */
-public class PortletTitleChunk extends Chunk
-{
-}
Copied:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/portlet/StartPortletChunk.java
(from rev 9821,
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/portlet/PortletChunk.java)
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/portlet/StartPortletChunk.java
(rev 0)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/response/portlet/StartPortletChunk.java 2008-02-07
12:04:09 UTC (rev 9833)
@@ -0,0 +1,86 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2008, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * This is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation; either version 2.1 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This software is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this software; if not, write to the Free *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org. *
+ ******************************************************************************/
+package org.jboss.portal.portlet.test.jsp.response.portlet;
+
+import org.jboss.portal.Mode;
+import org.jboss.portal.WindowState;
+import org.jboss.portal.portlet.test.jsp.response.Chunk;
+
+import java.util.Set;
+
+/**
+ * @author <a href="mailto:julien@jboss.org">Julien Viet</a>
+ * @version $Revision: 630 $
+ */
+public class StartPortletChunk extends Chunk
+{
+
+ /** . */
+ private final String portletName;
+
+ /** . */
+ private final String applicationName;
+
+ /** . */
+ private final Mode initialMode;
+
+ /** . */
+ private final Set<Mode> supportedModes;
+
+ /** . */
+ private final Set<WindowState> supportedWindowStates;
+
+ public StartPortletChunk(String portletName, String applicationName, Mode initialMode,
Set<Mode> supportedModes, Set<WindowState> supportedWindowStates)
+ {
+ this.portletName = portletName;
+ this.applicationName = applicationName;
+ this.initialMode = initialMode;
+ this.supportedModes = supportedModes;
+ this.supportedWindowStates = supportedWindowStates;
+ }
+
+ public String getPortletName()
+ {
+ return portletName;
+ }
+
+ public String getApplicationName()
+ {
+ return applicationName;
+ }
+
+ public Mode getInitialMode()
+ {
+ return initialMode;
+ }
+
+ public Set<Mode> getSupportedModes()
+ {
+ return supportedModes;
+ }
+
+ public Set<WindowState> getSupportedWindowStates()
+ {
+ return supportedWindowStates;
+ }
+}
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/taglib/PageTag.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/taglib/PageTag.java 2008-02-07
11:12:39 UTC (rev 9832)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/taglib/PageTag.java 2008-02-07
12:04:09 UTC (rev 9833)
@@ -22,23 +22,31 @@
******************************************************************************/
package org.jboss.portal.portlet.test.jsp.taglib;
-import javax.servlet.jsp.tagext.BodyTagSupport;
+import org.jboss.portal.portlet.test.jsp.response.StartPageChunk;
+import org.jboss.portal.portlet.test.jsp.response.EndPageChunk;
+
import javax.servlet.jsp.JspException;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision: 630 $
*/
-public class PageTag extends BodyTagSupport
+public class PageTag extends BodyChunkTagSupport
{
public int doStartTag() throws JspException
{
+ addChunk(new StartPageChunk());
+
+ //
return EVAL_BODY_INCLUDE;
}
public int doEndTag() throws JspException
{
+ addChunk(new EndPageChunk());
+
+ //
return EVAL_PAGE;
}
}
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/taglib/PortletTag.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/taglib/PortletTag.java 2008-02-07
11:12:39 UTC (rev 9832)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/test/jsp/taglib/PortletTag.java 2008-02-07
12:04:09 UTC (rev 9833)
@@ -22,7 +22,7 @@
******************************************************************************/
package org.jboss.portal.portlet.test.jsp.taglib;
-import org.jboss.portal.portlet.test.jsp.response.portlet.PortletChunk;
+import org.jboss.portal.portlet.test.jsp.response.portlet.StartPortletChunk;
import org.jboss.portal.portlet.test.jsp.response.portlet.EndPortletChunk;
import org.jboss.portal.Mode;
import org.jboss.portal.WindowState;
@@ -161,7 +161,7 @@
}
//
- addChunk(new PortletChunk(
+ addChunk(new StartPortletChunk(
name,
applicationName,
initialMode,
Modified: modules/portlet/trunk/test/src/test/resources/simple-portal-war/index.jsp
===================================================================
--- modules/portlet/trunk/test/src/test/resources/simple-portal-war/index.jsp 2008-02-07
11:12:39 UTC (rev 9832)
+++ modules/portlet/trunk/test/src/test/resources/simple-portal-war/index.jsp 2008-02-07
12:04:09 UTC (rev 9833)
@@ -10,6 +10,8 @@
applicationName="google-weather-portlet">
-----------------------------------<br/>
<portal:portlettitle/><br/>
+<a href="<portal:portleturl
windowState='maximized'/>">Maximized<a/><br/>
+<a href="<portal:portleturl
windowState='normal'/>">Normal<a/><br/>
<a href="<portal:portleturl
windowState='minimized'/>">Minimized<a/><br/>
<a href="<portal:portleturl><portal:param name='zipcode'
value='20855'/></portal:portleturl>">Derwood<a/><br/>
-----------------------------------<br/>