/src/com/globalworks/lbs/tools/charts/series/bars/Horizontal.as
ActionScript | 107 lines | 64 code | 25 blank | 18 comment | 0 complexity | d07d8df5f7d35df74b7ef1ad8d66b033 MD5 | raw file
- package charts.series.bars {
-
- import flash.display.Sprite;
- import flash.events.Event;
- import flash.events.MouseEvent;
- import caurina.transitions.Tweener;
- import caurina.transitions.Equations;
- import flash.geom.Point;
- import charts.series.Element;
-
- public class Horizontal extends Element
- {
- private var right:Number;
- private var left:Number;
- //protected var width:Number;
-
- public var colour:Number;
- protected var group:Number;
-
- public function Horizontal( index:Number, style:Object, group:Number )
- {
- super();
- //
- // we use the index of this bar to find its Y position
- //
- this.index = index;
- //
- // horizontal bar: value = X Axis position
- // we'll use the ScreenCoords object to go [value -> x location]
- //
-
- this.left = style.left ? style.left : 0;
- this.right = style.right ? style.right : 0;
-
- this.colour = style.colour;
- this.group = group;
- this.visible = true;
-
- this.alpha = 0.5;
-
- this.tooltip = this.replace_magic_values( style.tip );
-
- this.addEventListener(MouseEvent.MOUSE_OVER, this.mouseOver);
- this.addEventListener(MouseEvent.MOUSE_OUT, this.mouseOut);
-
- }
- protected function replace_magic_values( t:String ): String {
-
- t = t.replace('#right#', NumberUtils.formatNumber( this.right ));
- t = t.replace('#left#', NumberUtils.formatNumber( this.left ));
- t = t.replace('#val#', NumberUtils.formatNumber( this.right - this.left ));
-
- return t;
- }
-
- public override function mouseOver(event:Event):void {
- Tweener.addTween(this, { alpha:1, time:0.6, transition:Equations.easeOutCirc } );
- }
- public override function mouseOut(event:Event):void {
- Tweener.addTween(this, { alpha:0.5, time:0.8, transition:Equations.easeOutElastic } );
- }
-
- public override function resize( sc:ScreenCoordsBase ):void {
-
- // is it OK to cast up like this?
- var sc2:ScreenCoords = sc as ScreenCoords;
-
- var tmp:Object = sc2.get_horiz_bar_coords( this.index, this.group );
-
- var left:Number = sc.get_x_from_val( this.left );
- var right:Number = sc.get_x_from_val( this.right );
- var width:Number = right - left;
-
- this.graphics.clear();
- this.graphics.beginFill( this.colour, 1.0 );
- this.graphics.drawRect( 0, 0, width, tmp.width );
- this.graphics.endFill();
-
- this.x = left;
- this.y = tmp.y;
- }
-
- //
- // for tooltip closest - return the middle point
- //
- public override function get_mid_point():flash.geom.Point {
-
- //
- // bars mid point
- //
- return new flash.geom.Point( this.x + (this.width/2), this.y );
- }
-
- public override function get_tip_pos():Object {
- //
- // Hover the tip over the right of the bar
- //
- return {x:this.x+this.width-20, y:this.y};
- }
-
- public function get_max_x():Number {
- return this.right;
- }
- }
- }