JBoss Portal SVN: r12451 - modules/portlet/trunk/samples/src/main/java/org/jboss/portal/portlet/samples/remotecontroller.
by portal-commits@lists.jboss.org
Author: wesleyhales
Date: 2009-01-08 14:20:12 -0500 (Thu, 08 Jan 2009)
New Revision: 12451
Modified:
modules/portlet/trunk/samples/src/main/java/org/jboss/portal/portlet/samples/remotecontroller/RemoteControllerPortlet.java
Log:
Tried to get remote window to reload on page change
Modified: modules/portlet/trunk/samples/src/main/java/org/jboss/portal/portlet/samples/remotecontroller/RemoteControllerPortlet.java
===================================================================
--- modules/portlet/trunk/samples/src/main/java/org/jboss/portal/portlet/samples/remotecontroller/RemoteControllerPortlet.java 2009-01-08 04:19:57 UTC (rev 12450)
+++ modules/portlet/trunk/samples/src/main/java/org/jboss/portal/portlet/samples/remotecontroller/RemoteControllerPortlet.java 2009-01-08 19:20:12 UTC (rev 12451)
@@ -4,15 +4,9 @@
package org.jboss.portal.portlet.samples.remotecontroller;
-import javax.portlet.GenericPortlet;
-import javax.portlet.PortletException;
-import javax.portlet.PortletURL;
-import javax.portlet.RenderRequest;
-import javax.portlet.RenderResponse;
-import javax.portlet.ResourceRequest;
-import javax.portlet.ResourceResponse;
-import javax.portlet.ResourceURL;
-import javax.portlet.WindowState;
+import org.w3c.dom.Element;
+
+import javax.portlet.*;
import java.io.IOException;
import java.io.PrintWriter;
@@ -20,62 +14,86 @@
* @author <a href="mailto:chris.laprun@jboss.com">Chris Laprun</a>
* @version $Revision: 9979 $
*/
-public class RemoteControllerPortlet extends GenericPortlet
-{
+public class RemoteControllerPortlet extends GenericPortlet {
private static final String ZIPCODE = "zipcode";
+ String resUrl = "";
@Override
- protected void doView(RenderRequest renderRequest, RenderResponse renderResponse) throws PortletException, IOException
- {
+ protected void doView(RenderRequest renderRequest, RenderResponse renderResponse) throws PortletException, IOException {
renderResponse.setContentType("text/html");
+ ResourceURL resource = renderResponse.createResourceURL();
+ resUrl = resource.toString();
PrintWriter printWriter = renderResponse.getWriter();
String namespace = renderResponse.getNamespace();
- printWriter.print("<p><a href='#' onclick=\"" + namespace + "_remote=" + namespace + "_openRemote('");
- ResourceURL resource = renderResponse.createResourceURL();
+ printWriter.print("<p><a href='#' onclick=\"" + namespace + "_remote=" + namespace + "_openRemote_new('");
+
printWriter.print(resource);
printWriter.print("')\">Open remote control!</a></p>");
}
@Override
- protected void doHeaders(RenderRequest renderRequest, RenderResponse renderResponse)
- {
- PrintWriter printWriter = null;
- try
- {
- printWriter = renderResponse.getWriter();
- String namespace = renderResponse.getNamespace();
- String remoteWindowName = namespace + "_remote";
- printWriter.print("<script type='text/javascript'>var " + remoteWindowName + "; function " + namespace
- + "_openRemote(url){window.name='" + namespace + "_parent';window.open(url, '" + remoteWindowName
- + "', 'width=400,height=200,scrollable=yes')}" +
- "onload = function() {" +
- "if (typeof " + remoteWindowName + " != 'undefined') {" + remoteWindowName + ".location.reload(true);}" +
- "}</script>");
- }
- catch (IOException e)
- {
- e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
- }
+ protected void doHeaders(RenderRequest renderRequest, RenderResponse renderResponse) {
+ Element element = renderResponse.createElement("script");
+ element.setAttribute("type", "text/javascript");
+ String namespace = renderResponse.getNamespace();
+ String remoteWindowName = namespace + "_remote";
+
+ element.setTextContent("" +
+ "var " + remoteWindowName + " = ''; " +
+
+ "function " + namespace + "_openRemote_new(url){" +
+
+ //"this.window.name='" + namespace + "_parent';\n" +
+ "if (!"+ remoteWindowName +".closed){"+
+ "if (" + remoteWindowName +".location) {\n" +
+ remoteWindowName +".location.reload(true);\n" +
+// "try{" + fix recursion/do something different
+// "addLoadEvent(" + namespace + "_openRemote_new('" + resUrl +"'));" +
+// "}catch(e){}" +
+
+ "}\n" +
+ "else {\n" +
+ remoteWindowName +"=window.open(url, '" + remoteWindowName + "', 'width=400,height=200,scrollable=yes');\n" +
+
+ "if (!"+ remoteWindowName +".opener){ "+ remoteWindowName +".opener = self;\n}" +
+ "}\n" +
+ "if (window.focus) {"+ remoteWindowName +".focus()}\n" +
+ "return false;" +
+ "}}" +
+ "" +
+
+ "function addLoadEvent(func) {\n" +
+ "var oldonload = window.onload;\n" +
+ "if (typeof window.onload != 'function') {\n" +
+ "window.onload = func;\n" +
+ "}\n" +
+ "else {\n" +
+ "window.onload = function() {\n" +
+ "oldonload();\n" +
+ "func();\n" +
+ "}\n" +
+ "}\n" +
+ "}");
+ renderResponse.addProperty(MimeResponse.MARKUP_HEAD_ELEMENT, element);
}
@Override
- public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) throws PortletException, IOException
- {
+ public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) throws PortletException, IOException {
resourceResponse.setContentType("text/html");
PrintWriter writer = resourceResponse.getWriter();
String namespace = resourceResponse.getNamespace();
writer.print("<html><head><script type='text/javascript'>function openLinkInParent(url){window.open(url,'"
- + namespace + "_parent');}</script>\n<link rel=\"stylesheet\" href='" + resourceRequest.getContextPath() + "/css/master.css' type=\"text/css\"/></head><body>");
+ + namespace + "_parent');}</script>\n<link rel=\"stylesheet\" href='" + resourceRequest.getContextPath() + "/css/master.css' type=\"text/css\"/></head><body>");
PortletURL url = resourceResponse.createRenderURL();
url.setWindowState(WindowState.MINIMIZED);
writer.print("<div class=\"remote-container\"><ul><li><a href='#' onclick=\"" + createParentURL(url) + "\"><img\n" +
- " src=\"" + resourceRequest.getContextPath() + "/images/icon-minimize.gif\" alt=\"\"/> minimize parent portlet</a></li>");
+ " src=\"" + resourceRequest.getContextPath() + "/images/icon-minimize.gif\" alt=\"\"/> minimize parent portlet</a></li>");
url.setWindowState(WindowState.MAXIMIZED);
writer.print("<li><a href='#' onclick=\"" + createParentURL(url) + "\"><img\n" +
- " src=\"" + resourceRequest.getContextPath() + "/images/icon-maximize.gif\" alt=\"\"/> maximize parent portlet</a></li>");
+ " src=\"" + resourceRequest.getContextPath() + "/images/icon-maximize.gif\" alt=\"\"/> maximize parent portlet</a></li>");
url.setWindowState(WindowState.NORMAL);
writer.print("<li><a href='#' onclick=\"" + createParentURL(url) + "\"><img\n" +
- " src=\"" + resourceRequest.getContextPath() + "/images/icon-normal.gif\" alt=\"\"/> make parent portlet normal</a></li></ul>");
+ " src=\"" + resourceRequest.getContextPath() + "/images/icon-normal.gif\" alt=\"\"/> make parent portlet normal</a></li></ul>");
writer.print("<br/><ul><li><b>'zipcode'</b> public render parameter value: " + resourceRequest.getParameter(ZIPCODE) + "<br/>");
writer.print("Set value of <b>'zipcode'</b> public render parameter to:</li>");
url.setParameter(ZIPCODE, "80201");
@@ -87,8 +105,7 @@
writer.print("</ul></div></body></html>");
}
- private String createParentURL(PortletURL url)
- {
+ private String createParentURL(PortletURL url) {
return "openLinkInParent('" + url + "')";
}
}
17 years, 3 months