rsence-pre 2.1.0.4.pre → 2.1.0.6.pre
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/conf/default_conf.yaml +3 -0
- data/js/foundation/eventmanager/eventmanager.js +24 -12
- data/js/foundation/view/view.js +2 -2
- data/js/lists/listitems/listitems.js +1 -1
- data/js/lists/propertylist/propertylist.js +305 -71
- data/js/lists/propertylist/propertylisteditor/js.inc +0 -0
- data/js/lists/propertylist/propertylisteditor/propertylisteditor.js +180 -0
- data/js/lists/radiobuttonlist/radiobuttonlist.js +14 -7
- data/js/menus/minimenu/js.inc +0 -0
- data/js/menus/minimenu/minimenu.js +115 -0
- data/js/menus/minimenu/minimenuitem/js.inc +0 -0
- data/js/menus/minimenu/minimenuitem/minimenuitem.js +33 -0
- data/js/menus/minimenu/minimenuitem/themes/default/minimenuitem.css +45 -0
- data/js/menus/minimenu/minimenuitem/themes/default/minimenuitem.html +4 -0
- data/js/menus/minimenu/minimenuitem/themes/default/minimenuitem_checkmark.png +0 -0
- data/js/menus/minimenu/themes/default/minimenu.css +63 -0
- data/js/menus/minimenu/themes/default/minimenu.html +7 -0
- data/js/menus/minimenu/themes/default/minimenu.png +0 -0
- data/lib/daemon/daemon.rb +13 -2
- metadata +16 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.1.0.
|
1
|
+
2.1.0.6.pre
|
data/conf/default_conf.yaml
CHANGED
@@ -288,6 +288,9 @@
|
|
288
288
|
- checkboxlist # HCheckboxList
|
289
289
|
- radiobuttonlist # HRadiobuttonList
|
290
290
|
- propertylist # HPropertyList
|
291
|
+
- propertylisteditor # HPropertyEditor
|
292
|
+
- minimenu # HMiniMenu
|
293
|
+
- minimenuitem # HMiniMenuItem
|
291
294
|
|
292
295
|
# Special packages that include other packages (not used currently)
|
293
296
|
:compound_packages:
|
@@ -841,22 +841,28 @@ EVENT = {
|
|
841
841
|
**/
|
842
842
|
keyDown: function(e) {
|
843
843
|
var _this = EVENT,
|
844
|
-
_theKeyCode = e.keyCode
|
844
|
+
_theKeyCode = e.keyCode,
|
845
|
+
_keyDownStateForActiveControl = _this.activeControl?_this.focusOptions[_this.activeControl.elemId].keyDown:false,
|
846
|
+
_repeat = (_keyDownStateForActiveControl === 'repeat'),
|
847
|
+
_stopEvent = false;
|
845
848
|
_this._modifiers(e);
|
846
849
|
if(!_this.status[_this.cmdKeyDown] && _this._detectCmdKey(e.keyCode)){
|
847
850
|
_this.status[_this.cmdKeyDown] = true;
|
848
851
|
}
|
849
|
-
if (_this.activeControl &&
|
850
|
-
|
851
|
-
|
852
|
-
|
853
|
-
|
852
|
+
if (_this.activeControl && _keyDownStateForActiveControl) {
|
853
|
+
if ((_this._lastKeyDown !== _theKeyCode) || _repeat) {
|
854
|
+
if(_this.activeControl.keyDown(_theKeyCode)){
|
855
|
+
_stopEvent = true;
|
856
|
+
}
|
854
857
|
}
|
855
858
|
}
|
856
859
|
// Insert key to the realtime array, remove in keyUp
|
857
860
|
if (_this.status[_this.keysDown].indexOf(_theKeyCode) === -1) {
|
858
861
|
_this.status[_this.keysDown].push(_theKeyCode);
|
859
862
|
}
|
863
|
+
if (!_this.status[_this.cmdKeyDown] && _stopEvent){
|
864
|
+
Event.stop(e);
|
865
|
+
}
|
860
866
|
_this._lastKeyDown = _theKeyCode;
|
861
867
|
},
|
862
868
|
|
@@ -873,20 +879,28 @@ EVENT = {
|
|
873
879
|
_theKeyCode = e.keyCode,
|
874
880
|
_keyCodeIndex,
|
875
881
|
i = 0,
|
882
|
+
_stopEvent = false,
|
876
883
|
_ctrlId,
|
877
884
|
_ctrl;
|
878
885
|
_this._modifiers(e);
|
879
886
|
_this._lastKeyDown = null;
|
880
887
|
if (_this.activeControl && _this.focusOptions[_this.activeControl.elemId].keyUp === true) {
|
881
|
-
_this.activeControl.keyUp(_theKeyCode)
|
888
|
+
if(_this.activeControl.keyUp(_theKeyCode)){
|
889
|
+
_stopEvent = true;
|
890
|
+
}
|
882
891
|
}
|
883
892
|
for (; i < _this.textEnterCtrls.length; i++) {
|
884
893
|
_ctrlId = _this.textEnterCtrls[i];
|
885
894
|
_ctrl = HSystem.views[_ctrlId];
|
886
895
|
if (_ctrl.textEnter) {
|
887
|
-
_ctrl.textEnter()
|
896
|
+
if(_ctrl.textEnter()){
|
897
|
+
_stopEvent = true;
|
898
|
+
}
|
888
899
|
}
|
889
900
|
}
|
901
|
+
if (!_this.status[_this.cmdKeyDown] && _stopEvent){
|
902
|
+
Event.stop(e);
|
903
|
+
}
|
890
904
|
if(_this.status[_this.cmdKeyDown] && _this._detectCmdKey(e.keyCode)){
|
891
905
|
_this.status[_this.cmdKeyDown] = false;
|
892
906
|
}
|
@@ -897,12 +911,10 @@ EVENT = {
|
|
897
911
|
}
|
898
912
|
},
|
899
913
|
|
900
|
-
/*
|
914
|
+
/* Using keyPress as an alias for the keyDown event */
|
901
915
|
keyPress: function(e) {
|
902
916
|
var _this = EVENT;
|
903
|
-
|
904
|
-
Event.stop(e);
|
905
|
-
}
|
917
|
+
_this.keyDown(e);
|
906
918
|
},
|
907
919
|
|
908
920
|
|
data/js/foundation/view/view.js
CHANGED
@@ -756,7 +756,7 @@ HView = HClass.extend({
|
|
756
756
|
**/
|
757
757
|
markupElemNames: ['bg', 'label', 'state', 'control', 'value', 'subview'],
|
758
758
|
drawMarkup: function() {
|
759
|
-
ELEM.setStyle(this.elemId, 'display', 'none', true);
|
759
|
+
// ELEM.setStyle(this.elemId, 'display', 'none', true);
|
760
760
|
|
761
761
|
// continue processing from here on:
|
762
762
|
var _markupStatus = this._loadMarkup();
|
@@ -774,7 +774,7 @@ HView = HClass.extend({
|
|
774
774
|
}
|
775
775
|
}
|
776
776
|
|
777
|
-
ELEM.setStyle(this.elemId, 'display', this.displayMode );
|
777
|
+
// ELEM.setStyle(this.elemId, 'display', this.displayMode );
|
778
778
|
return this;
|
779
779
|
},
|
780
780
|
|
@@ -20,7 +20,7 @@
|
|
20
20
|
## be unique.
|
21
21
|
##
|
22
22
|
## == Important
|
23
|
-
** The parent object of a HListItem needs to be a compatible
|
23
|
+
** The parent object of a HListItem needs to be a compatible component, like HRadioButtonList.
|
24
24
|
##
|
25
25
|
***/
|
26
26
|
var//RSence.Lists
|
@@ -16,67 +16,172 @@
|
|
16
16
|
***/
|
17
17
|
var//RSence.Lists
|
18
18
|
HPropertyList = HControl.extend({
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
|
20
|
+
defaultEvents: {
|
21
|
+
click: true
|
22
|
+
},
|
23
|
+
|
24
|
+
controlDefaults: (HControlDefaults.extend({
|
25
|
+
keyColumnWidth: 100,
|
26
|
+
hideTypeColumn: false,
|
27
|
+
useEditor: false,
|
28
|
+
rowHeight: 15,
|
29
|
+
keyIndent: 8
|
30
|
+
})),
|
31
|
+
|
32
|
+
click: function(x,y){
|
33
|
+
if(this.options.useEditor){
|
34
|
+
var
|
35
|
+
clickY = y-this.contentView.pageY(),
|
36
|
+
itemNum = Math.floor(clickY/this.options.rowHeight);
|
37
|
+
if((clickY < 0) || (itemNum > this.valueTokens.length-1)){
|
38
|
+
this.editor.hide();
|
39
|
+
return;
|
40
|
+
}
|
41
|
+
this.editItem( itemNum );
|
42
|
+
}
|
43
|
+
},
|
44
|
+
|
45
|
+
keyColumnRight: function(){
|
46
|
+
return this.options.keyColumnWidth;
|
47
|
+
},
|
48
|
+
typeColumnLeft: function(){
|
49
|
+
return this.keyColumnRight();
|
50
|
+
},
|
51
|
+
typeColumnRight: function(){
|
52
|
+
return this.options.keyColumnWidth + 60;
|
53
|
+
},
|
54
|
+
|
55
|
+
valueColumnLeft: function(){
|
56
|
+
if(this.options.hideTypeColumn){
|
57
|
+
return this.keyColumnRight();
|
58
|
+
}
|
59
|
+
else {
|
60
|
+
return this.typeColumnRight();
|
61
|
+
}
|
62
|
+
},
|
63
|
+
|
22
64
|
drawSubviews: function(){
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
this.
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
65
|
+
|
66
|
+
var borderAndBg = ELEM.make(this.elemId);
|
67
|
+
ELEM.setCSS(borderAndBg,'position:absolute;left:0;top:0;right:0;bottom:0;background-color:#e6e6e6;border:1px solid #999;');
|
68
|
+
|
69
|
+
this.markupElemIds = {
|
70
|
+
bg: borderAndBg
|
71
|
+
};
|
72
|
+
|
73
|
+
this.contentView = HScrollView.extend({
|
74
|
+
click: function(x,y){
|
75
|
+
this.parent.click(x,y);
|
76
|
+
return true;
|
77
|
+
}
|
78
|
+
}).nu(
|
79
|
+
[ 1, 25, null, null, 1, 1 ],
|
32
80
|
this, {
|
33
|
-
|
81
|
+
scrollY: 'auto',
|
82
|
+
scrollX: false,
|
83
|
+
events: {
|
84
|
+
click: true
|
85
|
+
}
|
34
86
|
}
|
35
87
|
);
|
36
|
-
|
37
|
-
|
38
|
-
|
88
|
+
|
89
|
+
var separatorParentElemId = ELEM.make(this.contentView.elemId);
|
90
|
+
ELEM.setCSS( separatorParentElemId, 'position:absolute;left:0;top:0;right:0;' );
|
91
|
+
this.separatortParentElemId = separatorParentElemId;
|
92
|
+
|
93
|
+
this.propertyItems = [];
|
94
|
+
|
95
|
+
// Editor initialization
|
96
|
+
if(this.options.useEditor){
|
97
|
+
this.editorValue = HValue.nu( false, [ 'test', 's', 'Test String' ] );
|
98
|
+
this.editor = HPropertyListEditor.nu(
|
99
|
+
[0,0,null,this.options.rowHeight+2,0,null],
|
100
|
+
this.contentView, {
|
101
|
+
propertyItems: this.propertyItems,
|
102
|
+
visible: false,
|
103
|
+
valueObj: this.editorValue
|
104
|
+
}
|
105
|
+
);
|
106
|
+
}
|
107
|
+
|
108
|
+
// Set row style heights from options
|
109
|
+
var rowHeightStyle = 'height:'+this.options.rowHeight+'px;';
|
110
|
+
this.keyRowStyle += rowHeightStyle;
|
111
|
+
this.typeRowStyle += rowHeightStyle;
|
112
|
+
this.valueRowStyle += rowHeightStyle;
|
113
|
+
this.rowSeparatorStyle += rowHeightStyle;
|
114
|
+
|
115
|
+
// Style common font style
|
116
|
+
this.contentView.setStyle('font-size','11px');
|
117
|
+
|
118
|
+
// Create the key column
|
119
|
+
this.keyColumn = HView.nu(
|
120
|
+
[ 0, 0, this.keyColumnRight(), 24 ],
|
121
|
+
this.contentView, {
|
39
122
|
style: [ [ 'border-right', '1px solid #999' ] ]
|
40
123
|
}
|
41
124
|
);
|
125
|
+
|
126
|
+
// Create the type column
|
127
|
+
if(!this.options.hideTypeColumn){
|
128
|
+
this.typeColumn = HView.nu(
|
129
|
+
[ this.typeColumnLeft(), 0, 60, 24 ],
|
130
|
+
this.contentView, {
|
131
|
+
style: [ [ 'border-right', '1px solid #999' ] ]
|
132
|
+
}
|
133
|
+
);
|
134
|
+
}
|
135
|
+
|
136
|
+
// Create the value column
|
42
137
|
this.valueColumn = HView.nu(
|
43
|
-
[ this.
|
44
|
-
this
|
138
|
+
[ this.valueColumnLeft(), 0, 0, 24, 0, null ],
|
139
|
+
this.contentView
|
45
140
|
);
|
141
|
+
|
142
|
+
// Create the column headers
|
46
143
|
this.header = HView.extend({
|
47
144
|
drawSubviews: function(){
|
48
145
|
var
|
49
|
-
keyColumnWidth = this.parent.keyColumnWidth;
|
50
|
-
this.keyLabel =
|
51
|
-
[ 0, 0,
|
146
|
+
keyColumnWidth = this.parent.options.keyColumnWidth;
|
147
|
+
this.keyLabel = HView.nu(
|
148
|
+
[ 0, 0, this.parent.keyColumnRight(), 24 ],
|
52
149
|
this, {
|
53
|
-
|
150
|
+
html: '<b>Key</b>',
|
54
151
|
style: [
|
55
152
|
[ 'text-align', 'middle' ],
|
56
153
|
[ 'text-indent', '16px' ],
|
57
|
-
[ 'line-height', '24px' ]
|
58
|
-
|
59
|
-
|
60
|
-
);
|
61
|
-
this.typeLabel = HStringView.nu(
|
62
|
-
[ keyColumnWidth, 0, 80, 24 ],
|
63
|
-
this, {
|
64
|
-
value: '<b>Type</b>',
|
65
|
-
style: [
|
66
|
-
[ 'text-align', 'middle' ],
|
67
|
-
[ 'text-indent', '8px' ],
|
68
|
-
[ 'line-height', '24px' ]
|
154
|
+
[ 'line-height', '24px' ],
|
155
|
+
[ 'font-size', '13px' ],
|
156
|
+
[ 'border-right', '3px double #999' ]
|
69
157
|
]
|
70
158
|
}
|
71
159
|
);
|
72
|
-
this.
|
73
|
-
|
160
|
+
if(!this.parent.options.hideTypeColumn){
|
161
|
+
this.typeLabel = HView.nu(
|
162
|
+
[ this.parent.typeColumnLeft(), 0, 60, 24 ],
|
163
|
+
this, {
|
164
|
+
html: '<b>Type</b>',
|
165
|
+
style: [
|
166
|
+
[ 'text-align', 'middle' ],
|
167
|
+
[ 'text-indent', '8px' ],
|
168
|
+
[ 'line-height', '24px' ],
|
169
|
+
[ 'font-size', '13px' ],
|
170
|
+
[ 'padding-right', '1px' ],
|
171
|
+
[ 'border-right', '1px solid #999' ]
|
172
|
+
]
|
173
|
+
}
|
174
|
+
);
|
175
|
+
}
|
176
|
+
this.valueLabel = HView.nu(
|
177
|
+
[ this.parent.valueColumnLeft(), 0, 80, 24, 0, null ],
|
74
178
|
this, {
|
75
|
-
|
179
|
+
html: '<b>Value</b>',
|
76
180
|
style: [
|
77
181
|
[ 'text-align', 'middle' ],
|
78
182
|
[ 'text-indent', '8px' ],
|
79
|
-
[ 'line-height', '24px' ]
|
183
|
+
[ 'line-height', '24px' ],
|
184
|
+
[ 'font-size', '13px' ]
|
80
185
|
]
|
81
186
|
}
|
82
187
|
);
|
@@ -87,30 +192,75 @@ HPropertyList = HControl.extend({
|
|
87
192
|
style: [ [ 'border-bottom', '1px solid #999' ] ]
|
88
193
|
}
|
89
194
|
);
|
195
|
+
|
196
|
+
// Create the resize control (invisible, just above the first column separator)
|
90
197
|
this.resizeColumns = HControl.extend({
|
91
198
|
drag: function(x,y){
|
92
199
|
var
|
93
|
-
|
94
|
-
|
95
|
-
|
200
|
+
parent = this.parent,
|
201
|
+
options = parent.options,
|
202
|
+
keyColumnWidth = x - parent.pageX(),
|
203
|
+
parentWidth = parent.rect.width;
|
204
|
+
|
96
205
|
if(keyColumnWidth < 80){
|
97
206
|
keyColumnWidth = 80;
|
98
207
|
}
|
99
|
-
else if ( keyColumnWidth > parentWidth-
|
100
|
-
keyColumnWidth = parentWidth -
|
208
|
+
else if ( keyColumnWidth > parentWidth-140 ){
|
209
|
+
keyColumnWidth = parentWidth - 140;
|
210
|
+
}
|
211
|
+
|
212
|
+
// Set the dragger itself
|
213
|
+
this.rect.offsetTo( keyColumnWidth-1, 0 ); this.drawRect();
|
214
|
+
|
215
|
+
// Resize the key column
|
216
|
+
options.keyColumnWidth = keyColumnWidth;
|
217
|
+
|
218
|
+
var
|
219
|
+
keyColumn = parent.keyColumn,
|
220
|
+
keyLabel = parent.header.keyLabel,
|
221
|
+
keyRight = parent.keyColumnRight();
|
222
|
+
keyColumn.rect.setRight( keyRight );
|
223
|
+
keyLabel.rect.setRight( keyRight );
|
224
|
+
|
225
|
+
var
|
226
|
+
valueColumn = parent.valueColumn,
|
227
|
+
valueLabel = parent.header.valueLabel,
|
228
|
+
valueLeft = parent.valueColumnLeft();
|
229
|
+
|
230
|
+
valueColumn.rect.setLeft( valueLeft );
|
231
|
+
valueLabel.rect.setLeft( valueLeft );
|
232
|
+
|
233
|
+
// Redraw the rects
|
234
|
+
keyColumn.drawRect();
|
235
|
+
keyLabel.drawRect();
|
236
|
+
valueColumn.drawRect();
|
237
|
+
valueLabel.drawRect();
|
238
|
+
|
239
|
+
// Resize the type column
|
240
|
+
if(!options.hideTypeColumn){
|
241
|
+
var
|
242
|
+
typeColumn = parent.typeColumn,
|
243
|
+
typeLabel = parent.header.typeLabel,
|
244
|
+
typeLeft = parent.typeColumnLeft(),
|
245
|
+
typeRight = parent.typeColumnRight();
|
246
|
+
|
247
|
+
typeColumn.rect.setLeft( typeLeft );
|
248
|
+
typeColumn.rect.setRight( typeRight );
|
249
|
+
|
250
|
+
typeLabel.rect.setLeft( typeLeft, 0 );
|
251
|
+
typeLabel.rect.setRight( typeRight, 0 );
|
252
|
+
|
253
|
+
typeColumn.drawRect();
|
254
|
+
typeLabel.drawRect();
|
255
|
+
}
|
256
|
+
|
257
|
+
if(options.useEditor){
|
258
|
+
parent.editor.resizeKeyColumn();
|
101
259
|
}
|
102
|
-
|
103
|
-
this.rect.offsetTo( selfX, 0 ); this.drawRect();
|
104
|
-
this.parent.keyColumn.rect.setRight( keyColumnWidth ); this.parent.keyColumn.drawRect();
|
105
|
-
this.parent.header.keyLabel.rect.setWidth( keyColumnWidth ); this.parent.header.keyLabel.drawRect();
|
106
|
-
this.parent.typeColumn.rect.offsetTo( keyColumnWidth, 0 ); this.parent.typeColumn.drawRect();
|
107
|
-
this.parent.header.typeLabel.rect.offsetTo( keyColumnWidth, 0 ); this.parent.header.typeLabel.drawRect();
|
108
|
-
this.parent.valueColumn.rect.setLeft( keyColumnWidth+80 ); this.parent.valueColumn.drawRect();
|
109
|
-
this.parent.header.valueLabel.rect.setLeft( keyColumnWidth+80 ); this.parent.header.valueLabel.drawRect();
|
110
|
-
this.parent.keyColumnWidth = keyColumnWidth;
|
260
|
+
|
111
261
|
}
|
112
262
|
}).nu(
|
113
|
-
[ this.
|
263
|
+
[ this.keyColumnRight(), 0, 5, 25 ],
|
114
264
|
this, {
|
115
265
|
events: { draggable: true },
|
116
266
|
style: [
|
@@ -118,10 +268,13 @@ HPropertyList = HControl.extend({
|
|
118
268
|
]
|
119
269
|
}
|
120
270
|
);
|
271
|
+
|
121
272
|
},
|
273
|
+
|
274
|
+
// Tokenize arrays
|
122
275
|
arrayTokens: function( arr, name ){
|
123
276
|
this.addToken( 'a', name, '('+arr.length+' items)' );
|
124
|
-
this.nodeProperties.left += this.keyIndent;
|
277
|
+
this.nodeProperties.left += this.options.keyIndent;
|
125
278
|
var i = 0, val, type;
|
126
279
|
for( ; i < arr.length; i++ ){
|
127
280
|
val = arr[i];
|
@@ -136,8 +289,10 @@ HPropertyList = HControl.extend({
|
|
136
289
|
this.addToken( type, i, val );
|
137
290
|
}
|
138
291
|
}
|
139
|
-
this.nodeProperties.left -= this.keyIndent;
|
292
|
+
this.nodeProperties.left -= this.options.keyIndent;
|
140
293
|
},
|
294
|
+
|
295
|
+
// Get length of hash
|
141
296
|
hashLen: function( hash ){
|
142
297
|
var count = 0;
|
143
298
|
for( var item in hash ){
|
@@ -145,6 +300,8 @@ HPropertyList = HControl.extend({
|
|
145
300
|
}
|
146
301
|
return count;
|
147
302
|
},
|
303
|
+
|
304
|
+
// Sort hash keys
|
148
305
|
hashSortedKeys: function( hash ){
|
149
306
|
var
|
150
307
|
keys = [],
|
@@ -154,9 +311,11 @@ HPropertyList = HControl.extend({
|
|
154
311
|
}
|
155
312
|
return keys.sort();
|
156
313
|
},
|
314
|
+
|
315
|
+
// Tokenize hashes
|
157
316
|
hashTokens: function( hash, name ){
|
158
317
|
this.addToken( 'h', name, '('+this.hashLen( hash )+' items)' );
|
159
|
-
this.nodeProperties.left += this.keyIndent;
|
318
|
+
this.nodeProperties.left += this.options.keyIndent;
|
160
319
|
var key, val, type, i = 0, keys = this.hashSortedKeys( hash );
|
161
320
|
for( ; i < keys.length; i++ ){
|
162
321
|
key = keys[i];
|
@@ -172,8 +331,10 @@ HPropertyList = HControl.extend({
|
|
172
331
|
this.addToken( type, key, val );
|
173
332
|
}
|
174
333
|
}
|
175
|
-
this.nodeProperties.left -= this.keyIndent;
|
334
|
+
this.nodeProperties.left -= this.options.keyIndent;
|
176
335
|
},
|
336
|
+
|
337
|
+
// Adds a taken
|
177
338
|
addToken: function( type, name, value ){
|
178
339
|
this.valueTokens.push( {
|
179
340
|
top: this.nodeProperties.top,
|
@@ -182,11 +343,15 @@ HPropertyList = HControl.extend({
|
|
182
343
|
name: name,
|
183
344
|
value: value
|
184
345
|
} );
|
185
|
-
this.nodeProperties.top += this.rowHeight;
|
346
|
+
this.nodeProperties.top += this.options.rowHeight;
|
186
347
|
},
|
348
|
+
|
349
|
+
// Returns type of item
|
187
350
|
itemType: function( item ){
|
188
351
|
return COMM.Values.type( item );
|
189
352
|
},
|
353
|
+
|
354
|
+
// Translation from type code to type name
|
190
355
|
typeNames: {
|
191
356
|
h: 'Hash',
|
192
357
|
a: 'Array',
|
@@ -196,7 +361,11 @@ HPropertyList = HControl.extend({
|
|
196
361
|
'~': 'Null',
|
197
362
|
'-': 'Undefined'
|
198
363
|
},
|
199
|
-
|
364
|
+
|
365
|
+
// Style for the key rows
|
366
|
+
keyRowStyle: "position:absolute;padding-top:2px;right:0px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;",
|
367
|
+
|
368
|
+
// Creates row in key column
|
200
369
|
addKeyColumnControl: function( token, i ){
|
201
370
|
var elemId;
|
202
371
|
if( i >= this.propertyItems.length ){
|
@@ -216,7 +385,11 @@ HPropertyList = HControl.extend({
|
|
216
385
|
}
|
217
386
|
ELEM.setHTML( elemId, token.name );
|
218
387
|
},
|
219
|
-
|
388
|
+
|
389
|
+
// Style for the type rows
|
390
|
+
typeRowStyle: "position:absolute;padding-top:2px;left:8px;width:72px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;",
|
391
|
+
|
392
|
+
// Creates row in the type column
|
220
393
|
addTypeColumnControl: function( token, i ){
|
221
394
|
var elemId;
|
222
395
|
if( i >= this.propertyItems.length ){
|
@@ -229,7 +402,11 @@ HPropertyList = HControl.extend({
|
|
229
402
|
}
|
230
403
|
ELEM.setHTML( elemId, this.typeNames[token.type] );
|
231
404
|
},
|
232
|
-
|
405
|
+
|
406
|
+
// Style for the value rows
|
407
|
+
valueRowStyle: "position:absolute;padding-top:2px;left:8px;right:0px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;",
|
408
|
+
|
409
|
+
// Creates row in the value column
|
233
410
|
addValueColumnControl: function( token, i ){
|
234
411
|
var elemId, value;
|
235
412
|
if( i >= this.propertyItems.length ){
|
@@ -261,14 +438,20 @@ HPropertyList = HControl.extend({
|
|
261
438
|
}
|
262
439
|
ELEM.setHTML( elemId, value );
|
263
440
|
},
|
264
|
-
|
441
|
+
|
442
|
+
// Row separator style
|
443
|
+
rowSeparatorStyle: "position:absolute;left:1px;right:1px;font-size:0px;height:1px;overflow:hidden;border-bottom:1px solid #999;",
|
444
|
+
|
445
|
+
// Adds row separator
|
265
446
|
addRowSeparator: function( token, i, even ){
|
266
447
|
if( i >= this.propertyItems.length ){
|
267
|
-
var elemId = ELEM.make( this.
|
448
|
+
var elemId = ELEM.make( this.separatortParentElemId );
|
268
449
|
this.propertyItems.push( elemId );
|
269
|
-
ELEM.setCSS( elemId, 'top:'+token.top+'px;'+this.rowSeparatorStyle+'background-color:'+(even?'#
|
450
|
+
ELEM.setCSS( elemId, 'top:'+token.top+'px;'+this.rowSeparatorStyle+'background-color:'+(even?'#f6f6f6':'#e6e6e6')+';' );
|
270
451
|
}
|
271
452
|
},
|
453
|
+
|
454
|
+
// Destructor, deletes extra elements created
|
272
455
|
die: function(){
|
273
456
|
var
|
274
457
|
i=0,
|
@@ -280,13 +463,53 @@ HPropertyList = HControl.extend({
|
|
280
463
|
}
|
281
464
|
this.base();
|
282
465
|
},
|
466
|
+
|
467
|
+
// Currently selected item
|
468
|
+
selectedItem: 0,
|
469
|
+
editNextItem: function(){
|
470
|
+
this.editItem(this.selectedItem+1);
|
471
|
+
},
|
472
|
+
editPrevItem: function(){
|
473
|
+
this.editItem(this.selectedItem-1);
|
474
|
+
},
|
475
|
+
editItem: function(itemNum){
|
476
|
+
|
477
|
+
if(itemNum>this.valueTokens.length-1){
|
478
|
+
itemNum = this.valueTokens.length-1;
|
479
|
+
}
|
480
|
+
else if(itemNum < 0){
|
481
|
+
itemNum = 0;
|
482
|
+
}
|
483
|
+
|
484
|
+
var
|
485
|
+
targetY = (itemNum*this.options.rowHeight)-1,
|
486
|
+
elem = ELEM.get( this.contentView.elemId ),
|
487
|
+
scrollTop = elem.scrollTop,
|
488
|
+
contentHeight = this.contentView.rect.height;
|
489
|
+
|
490
|
+
if(targetY > (scrollTop+contentHeight-45)){
|
491
|
+
elem.scrollTop = scrollTop+45;
|
492
|
+
}
|
493
|
+
else if(targetY < scrollTop+45){
|
494
|
+
elem.scrollTop = scrollTop-45;
|
495
|
+
}
|
496
|
+
|
497
|
+
this.selectedItem = itemNum;
|
498
|
+
this.editorValue.set(this.valueTokens[itemNum]);
|
499
|
+
this.editor.show();
|
500
|
+
EVENT.changeActiveControl(this.editor);
|
501
|
+
this.editor.offsetTo( 0, targetY );
|
502
|
+
this.editor.bringToFront();
|
503
|
+
},
|
504
|
+
|
505
|
+
// Starts tokenizing, when the value is changed.
|
283
506
|
refreshValue: function(){
|
284
507
|
if(this['propertyItems']===undefined){
|
285
508
|
return;
|
286
509
|
}
|
287
510
|
this.valueTokens = [];
|
288
511
|
this.nodeProperties = {
|
289
|
-
top:
|
512
|
+
top: 0,
|
290
513
|
left: 8
|
291
514
|
};
|
292
515
|
var rootType = this.itemType( this.value );
|
@@ -299,6 +522,7 @@ HPropertyList = HControl.extend({
|
|
299
522
|
else {
|
300
523
|
this.addToken( rootType, 'Root', this.value );
|
301
524
|
}
|
525
|
+
|
302
526
|
var i, token;
|
303
527
|
if(this['propertyItems'] === undefined){
|
304
528
|
this.propertyItems = [];
|
@@ -308,9 +532,11 @@ HPropertyList = HControl.extend({
|
|
308
532
|
token = this.valueTokens[i];
|
309
533
|
this.addRowSeparator( token, colId, (i%2===0) ); colId++;
|
310
534
|
this.addKeyColumnControl( token, colId ); colId++;
|
311
|
-
this.
|
535
|
+
if(!this.options.hideTypeColumn){
|
536
|
+
this.addTypeColumnControl( token, colId ); colId++;
|
537
|
+
}
|
312
538
|
this.addValueColumnControl( token, colId ); colId++;
|
313
|
-
colHeight = token.top+this.rowHeight;
|
539
|
+
colHeight = token.top+this.options.rowHeight;
|
314
540
|
}
|
315
541
|
var propItemsLen = this.propertyItems.length, elemId;
|
316
542
|
for( i = colId; i < propItemsLen; i++ ){
|
@@ -318,11 +544,19 @@ HPropertyList = HControl.extend({
|
|
318
544
|
ELEM.del( elemId );
|
319
545
|
}
|
320
546
|
this.keyColumn.bringToFront();
|
321
|
-
this.
|
547
|
+
if(!this.options.hideTypeColumn){
|
548
|
+
this.typeColumn.bringToFront();
|
549
|
+
}
|
322
550
|
this.valueColumn.bringToFront();
|
323
551
|
this.resizeColumns.bringToFront();
|
324
|
-
this.keyColumn.rect.setHeight( colHeight );
|
325
|
-
this.
|
326
|
-
|
552
|
+
this.keyColumn.rect.setHeight( colHeight );
|
553
|
+
this.keyColumn.drawRect();
|
554
|
+
if(!this.options.hideTypeColumn){
|
555
|
+
this.typeColumn.rect.setHeight( colHeight );
|
556
|
+
this.typeColumn.drawRect();
|
557
|
+
}
|
558
|
+
this.valueColumn.rect.setHeight( colHeight );
|
559
|
+
this.valueColumn.drawRect();
|
560
|
+
ELEM.setStyle(this.separatortParentElemId,'height',(colHeight+25)+'px');
|
327
561
|
}
|
328
562
|
});
|
File without changes
|
@@ -0,0 +1,180 @@
|
|
1
|
+
/* RSence
|
2
|
+
* Copyright 2010 Riassence Inc.
|
3
|
+
* http://riassence.com/
|
4
|
+
*
|
5
|
+
* You should have received a copy of the GNU General Public License along
|
6
|
+
* with this software package. If not, contact licensing@riassence.com
|
7
|
+
*/
|
8
|
+
|
9
|
+
/*** = Description
|
10
|
+
** HPropertyListEditor is a subcomponent of HPropertyList that handles
|
11
|
+
** editing of the selected row.
|
12
|
+
**
|
13
|
+
***/
|
14
|
+
var//RSence.Lists
|
15
|
+
HPropertyListEditor = HControl.extend({
|
16
|
+
|
17
|
+
defaultEvents: {
|
18
|
+
keyDown: 'repeat'
|
19
|
+
},
|
20
|
+
|
21
|
+
keyDown: function(chr){
|
22
|
+
if(chr===38){
|
23
|
+
this.parent.parent.editPrevItem();
|
24
|
+
}
|
25
|
+
else if(chr===40){
|
26
|
+
this.parent.parent.editNextItem();
|
27
|
+
}
|
28
|
+
return true;
|
29
|
+
},
|
30
|
+
|
31
|
+
refreshValue: function(){
|
32
|
+
|
33
|
+
this.base();
|
34
|
+
|
35
|
+
this.nameEditor.setValue(this.value.name);
|
36
|
+
|
37
|
+
this.typeEditor && this.typeEditor.setValue( this.value.type );
|
38
|
+
|
39
|
+
if(this.value.type === 's'){
|
40
|
+
this.stringEditor.show();
|
41
|
+
this.stringEditor.setValue(this.value.value);
|
42
|
+
}
|
43
|
+
else{
|
44
|
+
this.stringEditor.hide();
|
45
|
+
}
|
46
|
+
|
47
|
+
if(this.value.type === 'n'){
|
48
|
+
this.numberEditor.show();
|
49
|
+
this.numberEditor.setValue(this.value.value);
|
50
|
+
}
|
51
|
+
else{
|
52
|
+
this.numberEditor.hide();
|
53
|
+
}
|
54
|
+
|
55
|
+
this.resizeKeyColumn();
|
56
|
+
},
|
57
|
+
|
58
|
+
|
59
|
+
resizeKeyColumn: function(){
|
60
|
+
|
61
|
+
var
|
62
|
+
parent = this.parent.parent,
|
63
|
+
nameEditor = this.nameEditor;
|
64
|
+
|
65
|
+
nameEditor.rect.setLeft( this.value.left+6 );
|
66
|
+
nameEditor.rect.setRight( parent.keyColumnRight()-3 );
|
67
|
+
nameEditor.refresh();
|
68
|
+
|
69
|
+
var
|
70
|
+
stringEditor = this.stringEditor;
|
71
|
+
numberEditor = this.numberEditor;
|
72
|
+
|
73
|
+
stringEditor.rect.setLeft( parent.valueColumnLeft()+5 );
|
74
|
+
numberEditor.rect.setLeft( parent.valueColumnLeft()+4 );
|
75
|
+
|
76
|
+
if(this['typeEditor']){
|
77
|
+
var
|
78
|
+
typeEditor = this.typeEditor;
|
79
|
+
|
80
|
+
typeEditor.rect.setLeft( parent.typeColumnLeft()+2 );
|
81
|
+
typeEditor.rect.setRight( parent.typeColumnRight()-1 );
|
82
|
+
typeEditor.drawRect();
|
83
|
+
}
|
84
|
+
|
85
|
+
stringEditor.drawRect();
|
86
|
+
numberEditor.drawRect();
|
87
|
+
},
|
88
|
+
nameEditor: null,
|
89
|
+
typeEditor: null,
|
90
|
+
valueEditor: null,
|
91
|
+
drawSubviews: function(){
|
92
|
+
|
93
|
+
this.setStyle('border-top','1px solid #999');
|
94
|
+
this.setStyle('border-bottom','1px solid #999');
|
95
|
+
|
96
|
+
var
|
97
|
+
_stateElemId = ELEM.make( this.elemId );
|
98
|
+
this.markupElemIds = { state: _stateElemId };
|
99
|
+
ELEM.setCSS( _stateElemId, 'position:absolute;left:0;top:0;right:0;bottom:0;background-color:#fff;' );
|
100
|
+
ELEM.setStyle( _stateElemId, 'opacity', 0.8 );
|
101
|
+
|
102
|
+
var
|
103
|
+
parent = this.parent.parent,
|
104
|
+
opts = parent.options;
|
105
|
+
|
106
|
+
this.nameEditor = HTextControl.extend({
|
107
|
+
boldTypes: ['a','h'],
|
108
|
+
refreshValue: function(){
|
109
|
+
if(this.drawn){
|
110
|
+
if(this.boldTypes.indexOf(this.parent.value.type)!==-1){
|
111
|
+
this.setStyle('font-weight','bold',true);
|
112
|
+
}
|
113
|
+
else{
|
114
|
+
this.setStyle('font-weight','normal',true);
|
115
|
+
}
|
116
|
+
}
|
117
|
+
this.base();
|
118
|
+
}
|
119
|
+
}).nu(
|
120
|
+
[0,-1,1,opts.rowHeight+4],
|
121
|
+
this, {
|
122
|
+
style: [
|
123
|
+
[ 'font-size', '11px' ],
|
124
|
+
[ 'text-indent', '1px' ]
|
125
|
+
]
|
126
|
+
}
|
127
|
+
);
|
128
|
+
|
129
|
+
var
|
130
|
+
height = this.nameEditor.rect.height;
|
131
|
+
|
132
|
+
if(!opts.hideTypeColumn){
|
133
|
+
this.typeEditor = HMiniMenu.nu(
|
134
|
+
[0,1,1,height],
|
135
|
+
this, {
|
136
|
+
value: 'a',
|
137
|
+
menuItemGeom: {
|
138
|
+
width: 75,
|
139
|
+
left: -15
|
140
|
+
}
|
141
|
+
}
|
142
|
+
);
|
143
|
+
|
144
|
+
var _arrTypes = [];
|
145
|
+
|
146
|
+
for( var i in parent.typeNames ){
|
147
|
+
_arrTypes.push( [i, parent.typeNames[i]] );
|
148
|
+
}
|
149
|
+
|
150
|
+
this.typeEditor.setListItems( _arrTypes );
|
151
|
+
|
152
|
+
}
|
153
|
+
|
154
|
+
this.stringEditor = HTextArea.extend({
|
155
|
+
}).nu(
|
156
|
+
[0,-1,null,height,4,null],
|
157
|
+
this, {
|
158
|
+
style: [
|
159
|
+
[ 'font-size', '11px' ],
|
160
|
+
[ 'text-indent', '1px' ],
|
161
|
+
[ 'padding-top', '3px' ]
|
162
|
+
]
|
163
|
+
}
|
164
|
+
);
|
165
|
+
|
166
|
+
this.numberEditor = HNumericTextControl.extend({
|
167
|
+
}).nu(
|
168
|
+
[0,-1,null,height,4,null],
|
169
|
+
this, {
|
170
|
+
style: [
|
171
|
+
[ 'font-size', '11px' ],
|
172
|
+
[ 'text-indent', '1px' ]
|
173
|
+
]
|
174
|
+
}
|
175
|
+
);
|
176
|
+
|
177
|
+
this.resizeKeyColumn();
|
178
|
+
|
179
|
+
}
|
180
|
+
});
|
@@ -51,17 +51,21 @@ HRadioButtonList = HControl.extend({
|
|
51
51
|
_listItem = _listItems[i];
|
52
52
|
_value = _listItem[0];
|
53
53
|
_label = _listItem[1];
|
54
|
-
|
55
|
-
|
56
|
-
this, {
|
57
|
-
label: _label
|
58
|
-
}
|
59
|
-
);
|
60
|
-
this.listItemViews[i] = _radioButton;
|
54
|
+
_component = this.createComponent( i, _label );
|
55
|
+
this.listItemViews[i] = _component;
|
61
56
|
}
|
62
57
|
this.refreshValue();
|
63
58
|
},
|
64
59
|
|
60
|
+
createComponent: function( i, _label ){
|
61
|
+
return HRadiobutton.nu(
|
62
|
+
[ 4, (i*23)+4, null, 23, 4, null ],
|
63
|
+
this, {
|
64
|
+
label: _label
|
65
|
+
}
|
66
|
+
);
|
67
|
+
},
|
68
|
+
|
65
69
|
/** = Description
|
66
70
|
* Destructor. Sets listItems and listItemViews to null and initiates
|
67
71
|
* destructor for radioButtonIndexValue.
|
@@ -91,6 +95,9 @@ HRadioButtonList = HControl.extend({
|
|
91
95
|
}
|
92
96
|
}
|
93
97
|
}),
|
98
|
+
|
99
|
+
|
100
|
+
|
94
101
|
refreshValue: function(){
|
95
102
|
var _value = this.value;
|
96
103
|
if ( this.listItems.length !== 0 && this['valueMatrix'] !== undefined ) {
|
File without changes
|
@@ -0,0 +1,115 @@
|
|
1
|
+
/* RSence
|
2
|
+
* Copyright 2010 Riassence Inc.
|
3
|
+
* http://riassence.com/
|
4
|
+
*
|
5
|
+
* You should have received a copy of the GNU General Public License along
|
6
|
+
* with this software package. If not, contact licensing@riassence.com
|
7
|
+
*/
|
8
|
+
|
9
|
+
|
10
|
+
/*** = Description
|
11
|
+
** Simple small menu component for selecting one value amongst several.
|
12
|
+
** It's limited to 15px height by the default theme.
|
13
|
+
***/
|
14
|
+
var//RSence.Menus
|
15
|
+
HMiniMenu = HRadioButtonList.extend({
|
16
|
+
|
17
|
+
componentName: 'minimenu',
|
18
|
+
|
19
|
+
defaultEvents: {
|
20
|
+
mouseDown: true,
|
21
|
+
mouseUp: true,
|
22
|
+
click: true
|
23
|
+
},
|
24
|
+
|
25
|
+
repositionMenuItems: function(){
|
26
|
+
var
|
27
|
+
x = this.pageX(),
|
28
|
+
y = this.pageY(),
|
29
|
+
w = this.rect.width,
|
30
|
+
h = this.listItems.length*15,
|
31
|
+
i = 0,
|
32
|
+
listItem = null;
|
33
|
+
for(;i<this.listItems.length && listItem === null;i++){
|
34
|
+
if(this.listItems[i][0]===this.value){
|
35
|
+
listItem = this.listItems[i];
|
36
|
+
}
|
37
|
+
}
|
38
|
+
y -= (i-1)*15;
|
39
|
+
if(y < 0){
|
40
|
+
y = y%15;
|
41
|
+
}
|
42
|
+
if(this.options['menuItemGeom']){
|
43
|
+
if(this.options.menuItemGeom.width){
|
44
|
+
w += this.options.menuItemGeom.width;
|
45
|
+
}
|
46
|
+
if(this.options.menuItemGeom.width){
|
47
|
+
x += this.options.menuItemGeom.left;
|
48
|
+
}
|
49
|
+
}
|
50
|
+
this.menuItemView.rect.set( x, y, x+w, y+h );
|
51
|
+
this.menuItemView.refresh();
|
52
|
+
},
|
53
|
+
|
54
|
+
click: function(){
|
55
|
+
this.mouseDown();
|
56
|
+
},
|
57
|
+
|
58
|
+
refreshValue: function(){
|
59
|
+
this.base();
|
60
|
+
for(var i=0;i<this.listItems.length;i++){
|
61
|
+
if(this.listItems[i][0]===this.value){
|
62
|
+
this.setLabel( this.listItems[i][1] );
|
63
|
+
break;
|
64
|
+
}
|
65
|
+
}
|
66
|
+
},
|
67
|
+
|
68
|
+
mouseDown: function(){
|
69
|
+
this.repositionMenuItems();
|
70
|
+
this.menuItemView.bringToFront();
|
71
|
+
this.menuItemView.show();
|
72
|
+
return true;
|
73
|
+
},
|
74
|
+
|
75
|
+
lostActiveStatus: function(newActive){
|
76
|
+
this.base(newActive);
|
77
|
+
if((newActive.parent !== this.menuItemView) && (newActive !== this.menuItemView)){
|
78
|
+
this.menuItemView.hide();
|
79
|
+
}
|
80
|
+
},
|
81
|
+
|
82
|
+
die: function(){
|
83
|
+
this.menuItemView.die();
|
84
|
+
this.base();
|
85
|
+
},
|
86
|
+
|
87
|
+
drawSubviews: function(){
|
88
|
+
this.menuItemView = HView.extend({
|
89
|
+
drawSubviews: function(){
|
90
|
+
this.setStyle( 'background-color','#f6f6f6' );
|
91
|
+
this.setStyle( 'border', '1px solid #999' );
|
92
|
+
}
|
93
|
+
}).nu(
|
94
|
+
[ this.rect.left, this.rect.top, this.rect.width, 500 ],
|
95
|
+
this.app, {
|
96
|
+
visible: false
|
97
|
+
}
|
98
|
+
);
|
99
|
+
},
|
100
|
+
|
101
|
+
setListItems: function(listItems){
|
102
|
+
this.base(listItems);
|
103
|
+
this.valueMatrix = this.menuItemView.valueMatrix;
|
104
|
+
},
|
105
|
+
|
106
|
+
createComponent: function( i, _label ){
|
107
|
+
return HMiniMenuItem.nu(
|
108
|
+
[ 0, (i*15), null, 15, 0, null ],
|
109
|
+
this.menuItemView, {
|
110
|
+
label: _label
|
111
|
+
}
|
112
|
+
);
|
113
|
+
}
|
114
|
+
|
115
|
+
});
|
File without changes
|
@@ -0,0 +1,33 @@
|
|
1
|
+
/* RSence
|
2
|
+
* Copyright 2010 Riassence Inc.
|
3
|
+
* http://riassence.com/
|
4
|
+
*
|
5
|
+
* You should have received a copy of the GNU General Public License along
|
6
|
+
* with this software package. If not, contact licensing@riassence.com
|
7
|
+
*/
|
8
|
+
|
9
|
+
|
10
|
+
/*** = Description
|
11
|
+
** Menu item for the HMiniMenu component.
|
12
|
+
***/
|
13
|
+
var//RSence.Menus
|
14
|
+
HMiniMenuItem = HRadioButton.extend({
|
15
|
+
|
16
|
+
componentName: 'minimenuitem',
|
17
|
+
|
18
|
+
defaultEvents: {
|
19
|
+
click: true,
|
20
|
+
mouseUp: true
|
21
|
+
},
|
22
|
+
|
23
|
+
click: function(){
|
24
|
+
this.base();
|
25
|
+
this.parent.hide();
|
26
|
+
},
|
27
|
+
|
28
|
+
mouseUp: function(){
|
29
|
+
this.base();
|
30
|
+
this.click();
|
31
|
+
}
|
32
|
+
|
33
|
+
});
|
@@ -0,0 +1,45 @@
|
|
1
|
+
|
2
|
+
.minimenuitem_control,
|
3
|
+
.minimenuitem_label,
|
4
|
+
.minimenuitem_state {
|
5
|
+
position: absolute;
|
6
|
+
top: 0px; height: 15px;
|
7
|
+
}
|
8
|
+
|
9
|
+
.minimenuitem_control {
|
10
|
+
left: 0px; right: 0px;
|
11
|
+
cursor: pointer;
|
12
|
+
}
|
13
|
+
.minimenuitem_control:hover {
|
14
|
+
background-color: #fff;
|
15
|
+
}
|
16
|
+
|
17
|
+
.minimenuitem_state {
|
18
|
+
left: 0px; top: 1px; height: 12px; width: 12px;
|
19
|
+
background-image: #{this.getCssFilePath('minimenuitem_checkmark.png')};
|
20
|
+
}
|
21
|
+
.checked .minimenuitem_state {
|
22
|
+
visibility: inherit;
|
23
|
+
}
|
24
|
+
.unchecked .minimenuitem_state {
|
25
|
+
visibility: hidden;
|
26
|
+
}
|
27
|
+
|
28
|
+
.minimenuitem_label {
|
29
|
+
left: 14px; right: 11px; top: 0px;
|
30
|
+
height: 15px; line-height: 15px;
|
31
|
+
text-align: left;
|
32
|
+
text-overflow: ellipsis;
|
33
|
+
overflow: hidden;
|
34
|
+
white-space:nowrap;
|
35
|
+
vertical-align: middle;
|
36
|
+
font-family: Arial, sans-serif;
|
37
|
+
font-size: 11px;
|
38
|
+
color: #333;
|
39
|
+
}
|
40
|
+
.minimenuitem_control:hover > .minimenuitem_label {
|
41
|
+
color: #000;
|
42
|
+
}
|
43
|
+
.disabled .minimenuitem_control {
|
44
|
+
opacity: 0.8;
|
45
|
+
}
|
@@ -0,0 +1,63 @@
|
|
1
|
+
|
2
|
+
.minimenu_control,
|
3
|
+
.minimenu_edge_left,
|
4
|
+
.minimenu_center,
|
5
|
+
.minimenu_edge_right,
|
6
|
+
.minimenu_label,
|
7
|
+
.minimenu_antiselect {
|
8
|
+
position: absolute;
|
9
|
+
top: 0px; height: 15px;
|
10
|
+
}
|
11
|
+
|
12
|
+
.minimenu_control {
|
13
|
+
left: 0px; right: 0px;
|
14
|
+
cursor: pointer;
|
15
|
+
}
|
16
|
+
.disabled .minimenu_control {
|
17
|
+
cursor: default;
|
18
|
+
}
|
19
|
+
|
20
|
+
.minimenu_edge_left,
|
21
|
+
.minimenu_center,
|
22
|
+
.minimenu_edge_right {
|
23
|
+
background-image: #{this.getCssFilePath('minimenu.png')};
|
24
|
+
}
|
25
|
+
|
26
|
+
.minimenu_edge_left {
|
27
|
+
left: 0px; width: 7px;
|
28
|
+
background-position: 0px 0px;
|
29
|
+
}
|
30
|
+
|
31
|
+
.minimenu_edge_right {
|
32
|
+
right: 0px; width: 13px;
|
33
|
+
background-position: -7px 0px;
|
34
|
+
}
|
35
|
+
|
36
|
+
.minimenu_center {
|
37
|
+
left: 7px; right: 13px;
|
38
|
+
background-position: 0px -15px;
|
39
|
+
background-repeat: repeat-x;
|
40
|
+
}
|
41
|
+
|
42
|
+
.minimenu_label {
|
43
|
+
left: 6px; right: 11px; top: 0px;
|
44
|
+
height: 15px; line-height: 15px;
|
45
|
+
text-align: left;
|
46
|
+
text-overflow: ellipsis;
|
47
|
+
overflow: hidden;
|
48
|
+
white-space:nowrap;
|
49
|
+
vertical-align: middle;
|
50
|
+
font-family: Arial, sans-serif;
|
51
|
+
font-size: 11px;
|
52
|
+
color: #333;
|
53
|
+
}
|
54
|
+
.minimenu_control:hover > .minimenu_label {
|
55
|
+
color: #000;
|
56
|
+
}
|
57
|
+
.disabled .minimenu_control {
|
58
|
+
opacity: 0.8;
|
59
|
+
}
|
60
|
+
|
61
|
+
.minimenu_antiselect {
|
62
|
+
left: 0px; right: 0px;
|
63
|
+
}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<div class="minimenu_control" id="control#{_ID}">
|
2
|
+
<div class="minimenu_edge_left"></div>
|
3
|
+
<div class="minimenu_center"></div>
|
4
|
+
<div class="minimenu_edge_right"></div>
|
5
|
+
<div class="minimenu_label" id="label#{_ID}">#{this.label}</div>
|
6
|
+
<div class="minimenu_antiselect"></div>
|
7
|
+
</div>
|
Binary file
|
data/lib/daemon/daemon.rb
CHANGED
@@ -269,9 +269,18 @@ module RSence
|
|
269
269
|
# @private Simple process control, constructed here and called from Daemon::Controller
|
270
270
|
class HTTPDaemon
|
271
271
|
|
272
|
+
def ps_name
|
273
|
+
config = RSence.config
|
274
|
+
url = "http://#{config[:http_server][:bind_address]}:#{config[:http_server][:port]}#{config[:base_url]}"
|
275
|
+
env_path = RSence.args[:env_path]
|
276
|
+
"RSence-#{RSence.version} on #{url} in #{env_path}"
|
277
|
+
end
|
278
|
+
|
272
279
|
# RSence top-level run handler. Almost identical to start.
|
273
280
|
def run
|
274
|
-
|
281
|
+
|
282
|
+
$0 = ps_name
|
283
|
+
|
275
284
|
puts "Starting as a foreground process." if RSence.args[:verbose]
|
276
285
|
puts "Press CTRL-C to terminate."
|
277
286
|
|
@@ -313,7 +322,9 @@ module RSence
|
|
313
322
|
|
314
323
|
# Called by Controller#start, contains RSence-specific operations
|
315
324
|
def start
|
316
|
-
|
325
|
+
|
326
|
+
$0 = ps_name
|
327
|
+
|
317
328
|
@transporter = Transporter.new
|
318
329
|
|
319
330
|
conf = RSence.config[:http_server]
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rsence-pre
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 961916156
|
5
5
|
prerelease: true
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 1
|
9
9
|
- 0
|
10
|
-
-
|
10
|
+
- 6
|
11
11
|
- pre
|
12
|
-
version: 2.1.0.
|
12
|
+
version: 2.1.0.6.pre
|
13
13
|
platform: ruby
|
14
14
|
authors:
|
15
15
|
- Riassence Inc.
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2010-09-
|
20
|
+
date: 2010-09-09 00:00:00 +03:00
|
21
21
|
default_executable: rsence-pre
|
22
22
|
dependencies:
|
23
23
|
- !ruby/object:Gem::Dependency
|
@@ -340,8 +340,20 @@ files:
|
|
340
340
|
- js/lists/listitems/listitems.js
|
341
341
|
- js/lists/propertylist/js.inc
|
342
342
|
- js/lists/propertylist/propertylist.js
|
343
|
+
- js/lists/propertylist/propertylisteditor/js.inc
|
344
|
+
- js/lists/propertylist/propertylisteditor/propertylisteditor.js
|
343
345
|
- js/lists/radiobuttonlist/js.inc
|
344
346
|
- js/lists/radiobuttonlist/radiobuttonlist.js
|
347
|
+
- js/menus/minimenu/js.inc
|
348
|
+
- js/menus/minimenu/minimenu.js
|
349
|
+
- js/menus/minimenu/minimenuitem/js.inc
|
350
|
+
- js/menus/minimenu/minimenuitem/minimenuitem.js
|
351
|
+
- js/menus/minimenu/minimenuitem/themes/default/minimenuitem.css
|
352
|
+
- js/menus/minimenu/minimenuitem/themes/default/minimenuitem.html
|
353
|
+
- js/menus/minimenu/minimenuitem/themes/default/minimenuitem_checkmark.png
|
354
|
+
- js/menus/minimenu/themes/default/minimenu.css
|
355
|
+
- js/menus/minimenu/themes/default/minimenu.html
|
356
|
+
- js/menus/minimenu/themes/default/minimenu.png
|
345
357
|
- js/util/reloadapp/js.inc
|
346
358
|
- js/util/reloadapp/reloadapp.js
|
347
359
|
- js/util/reloadapp/themes/default/reloadapp_warning-ie6.gif
|