Skip to content

Instantly share code, notes, and snippets.

@ttdonovan
Created October 23, 2008 15:51
Show Gist options
  • Select an option

  • Save ttdonovan/19079 to your computer and use it in GitHub Desktop.

Select an option

Save ttdonovan/19079 to your computer and use it in GitHub Desktop.
// ==========================================================================
// 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