Author: abelevich
Date: 2007-11-12 03:21:10 -0500 (Mon, 12 Nov 2007)
New Revision: 3902
Modified:
trunk/ui/panelbar/src/main/config/component/panelbar.xml
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:
add onleave onenter client events
Modified: trunk/ui/panelbar/src/main/config/component/panelbar.xml
===================================================================
--- trunk/ui/panelbar/src/main/config/component/panelbar.xml 2007-11-12 03:03:18 UTC (rev
3901)
+++ trunk/ui/panelbar/src/main/config/component/panelbar.xml 2007-11-12 08:21:10 UTC (rev
3902)
@@ -223,6 +223,25 @@
</description>
<defaultvalue><![CDATA["false"]]></defaultvalue>
</property>
+
+ <property>
+ <name>onenter</name>
+ <classname>java.lang.String</classname>
+ <description>
+ Event must occurs on than item has been changed
+ </description>
+ <defaultvalue><![CDATA[""]]></defaultvalue>
+ </property>
+
+ <property>
+ <name>onleave</name>
+ <classname>java.lang.String</classname>
+ <description>
+ Event must occurs on than item has been changed
+ </description>
+ <defaultvalue><![CDATA[""]]></defaultvalue>
+ </property>
+
</component>
</components>
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 2007-11-12
03:03:18 UTC (rev 3901)
+++
trunk/ui/panelbar/src/main/java/org/richfaces/renderkit/html/PanelBarRendererBase.java 2007-11-12
08:21:10 UTC (rev 3902)
@@ -125,13 +125,22 @@
}*/
}
- protected List getPanelBarItems(FacesContext context,UIPanelBar panelBar){
+ protected List getScriptPanelBarItems(FacesContext context,UIPanelBar panelBar){
List items = new ArrayList();
+ JSReference id_ref = new JSReference("id");
+ JSReference onenter = new JSReference("onenter");
+ JSReference onleave = new JSReference("onleave");
+
List children = panelBar.getChildren();
for (Iterator iterator = children.iterator(); iterator.hasNext();) {
UIComponent child = (UIComponent) iterator.next();
if(child instanceof UIPanelBarItem){
- items.add(((UIPanelBarItem)child).getClientId(context));
+ Map item = new HashMap();
+ UIPanelBarItem panelBarItem = (UIPanelBarItem) child;
+ item.put(id_ref, panelBarItem.getClientId(context));
+ item.put(onenter, panelBarItem.getAttributes().get("onenter"));
+ item.put(onleave, panelBarItem.getAttributes().get("onleave"));
+ items.add(item);
}
}
@@ -143,12 +152,16 @@
if(component instanceof UIPanelBar){
UIPanelBar panelBar = (UIPanelBar)component;
+ List items = getScriptPanelBarItems(context, panelBar);
+
ScriptOptions options = new ScriptOptions(component);
options.addOption("onitemchange",panelBar.getAttributes().get("onitemchange"));
options.addOption("onclick",
panelBar.getAttributes().get("onclick"));
options.addOption("mouseouver",
panelBar.getAttributes().get("mouseouver"));
options.addOption("mouseout",
panelBar.getAttributes().get("mouseout"));
options.addOption("mousemove",
panelBar.getAttributes().get("mousemove"));
+ options.addOption("items", items);
+
StringBuffer script = new StringBuffer();
JSFunction function = new JSFunction("new Richfaces.PanelBar");
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 2007-11-12
03:03:18 UTC (rev 3901)
+++
trunk/ui/panelbar/src/main/resources/org/richfaces/renderkit/html/scripts/panelbar.js 2007-11-12
08:21:10 UTC (rev 3902)
@@ -31,6 +31,7 @@
this.mouseover = options.mouseover;
this.mouseout = options.mouseout;
this.mousemove = options.mousemove;
+ this.items = options.items;
if (this.mouseover && this.mouseover != ""){
Event.observe(this.panel,'mouseover',new Function("event",
"return " + this.mouseout + ";").bindAsEventListener(this));
@@ -107,18 +108,48 @@
onItemChange: function(event,slide){
var onitemchange = this.onitemchange;
var changeEvent = event;
- if(onitemchange && onitemchange != ""){
- var leftItem_id = this.current.item.id;
- var enterItem_id = slide.item.id;
- var panel_id = this.panel.id;
- var func = new
Function("event","panel_id","leftItem_id","enterItem_id",onitemchange);
- var result = func(changeEvent,panel_id,leftItem_id,enterItem_id);
+ var leaveItem_id = this.current.item.id;
+ var enterItem_id = slide.item.id;
+ var panel_id = this.panel.id;
+
+ if (onitemchange && onitemchange != "") {
+ var func = new
Function("event","panel_id","leaveItem_id","enterItem_id",onitemchange);
+ var result = func(changeEvent,panel_id,leaveItem_id,enterItem_id);
if (result != undefined && !result) {
return;
}
- }
+ }
+
+ var items = this.items;
+ var leaveItem;
+ var enterItem;
+
+ for (var i = 0; i < items.length; i++) {
+ if (leaveItem_id == items[i].id) {
+ leaveItem = items[i];
+ }
+ if (enterItem_id == items[i].id) {
+ enterItem = items[i];
+ }
+ }
+
+ if (leaveItem && leaveItem.onleave) {
+ var func = new
Function("event","leaveItem_id","enterItem_id",leaveItem.onleave);
+ var result = func(changeEvent,leaveItem_id,enterItem_id);
+ if (result != undefined && !result) {
+ return;
+ }
+ }
+
+ if (enterItem && enterItem.onenter) {
+ var func = new
Function("event","leaveItem_id","enterItem_id",enterItem.onenter);
+ var result = func(changeEvent,leaveItem_id,enterItem_id);
+ if (result != undefined && !result) {
+ return;
+ }
+ }
},
-
+
_attachBehaviors: function() {
var rows=this._getDirectChildrenByTag(this.panel,'DIV');
for(var i=0; i<rows.length; i++) {