baseview.js
4.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/*
*
* ADOBE CONFIDENTIAL
* __________________
*
* Copyright 2014 Adobe Systems Incorporated
* All Rights Reserved.
*
* NOTICE: All information contained herein is, and remains
* the property of Adobe Systems Incorporated and its suppliers,
* if any. The intellectual and technical concepts contained
* herein are proprietary to Adobe Systems Incorporated and its
* suppliers and are protected by trade secret or copyright law.
* Dissemination of this information or reproduction of this material
* is strictly forbidden unless prior written permission is obtained
* from Adobe Systems Incorporated.
*/
define('screens/player/ui/baseview', [
'underscore',
'backbone'
], function(_, Backbone) {
'use strict';
var BaseView = Backbone.View.extend(/** @lends BaseView.prototype */{
/**
* @classdesc Abstract base View that provides generic methods
* @class BaseView
* @extends Backbone.View
*
* @param {Object} [options] An object of configurable options.
*/
constructor: function(options) {
this._initOptions(options);
Backbone.View.apply(this, arguments);
},
/**
* initialized the options of an object by applying the given options and default options.
* The properties of the given options (or default options) are applied onto {@code this.options} if
* not already present.
*
* @param {Object} options configuration options to apply
* @param {Object} defaultOptions default options to apply
*
* @protected
*/
_initOptions: function(options, defaultOptions) {
this.options = _.defaults(this.options || {}, options, defaultOptions);
},
/**
* generic initialization of this view
*/
initialize: function() {
this._isRendered = false;
this._isVisible = false;
this.el.viewController = this;
},
/**
* destroys this view and calls {@link Backbone.View#remove()} which removes the view from the DOM.
*/
destroy: function() {
delete this.el.viewController;
this._isRendered = false;
this.remove();
},
/**
* hide this view
* @returns {BaseView} this
*/
hide: function() {
this.$el.hide();
this._isVisible = false;
return this;
},
/**
* show this view
* @returns {BaseView} this
*/
show: function() {
this.$el.show();
this._isVisible = true;
return this;
},
/**
* Helper method to prevent re-rendering if not needed. It sets the rendering state to the given value and
* returns the previously assigned one.
* @param {boolean} value the value
* @returns {boolean} the previously assigned value
*/
setRendered: function(value) {
try {
return this._isRendered;
} finally {
this._isRendered = value;
}
},
/**
* Helper method to prevent re-rendering if not needed. It returns the rendering state of this view.
* @returns {boolean} true if rendered
*/
isRendered: function() {
return this._isRendered;
},
/**
* Returns if the view is shown or not
* @returns {boolean} true if visibile
*/
isVisible: function() {
return this._isVisible;
},
/**
* Dispatches an event on {code}this.el{code}.
* @param {String} type event type or name
* @param {Object} [data] additional event data added to event.detail.
*/
dispatchEvent: function(type, data) {
var ev = document.createEvent('Event');
ev.initEvent(type, true, true);
ev.detail = data || {};
ev.data = data || {};
ev.viewController = this;
this.el.dispatchEvent(ev);
}
});
// return module export
return BaseView;
});