[richfaces-svn-commits] JBoss Rich Faces SVN: r2288 - in trunk: samples/modalpanel-sample/src/main/webapp/pages and 1 other directories.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Thu Aug 16 08:04:31 EDT 2007


Author: pyaschenko
Date: 2007-08-16 08:04:31 -0400 (Thu, 16 Aug 2007)
New Revision: 2288

Modified:
   trunk/samples/modalpanel-sample/src/main/java/org/richfaces/Bean.java
   trunk/samples/modalpanel-sample/src/main/webapp/pages/index.jsp
   trunk/ui/modal-panel/src/main/resources/org/richfaces/renderkit/html/scripts/modalPanel.js
   trunk/ui/modal-panel/src/main/resources/org/richfaces/renderkit/html/scripts/modalPanelBorders.js
Log:
RF-483 fixed

Modified: trunk/samples/modalpanel-sample/src/main/java/org/richfaces/Bean.java
===================================================================
--- trunk/samples/modalpanel-sample/src/main/java/org/richfaces/Bean.java	2007-08-16 10:57:29 UTC (rev 2287)
+++ trunk/samples/modalpanel-sample/src/main/java/org/richfaces/Bean.java	2007-08-16 12:04:31 UTC (rev 2288)
@@ -47,4 +47,12 @@
 	public void setContainerRendered(boolean containerRendered) {
 		this.containerRendered = containerRendered;
 	}
+
+	private int counter = 0;
+	
+	public int getCounter() {
+		counter++;
+		System.out.println(counter);
+		return counter;
+	}
 }
\ No newline at end of file

Modified: trunk/samples/modalpanel-sample/src/main/webapp/pages/index.jsp
===================================================================
--- trunk/samples/modalpanel-sample/src/main/webapp/pages/index.jsp	2007-08-16 10:57:29 UTC (rev 2287)
+++ trunk/samples/modalpanel-sample/src/main/webapp/pages/index.jsp	2007-08-16 12:04:31 UTC (rev 2288)
@@ -23,7 +23,7 @@
 	<body style="text-align: center;">
 		<f:view>
 			<h:form id="_form">
-
+			
 			<h:selectOneMenu>
 				<f:selectItem itemLabel="item1" itemValue="item1" />
 				<f:selectItem itemLabel="item2" itemValue="item2" />

Modified: trunk/ui/modal-panel/src/main/resources/org/richfaces/renderkit/html/scripts/modalPanel.js
===================================================================
--- trunk/ui/modal-panel/src/main/resources/org/richfaces/renderkit/html/scripts/modalPanel.js	2007-08-16 10:57:29 UTC (rev 2287)
+++ trunk/ui/modal-panel/src/main/resources/org/richfaces/renderkit/html/scripts/modalPanel.js	2007-08-16 12:04:31 UTC (rev 2288)
@@ -9,6 +9,20 @@
 sizeA = 4;
 sizeB = 40;
 
