source: ComponentRegistry/trunk/ComponentBrowserGui/src/main/flex/clarin/cmdi/componentregistry/browser/Browse.mxml @ 2985

Last change on this file since 2985 was 2985, checked in by olhsha, 12 years ago

correcting corrupted bug fix 232 (redundant redirection). Possible an intermediate version of the Config.as and Bowser.mxml was saved earlier, but the last version from the buffer was lost. Should be ok now.

File size: 9.6 KB
Line 
1<?xml version="1.0" encoding="utf-8"?>
2<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"
3                   xmlns:browser="clarin.cmdi.componentregistry.browser.*"
4                   initialize="init()"
5                   creationComplete="creationComplete()"
6                   width="100%"
7                   height="100%"
8                   label="Component Browser"
9                   implements="clarin.cmdi.componentregistry.common.components.RegistryView" xmlns:components="clarin.cmdi.componentregistry.common.components.*"
10                   >
11        <mx:Metadata>
12                [Event(name="startItemLoaded",type="flash.events.Event")]
13        </mx:Metadata>
14        <mx:Script>
15                <![CDATA[
16                        import clarin.cmdi.componentregistry.common.ItemDescription;
17                        import clarin.cmdi.componentregistry.common.components.BrowseContextMenu;
18                        import clarin.cmdi.componentregistry.common.components.RegistryViewStack;
19                        import clarin.cmdi.componentregistry.services.BrowserService;
20                        import clarin.cmdi.componentregistry.services.ComponentInfoService;
21                        import clarin.cmdi.componentregistry.services.ComponentListService;
22                        import clarin.cmdi.componentregistry.services.Config;
23                        import clarin.cmdi.componentregistry.services.DeleteService;
24                        import clarin.cmdi.componentregistry.services.ProfileInfoService;
25                        import clarin.cmdi.componentregistry.services.ProfileListService;
26                       
27                        public static const START_ITEM_LOADED:String = "startItemLoaded";
28                       
29                        private var startupItemLoaded:Boolean = false;
30                       
31                        [Bindable]
32                        private var componentsSrv:ComponentListService = ComponentListService.getInstance(Config.instance.userSpace);
33                        [Bindable]
34                        private var profilesSrv:ProfileListService = ProfileListService.getInstance(Config.instance.userSpace);
35                        [Bindable]
36                        private var selectedProfileSrv:ProfileInfoService = new ProfileInfoService();
37                        [Bindable]
38                        private var selectedComponentSrv:ComponentInfoService = new ComponentInfoService();
39                       
40                        private var _deleteSrvProfiles:DeleteService;
41                        private var _deleteSrvComponents:DeleteService;
42                       
43                        [Bindable]
44                        private var profilesMenu:BrowseContextMenu;
45                        [Bindable]
46                        private var componentsMenu:BrowseContextMenu;
47                        [Bindable]
48                        private var selectedProfileItem:ItemDescription;
49                        [Bindable]
50                        private var selectedComponentItem:ItemDescription;
51                        private var startupItemId:String = null;
52                        private var startupPanel:String = null;
53
54                        private const padding:int = 5;
55                        private const bigPadding:int =10;
56                       
57                        public function init():void {
58                               
59                                _deleteSrvProfiles=new DeleteService();
60                                _deleteSrvComponents=new DeleteService();
61                               
62                                profilesMenu = new BrowseContextMenu();
63                                profilesMenu.viewStack = this.parent as RegistryViewStack;
64                                profilesMenu.deleteService = _deleteSrvProfiles;
65                                componentsMenu = new BrowseContextMenu(true);
66                                componentsMenu.viewStack = this.parent as RegistryViewStack;
67                                componentsMenu.deleteService = _deleteSrvProfiles;
68                               
69                                _deleteSrvProfiles.addEventListener(_deleteSrvProfiles.ITEM_DELETED, handleItemDeleted);
70                                _deleteSrvComponents.addEventListener(_deleteSrvComponents.ITEM_DELETED, handleItemDeleted);
71                               
72                                Config.instance.addEventListener(Config.USER_SPACE_TOGGLE_EVENT, toggleUserSpace);
73                                Config.instance.addEventListener(Config.USER_SPACE_TOGGLE_EVENT, setUserSpace);
74                       
75                                setUserSpace();
76                               
77                        }
78                       
79                        private function toggleUserSpace(event:Event):void {
80                                var userSpace:Boolean = Config.instance.userSpace;
81                                componentsSrv = ComponentListService.getInstance(userSpace);
82                                profilesSrv = ProfileListService.getInstance(userSpace);
83                                refresh();
84                        }
85                       
86                        private function creationComplete():void {
87                                refresh();
88                        }
89                       
90                        public function loadStartup():void {
91                                startupItemId = Config.instance.startupItem;
92                                startupPanel = Config.instance.browserPanel;
93                                if (startupItemId) { //only load this once on startup
94                                        componentsSrv.addEventListener(BrowserService.ITEMS_LOADED, componentsLoaded);
95                                        profilesSrv.addEventListener(BrowserService.ITEMS_LOADED, profilesLoaded);
96                                }
97                               
98                                refresh();
99                        }
100                       
101                        public function refresh():void {
102                                componentsSrv.load();
103                                profilesSrv.load();
104                               
105                                selectedComponentSrv = new ComponentInfoService();
106                                selectedProfileSrv = new ProfileInfoService();
107                        }
108                       
109                        private function profilesLoaded(event:Event):void {
110                                var item:ItemDescription = ProfileListService.findDescription(startupItemId);
111                                loadStartupItem(item);
112                                profileInfoPage.infoPanel.setPanel(Config.instance.browserPanel);                               
113                                profilesSrv.removeEventListener(BrowserService.ITEMS_LOADED, profilesLoaded);
114                        }
115                       
116                        private function componentsLoaded(event:Event):void {
117                                var item:ItemDescription = ComponentListService.findDescription(startupItemId);
118                                if(item != null){
119                                        loadStartupItem(item);
120                                        componentInfoPage.infoPanel.setPanel(Config.instance.browserPanel);                             
121                                        componentsSrv.removeEventListener(BrowserService.ITEMS_LOADED, componentsLoaded);
122                                }
123                        }
124                       
125                        private function loadStartupItem(item:ItemDescription):void {
126                                if (item) {
127                                        setSelectedDescription(item);
128                                        startupItemId = null;
129                                        dispatchEvent(new Event(START_ITEM_LOADED));
130                                } else if (startupItemLoaded) {
131                                        dispatchEvent(new Event(START_ITEM_LOADED));
132                                }
133                                startupItemLoaded = true;
134                        }
135                       
136                        private function loadProfileInfoPage(event:BrowserSelectionEvent):void {
137                                selectedProfileSrv.load(event.itemDescription);
138                        }
139                       
140                        private function loadComponentInfoPage(event:BrowserSelectionEvent):void {
141                                selectedComponentSrv.load(event.itemDescription);
142                        }
143                       
144                        public function setSelectedDescription(desc:ItemDescription):void {
145                                if (desc.isProfile) {
146                                        tabnav.selectedIndex = 0;
147                                        this.selectedProfileItem = desc;
148                                        selectedProfileSrv.load(desc);
149                                } else {
150                                        tabnav.selectedIndex = 1;
151                                        this.selectedComponentItem = desc;
152                                        selectedComponentSrv.load(desc);
153                                }
154                        }
155                       
156                        public function getSelectedStartItem():ItemDescription {
157                                if (this.selectedProfileItem) {
158                                        return selectedProfileItem;
159                                } else {
160                                        return selectedComponentItem;
161                                }
162                        }
163                       
164                        private function handleItemDeleted(event:Event):void {
165                                refresh();
166                        }
167                       
168                        public function getType():String {
169                                return Config.VIEW_BROWSE;
170                        }
171                       
172                        private function createNewProfile(event:Event):void {
173                                RegistryViewStack(this.parent).getEditor().xmlEditor.clearEditorProfile();
174                                RegistryViewStack(this.parent).switchToEditor(null);
175                        }
176                       
177                        private function createNewComponent(event:Event):void {
178                                RegistryViewStack(this.parent).getEditor().xmlEditor.clearEditorComponent();
179                                RegistryViewStack(this.parent).switchToEditor(null);
180                        }
181                       
182                        private function setUserSpace(event:Event = null):void {
183                                if (Config.instance.userSpace) {
184                                        userSpaceCB.selectedIndex = 1;
185                                } else {
186                                        userSpaceCB.selectedIndex = 0;
187                                }
188                        }
189                       
190                        private function getSelectedIndex():int{
191                                if (isComponentId(Config.instance.startupItem)) {
192                                        return 1;
193                                } else {
194                                        return 0;
195                                }
196                        }
197                       
198                        private function isComponentId(id:String):Boolean{
199                                if (id==null) {return false;}
200                                var index:int=id.search(Config.COMPONENT_PREFIX);
201                                if (index>=0) {
202                                        return true;
203                                } else {
204                                        return false;
205                                }
206                        }
207                       
208                ]]>
209        </mx:Script>
210       
211       
212       
213        <browser:BrowserColumns id="browserColumns"/>
214       
215        <mx:Panel width="100%"
216                          height="100%"
217                          headerHeight="0"
218                          borderThicknessTop="0"
219                          borderThicknessRight="0"
220                          borderThicknessBottom="0"
221                          borderThicknessLeft="0"
222                          layout="absolute"
223                          horizontalAlign="center"
224                          >
225               
226               
227               
228                <mx:Box paddingTop="{padding}" paddingLeft="{padding}"
229                                horizontalCenter="-110"
230                                >
231                        <components:SpaceSwitch id="userSpaceCB" width="110" />
232                </mx:Box>
233               
234                <mx:VBox left="0"
235                                 paddingTop="{bigPadding}"
236                                 borderStyle="none"
237                                 height="100%"
238                                 width="100%">
239                       
240                        <mx:TabNavigator id="tabnav"
241                                                         selectedIndex="{getSelectedIndex()}"
242                                                         width="100%"
243                                                         height="100%"
244                                                         color="0x323232"
245                                                         y="59"
246                                                         borderStyle="outset"
247                                                         creationPolicy="all"
248                                                         >
249                                <mx:VDividedBox label="Profiles"
250                                                                width="100%">
251                                       
252                                        <browser:BrowserOverviewList id="profilesOverview"
253                                                                                                 viewStack="{this.parent as RegistryViewStack}"
254                                                                                                 browserColumns="{browserColumns.getProfileColumns()}"
255                                                                                                 browserDataProvider="{profilesSrv.itemDescriptions}"
256                                                                                                 browserItemSelected="{loadProfileInfoPage(event)}"
257                                                                                                 itemToScrollTo="{selectedProfileItem}"
258                                                                                                 width="100%"
259                                                                                                 height="70%"
260                                                                                                 browseMenu="{profilesMenu}"
261                                                                                                 typeOfDescription = "profiles"
262                                                                                                 createNew="createNewProfile(event)"
263                                                                                                 />
264                                        <browser:ProfileInfoPage id="profileInfoPage"
265                                                                                         profile="{selectedProfileSrv.profile}"
266                                                                                         width="100%"
267                                                                                         height="50%"
268                                                                                         contextMenu="{profilesMenu.cm}"/>
269                                </mx:VDividedBox>
270                               
271                                <mx:VDividedBox label="Components"
272                                                                width="100%"
273                                                                >
274                                        <browser:BrowserOverviewList id="componentsOverview"
275                                                                                                 viewStack="{this.parent as RegistryViewStack}"
276                                                                                                 browserColumns="{browserColumns.getComponentColumns()}"
277                                                                                                 browserDataProvider="{componentsSrv.itemDescriptions}"
278                                                                                                 browserItemSelected="{loadComponentInfoPage(event)}"
279                                                                                                 itemToScrollTo="{selectedComponentItem}"
280                                                                                                 width="100%"
281                                                                                                 height="70%"
282                                                                                                 browseMenu="{componentsMenu}"
283                                                                                                 typeOfDescription= "components"
284                                                                                                 createNew="createNewComponent(event)"
285                                                                                                 />
286                                        <browser:ComponentInfoPage id="componentInfoPage"
287                                                                                           component="{selectedComponentSrv.component}"
288                                                                                           width="100%"
289                                                                                           height="50%"
290                                                                                           contextMenu="{componentsMenu.cm}"/>
291                                       
292                                </mx:VDividedBox>
293                        </mx:TabNavigator>
294                </mx:VBox>
295        </mx:Panel>
296</mx:Canvas>
Note: See TracBrowser for help on using the repository browser.