2013-06-22 06:24:24 +00:00
|
|
|
'use strict';
|
2013-06-21 05:19:41 +00:00
|
|
|
define(
|
|
|
|
[
|
2013-06-24 23:41:59 +00:00
|
|
|
'marionette',
|
2013-06-24 04:28:18 +00:00
|
|
|
'Shared/Toolbar/ButtonCollection',
|
2013-06-24 23:41:59 +00:00
|
|
|
'Shared/Toolbar/ButtonModel',
|
|
|
|
'Shared/Toolbar/Radio/RadioButtonCollectionView',
|
|
|
|
'Shared/Toolbar/Button/ButtonCollectionView'
|
|
|
|
], function (Marionette, ButtonCollection, ButtonModel, RadioButtonCollectionView, ButtonCollectionView) {
|
|
|
|
return Marionette.Layout.extend({
|
2013-06-21 05:19:41 +00:00
|
|
|
template: 'Shared/Toolbar/ToolbarLayoutTemplate',
|
|
|
|
|
|
|
|
regions: {
|
|
|
|
left_1 : '.x-toolbar-left-1',
|
|
|
|
left_2 : '.x-toolbar-left-2',
|
|
|
|
right_1: '.x-toolbar-right-1',
|
|
|
|
right_2: '.x-toolbar-right-2'
|
|
|
|
},
|
|
|
|
|
|
|
|
initialize: function (options) {
|
|
|
|
|
|
|
|
if (!options) {
|
|
|
|
throw 'options needs to be passed';
|
|
|
|
}
|
2013-04-26 04:45:45 +00:00
|
|
|
|
2013-06-21 05:19:41 +00:00
|
|
|
if (!options.context) {
|
|
|
|
throw 'context needs to be passed';
|
|
|
|
}
|
2013-04-26 04:45:45 +00:00
|
|
|
|
2013-06-21 05:19:41 +00:00
|
|
|
this.left = options.left;
|
|
|
|
this.right = options.right;
|
|
|
|
this.toolbarContext = options.context;
|
2013-04-26 04:45:45 +00:00
|
|
|
|
2013-06-21 05:19:41 +00:00
|
|
|
},
|
2013-04-24 05:56:51 +00:00
|
|
|
|
2013-06-24 23:41:59 +00:00
|
|
|
|
2013-06-21 05:19:41 +00:00
|
|
|
onShow: function () {
|
|
|
|
if (this.left) {
|
|
|
|
_.each(this.left, this._showToolbarLeft, this);
|
|
|
|
}
|
|
|
|
if (this.right) {
|
|
|
|
_.each(this.right, this._showToolbarRight, this);
|
|
|
|
}
|
|
|
|
},
|
2013-04-24 05:56:51 +00:00
|
|
|
|
2013-06-21 05:19:41 +00:00
|
|
|
_showToolbarLeft: function (element, index) {
|
|
|
|
this._showToolbar(element, index, 'left');
|
|
|
|
},
|
2013-04-24 05:56:51 +00:00
|
|
|
|
2013-06-21 05:19:41 +00:00
|
|
|
_showToolbarRight: function (element, index) {
|
|
|
|
this._showToolbar(element, index, 'right');
|
|
|
|
},
|
2013-04-26 04:45:45 +00:00
|
|
|
|
|
|
|
|
2013-06-21 05:19:41 +00:00
|
|
|
_showToolbar: function (buttonGroup, index, position) {
|
2013-04-26 04:45:45 +00:00
|
|
|
|
2013-06-24 04:28:18 +00:00
|
|
|
var groupCollection = new ButtonCollection();
|
2013-04-26 04:45:45 +00:00
|
|
|
|
2013-06-21 05:19:41 +00:00
|
|
|
_.each(buttonGroup.items, function (button) {
|
2013-04-26 04:45:45 +00:00
|
|
|
|
2013-06-21 05:19:41 +00:00
|
|
|
if (buttonGroup.storeState && !button.key) {
|
|
|
|
throw 'must provide key for all buttons when storSstate is enabled';
|
|
|
|
}
|
2013-04-26 04:45:45 +00:00
|
|
|
|
2013-06-24 04:28:18 +00:00
|
|
|
var model = new ButtonModel(button);
|
2013-06-21 05:19:41 +00:00
|
|
|
model.set('menuKey', buttonGroup.menuKey);
|
|
|
|
model.ownerContext = this.toolbarContext;
|
|
|
|
groupCollection.add(model);
|
2013-04-26 04:45:45 +00:00
|
|
|
|
2013-06-21 05:19:41 +00:00
|
|
|
}, this);
|
2013-04-26 04:45:45 +00:00
|
|
|
|
2013-06-21 05:19:41 +00:00
|
|
|
var buttonGroupView;
|
2013-04-26 04:45:45 +00:00
|
|
|
|
2013-06-21 05:19:41 +00:00
|
|
|
switch (buttonGroup.type) {
|
|
|
|
case 'radio':
|
|
|
|
{
|
2013-06-24 04:28:18 +00:00
|
|
|
buttonGroupView = new RadioButtonCollectionView({
|
2013-06-24 23:41:59 +00:00
|
|
|
collection: groupCollection,
|
|
|
|
menu : buttonGroup
|
|
|
|
});
|
2013-06-21 05:19:41 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
default :
|
|
|
|
{
|
2013-06-24 04:28:18 +00:00
|
|
|
buttonGroupView = new ButtonCollectionView({
|
2013-06-24 23:41:59 +00:00
|
|
|
collection: groupCollection,
|
|
|
|
menu : buttonGroup
|
|
|
|
});
|
2013-06-21 05:19:41 +00:00
|
|
|
break;
|
|
|
|
}
|
2013-05-11 20:51:32 +00:00
|
|
|
}
|
2013-04-26 04:45:45 +00:00
|
|
|
|
2013-06-21 05:19:41 +00:00
|
|
|
this[position + '_' + (index + 1).toString()].show(buttonGroupView);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
2013-04-24 05:56:51 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|