You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pluto-scm@portals.apache.org by ms...@apache.org on 2014/11/25 13:50:12 UTC

[07/19] portals-pluto git commit: working strating point for ajax action portlet

working strating point for ajax action portlet


Project: http://git-wip-us.apache.org/repos/asf/portals-pluto/repo
Commit: http://git-wip-us.apache.org/repos/asf/portals-pluto/commit/e5e905a9
Tree: http://git-wip-us.apache.org/repos/asf/portals-pluto/tree/e5e905a9
Diff: http://git-wip-us.apache.org/repos/asf/portals-pluto/diff/e5e905a9

Branch: refs/heads/PortletHub
Commit: e5e905a94b08588046b2fcf706a2cf4828ffcd88
Parents: 921477c
Author: Scott Nicklous <ms...@apache.org>
Authored: Fri Nov 21 20:57:47 2014 +0100
Committer: Scott Nicklous <ms...@apache.org>
Committed: Fri Nov 21 20:57:47 2014 +0100

----------------------------------------------------------------------
 .../java/basic/portlet/ColorSelPortlet.java     | 10 +---
 .../java/basic/portlet/MessageBoxPortlet.java   | 63 +++++++++++++++-----
 2 files changed, 52 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/e5e905a9/PortletHubDemo/src/main/java/basic/portlet/ColorSelPortlet.java
