1  /*
     2   Copyright aswing.org, see the LICENCE.txt.
     3  */
     4  
     5  import org.aswing.plaf.basic.frame.Resizer;
     6  import org.aswing.plaf.basic.frame.ResizeStrategy;
     7  import org.aswing.utils.Delegate;
     8  
     9  /**
    10   * The Handler for Resizer's mc bars.
    11   * @author iiley
    12   */
    13  class org.aswing.plaf.basic.frame.ResizeBarHandler{
    14  	private var resizer:Resizer;
    15  	private var mc:MovieClip;
    16  	private var arrowRotation:Number;
    17  	private var strategy:ResizeStrategy;
    18  	
    19  	public function ResizeBarHandler(resizer:Resizer, barMC:MovieClip, arrowRotation:Number, strategy:ResizeStrategy){
    20  		this.resizer = resizer;
    21  		mc = barMC;
    22  		this.arrowRotation = arrowRotation;
    23  		this.strategy = strategy;
    24  		
    25  		handle();
    26  	}
    27  	
    28  	public static function createHandler(resizer:Resizer, barMC:MovieClip, arrowRotation:Number, strategy:ResizeStrategy):ResizeBarHandler{
    29  		return new ResizeBarHandler(resizer, barMC, arrowRotation, strategy);
    30  	}
    31  	
    32  	private function handle():Void{
    33  		mc.onRollOver = Delegate.create(this, __onRollOver);
    34  		mc.onRollOut = Delegate.create(this, __onRollOut);
    35  		mc.onPress = Delegate.create(this, __onPress);
    36  		mc.onRelease = Delegate.create(this, __onRelease);
    37  		mc.onReleaseOutside = Delegate.create(this, __onReleaseOutside);
    38  	}
    39  	
    40  	private function __onRollOver():Void{
    41  		showArrowToMousePos();
    42  		mc.onMouseMove = Delegate.create(this, showArrowToMousePos);
    43  	}
    44  	
    45  	private function __onRollOut():Void{
    46  		mc.onMouseMove = undefined;
    47  		resizer.hideArrow();
    48  	}
    49  	
    50  	private function __onPress():Void{
    51  		resizer.startDragArrow();
    52  		startResize();
    53  		mc.onMouseMove = Delegate.create(this, resizing);
    54  	}
    55  	
    56  	private function __onRelease():Void{
    57  		resizer.stopDragArrow();
    58  		mc.onMouseMove = undefined;
    59  		finishResize();
    60  	}
    61  	
    62  	private function __onReleaseOutside():Void{
    63  		__onRelease();
    64  		resizer.hideArrow();
    65  	}
    66  	
    67  	private function showArrowToMousePos():Void{
    68  		resizer.setArrowRotation(arrowRotation);
    69  		resizer.showArrowToMousePos(arrowRotation);
    70  	}
    71  	
    72  	private function startResize():Void{
    73  		resizer.startResize(strategy);
    74  	}
    75  	
    76  	private function resizing():Void{
    77  		resizer.resizing(strategy);
    78  	}
    79  	
    80  	private function finishResize():Void{
    81  		resizer.finishResize(strategy);
    82  	}
    83  }
    84