Author: nbelaevski
Date: 2008-08-24 09:31:18 -0400 (Sun, 24 Aug 2008)
New Revision: 10182
Modified:
trunk/ui/panelbar/src/main/java/org/richfaces/renderkit/html/PanelBarRendererBase.java
trunk/ui/panelbar/src/main/resources/org/richfaces/renderkit/html/scripts/panelbar.js
Log:
https://jira.jboss.org/jira/browse/RF-4276
Modified:
trunk/ui/panelbar/src/main/java/org/richfaces/renderkit/html/PanelBarRendererBase.java
===================================================================
---
trunk/ui/panelbar/src/main/java/org/richfaces/renderkit/html/PanelBarRendererBase.java 2008-08-23
01:00:48 UTC (rev 10181)
+++
trunk/ui/panelbar/src/main/java/org/richfaces/renderkit/html/PanelBarRendererBase.java 2008-08-24
13:31:18 UTC (rev 10182)
@@ -33,6 +33,7 @@
import javax.faces.context.ResponseWriter;
import javax.faces.el.ValueBinding;
+import org.ajax4jsf.context.AjaxContext;
import org.ajax4jsf.javascript.AjaxScript;
import org.ajax4jsf.javascript.ImageCacheScript;
import org.ajax4jsf.javascript.JSFunction;
@@ -173,6 +174,7 @@
ScriptOptions options = new ScriptOptions(component);
+ AjaxContext ajaxContext = AjaxContext.getCurrentInstance(context);
Object changeScript = panelBar.getAttributes().get("onitemchange");
@@ -190,6 +192,7 @@
options.addOption("mouseout",
panelBar.getAttributes().get("onmouseout"));
options.addOption("mousemove",
panelBar.getAttributes().get("onmousemove"));
options.addOption("items", items);
+ options.addOption("ajax", ajaxContext.isAjaxRequest());
StringBuffer script = new StringBuffer();
Modified:
trunk/ui/panelbar/src/main/resources/org/richfaces/renderkit/html/scripts/panelbar.js
===================================================================
---
trunk/ui/panelbar/src/main/resources/org/richfaces/renderkit/html/scripts/panelbar.js 2008-08-23
01:00:48 UTC (rev 10181)
+++
trunk/ui/panelbar/src/main/resources/org/richfaces/renderkit/html/scripts/panelbar.js 2008-08-24
13:31:18 UTC (rev 10182)
@@ -14,6 +14,10 @@
if (!this.panel) {
return;
}
+
+ this.panel.component = this;
+ this["rich:destructor"] = "destroy";
+
this.hclient=0;
this.COUNT=0;
this.STEP=0;
@@ -29,7 +33,12 @@
this.input=$(panelId+"_panelBarInput");
this.defaultIndex=this.findPanelById($F(panelId+"_panelBarInput"));
- Event.observe(window,'load',this.handleOnLoad.bindAsEventListener(this));
+ this.handleOnLoadBound = this.handleOnLoad.bind(this);
+ if (!options.ajax) {
+ Event.observe(window, 'load', this.handleOnLoadBound);
+ } else {
+ this.handleOnLoad();
+ }
this.mouseover = options.mouseover;
this.mouseout = options.mouseout;
@@ -53,14 +62,25 @@
this.contentHight = -1;
},
+ destroy: function() {
+ Event.stopObserving(window, 'load', this.handleOnLoadBound);
+ if (this.panel) {
+ this.panel.component = undefined;
+ }
+ if (this.timer) {
+ clearTimeout(this.timer);
+ this.timer = undefined;
+ }
+ },
+
handleOnLoad: function() {
- Event.stopObserving(window,'load',this.handleOnLoad.bindAsEventListener(this));
+ Event.stopObserving(window, 'load', this.handleOnLoadBound);
if ( this.timer ){
clearTimeout(this.timer);
}
if (this.panel.clientHeight<=0){
this.contentHight = -1;
- this.timer = setTimeout(this.handleOnLoad.bind(this), 100);
+ this.timer = setTimeout(this.handleOnLoadBound, 100);
}
this.showSlide(this.slides[this.defaultIndex]);