1. [Main.mxml]
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
  4. xmlns:comp = "components.*">
  5. <comp:HistoryWindow/>
  6.  
  7. </mx:Application>
  8. [historyCode.as]
  9. import mx.managers.HistoryManager;
  10. import mx.events.ItemClickEvent;
  11.  
  12. [Bindable]
  13. private var menuDataProvider:Array = new Array("home","contact","events");
  14. private function onCreationComplete():void
  15. {
  16. HistoryManager.register(this);
  17. }
  18.  
  19. private function stateChanged(event:ItemClickEvent):void
  20. {
  21. currentState = event.label;
  22. panel.title = event.label;
  23. HistoryManager.save();
  24. }
  25. public function saveState():Object
  26. {
  27. var result:Object = {value:currentState};
  28. return result;
  29. }
  30. public function loadState(state:Object):void
  31. {
  32.  
  33. if(state == null)
  34. {
  35. state = {value:"home"};
  36. }
  37. if(state != currentState)
  38. {
  39.  
  40. panel.title = currentState = state.value;
  41. }
  42. }
  43. [HistoryWindow.mxml]
  44. <?xml version="1.0" encoding="utf-8"?>
  45. <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300"
  46. implements="mx.managers.IHistoryManagerClient"
  47. creationComplete="onCreationComplete();" >
  48. <mx:states>
  49. <mx:State name="home">
  50. <mx:SetProperty target="{panel}" name="height" value="100"/>
  51. </mx:State>
  52. <mx:State name="contact">
  53. <mx:SetProperty target="{panel}" name="height" value="200"/>
  54. </mx:State>
  55. <mx:State name="events"/>
  56. </mx:states>
  57. <mx:Script source="historyCode.as" />
  58. <mx:Panel x="0" y="0" width="400" height="300" layout="vertical" id="panel" horizontalAlign="center" verticalAlign="top" title="{bar.labelField}">
  59. <mx:LinkBar id="bar" dataProvider="{['home','contact','events']}" itemClick="stateChanged(event);" />
  60. </mx:Panel>
  61. </mx:Canvas>
  62.