4,328
社区成员
发帖
与我相关
我的任务
分享
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:flexlib="http://code.google.com/p/flexlib/"
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="initTab();" textAlign="center">
<fx:Declarations>
<fx:XMLList id="treeData">
<node label="1"/>
<node label="2"/>
<node label="3"/>
</fx:XMLList>
</fx:Declarations>
<fx:Script>
<![CDATA[
public var selectedNode:XML;
import flexlib.controls.SuperTabBar;
import flexlib.controls.tabBarClasses.SuperTab;
import flexlib.events.SuperTabEvent;
import flexlib.events.TabReorderEvent;
import mx.containers.Canvas;
import mx.containers.Panel;
import mx.containers.VBox;
import mx.controls.Alert;
import mx.controls.DataGrid;
import mx.controls.Label;
import mx.controls.dataGridClasses.DataGridColumn;
import mx.events.IndexChangedEvent;
public function treeChanged(evt:Event):void {
selectedNode = Tree(evt.target).selectedItem as XML;
addTab(selectedNode.@label,tabnav);
}
public function tabChanged(event:TabReorderEvent,label:String):void{
//怎样显示已生成的tab的内容
Alert.show("此时应tabnav的焦点应在"+label+" VBox,但是不知道怎么实现");
}
public function tabClose():void{
//tab关闭时没有触发此事件
Alert.show("是否关闭?",Alert.YES|Alert.NO);
}
public function initTab():void{
tabnav.addEventListener(IndexChangedEvent.CHANGE,tabChanged);
}
public function addTab(label:String, navigator:SuperTabNavigator):void{
var event:TabReorderEvent;
for(var i:int=0;i<navigator.length;i++)
if(tabnav.getTabAt(i).label==label){
tabChanged(event,label);
return ;
}
var box:VBox = new VBox();
box.setStyle("closable", true);
box.label = label;
box.name=label;
box.id=selectedNode.@id;
box.addEventListener(SuperTabEvent.TAB_CLOSE,tabClose);
navigator.addChild(box);
}
]]>
</fx:Script>
<s:Panel right="0" bottom="0" top="0" width="80%">
<flexlib:SuperTabNavigator id="tabnav" scrollSpeed="25"
stopScrollingEvent="{MouseEvent.MOUSE_UP}" startScrollingEvent="{MouseEvent.MOUSE_DOWN}"
width="100%" height="100%" horizontalGap="0" closePolicy="{SuperTab.CLOSE_ROLLOVER}" >
</flexlib:SuperTabNavigator>
</s:Panel>
<s:Panel left="0" bottom="0" top="0" width="20%">
<mx:Tree id="myTree" width="100%" height="100%" labelField="@label" textAlign="left"
showRoot="true" dataProvider="{treeData}" change="treeChanged(event);"/>
</s:Panel>
</s:Application>
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
creationComplete="initTab();"
xmlns:code="http://code.google.com/p/flexlib/">
<mx:XMLList id="treeData">
<node label="1"/>
<node label="2"/>
<node label="3"/>
</mx:XMLList>
<mx:Script>
<![CDATA[
public var selectedNode:XML;
import flexlib.controls.SuperTabBar;
import flexlib.controls.tabBarClasses.SuperTab;
import flexlib.events.SuperTabEvent;
import flexlib.events.TabReorderEvent;
import mx.containers.Canvas;
import mx.containers.Panel;
import mx.containers.VBox;
import mx.controls.Alert;
import mx.controls.DataGrid;
import mx.controls.Label;
import mx.controls.dataGridClasses.DataGridColumn;
import mx.events.IndexChangedEvent;
public function treeChanged(evt:Event):void
{
selectedNode=Tree(evt.target).selectedItem as XML;
addTab(selectedNode.@label);
}
public function tabChanged(label:String, selectIndex:int):void
{
this.tabnav.selectedIndex=selectIndex;
//怎样显示已生成的tab的内容
// Alert.show("此时应tabnav的焦点应在" + label + " VBox,但是不知道怎么实现");
}
public function tabClose():void
{
//tab关闭时没有触发此事件
Alert.show("是否关闭?", Alert.YES | Alert.NO);
}
public function initTab():void
{
// tabnav.addEventListener(IndexChangedEvent.CHANGE, tabChanged);
}
public function addTab(label:String):void
{
for (var i:int=0; i < this.tabnav.numChildren; i++)
if (tabnav.getTabAt(i).label == label)
{
tabChanged(label, i);
return;
}
var box:VBox=new VBox();
box.setStyle("closable", true);
box.label=label;
box.name=label;
box.id=selectedNode.@id;
box.addEventListener(SuperTabEvent.TAB_CLOSE, tabClose);
this.tabnav.addChild(box);
}
]]>
</mx:Script>
<mx:Panel right="0"
bottom="0"
top="0"
width="80%">
<code:SuperTabNavigator id="tabnav"
scrollSpeed="25"
stopScrollingEvent="{MouseEvent.MOUSE_UP}"
startScrollingEvent="{MouseEvent.MOUSE_DOWN}"
width="100%"
height="100%"
horizontalGap="0"
closePolicy="{SuperTab.CLOSE_ROLLOVER}">
</code:SuperTabNavigator>
</mx:Panel>
<mx:Panel left="0"
bottom="0"
top="0"
width="20%">
<mx:Tree id="myTree"
width="100%"
height="100%"
labelField="@label"
textAlign="left"
showRoot="true"
dataProvider="{treeData}"
change="treeChanged(event);"/>
</mx:Panel>
</mx:Application>