Created
October 23, 2008 15:51
-
-
Save ttdonovan/19079 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // ========================================================================== | |
| // CDWeb.CDMainMenuView | |
| // ========================================================================== | |
| require('core'); | |
| /** @class | |
| (Document Your View Here) | |
| @extends SC.View | |
| @author AuthorName | |
| @version 0.1 | |
| */ | |
| CDWeb.CDMainMenuView = SC.View.extend( | |
| /** @scope CDWeb.CDMainMenuView.prototype */ { | |
| content: [], | |
| contentBindingDefault: SC.Binding.MultipleNotEmpty, | |
| render: function() { | |
| var content = this.get('content'); | |
| this._appendPopupButtons(content); | |
| }.observes('content'), | |
| _appendPopupButtons: function (content) { | |
| var buttonsLength = content.get('length'), | |
| buttonObject = null, | |
| menuItemList = null, | |
| params = {}, | |
| i = null; | |
| for (i = 0; i < buttonsLength; i += 1) { | |
| buttonObject = content.objectAt(i); | |
| menuItemList = buttonObject.children || []; | |
| // menu button | |
| var popupButton = SC.PopupButtonView.create(); | |
| // popupButton.set('menu', popupMenu); | |
| popupButton.set('menu', this._returnPopupMenu(menuItemList)); | |
| popupButton.set('title', buttonObject.label); // FIXME bug? - SC.ButtonView title is a computed property | |
| this.appendChild(popupButton); | |
| } | |
| }, | |
| _returnPopupMenu: function (menuItems) { | |
| var menuItemsLength = menuItems.length, | |
| popupMenu = SC.PopupMenuView.create({ paneType: 'menu' }), | |
| menuItem = null, | |
| params = {}, | |
| i = null; | |
| for (i = 0; i < menuItemsLength; i += 1) { | |
| menuItem = null; // empty menu item | |
| switch (menuItems[i].type) { // CD menu item type | |
| case 'menu_popup': | |
| menuItem = SC.PopupButtonView.create(); | |
| menuItem.set('menu', this._returnPopupMenu(menuItems[i].children)); | |
| menuItem.set('title', menuItems[i].label); // FIXME bug? - SC.ButtonView title is a computed property | |
| break; | |
| case 'menu_view': | |
| params = { target: 'CDWeb.mainMenuController', action: 'view' } | |
| menuItem = SC.MenuItemView.create(params); | |
| menuItem.set('title', menuItems[i].name); // FIXME bug? - SC.ButtonView title is a computed property | |
| break; | |
| case 'menu_report': | |
| params = { target: 'CDWeb.mainMenuController', action: 'report' } | |
| menuItem = SC.MenuItemView.create(params); | |
| menuItem.set('title', menuItems[i].name); // FIXME bug? - SC.ButtonView title is a computed property | |
| break; | |
| case 'menu_action': | |
| params = { target: 'CDWeb.mainMenuController', action: 'action' } | |
| menuItem = SC.MenuItemView.create(params); | |
| menuItem.set('title', menuItems[i].label); // FIXME bug? - SC.ButtonView title is a computed property | |
| break; | |
| case 'menu_system': | |
| params = { target: 'CDWeb.mainMenuController', action: 'system' } | |
| menuItem = SC.MenuItemView.create(params); | |
| menuItem.set('title', menuItems[i].label); // FIXME bug? - SC.ButtonView title is a computed property | |
| break; | |
| case 'menu_separator': | |
| // console.log(menuItems[i]); | |
| break; | |
| } | |
| if (menuItem) { | |
| popupMenu.appendChild(menuItem); | |
| } | |
| } | |
| return popupMenu; | |
| } | |
| }) ; | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment