5112cf4c9aa66cd02133d510327f7c6e0cb5b88d
[ccsdk/features.git] /
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( $, joey, app ) {
17
18         var ui = app.ns("ui");
19
20         ui.Button = ui.AbstractWidget.extend({
21                 defaults : {
22                         label: "",                 // the label text
23                         disabled: false,           // create a disabled button
24                         autoDisable: false         // automatically disable the button when clicked
25                 },
26
27                 _baseCls: "uiButton",
28
29                 init: function(parent) {
30                         this._super();
31                         this.el = $.joey(this.button_template())
32                                 .bind("click", this.click_handler);
33                         this.config.disabled && this.disable();
34                         this.attach( parent );
35                 },
36
37                 click_handler: function(jEv) {
38                         if(! this.disabled) {
39                                 this.fire("click", jEv, this);
40                                 this.config.autoDisable && this.disable();
41                         }
42                 },
43
44                 enable: function() {
45                         this.el.removeClass("disabled");
46                         this.disabled = false;
47                         return this;
48                 },
49
50                 disable: function(disable) {
51                         if(disable === false) {
52                                         return this.enable();
53                         }
54                         this.el.addClass("disabled");
55                         this.disabled = true;
56                         return this;
57                 },
58
59                 button_template: function() { return (
60                         { tag: 'BUTTON', type: 'button', id: this.id(), cls: this._baseCls, children: [
61                                 { tag: 'DIV', cls: 'uiButton-content', children: [
62                                         { tag: 'DIV', cls: 'uiButton-label', text: this.config.label }
63                                 ] }
64                         ] }
65                 ); }
66         });
67
68 })( this.jQuery, this.joey, this.app );