Skip to content

Commit

Permalink
Refactored out ContextMenu in favor of generic SimpleMenu
Browse files Browse the repository at this point in the history
  • Loading branch information
MeoMix committed May 19, 2015
1 parent 402486e commit cd82cdd
Show file tree
Hide file tree
Showing 35 changed files with 202 additions and 375 deletions.
2 changes: 2 additions & 0 deletions Streamus Chrome Extension.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,8 @@
<Content Include="src\js\test\foreground\view\video\videoSpecLoader.js" />
<Content Include="src\js\test\foreground\view\video\videoView.spec.js" />
<Content Include="src\js\test\foreground\view\viewTestUtility.js" />
<Content Include="src\js\thirdParty\babel-4.6.6.min.js" />
<Content Include="src\js\thirdParty\es6.js" />
<Content Include="src\js\thirdParty\test\chai.js" />
<Content Include="src\js\thirdParty\test\mocha.js" />
<Content Include="src\js\thirdParty\test\sinon.js" />
Expand Down
1 change: 0 additions & 1 deletion src/js/foreground/application.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
foreground: Backbone.Wreqr.radio.channel('foreground'),
foregroundArea: Backbone.Wreqr.radio.channel('foregroundArea'),
window: Backbone.Wreqr.radio.channel('window'),
contextMenu: Backbone.Wreqr.radio.channel('contextMenu'),
playlistsArea: Backbone.Wreqr.radio.channel('playlistsArea'),
search: Backbone.Wreqr.radio.channel('search'),
activeStreamItemArea: Backbone.Wreqr.radio.channel('activeStreamItemArea'),
Expand Down
11 changes: 0 additions & 11 deletions src/js/foreground/collection/contextMenu/contextMenuItems.js

This file was deleted.

28 changes: 0 additions & 28 deletions src/js/foreground/model/contextMenu/contextMenu.js

This file was deleted.

27 changes: 16 additions & 11 deletions src/js/foreground/model/contextMenu/contextMenuAction.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,22 @@
player: null
},

showContextMenu: function() {
Streamus.channels.contextMenu.commands.trigger('reset:items', [{
text: chrome.i18n.getMessage('copyUrl'),
onClick: this._copyUrl.bind(this)
}, {
text: chrome.i18n.getMessage('copyTitleAndUrl'),
onClick: this._copyTitleAndUrl.bind(this)
}, {
text: chrome.i18n.getMessage('watchOnYouTube'),
onClick: this._watchOnYouTube.bind(this)
}]);
showContextMenu: function(top, left) {
Streamus.channels.simpleMenu.commands.trigger('show:simpleMenu', {
isContextMenu: true,
top: top,
left: left,
items: [{
text: chrome.i18n.getMessage('copyUrl'),
onClick: this._copyUrl.bind(this)
}, {
text: chrome.i18n.getMessage('copyTitleAndUrl'),
onClick: this._copyTitleAndUrl.bind(this)
}, {
text: chrome.i18n.getMessage('watchOnYouTube'),
onClick: this._watchOnYouTube.bind(this)
}]
});
},

_copyUrl: function() {
Expand Down
14 changes: 0 additions & 14 deletions src/js/foreground/model/contextMenu/contextMenuItem.js

This file was deleted.

10 changes: 9 additions & 1 deletion src/js/foreground/model/element/simpleMenu.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,15 @@
defaults: {
simpleMenuItems: null,
fixedMenuItem: null,
listItemHeight: 0
listItemHeight: 0,
isContextMenu: false,
reposition: false,
repositionData: {
top: 0,
left: 0,
containerHeight: 0,
containerWidth: 0
}
}
});

Expand Down
7 changes: 6 additions & 1 deletion src/js/foreground/model/element/simpleMenuItem.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,13 @@
var SimpleMenuItem = Backbone.Model.extend({
defaults: {
text: '',
tooltipText: '',
value: '',
selected: false
selected: false,
active: false,
disabled: false,
// TODO: This is a bit odd.
onClick: _.noop
}
});

Expand Down
46 changes: 0 additions & 46 deletions src/js/foreground/view/contextMenu/contextMenuItemView.js

This file was deleted.

12 changes: 0 additions & 12 deletions src/js/foreground/view/contextMenu/contextMenuItemsView.js

This file was deleted.

61 changes: 0 additions & 61 deletions src/js/foreground/view/contextMenu/contextMenuRegion.js

This file was deleted.

47 changes: 0 additions & 47 deletions src/js/foreground/view/contextMenu/contextMenuView.js

This file was deleted.

41 changes: 35 additions & 6 deletions src/js/foreground/view/element/simpleMenuItemView.js
Original file line number Diff line number Diff line change
@@ -1,26 +1,55 @@
define(function(require) {
'use strict';

var Tooltipable = require('foreground/view/behavior/tooltipable');
var MenuItemTemplate = require('text!template/element/menuItem.html');

var SimpleMenuItemView = Marionette.LayoutView.extend({
className: 'listItem listItem--small listItem--selectable listItem--clickable',
className: function() {
// TODO: What is listItem--selectable getting us that --clickable is not?
var className = 'listItem listItem--small listItem--selectable listItem--clickable';
className += this.model.get('disabled') ? ' is-disabled' : '';
return className;
},
template: _.template(MenuItemTemplate),

attributes: function() {
return {
'data-ui': 'tooltipable',
'data-tooltip-text': this.model.get('tooltipText')
};
},

events: {
'click': '_onClick'
},

behaviors: {
Tooltipable: {
behaviorClass: Tooltipable
}
},

onRender: function() {
this._setState(this.model.get('active'));
},

_onClick: function() {
this.model.set('active', true);
this.triggerMethod('click:simpleMenuItem', {
view: this,
model: this.model
});
var enabled = !this.model.get('disabled');

if (enabled) {
// TODO: I think I need to make a distinction between menu items which have click events and those which have values that need to be propagated.
this.model.get('onClick')();

this.model.set('active', true);
this.triggerMethod('click:simpleMenuItem', {
view: this,
model: this.model
});
}

// Return false to prevent the view from closing which emulates how native, disabled contextMenu views work when clicked.
return enabled;
},

_onChangeActive: function(model, active) {
Expand Down

0 comments on commit cd82cdd

Please sign in to comment.