[jboss-svn-commits] JBL Code SVN: r5983 - in labs/jbosslabs/trunk/portal-extensions/portal-dnd: dndRenderer.war/js/portal src/java/org/jboss/portal/core/theme/render/impl src/java/org/jboss/portal/dnd

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Aug 25 16:26:14 EDT 2006


Author: szimano
Date: 2006-08-25 16:26:11 -0400 (Fri, 25 Aug 2006)
New Revision: 5983

Modified:
   labs/jbosslabs/trunk/portal-extensions/portal-dnd/dndRenderer.war/js/portal/PortalDD.js
   labs/jbosslabs/trunk/portal-extensions/portal-dnd/src/java/org/jboss/portal/core/theme/render/impl/DnDRegionRenderer.java
   labs/jbosslabs/trunk/portal-extensions/portal-dnd/src/java/org/jboss/portal/core/theme/render/impl/DnDTools.java
   labs/jbosslabs/trunk/portal-extensions/portal-dnd/src/java/org/jboss/portal/core/theme/render/impl/DnDWindowRenderer.java
   labs/jbosslabs/trunk/portal-extensions/portal-dnd/src/java/org/jboss/portal/dnd/DnDAjaxServlet.java
Log:
ajax calls for position persistance JBLAB-728

Modified: labs/jbosslabs/trunk/portal-extensions/portal-dnd/dndRenderer.war/js/portal/PortalDD.js
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/portal-dnd/dndRenderer.war/js/portal/PortalDD.js	2006-08-25 16:17:41 UTC (rev 5982)
+++ labs/jbosslabs/trunk/portal-extensions/portal-dnd/dndRenderer.war/js/portal/PortalDD.js	2006-08-25 20:26:11 UTC (rev 5983)
@@ -1,9 +1,31 @@
 log = new YAHOO.widget.LogWriter("portalDnD");
 
