| 
     
  
<!-- 
Isomorphic SmartClient 
Copyright(c) 1998 and beyond Isomorphic Software, Inc. 
"SmartClient" is a trademark of Isomorphic Software, Inc. 
All rights reserved. 
 
Open Source License 
 
SmartClient source code, located under the source/ directory, and the resulting assembled modules  
in isomorphic/system/modules/, as well as JavaScript and CSS files under the isomorphic/skins directory are  
licensed under the terms of the GNU Lesser General Public License, version 3.  
The text of the LGPLv3 license is available online at http://www.gnu.org/licenses/lgpl-3.0.html 
 
If your project precludes the use of this license, or if you'd like to support SmartClient LGPL,  
we encourage you to buy a commercial license. 
 
Icon Experience Collection 
 
Selected 16x16 icons within the isomorphic/skins directory are part of the Icon Experience collection  
(http://www.iconexperience.com) and may be freely used with any SmartClient components without charge,  
but may not be used as part of screen designs separate from SmartClient components without a purchase  
of a license from Icon Experience. We are working to replace these icons as soon as possible. 
 
All other media found under the isomorphic/skins directory may be used under the LGPLv3. 
 
Commercial Licenses 
 
A number of commercial licenses are available for purchase. Please see http://smartclient.com/license. 
 
Warranty Disclaimer 
 
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even  
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General  
Public License for more details. 
 
Copyright 2001 and beyond Isomorphic Software, Inc. Last revised July 20, 2008.  
 
 
--> 
 
<!-- The following code is revised from SmartClient demo code(SmartClient_70rc2_LGPL.zip).--> 
 
 
<HTML><HEAD> 
<SCRIPT> 
  var isomorphicDir = "isomorphic/"; 
</SCRIPT> 
    <SCRIPT SRC=isomorphic/system/modules/ISC_Core.js></SCRIPT> 
    <SCRIPT SRC=isomorphic/system/modules/ISC_Foundation.js></SCRIPT> 
    <SCRIPT SRC=isomorphic/system/modules/ISC_Containers.js></SCRIPT> 
    <SCRIPT SRC=isomorphic/system/modules/ISC_Grids.js></SCRIPT> 
    <SCRIPT SRC=isomorphic/system/modules/ISC_Forms.js></SCRIPT> 
    <SCRIPT SRC=isomorphic/system/modules/ISC_DataBinding.js></SCRIPT> 
  <SCRIPT SRC=isomorphic/skins/standard/load_skin.js></SCRIPT> 
  <SCRIPT> 
/*---------->    SimpleSlider_8.js    <----------*/ 
 
// Step 8 
//  * move constants to class properties 
//  * error checking of newValue in setValue() 
 
ClassFactory.defineClass("SimpleSlider", Canvas); 
 
 
SimpleSlider.addClassProperties({ 
  VERTICAL_SRC_PREFIX:"v", 
  HORIZONTAL_SRC_PREFIX:"h", 
  DOWN:"down", 
  UP:"", 
  ON:"", 
  OFF:"off", 
  EVENTNAME:"sliderMove" 
}); 
 
 
SimpleSlider.addProperties({ 
  length:200, 
  vertical:true, 
   
  thumbThickWidth:23, 
  thumbThinWidth:17, 
  trackWidth:7, 
  trackCapSize:6, 
  skinImgDir:"examples/custom_components/SimpleSlider/images/SimpleSlider/", 
  thumbSrc:"thumb.gif", 
  trackSrc:"track.gif", 
   
  value:0, 
  sliderTarget:null, 
 
    initWidget : function () { 
        this.Super("initWidget",  arguments); 
         
        var width, height; 
         
        if (this.vertical) { 
            width = Math.max(this.thumbThickWidth, this.trackWidth); 
            height = this.length; 
        } else { 
            width = this.length; 
            height = Math.max(this.thumbThickWidth, this.trackWidth); 
        } 
         
        this.setWidth(width); 
        this.setHeight(height); 
         
        this._usableLength = this.length-this.thumbThinWidth; 
         
        this._track = this.addChild(this._createTrack()); 
        this._thumb = this.addChild(this._createThumb()); 
         
        this.setDisabled(this.disabled); 
    }, 
     
     
    _createTrack : function () { 
        return StretchImg.create({ 
            autoDraw:false, 
            left:(this.vertical ? Math.floor((this.getWidth() - this.trackWidth)/2) : 0), 
            top:(this.vertical ? 0 : Math.floor((this.getHeight() - this.trackWidth)/2)), 
            width:(this.vertical ? this.trackWidth : this.getWidth()), 
            height:(this.vertical ? this.getHeight() : this.trackWidth), 
            vertical:this.vertical, 
            capSize:this.trackCapSize, 
            src:"[SKIN]" + (this.vertical ? "v" : "h") + this.trackSrc, 
            skinImgDir:this.skinImgDir 
        }); 
    }, 
     
     
    _createThumb : function () { 
        return Img.create({ 
            autoDraw:false, 
            left:(this.vertical ? Math.floor((this.getWidth() - this.thumbThickWidth)/2) : 0), 
            top:(this.vertical ? 0 : Math.floor((this.getHeight() - this.thumbThickWidth)/2)), 
            width:(this.vertical ? this.thumbThickWidth : this.thumbThinWidth), 
            height:(this.vertical ? this.thumbThinWidth : this.thumbThickWidth), 
            src:"[SKIN]" + (this.vertical ? "v" : "h") + this.thumbSrc, 
            skinImgDir:this.skinImgDir, 
            canDrag:true, 
            dragAppearance:EventHandler.NONE, 
            cursor:Canvas.HAND, 
            dragMove:"this.parentElement._thumbMove(); return false", 
            dragStart:EventHandler.stopBubbling, 
            dragStop:"this.setState(SimpleSlider.UP); return false", 
            mouseDown:"this.setState(SimpleSlider.DOWN)", 
            mouseUp:"this.setState(SimpleSlider.UP); return false" 
        }); 
    }, 
     
     
    _thumbMove : function () { 
        var thumbPosition; 
         
        if (this.vertical) { 
            thumbPosition = EventHandler.getY() - this.getPageTop(); 
            thumbPosition = Math.max(0, Math.min(this._usableLength, thumbPosition)); 
            if (thumbPosition == this._thumb.getTop()) return; 
            this._thumb.setTop(thumbPosition); 
        } else { 
            thumbPosition = EventHandler.getX() - this.getPageLeft(); 
            thumbPosition = Math.max(0, Math.min(this._usableLength, thumbPosition)); 
            if (thumbPosition == this._thumb.getLeft()) return; 
            this._thumb.setLeft(thumbPosition); 
        } 
         
        this.value = thumbPosition/this._usableLength; 
         
        this.valueChanged(); 
         
        if (this.sliderTarget) EventHandler.handleEvent(this.sliderTarget, SimpleSlider.EVENTNAME, this); 
    }, 
     
     
    setValue : function (newValue) { 
        if (!isA.Number(newValue)) return; 
        this.value = Math.max(0, Math.min(newValue, 1)); 
         
        var thumbPosition = this.value * this._usableLength; 
        if (this.vertical) 
            this._thumb.setTop(thumbPosition); 
        else 
            this._thumb.setLeft(thumbPosition); 
         
        this.valueChanged(); 
         
        if (this.sliderTarget) EventHandler.handleEvent(this.sliderTarget, SimpleSlider.EVENTNAME, this); 
    }, 
     
     
    getValue : function () { 
        return this.value; 
    }, 
     
     
    valueChanged : function () { 
    }, 
     
     
    setDisabled : function (disabled) { 
        this.Super("setDisabled",arguments); 
         
        if (!disabled) { 
            this._track.setState(SimpleSlider.ON); 
            this._thumb.setState(SimpleSlider.UP);   
            this._thumb.setCursor(Canvas.HAND); 
        } else { 
            this._track.setState(SimpleSlider.OFF); 
            this._thumb.setState(SimpleSlider.OFF);   
            this._thumb.setCursor(Canvas.DEFAULT); 
        } 
    } 
     
     
}); 
   
  </SCRIPT> 
</HEAD><BODY BGCOLOR='powderblue'> 
<SCRIPT> 
 
 
// override default skin directory to pick up local slider images 
Page.setSkinDir(""); 
 
 
//-------------------------------------------------- 
//  display area for targeted sliderMove events 
//-------------------------------------------------- 
 
Label.create({ 
  ID:"display", 
  left:150, 
  top:50, 
  height:20, 
  sliderMove:function(event,slider){ 
    this.setContents("sliderMove event<br>" + 
                         slider.getID() + ": " + slider.value); 
  } 
}); 
 
 
//-------------------------------------------------- 
//  global handler for sliderMove events 
//-------------------------------------------------- 
 
Label.create({ 
    ID:"globalDisplay", 
    left:300, 
    top:50, 
    height:20 
}); 
Page.setEvent( 
    "sliderMove",  
    "globalDisplay.setContents('Global handler<br>' + eventInfo.ID + ': ' + eventInfo.value);" 
); 
 
 
//-------------------------------------------------- 
//  sliders 
//-------------------------------------------------- 
 
SimpleSlider.create({ 
  ID:"vSlider", 
  left:100, 
  top:100, 
  value:0.3, 
  sliderTarget:display 
}); 
 
SimpleSlider.create({ 
  ID:"hSlider", 
  left:300, 
  top:180, 
  vertical:false, 
  value:0.5, 
  sliderTarget:display 
}); 
 
 
//-------------------------------------------------- 
//  display areas for observed slider values 
//-------------------------------------------------- 
 
Label.create({ 
  ID:"vSliderObserver", 
  left:20, 
  top:320, 
  height:20 
}); 
vSliderObserver.observe(vSlider, "valueChanged", "observer.setContents(observed.value)"); 
 
 
Label.create({ 
  ID:"hSliderObserver", 
  left:300, 
  top:320, 
  height:20 
}); 
hSliderObserver.observe(hSlider, "valueChanged", "observer.setContents(observed.value)"); 
 
 
//-------------------------------------------------- 
//  buttons to enable/disable sliders 
//-------------------------------------------------- 
 
Button.create({ 
  left:70, 
  top:20, 
  width:120, 
  title:"Enable sliders", 
  click:"vSlider.enable();hSlider.enable()" 
}); 
 
 
Button.create({ 
  left:220, 
  top:20, 
  width:120, 
  title:"Disable sliders", 
  click:"vSlider.disable();hSlider.disable()" 
}); 
 
 
</SCRIPT> 
</BODY> 
</HTML> 
 
    
   
    
    |