+function discardElement(element) {
+    var garbageBin = document.getElementById('IELeakGarbageBin');
+    if (!garbageBin) {
+        garbageBin = document.createElement('DIV');
+        garbageBin.id = 'IELeakGarbageBin';
+        garbageBin.style.display = 'none';
+        document.body.appendChild(garbageBin);
+    }
+
+    // move the element to the garbage bin
+    garbageBin.appendChild(element);
+    garbageBin.innerHTML = '';
+}
+
 ModalPanel = Class.create();
 
 {
@@ -39,9 +53,7 @@
 		while (i < ModalPanel.panels.length) {
 			var panel = ModalPanel.panels[i];
 
-			var elt = $(panel.markerId);
-
-			if (Element.isUninitialized(elt)) {
+			if (Element.isUninitialized(panel.markerId)) {
 				panel.destroy();
 
 				ModalPanel.panels.splice(i, 1);
@@ -92,8 +104,9 @@
 
 ModalPanel.prototype = {
 	initialize: function(id, options) {
-		this.markerId = id;
 
+		this.markerId = $(id);
+
 		this.id = id + "Container";
 
 		this.options = options;
@@ -132,7 +145,7 @@
 			this.header = new ModalPanel.Border(id + "Header", this, "move", ModalPanel.Header);
 		}
 
-		$(this.id).modalPanel = this;
+		this.markerId.modalPanel = this;
 		
 		var eDiv = $(this.div);
 		if (eDiv.style.setExpression)
@@ -169,8 +182,8 @@
 		this.eventFirstOnfocus = this.firstOnfocus.bindAsEventListener(this);
 		this.eventLastOnfocus = this.lastOnfocus.bindAsEventListener(this);
 
-		this.firstHref = this.markerId + "FirstHref";
-		this.lastHref = this.markerId + "LastHref";
+		this.firstHref = this.id + "FirstHref";
+		this.lastHref = this.id + "LastHref";
 		
 		this.selectBehavior = options.selectBehavior;
 	},
@@ -178,14 +191,30 @@
 	destroy: function() {
 
         this.traverseSelects(true);
+        
+        this.parent = null;
+        this.firstOutside = null;
+        this.lastOutside = null;
+        if (this.header) {
+        	this.header.destroy();
+			this.header=null;        	
+        }
 
+		for (var k = 0; k < this.borders.length; k++ ) {
+			this.borders[k].destroy();
+		}
+		this.borders = null;
+
 		if (this.floatedToBody) {
 			var element = $(this.id);
 			var parent = element.parentNode;
 			if (parent) {
 				parent.removeChild(element);
+				discardElement(element);
 			}
 		}
+        this.markerId.modalPanel = null;
+        this.markerId = null;
 	},
 
 	initIframe : function() {
@@ -413,17 +442,18 @@
 		var eIframe;
 		if (ModalPanel.disableSelects && !this.iframe) {
 			new Insertion.Top(eCdiv,
-			"<iframe src=\"javascript:''\" frameborder=\"0\" scrolling=\"no\" id=\"" + this.markerId + "IFrame\"" +
+			"<iframe src=\"javascript:''\" frameborder=\"0\" scrolling=\"no\" id=\"" + this.id + "IFrame\"" +
 				"style=\"position: absolute; width: 1px; height: 1px; background-color: white; overflow-y: hidden; z-index: 1;\">" +
 			"</iframe>");
 
-			this.iframe = this.markerId + "IFrame";
+			this.iframe = this.id + "IFrame";
 			
 			eIframe = $(this.iframe); 
 
 			//alert("IFrame:" + eIframe + "created!");
 
-			eIframe.onload = this.initIframe.bind(eIframe);
+			//eIframe.onload = this.initIframe.bind(eIframe);
+			Event.observe(eIframe, 'load', this.initIframe.bindAsEventListener(eIframe));
 		}
 
 		var options = {};
@@ -772,8 +802,8 @@
 		if (e && target) {
 			var input = document.createElement("input");
 			input.type = "hidden";
-			input.id = this.markerId + "OpenedState";
-			input.name = this.markerId + "OpenedState";
+			input.id = this.id + "OpenedState";
+			input.name = this.id + "OpenedState";
 			input.value = this.shown ? "true" : "false";
 			target.appendChild(input);
 
@@ -782,8 +812,8 @@
 				for (var i = 0; i < keys.length; i++) {
 					input = document.createElement("input");
 					input.type = "hidden";
-					input.id = this.markerId + "StateOption_" + keys[i];
-					input.name = this.markerId + "StateOption_" + keys[i];
+					input.id = this.id + "StateOption_" + keys[i];
+					input.name = this.id + "StateOption_" + keys[i];
 					input.value = this.userOptions[keys[i]];
 					target.appendChild(input);
 
@@ -802,14 +832,14 @@
 		for (var i = 0; i < ModalPanel.panels.length; i++ ) {
 			var pnl = ModalPanel.panels[i];
 			if (pnl && pnl.markerId) {
-				var pnlId = pnl.markerId;
+				var pnlId = pnl.markerId.id;
 
 				if (pnlId) {
 					//try to match ids
 					if (pnlId.length >= prefId.length) {
 						var substr = pnlId.substring(pnlId.length - prefId.length, pnlId.length);
 						if (substr == prefId) {
-							return pnl.id;
+							return pnl.markerId;
 						}
 					}
 				}
@@ -819,17 +849,17 @@
 }
 
 Richfaces.showModalPanel = function (id, opts) {
-	var panel = $(id + "Container");
+	var panel = $(id);
 	if (!panel) {
-		panel = $(Richfaces.findModalPanel(id));
+		panel = Richfaces.findModalPanel(id);
 	}
 	panel.modalPanel.show(opts);
 }
 
 Richfaces.hideModalPanel = function (id, opts) {
-	var panel = $(id + "Container");
+	var panel = $(id);
 	if (!panel) {
-		panel = $(Richfaces.findModalPanel(id));
+		panel = Richfaces.findModalPanel(id);
 	}
 	panel.modalPanel.hide(opts);
 }

Modified: trunk/ui/modal-panel/src/main/resources/org/richfaces/renderkit/html/scripts/modalPanelBorders.js
===================================================================
--- trunk/ui/modal-panel/src/main/resources/org/richfaces/renderkit/html/scripts/modalPanelBorders.js	2007-08-16 10:57:29 UTC (rev 2287)
+++ trunk/ui/modal-panel/src/main/resources/org/richfaces/renderkit/html/scripts/modalPanelBorders.js	2007-08-16 12:04:31 UTC (rev 2288)
@@ -6,7 +6,8 @@
 		var element = $(id);
 		element.style.cursor = cursor;
 
-		$(id).onmousedown = this.startDrag.bindAsEventListener(this);
+		//$(id).onmousedown = this.startDrag.bindAsEventListener(this);
+		Event.observe($(id), 'mousedown', this.startDrag.bindAsEventListener(this));
 
 		this.modalPanel = modalPanel;
 		this.sizer = sizer;
@@ -14,6 +15,11 @@
 		this.boundDoDrag = this.doDrag.bindAsEventListener(this);
 		this.boundEndDrag = this.endDrag.bindAsEventListener(this);
 	},
+	
+	destroy: function()
+	{
+		this.modalPanel=null;
+	},
 
 	show: function() {
 		Element.show(this.id);
@@ -107,6 +113,7 @@
 		$(this.modalPanel.cursorDiv).style.zIndex = -200;
 
 		document.onselectstart = this.onselectStartHandler;
+		this.onselectStartHandler = null;
 	},
 
 	doPosition: function() {




More information about the richfaces-svn-commits mailing list