-function getPortletRegion(portletId) {
+var borderBefore = "";
+var borderTopBefore = "";
 
+function getBorder(id) {
+	YAHOO.util.Dom.setStyle(id, "border-top", borderTopBefore);
+	YAHOO.util.Dom.setStyle(id, "border", borderBefore);
+    borderBefore = "";
+    borderTopBefore = "";
 }
 
+function setBorder(id) {
+	if (borderBefore.length == 0) {
+    	borderTopBefore = YAHOO.util.Dom.getStyle(id, "border-top");
+    	borderBefore = YAHOO.util.Dom.getStyle(id, "border");
+    }
+    
+    YAHOO.util.Dom.setStyle(id, "border-top", "2px solid red");
+}
+
+function persitNewPosition(positionNo, windowId, oldRegionId, newRegionId) {
+	postData = "action=PERSIST&positionNo="+encodeURI(positionNo)+"&windowId="+encodeURI(windowId)+"&oldRegionId="+encodeURI(oldRegionId)+"&newRegionId="+encodeURI(newRegionId);
+	
+	log.log(postData);
+	invokeAjax(postData);
+}
+
 function invokeAjax(postData) {
 
     var handleSuccess = function(o){ 
@@ -13,7 +35,7 @@
 	        log.log("HTTP status: " + o.status); 
 	        log.log("Status code message: " + o.statusText); 
 	        log.log("<li>HTTP headers: <ul>" + o.getAllResponseHeaders + "</ul></li>"); 
-	        log.log("PHP response: " + o.responseText); 
+	        log.log("Servlet response: " + o.responseText); 
 	        log.log("Argument object: " + o.argument); 
 	    } 
 	} 
@@ -45,20 +67,20 @@
     YAHOO.util.PortalDD.superclass.onDragOver.call(this, e, id);
     
     // draw a border around dropto portlet
-    YAHOO.util.Dom.setStyle(id, "border-top", "2px solid red");
+    setBorder(id);
 }
 
 YAHOO.util.PortalDD.prototype.onDragOut = function(e, id) {
     YAHOO.util.PortalDD.superclass.onDragOut.call(this, e, id);
     
     // remove the border around dropto portlet
-    YAHOO.util.Dom.setStyle(id, "border-top", "0px");
+    getBorder(id);
 }
 
 YAHOO.util.PortalDD.prototype.onDragDrop = function(e, id) {
     
     // remove the border around dropto portlet
-    YAHOO.util.Dom.setStyle(id, "border-top", "0px");
+    getBorder(id);
     
     var el = this.getEl();
 	var droped = document.getElementById(id);
@@ -95,7 +117,8 @@
 	var adding = false;
 	
 	// move down all the nodes under the portlet (including dropto portlet)
-	for (var i = 0;(nodeList.item(i) != el) && (i < nodeList.length); i++) {
+	var i = 0;
+	while ((nodeList.item(i) != el) && (i < nodeList.length)) {
 		var nextNode = nodeList.item(i);
 		if (!adding && nextNode == droped) {
 			adding = true;
@@ -104,8 +127,17 @@
 		if (adding) {
 			dropedParent.appendChild(nextNode);
 		}
+		else {
+			i++;
+		}
 	}
 	
+	if (nodeList.item(0).id.indexOf("regionDrop") == 0) {
+		i--;
+	}
+	
+	log.log("new position: "+i+ " " + this.windowId);
+	persitNewPosition(i, this.windowId, thisParent.regionId, dropedParent.regionId);
 };
 
 YAHOO.util.PortalDD.prototype.endDrag = function(e) {

Modified: labs/jbosslabs/trunk/portal-extensions/portal-dnd/src/java/org/jboss/portal/core/theme/render/impl/DnDRegionRenderer.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/portal-dnd/src/java/org/jboss/portal/core/theme/render/impl/DnDRegionRenderer.java	2006-08-25 16:17:41 UTC (rev 5982)
+++ labs/jbosslabs/trunk/portal-extensions/portal-dnd/src/java/org/jboss/portal/core/theme/render/impl/DnDRegionRenderer.java	2006-08-25 20:26:11 UTC (rev 5983)
@@ -50,6 +50,8 @@
 
 	private Map<String, String> portletRegions = new HashMap<String, String>();
 
+	private Map<String, String> windowIds = new HashMap<String, String>();
+
 	private final static Logger log = Logger.getLogger(DnDRegionRenderer.class);
 
 	/**
@@ -119,12 +121,20 @@
 								+ " = new YAHOO.util.PortalDD('portlet-dnd-"
 								+ renderContext.getRegionID() + "-" + i
 								+ "');\n");
-				renderContext.getMarkupFragment().append(
-						"            ddPortlet" + renderContext.getRegionID()
-								+ i + ".setXConstraint(1000, 1000, 1);\n");
-				renderContext.getMarkupFragment().append(
-						"            ddPortlet" + renderContext.getRegionID()
-								+ i + ".setYConstraint(1000, 1000, 1);\n");
+				renderContext.getMarkupFragment()
+						.append(
+								"            ddPortlet"
+										+ renderContext.getRegionID() + i
+										+ ".windowId = \""+windowIds.get("portlet-dnd-"
+										+ renderContext.getRegionID() + "-" + i)
+										+ "\";\n");
+				/*
+				 * renderContext.getMarkupFragment().append( " ddPortlet" +
+				 * renderContext.getRegionID() + i + ".setXConstraint(1000,
+				 * 1000, 1);\n"); renderContext.getMarkupFragment().append( "
+				 * ddPortlet" + renderContext.getRegionID() + i +
+				 * ".setYConstraint(1000, 1000, 1);\n");
+				 */
 
 				/*
 				 * renderContext.getMarkupFragment().append( " regionDD" +
@@ -133,12 +143,18 @@
 				 * ".getDragEl());\n");
 				 */
 			}
-			
+
 			// add this regiondrop id
 			renderContext.getMarkupFragment().append(
 					"            ddPortlet" + renderContext.getRegionID() + "0"
 							+ ".getEl().parentNode.dropToRegion = 'regionDrop"
 							+ renderContext.getRegionID() + "';\n");
+			
+			// add this region id
+			renderContext.getMarkupFragment().append(
+					"            ddPortlet" + renderContext.getRegionID() + "0"
+							+ ".getEl().parentNode.regionId = '"
+							+ region.getId() + "';\n");
 
 			renderContext.getMarkupFragment().append("        }\n");
 			renderContext.getMarkupFragment().append("    };\n");
@@ -194,4 +210,8 @@
 
 		return result;
 	}
+
+	public void setWindowId(String portletId, String windowId) {
+		windowIds.put(portletId, windowId);
+	}
 }

Modified: labs/jbosslabs/trunk/portal-extensions/portal-dnd/src/java/org/jboss/portal/core/theme/render/impl/DnDTools.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/portal-dnd/src/java/org/jboss/portal/core/theme/render/impl/DnDTools.java	2006-08-25 16:17:41 UTC (rev 5982)
+++ labs/jbosslabs/trunk/portal-extensions/portal-dnd/src/java/org/jboss/portal/core/theme/render/impl/DnDTools.java	2006-08-25 20:26:11 UTC (rev 5983)
@@ -10,7 +10,7 @@
 			+ "<script type='text/javascript' src='/dndRenderer/js/connection/connection.js' ></script>\n"
 			+ "<script type='text/javascript' src='/dndRenderer/js/portal/PortalDD.js' ></script>\n\n\n"
 			
-			/*+ "<script type='text/javascript'>"
+			+ "<script type='text/javascript'>"
 			+ "var myLogReader1 = new YAHOO.widget.LogReader(null, { newestOnTop: true, height: \"400px\" });"
 			+ "</script>\n\n"
 			
@@ -31,6 +31,6 @@
 			+ ".yui-log .error {background-color:#E32F0B;} \n"
 			+ ".yui-log .time {background-color:#A6C9D7;} \n"
 			+ ".yui-log .window {background-color:#F2E886;} \n"
-			+ "</style>\n\n"*/;
+			+ "</style>\n\n";
 
 }

