Author: abelevich
Date: 2007-11-21 11:59:08 -0500 (Wed, 21 Nov 2007)
New Revision: 4148
Modified:
trunk/ui/inputnumber-slider/src/main/config/component/inputNumberSlider.xml
trunk/ui/inputnumber-slider/src/main/java/org/richfaces/renderkit/InputNumberSliderRendererBase.java
trunk/ui/inputnumber-slider/src/main/resources/org/richfaces/renderkit/html/script/SliderScript.js
trunk/ui/inputnumber-slider/src/main/templates/inputNumberSlider.jspx
Log:
remove onsliding event, fix onslide event behavior
Modified: trunk/ui/inputnumber-slider/src/main/config/component/inputNumberSlider.xml
===================================================================
--- trunk/ui/inputnumber-slider/src/main/config/component/inputNumberSlider.xml 2007-11-21
16:55:55 UTC (rev 4147)
+++ trunk/ui/inputnumber-slider/src/main/config/component/inputNumberSlider.xml 2007-11-21
16:59:08 UTC (rev 4148)
@@ -144,17 +144,10 @@
<property>
<name>onslide</name>
<classname>java.lang.String</classname>
- <description>Event occur after on slid</description>
+ <description>Event occur on slide</description>
<defaultvalue><![CDATA[""]]></defaultvalue>
</property>
- <property>
- <name>onsliding</name>
- <classname>java.lang.String</classname>
- <description>Event occur on sliding</description>
- <defaultvalue><![CDATA[""]]></defaultvalue>
- </property>
-
<property>
<name> onchange </name>
<classname>java.lang.String</classname>
Modified:
trunk/ui/inputnumber-slider/src/main/java/org/richfaces/renderkit/InputNumberSliderRendererBase.java
===================================================================
---
trunk/ui/inputnumber-slider/src/main/java/org/richfaces/renderkit/InputNumberSliderRendererBase.java 2007-11-21
16:55:55 UTC (rev 4147)
+++
trunk/ui/inputnumber-slider/src/main/java/org/richfaces/renderkit/InputNumberSliderRendererBase.java 2007-11-21
16:59:08 UTC (rev 4148)
@@ -21,9 +21,12 @@
package org.richfaces.renderkit;
+import java.io.IOException;
+
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
+import org.ajax4jsf.renderkit.RendererUtils;
import org.richfaces.component.UIInputNumberSlider;
/**
@@ -40,5 +43,9 @@
protected boolean attributeToBoolean(UIComponent component, String attributeName) {
return getUtils().isBooleanAttribute(component, attributeName);
}
+
+ public void writeEventHandlerFunction(FacesContext context, UIComponent component,
String eventName) throws IOException{
+ RendererUtils.writeEventHandlerFunction(context, component, eventName);
+ }
}
Modified:
trunk/ui/inputnumber-slider/src/main/resources/org/richfaces/renderkit/html/script/SliderScript.js
===================================================================
---
trunk/ui/inputnumber-slider/src/main/resources/org/richfaces/renderkit/html/script/SliderScript.js 2007-11-21
16:55:55 UTC (rev 4147)
+++
trunk/ui/inputnumber-slider/src/main/resources/org/richfaces/renderkit/html/script/SliderScript.js 2007-11-21
16:59:08 UTC (rev 4148)
@@ -77,14 +77,6 @@
this.eventError = new
Function("event","clientErrorMessage",this.options.onerr);
}
- if (this.options.onslide) {
- this.onSlideEvent = new
Function("event",this.options.onslide).bindAsEventListener(this);
- }
-
- if (this.options.onsliding) {
- this.onSlidingEvent = new
Function("event",this.options.onsliding).bindAsEventListener(this);
- }
-
if (this.options.onchange != ""){
this.eventChanged = new
Function("event",this.options.onchange).bindAsEventListener(this);
}
@@ -196,6 +188,7 @@
sliderValue=0;
}
sliderValue = this.getNearestValue(sliderValue);
+
this.value = sliderValue;
if (!this.editInFocus && (this.required || "" != this.input.value ||
this.updating)){
this.input.value = this.value;
@@ -254,8 +247,12 @@
var pointer = Event.pointerX(event);
var offsets = Position.cumulativeOffset(this.track);
this.updating = true;
- if(this.onSlidingEvent) this.onSlidingEvent(event);
- this.setValue(this.translateToValue( ( pointer - offsets[0] )
-(this.handleLength/2)));
+ var value = this.translateToValue( ( pointer - offsets[0] ) -(this.handleLength/2));
+
+ if(this.invokeEvent("slide",event,this.getNearestValue(value),this.input)){
+ this.setValue(value);
+ }
+
this.updating = false;
var offsets = Position.cumulativeOffset(this.handle);
this.offsetX = pointer - offsets[0];
@@ -284,7 +281,6 @@
processMouseUp: function(event) {
this.endDrag(event);
this.fireClickIfNeeded(event);
- if(this.onSlideEvent) this.onSlideEvent(event);
},
endDrag: function(event) {
@@ -405,5 +401,45 @@
trim : function(str){
return str.replace(/^\s+|\s+$/, '');
- }
+ },
+
+ invokeEvent: function(eventName, event, value, element) {
+
+ var eventFunction = this.options['on'+eventName];
+ var result;
+
+ if (eventFunction)
+ {
+ var eventObj;
+
+ if (event)
+ {
+ eventObj = event;
+ }
+ else if( document.createEventObject )
+ {
+ eventObj = document.createEventObject();
+ }
+ else if( document.createEvent )
+ {
+ eventObj = document.createEvent('Events');
+ eventObj.initEvent( eventName, true, false );
+ }
+
+ eventObj.rich = {component:this};
+ eventObj.rich.value = value;
+
+ try
+ {
+ result = eventFunction.call(element, eventObj);
+ }
+ catch (e) { LOG.warn("Exception: "+e.Message + "\n[on"+eventName +
"]"); }
+
+ }
+
+ if (result!=false) result = true;
+
+ return result;
+ }
+
}
Modified: trunk/ui/inputnumber-slider/src/main/templates/inputNumberSlider.jspx
===================================================================
--- trunk/ui/inputnumber-slider/src/main/templates/inputNumberSlider.jspx 2007-11-21
16:55:55 UTC (rev 4147)
+++ trunk/ui/inputnumber-slider/src/main/templates/inputNumberSlider.jspx 2007-11-21
16:59:08 UTC (rev 4148)
@@ -184,8 +184,7 @@
arrowSelected : "#{arrowSelected}",
onerr : "#{component.attributes['onerror']}",
clientErrorMsg :
"#{component.attributes['clientErrorMessage']}",
- onslide : "#{component.attributes['onslide']}",
- onsliding : "#{component.attributes['onsliding']}",
+ <f:call name="writeEventHandlerFunction"><f:parameter
value="onslide" /></f:call>,
onchange : "#{component.attributes['onchange']}",
required : #{component.attributes['required']}
})