Хорошо, я не использовал навигатор супер вкладок раньше, но у меня была попытка настроить проект, который отслеживал все закрытые вкладки и давал пользователю возможность открыть их позже, если они захотят.
Я не мог понять, как заставить небольшое выпадающее меню запоминать закрытые вкладки, не влияя на фактические видимые вкладки. Итак, в качестве обходного пути, вот небольшое простое приложение, использующее Flex SDK 3.6, надеюсь, вы найдете его полезным, оно должно работать как есть ...
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" minWidth="955" minHeight="600" xmlns:ns="http://code.google.com/p/flexlib/">
<mx:VBox>
<ns:SuperTabNavigator id="navigator"
width="500"
height="500"
tabClose="recordClosedTab(event)"
creationComplete="init()">
<mx:Canvas label="one"/>
<mx:Canvas label="two"/>
<mx:Canvas label="three"/>
</ns:SuperTabNavigator>
<mx:HBox>
<mx:Label text="Closed tabs:"/>
<mx:ComboBox id="closedTabsMenu"
close="closedTabsMenuCloseHandler(event)"/>
</mx:HBox>
</mx:VBox>
<mx:Script>
<![CDATA[
import flexlib.events.SuperTabEvent;
import mx.collections.ArrayCollection;
import mx.containers.Canvas;
import mx.events.DropdownEvent;
private var _closedTabs:ArrayCollection = new ArrayCollection();
/**
* Records which display object has been removed from the SupreTabNavigator.
* Updates closed tabs menu data provider.
*
* @param SuperTabEvent.TAB_CLOSE dispatched from SuperTabNavigator when a tab close button is clicked.
* */
private function recordClosedTab(event:SuperTabEvent):void{
_closedTabs.addItem(navigator.getChildAt(event.tabIndex) as DisplayObject);
closedTabsMenu.dataProvider = _closedTabs;
}
/**
* Handles the close event dispatched from combo box on close.
* Checks if the SuperTabNavigator contains the item currently selected in combo box.
* If not then adds that object if it is a DisplayObject
* Then removes that item from combo box.
*
* @param DropdownEvent.CLOSE dispatched from the ComboBox on close
* */
private function closedTabsMenuCloseHandler(event:DropdownEvent):void{
var tabs:ArrayCollection = new ArrayCollection(navigator.getChildren());
if (!tabs.contains(closedTabsMenu.selectedItem)){
if (closedTabsMenu.selectedItem is DisplayObject){
navigator.addChild(closedTabsMenu.selectedItem as DisplayObject);
_closedTabs.removeItemAt(_closedTabs.getItemIndex(closedTabsMenu.selectedItem));
}
}
}
]]>
</mx:Script>
</mx:Application>