Modified: labs/jbosslabs/trunk/portal-extensions/portal-dnd/src/java/org/jboss/portal/core/theme/render/impl/DnDWindowRenderer.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/portal-dnd/src/java/org/jboss/portal/core/theme/render/impl/DnDWindowRenderer.java	2006-08-25 16:17:41 UTC (rev 5982)
+++ labs/jbosslabs/trunk/portal-extensions/portal-dnd/src/java/org/jboss/portal/core/theme/render/impl/DnDWindowRenderer.java	2006-08-25 20:26:11 UTC (rev 5983)
@@ -58,10 +58,17 @@
 				.getRegionRenderer()).getPortletNumber(renderContext
 				.getRegionID());
 
+		((DnDRegionRenderer) renderContext.getRegionRenderer()).setWindowId(
+				"portlet-dnd-" + renderContext.getRegionID() + "-"
+						+ portletNumber, portletContext.getWindowName());
+
 		if (portletNumber == 0) {
-			renderContext.getMarkupFragment().append(
-					"<div style='display: none; visibility: hidden; padding: 50px; margin: 10px; border: 1px dashed black;' id='regionDrop"
-							+ renderContext.getRegionID() + "'>Drop your portlets here</div>");
+			renderContext
+					.getMarkupFragment()
+					.append(
+							"<div style='display: none; visibility: hidden; padding: 50px; margin: 10px; border: 1px dashed black;' id='regionDrop"
+									+ renderContext.getRegionID()
+									+ "'>Drop your portlets here</div>");
 		}
 
 		renderContext.getMarkupFragment().append(

Modified: labs/jbosslabs/trunk/portal-extensions/portal-dnd/src/java/org/jboss/portal/dnd/DnDAjaxServlet.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/portal-dnd/src/java/org/jboss/portal/dnd/DnDAjaxServlet.java	2006-08-25 16:17:41 UTC (rev 5982)
+++ labs/jbosslabs/trunk/portal-extensions/portal-dnd/src/java/org/jboss/portal/dnd/DnDAjaxServlet.java	2006-08-25 20:26:11 UTC (rev 5983)
@@ -17,33 +17,67 @@
 	 * 
 	 */
 	private static final long serialVersionUID = 1L;
-	
+
+	private static final String PERSIST = "PERSIST";
+
 	private final static Logger log = Logger.getLogger(DnDAjaxServlet.class);
 
-	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
+			throws ServletException, IOException {
 		doPost(req, resp);
 	}
 
-	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
+			throws ServletException, IOException {
 		Enumeration<String> attNames = req.getAttributeNames();
 		while (attNames.hasMoreElements()) {
 			String name = attNames.nextElement();
-			log.info("Attribute: "+name+" = "+req.getAttribute(name));
+			log.info("Attribute: " + name + " = " + req.getAttribute(name));
 		}
-		
+
 		Enumeration<String> paramNames = req.getParameterNames();
 		while (paramNames.hasMoreElements()) {
 			String name = paramNames.nextElement();
-			log.info("Parameter: "+name+" = "+req.getParameter(name));
+			log.info("Parameter: " + name + " = " + req.getParameter(name));
 		}
-		
+
+		if (req.getParameter("action") != null) {
+			if (req.getParameter("action").equals(PERSIST)) {
+				if (req.getParameter("positionNo") == null
+						|| req.getParameter("windowId") == null
+						|| req.getParameter("oldRegionId") == null
+						|| req.getParameter("newRegionId") == null) {
+					resp.sendError(400, "Not enought parameters");
+					return;
+				}
+
+				persistPosition(req.getParameter("positionNo"), req
+						.getParameter("windowId"), req
+						.getParameter("oldRegionId"), req
+						.getParameter("newRegionId"));
+
+				sendResp(resp, "Position persisted");
+			} else {
+				resp.sendError(400, "Unknown ajax call");
+				return;
+			}
+		}
+	}
+
+	private void sendResp(HttpServletResponse resp, String respData)
+			throws IOException {
 		resp.setHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT");
 		resp.setDateHeader("Last-Modified", new Date().getTime());
 		resp.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
 		resp.addHeader("Cache-Control", "post-check=0, pre-check=0");
 		resp.setContentType("text/html");
-		
-		resp.getWriter().write("jakas bzdura");
+
+		resp.getWriter().write(respData);
 	}
 
+	private void persistPosition(String positionNo, String windowId,
+			String oldRegionId, String newRegionId) {
+		log.info("New position persistance call: " + positionNo + " "
+				+ windowId + " " + oldRegionId + " " + newRegionId);
+	}
 }




More information about the jboss-svn-commits mailing list