Taskpanel.js
2.62 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
Ext.define('MyMA.controller.Taskpanel', {
extend: 'Ext.app.Controller',
stores: ['Programs'],
refs: [{
selector: 'taskpanel',
ref: 'taskPanel'
}],
init: function() {
this.control({
'taskpanel > button': {
toggle: this.programState
}
});
},
/**
* Add program to the task panel
* @param data
*/
addProgram: function(data) {
var data = data || {
name: null
},
store = this.getStore('Programs'),
record, widget;
if(!(record = store.getProccess({
property: 'name',
value: data.name
})))
{
try {
var widget = Ext.widget(data.name),
progId = (store.max('id') || 0) + 1;
}
catch(e) {
return false;
}
var Button = this.getTaskPanel().add({
xtype: 'button',
ui: 'program-button',
height: 28,
text: data.title || widget.title,
enableToggle: true,
pressed: true,
programId: progId
});
record = store.add({
id: progId,
title: data.title || widget.title,
name: data.name,
state: 'show',
item: widget.getId(),
control: Button.getId()
})[0];
this.getController('Program').registerControl(data.name);
widget.animateTarget = Button.getId();
widget.setTitle(data.title);
widget.show();
}
else {
this.getTaskPanel().items.get(record.get('control')).toggle(true);
if((widget = Ext.getCmp(record.get('item')))) {
widget.show();
}
}
return widget ? widget : null;
},
/**
* Get reference function
* @param {Object} Button
*/
callRef: function(selector) {
var me = this;
try {
for (var i = 0, ln = this.refs.length; i < ln; i++) {
if (this.refs[i]['selector'] == selector) {
return me['get' + Ext.String.capitalize(this.refs[i]['ref'])]();
}
}
}
catch(e) { }
return null;
},
programState: function(Button) {
var store = this.getStore('Programs'),
record, widget;
if(!(record = store.getProccess({
property: 'id',
value: Button.programId
})))
{
return false;
}
if ((widget = Ext.getCmp(record.get('item')))) {
widget[record.get('state') == 'show' ? 'hide' : 'show']();
}
},
/**
* Close all process those are registed in the Programs storage
*/
closeAll: function() {
this.getStore('Programs').each(function(record){
if ((widget = Ext.getCmp(record.get('item')))) {
widget.hide();
this.getTaskPanel().items.get(record.get('control')).destroy();
}
}, this);
}
});