----------------------------------------------------------------------
diff --git a/PortletHubDemo/src/main/java/basic/portlet/ColorSelPortlet.java b/PortletHubDemo/src/main/java/basic/portlet/ColorSelPortlet.java
index d0a7667..541d621 100644
--- a/PortletHubDemo/src/main/java/basic/portlet/ColorSelPortlet.java
+++ b/PortletHubDemo/src/main/java/basic/portlet/ColorSelPortlet.java
@@ -54,7 +54,6 @@ public class ColorSelPortlet extends GenericPortlet {
       
       String pid = resp.getNamespace();
       
-      String msg = req.getParameter(PARAM_ERRMSG);
       String clr = req.getParameter(PARAM_COLOR);
       clr = (clr == null) ? "#FFFFFF" : clr;
       
@@ -75,12 +74,9 @@ public class ColorSelPortlet extends GenericPortlet {
 
       writer.write("   Enter background color (public param):");
       writer.write("   </td><td colspan=3>");
-      writer.write("   <input name='" + PARAM_COLOR + "' type='text' value='" + clr + "' size='10' maxlength='10'>");
-      writer.write("   </td><td>");
-      if (msg != null) {
-         writer.write(msg);
-      }
-      writer.write("   </td></tr><tr><td>");
+      writer.write("   <input id='" + pid + "-color' name='" + PARAM_COLOR + "' type='text' value='" + clr + "' size='10' maxlength='10'>");
+      writer.write("   </td><td><div id='" + pid + "-putMsgHere'>");
+      writer.write("   </div></td></tr><tr><td>");
 
       writer.write("   Select active foreground colors:");
       writer.write("   </td><td>");

http://git-wip-us.apache.org/repos/asf/portals-pluto/blob/e5e905a9/PortletHubDemo/src/main/java/basic/portlet/MessageBoxPortlet.java
----------------------------------------------------------------------
diff --git a/PortletHubDemo/src/main/java/basic/portlet/MessageBoxPortlet.java b/PortletHubDemo/src/main/java/basic/portlet/MessageBoxPortlet.java
index 783c4e7..d9f6b80 100644
--- a/PortletHubDemo/src/main/java/basic/portlet/MessageBoxPortlet.java
+++ b/PortletHubDemo/src/main/java/basic/portlet/MessageBoxPortlet.java
@@ -61,12 +61,10 @@ public class MessageBoxPortlet extends GenericPortlet {
       String style = "\"border-style:solid; border-width:3px; padding:4px; overflow:auto;" + 
            "border-color:#000088; min-height:70px; background:#E0E0E0;\"";
       
-      String aurl = resp.createActionURL().toString();
-      
       writer.write("<div style='clear:both;'>\n");
       writer.write("<div style='float:left;'><h3>Image Viewer</h3></div>\n");
       writer.write("<div style='float:right;'>\n");
-      writer.write("<form action='" + aurl + "' method='post'><input type='submit' name='action' value='clear' /></form>\n");
+      writer.write("<form   onsubmit='return false;'><input id='" + pid + "-clear' type='submit' name='action' value='clear' /></form>\n");
       writer.write("</div>\n");
       writer.write("</div><div style='clear:both;'><hr/>\n");
       writer.write("<h3>Message Box Portlet</h3>\n");
@@ -74,18 +72,44 @@ public class MessageBoxPortlet extends GenericPortlet {
       writer.write("<div id='" + pid + "-responseDiv' style=" + style + "></div>\n");
       writer.write("</div>\n");
    
-      ResourceURL resurl = resp.createResourceURL();
-      
       writer.write("<script>\n");
       writer.write("(function () {\n");
-      writer.write("   var xhr = new XMLHttpRequest();\n");
-      writer.write("   xhr.onreadystatechange=function() {\n");
-      writer.write("      if (xhr.readyState==4 && xhr.status==200) {\n");
-      writer.write("         document.getElementById('" + pid + "-responseDiv').innerHTML=xhr.responseText;\n");
-      writer.write("      }\n");
-      writer.write("   };\n");
-      writer.write("   xhr.open(\"GET\",\"" + resurl.toString() + "\",true);\n");
-      writer.write("   xhr.send();\n");
+      writer.write("   var pid = '" + pid + "',\n");
+      writer.write("       resdiv = '" + pid + "-responseDiv',\n");
+      writer.write("       clrButton = '" + pid + "-clear',\n");
+      writer.write("   \n");
+      writer.write("       state,\n");
+      writer.write("       resparms = {},\n");
+      writer.write("       cacheability = 'cacheLevelPage',\n");
+      writer.write("       portletInit;\n");
+      writer.write("   \n");
+      writer.write("   var update = function (type, state) {\n");
+      writer.write("      console.log(\"Resource Portlet: state updated.\");\n");
+      writer.write("      \n");
+      writer.write("      portletInit.createResourceUrl(resparms, cacheability).then(function (url) {\n");
+      writer.write("         var brdr = (resparms.border == undefined) ? undefined : resparms.border[0];\n");
+      writer.write("         console.log(\"Resource Portlet: got url: \" + url + \", res parm border=\" + brdr);\n");
+      writer.write("         var xhr = new XMLHttpRequest();\n");
+      writer.write("         xhr.onreadystatechange=function() {\n");
+      writer.write("            if (xhr.readyState==4 && xhr.status==200) {\n");
+      writer.write("               document.getElementById(resdiv).innerHTML=xhr.responseText;\n");
+      writer.write("            }\n");
+      writer.write("         };\n");
+      writer.write("         xhr.open(\"GET\",url,true);\n");
+      writer.write("         xhr.send();\n");
+      writer.write("      });\n");
+      writer.write("   }\n");
+      writer.write("   \n");
+      writer.write("   document.getElementById(clrButton).onclick = function () {\n");
+      writer.write("      console.log(\"clear button clicked. \");\n");
+      writer.write("   }\n");
+      writer.write("   \n");
+      writer.write("   portlet.register(pid).then(function (pi) {\n");
+      writer.write("      console.log(\"Message Box portlet registered: \" + pid);\n");
+      writer.write("      portletInit = pi;\n");
+      writer.write("      portletInit.addEventListener(\"portlet.onStateChange\", update);\n");
+      writer.write("   });\n");
+      writer.write("   \n");
       writer.write("})();\n");
       writer.write("</script>\n");
 
@@ -124,8 +148,19 @@ public class MessageBoxPortlet extends GenericPortlet {
       }
       
       String[] msg;
+      int numMsgs = 0;
+      try {
+         numMsgs = Integer.parseInt(req.getParameter(PARAM_NUM_MSGS));
+      } catch (Exception e) {}
+      
+      if (numMsgs == 0) {
+         msgs.clear();
+      }
 
       try {
+         // Both pieces of info are transported in a delimted string rather than 
+         // an array since the Pluto impl doesn't seem to get along with array types as 
+         // event payload types.
          String val = (String) req.getEvent().getValue();
          msg = val.split(DELIM);
       } catch (Exception e) {
@@ -138,7 +173,7 @@ public class MessageBoxPortlet extends GenericPortlet {
       clr = (clr == null) ? "#FFFFFF" : clr;
       
       StringBuffer sb = new StringBuffer();
-      sb.append("<p style='margin:0px 5px 0px 5px; color:" + msg[1] 
+      sb.append("<p style='margin:2px 5px 2px 5px; color:" + msg[1] 
             + "; background-color:" + clr + ";'>");
       sb.append("" + (msgs.size() + 1) + ": " + msg[0]);
       sb.append("</p>");