Add license information
[ccsdk/features.git] / sdnr / wt / devicemanager / provider / src / main / resources / elasticsearch / plugins / head / src / app / ui / splitButton / splitButton.js
1 /**
2  * Copyright 2010-2013 Ben Birch
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this software except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *   http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 (function( $, app ) {
17
18         var ui = app.ns("ui");
19
20         ui.SplitButton = ui.AbstractWidget.extend({
21                 defaults: {
22                         items: [],
23                         label: ""
24                 },
25                 _baseCls: "uiSplitButton",
26                 init: function( parent ) {
27                         this._super( parent );
28                         this.value = null;
29                         this.button = new ui.Button({
30                                 label: this.config.label,
31                                 onclick: this._click_handler
32                         });
33                         this.menu = new ui.SelectMenuPanel({
34                                 value: this.config.value,
35                                 items: this._getItems(),
36                                 onSelect: this._select_handler
37                         });
38                         this.menuButton = new ui.MenuButton({
39                                 label: "\u00a0",
40                                 menu: this.menu
41                         });
42                         this.el = $.joey(this._main_template());
43                 },
44                 remove: function() {
45                         this.menu.remove();
46                 },
47                 disable: function() {
48                         this.button.disable();
49                 },
50                 enable: function() {
51                         this.button.enable();
52                 },
53                 _click_handler: function() {
54                         this.fire("click", this, { value: this.value } );
55                 },
56                 _select_handler: function( panel, event ) {
57                         this.fire( "select", this, event );
58                 },
59                 _getItems: function() {
60                         return this.config.items;
61                 },
62                 _main_template: function() {
63                         return { tag: "DIV", cls: this._baseCls, children: [
64                                 this.button, this.menuButton
65                         ] };
66                 }
67         });
68
69 })( this.jQuery, this.app );