package com.jwopitz.containers {
import flash.events.MouseEvent;
import mx.containers.Panel;
import mx.controls.Button;
import mx.core.EventPriority;
import mx.core.IFlexDisplayObject ;
import mx.core.UIComponent;
[Bindable]
public class Pod extends Panel {
protected var _btns:Array = [];
override protected function layoutChrome (unscaledWidth:Number, unscaledHeight:Number):void {
super.layoutChrome(unscaledWidth, unscaledHeight);
repositionButtons();
}
protected function repositionButtons ():void {
var btn:Button;
var tx:Number = 0; //target x value
var px:Number = 0; //previous x value
var ty:Number = 0; //target y value
var i:int = 0;
var l:int = _btns.length;
if (l == 0)
return;
for (i; i < l; i++){
btn = _btns[i] as Button;
btn.setActualSize (btn.getExplicitOrMeasuredWidth(), btn.getExplicitOrMeasuredHeight());
if (i == 0){
tx = unscaledWidth - borderMetrics.right - btn.getExplicitOrMeasuredWidth() - 10;
} else {
tx = px - btn.getExplicitOrMeasuredWidth() - 5;
}
ty = (getHeaderHeight() - btn.getExplicitOrMeasuredHeight()) / 2;
if (btn.x != tx || btn.y != ty)
btn.move(tx, ty);
px = tx;
}
}
public function addTitleBarButton (value:Button = null):Button {
if (!value)
value = new Button();
value.addEventListener(MouseEvent.CLICK, onClick_titleBarButton, false, EventPriority.DEFAULT_HANDLER);
_btns.push(value);
titleBar.addChild(value);
return value;
}
/**
* TitleBar by default is setup to handle events as possible drag initiators while in popup modes.
* In order to override that default behavior, the evt must stop propogation and be handled in a different manner so as not to
* trigger a possible drag action.
*/
protected function onClick_titleBarButton (evt:MouseEvent):void {
evt.stopPropagation();
}
public function get headerHeight ():Number {
return getHeaderHeight();
}
}
}