ButtonBar付きAccordionHeader
AccordionHeaderの中にButtonBarを入れてみました。クリック感が無いのがイマイチなんだけどね。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*"> <mx:Script> <![CDATA[ import mx.controls.Alert; ]]> </mx:Script> <mx:Accordion headerRenderer="TestHeader" headerHeight="30" width="100%" height="100%"> <local:TestCanvas label="header 1"/> <local:TestCanvas label="header 2" toolbarDataProvider="['test']" toolbarItemClick="Alert.show(event.label)"/> <local:TestCanvas label="header 3" toolbarDataProvider="['foo','bar']" toolbarItemClick="Alert.show(event.label)"/> </mx:Accordion> </mx:Application>
package { import flash.events.MouseEvent; import mx.containers.accordionClasses.AccordionHeader; import mx.controls.Button; import mx.controls.ButtonBar; import mx.events.ItemClickEvent; public class TestHeader extends AccordionHeader { private var toolbar: ButtonBar = new ButtonBar(); public function TestHeader() { super(); addEventListener(MouseEvent.CLICK, onClick); } override protected function createChildren():void { super.createChildren(); addChild(toolbar); } private function onClick(event: MouseEvent): void { for each (var button: Button in toolbar.getChildren()) { if (button.getRect(this).contains(event.localX, event.localY)) { data.dispatchEvent(new ItemClickEvent("toolbarItemClick", false, false, button.label, toolbar.getChildIndex(button), button)); } } } override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { super.updateDisplayList(unscaledWidth, unscaledHeight); if (toolbar.numChildren == 0) { toolbar.dataProvider = data["toolbarDataProvider"]; } var y: Number = (unscaledHeight - toolbar.minHeight) / 2; toolbar.move(unscaledWidth - toolbar.minWidth - y, y); toolbar.setActualSize(toolbar.minWidth, toolbar.minHeight); } } }
package { import mx.containers.Canvas; [Event(name="toolbarItemClick", type="mx.events.ItemClickEvent")] public class TestCanvas extends Canvas { [Bindable] public var toolbarDataProvider: Array; public function TestCanvas() { super(); } } }