rsence-pre 2.2.0.18 → 2.2.0.19

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.2.0.18.pre
1
+ 2.2.0.19.pre
@@ -267,6 +267,7 @@
267
267
  - textcontrol # HTextControl
268
268
  - passwordcontrol # HPasswordControl
269
269
  - textarea # HTextArea
270
+ - searchfield # HSearchField
270
271
  - uploader # HUploader
271
272
  - slider # HSlider
272
273
  - vslider # HVSlider
@@ -0,0 +1,2 @@
1
+ HSearchField = HTextControl.extend
2
+ componentName: 'searchfield'
@@ -0,0 +1,96 @@
1
+
2
+ .default .searchfield_input {
3
+ position: absolute;
4
+ display: block;
5
+ font-family: Arial, sans-serif;
6
+ font-size: 13px;
7
+ color: #000;
8
+ background-color: transparent;
9
+ vertical-align: middle;
10
+ border: 0px;
11
+ left: 18px; top: 4px;
12
+ line-height: 18px;
13
+ text-overflow: ellipsis;
14
+ white-space: nowrap;
15
+ overflow: hidden;
16
+ #{(BROWSER_TYPE.firefox||BROWSER_TYPE.ie7||BROWSER_TYPE.ie8||BROWSER_TYPE.opera)?'padding-left:2px;width:100% !important;height:90% !important;':BROWSER_TYPE.ie6?'right:3px;height:16px;':'padding:2px;padding-top:4px;right:3px;height:16px;width:auto;'}
17
+ }
18
+
19
+ .default .searchfield_input:focus {
20
+ outline-color: transparent;
21
+ outline-style: none;
22
+ }
23
+
24
+ .default .disabled .searchfield_input {
25
+ color: #ccc;
26
+ }
27
+
28
+ .default .searchfield_input_parent {
29
+ position: absolute;
30
+ #{(BROWSER_TYPE.firefox||BROWSER_TYPE.ie7||BROWSER_TYPE.ie8||BROWSER_TYPE.ie9||BROWSER_TYPE.opera)?'left:0;padding-left:1px;top:0;right:4px;bottom:0;':BROWSER_TYPE.ie6?'left:2px;top:1px;right:1px;height:20px;':'left:-2px;top:-2px;right:-2px;height:20px;'}
31
+ }
32
+
33
+ .default .searchfield_fade,
34
+ .default .searchfield_e,
35
+ .default .searchfield_w,
36
+ .default .searchfield_c {
37
+ position: absolute;
38
+ height: 24px;
39
+ background-repeat: no-repeat;
40
+ background-image: #{this.getCssFilePath('searchfield_parts1.png')};
41
+ #{BROWSER_TYPE.ie6?'font-size:0;line-height:0;':''}
42
+ }
43
+
44
+ .default .searchfield_fade {
45
+ right: 0px; top: 0px; width: 10px;
46
+ background-position: -48px 0px;
47
+ }
48
+
49
+ .default .searchfield_e {
50
+ right: 0px; top: 0px; width: 24px;
51
+ background-position: -24px 0px;
52
+ }
53
+
54
+ .default .searchfield_c {
55
+ left: 24px; right: 24px; top: 0px;
56
+ background-repeat: repeat-x;
57
+ background-position: 0px -24px;
58
+ }
59
+
60
+ .default .searchfield_w {
61
+ left: 0px; top: 0px; width: 24px;
62
+ background-position: 0px 0px;
63
+ }
64
+
65
+ .default .disabled > .searchfield_fade {
66
+ background-position: -48px -96px;
67
+ }
68
+
69
+ .default .disabled > .searchfield_e {
70
+ background-position: -24px -96px;
71
+ }
72
+
73
+ .default .disabled > .searchfield_c {
74
+ background-position: 0px -120px;
75
+ }
76
+
77
+ .default .disabled > .searchfield_w {
78
+ background-position: 0px -96px;
79
+ }
80
+
81
+ .default .active > .searchfield_fade {
82
+ background-position: -48px -48px;
83
+ }
84
+
85
+ .default .active > .searchfield_e {
86
+ background-position: -24px -48px;
87
+ }
88
+
89
+ .default .active > .searchfield_c {
90
+ background-position: 0px -72px;
91
+ }
92
+
93
+ .default .active > .searchfield_w {
94
+ background-position: 0px -48px;
95
+ }
96
+
@@ -0,0 +1,12 @@
1
+ <div class="searchfield_w"></div>
2
+ <div class="searchfield_c"></div>
3
+ <div class="searchfield_e"></div>
4
+
5
+ <div id="label#{_ID}" title="#{this.label}" class="searchfield_input_parent">
6
+ <input type="text" class="searchfield_input" #{this.enabled?'':'disabled'}
7
+ onfocus="HSystem.views[#{this.viewId}].textFocus();"
8
+ onblur="HSystem.views[#{this.viewId}].textBlur();"
9
+ id="value#{_ID}" value="#{this.value}" />
10
+ </div>
11
+
12
+ <div class="searchfield_fade"></div>
@@ -14,6 +14,10 @@
14
14
  .default .disabled .textarea_input {
15
15
  #{(BROWSER_TYPE.safari||BROWSER_TYPE.chrome)?'color:#ccc;':'color:#999'}
16
16
  }
17
+ .default .textarea_input:focus {
18
+ outline-color: transparent;
19
+ outline-style: none;
20
+ }
17
21
 
18
22
  .default .textarea_input_parent {
19
23
  position: absolute;
@@ -33,6 +33,7 @@ HTextControl = HControl.extend({
33
33
  })),
34
34
 
35
35
  drawSubviews: function(){
36
+ ELEM.setStyle(this.elemId,'overflow','visible');
36
37
  this.base();
37
38
  if(this.options.focusOnCreate){
38
39
  this.getInputElement().focus();
@@ -61,6 +62,11 @@ HTextControl = HControl.extend({
61
62
  }
62
63
  }
63
64
  },
65
+
66
+ lostActiveStatus: function(){
67
+ ELEM.get( this.markupElemIds.value ).blur();
68
+ this.textBlur();
69
+ },
64
70
 
65
71
  setStyle: function(_name, _value, _cacheOverride) {
66
72
  if (!this['markupElemIds']||!this.markupElemIds['value']) {
@@ -129,6 +135,7 @@ HTextControl = HControl.extend({
129
135
  *
130
136
  **/
131
137
  textFocus: function(){
138
+ EVENT.changeActiveControl( this );
132
139
  this.hasTextFocus = true;
133
140
  this._setChangeEventFn();
134
141
  return true;
@@ -151,7 +158,14 @@ HTextControl = HControl.extend({
151
158
 
152
159
  onIdle: function(){
153
160
  this.hasTextFocus && this._updateValueFromField();
154
- this.base();
161
+ try{
162
+ this.base();
163
+ }
164
+ catch(e){
165
+ console.error('HTextControl::onIdle error -> ',e);
166
+ debugger;
167
+ this.base();
168
+ }
155
169
  },
156
170
 
157
171
  /** = Description
@@ -12,6 +12,11 @@
12
12
  #{(BROWSER_TYPE.firefox||BROWSER_TYPE.ie7||BROWSER_TYPE.ie8||BROWSER_TYPE.opera)?'padding-left:2px;width:100% !important;height:90% !important;':BROWSER_TYPE.ie6?'right:4px;bottom:2px;':'padding:2px;right:0px;bottom:0px;width:auto;height:auto;'}
13
13
  }
14
14
 
15
+ .default .textcontrol_input:focus {
16
+ outline-color: transparent;
17
+ outline-style: none;
18
+ }
19
+
15
20
  .default .disabled .textcontrol_input {
16
21
  color: #ccc;
17
22
  }
@@ -28,6 +33,13 @@
28
33
  #{BROWSER_TYPE.ie6?'font-size:0;line-height:0;':''}
29
34
  }
30
35
 
36
+ .default .active>.textcontrol_bg {
37
+ left: 0px; top: 0px; right: 0px; bottom: 0px;
38
+ -moz-box-shadow: 0px 0px 3px #333;
39
+ -webkit-box-shadow: 0px 0px 3px #333;
40
+ box-shadow: 0px 0px 3px #333;
41
+ }
42
+
31
43
  .default .disabled .textcontrol_bg {
32
44
  background-color: #eee;
33
45
  }
@@ -70,7 +70,7 @@ HClass.prototype = {
70
70
  /* The property copying method. */
71
71
  extend: function(_source, _value) {
72
72
  var _extend = HClass.prototype.extend,
73
- _ancestor, _method, _previous, _returnValue, i, _name, _prototype, _protected;
73
+ _ancestor, _method, _returnValue, i, _name, _prototype, _protected;
74
74
  if (arguments.length === 2) {
75
75
  _ancestor = this[_source];
76
76
  // only methods are inherited
@@ -79,7 +79,7 @@ HClass.prototype = {
79
79
  _method = _value;
80
80
  _value = function() {
81
81
  // saves the this.base that is the this.base method of this child
82
- _previous = this.base;
82
+ var _previous = this.base;
83
83
  // copies previous this.base from the direction from HClass
84
84
  this.base = _ancestor;
85
85
  // current class's method is called
@@ -129,6 +129,7 @@ HClass.prototype = {
129
129
  } )
130
130
  )( arguments );
131
131
  };
132
+ this['new'] = this.nu;
132
133
  return this;
133
134
  },
134
135
  /** = Description
@@ -105,6 +105,7 @@ HDateTimePicker = HControl.extend({
105
105
  this.base();
106
106
  },
107
107
  drawSubviews: function(){
108
+ ELEM.setStyle( this.elemId, 'overflow', 'visible' );
108
109
  var
109
110
  _NumStepperField = HView.extend({
110
111
  setEnabled: function(_state){
@@ -118,6 +119,7 @@ HDateTimePicker = HControl.extend({
118
119
  }
119
120
  },
120
121
  drawSubviews: function(){
122
+ ELEM.setStyle( this.elemId, 'overflow', 'visible' );
121
123
  this.numField = HNumericTextControl.extend({
122
124
  refreshValue: function(){
123
125
  this.base();
@@ -24,7 +24,7 @@
24
24
  //var//RSence.Foundation
25
25
  COMM.JSONRenderer = HClass.extend({
26
26
 
27
- version: 0.8,
27
+ version: 0.9,
28
28
 
29
29
  /** = Description
30
30
  * Renders JSON structured data, see some of the demos for usage examples.
@@ -52,21 +52,23 @@ COMM.JSONRenderer = HClass.extend({
52
52
  this.view.die();
53
53
  },
54
54
  defineInScope: function( _definition ){
55
- var _isArr = (_definition instanceof Array),
56
- _isObj = (_definition instanceof Object);
55
+ var
56
+ _isArr = (_definition instanceof Array),
57
+ _isObj = (_definition instanceof Object);
57
58
  if( _isArr || !_isObj ){
58
59
  console.log("JSONRenderer; definition must be an Object, got: '"+(typeof _definition)+"'. Definition: ",_definition);
59
60
  return;
60
61
  }
61
- var _extension = {},
62
- _reserved = ['class','extend','implement'],
63
- _className = _definition[_reserved[0]],
64
- _extendName = _definition[_reserved[1]],
65
- _implementName = _definition[_reserved[2]],
66
- _extend = _extendName?this.findInScope(_extendName):false,
67
- _implement = _implementName?this.findInScope(_implementName):false,
68
- _scope = this.scopes[ this.scopeDepth ],
69
- _key, _value;
62
+ var
63
+ _extension = {},
64
+ _reserved = ['class','extend','implement'],
65
+ _className = _definition[_reserved[0]],
66
+ _extendName = _definition[_reserved[1]],
67
+ _implementName = _definition[_reserved[2]],
68
+ _extend = _extendName?this.findInScope(_extendName):false,
69
+ _implement = _implementName?this.findInScope(_implementName):false,
70
+ _scope = this.scopes[ this.scopeDepth ],
71
+ _key, _value;
70
72
  if( _className === undefined ) {
71
73
  console.log("JSONRenderer; class name missing in definition scope.");
72
74
  return;
@@ -96,10 +98,11 @@ COMM.JSONRenderer = HClass.extend({
96
98
  return false;
97
99
  }
98
100
  if(_className.indexOf('.') !== -1){
99
- var _splitClass = _className.split('.'),
100
- j = 1,
101
- _classPart = _splitClass[0],
102
- _classFull = this.findInScope( _classPart );
101
+ var
102
+ _splitClass = _className.split('.'),
103
+ j = 1,
104
+ _classPart = _splitClass[0],
105
+ _classFull = this.findInScope( _classPart );
103
106
  if( !_classFull ){
104
107
  return false;
105
108
  }
@@ -130,42 +133,102 @@ COMM.JSONRenderer = HClass.extend({
130
133
  }
131
134
  return _block;
132
135
  },
136
+ initStraight: function( _class, _args ){
137
+ if( _args instanceof Array ){
138
+ return HClass.extend().nu.apply( _class, _args );
139
+ }
140
+ else {
141
+ return (new _class(_args));
142
+ }
143
+ },
133
144
  renderNode: function( _dataNode, _parent ){
134
- var // Currently only window-level classes are supported
135
- _className = _dataNode['class'],
136
- _class = this.findInScope( _className ),
137
-
138
- // Currently only HView -derived classes are supported, so
139
- // the rect is mandatory.
140
- _rect = _dataNode['rect'],
141
- _hasRect = (_rect !== undefined) && (_rect instanceof Array || typeof _rect === 'string'),
142
-
143
- // Checks, if any sub-views are defined.
144
- _hasSubviews = _dataNode['subviews'] !== undefined,
145
- _subViews = _hasSubviews?_dataNode['subviews']:null,
146
-
147
- // Checks, if any options are defined.
148
- _hasOptions = _dataNode['options'] !== undefined,
149
- _options = _hasOptions?_dataNode['options']:null,
150
-
151
- // JS Extension block
152
- _hasExtension = _dataNode['extend'] !== undefined,
153
- _extension = _hasExtension?_dataNode['extend']:null,
154
-
155
- // JS Extension block
156
- _hasBind = _dataNode['bind'] !== undefined,
157
- _bind = _hasBind?_dataNode['bind']:null,
158
-
159
- // JS Definition block
160
- _hasDefinition = _dataNode['define'] !== undefined,
161
- _definitions = _hasDefinition?_dataNode['define']:null,
162
-
163
- // The HView-derived class instance, instance is by default the parent
164
- _instance = _parent,
165
-
166
- i,
167
-
168
- _subView;
145
+ var
146
+ _reserved = [ 'type', 'args', 'version', 'class', 'rect', 'bind', 'extend', 'options', 'subviews', 'define' ],
147
+ _className, _class, _origNode, _straightParams = false, _rect, _hasRect, _hasSubviews, _subViews,
148
+ _hasOptions, _options, _hasExtension, _extension, _hasBind, _bind,
149
+ _hasDefinition, _definition, _instance, i, _subView = null;
150
+
151
+ // The name of the class:
152
+ if( !_dataNode['class'] ){
153
+
154
+ for( i in _dataNode ){
155
+ if( _reserved.indexOf( i ) === -1 ){
156
+ _className = i;
157
+ _origNode = _dataNode;
158
+ _dataNode = _dataNode[i];
159
+ break;
160
+ }
161
+ }
162
+ _straightParams = ( !(_dataNode instanceof Object) || (_dataNode instanceof Array) );
163
+ }
164
+ else {
165
+ _className = _dataNode['class'];
166
+ }
167
+
168
+ _class = this.findInScope( _className );
169
+
170
+ if( _straightParams ){
171
+ return this.initStraight( _class, _dataNode );
172
+ }
173
+ else if( _dataNode['args'] !== undefined ){
174
+ return this.initStraight( _class, _dataNode['args'] );
175
+ }
176
+ else if( _origNode && _origNode['args'] !== undefined ){
177
+ return this.initStraight( _class, _origNode['args'] );
178
+ }
179
+
180
+ // Currently only HView -derived classes are supported, so
181
+ // the rect is mandatory.
182
+ _rect = _dataNode['rect'];
183
+ _hasRect = (_rect !== undefined) && (_rect instanceof Array || typeof _rect === 'string');
184
+ if( !_hasRect && _origNode){
185
+ _hasRect = _origNode['rect'] !== undefined;
186
+ _rect = _hasRect?_origNode['rect']:null;
187
+ }
188
+
189
+ // Checks, if any sub-views are defined.
190
+ _hasSubviews = _dataNode['subviews'] !== undefined;
191
+ _subViews = _hasSubviews?_dataNode['subviews']:null;
192
+ if( !_hasSubviews && _origNode){
193
+ _hasSubviews = _origNode['subviews'] !== undefined;
194
+ _subViews = _hasSubviews?_origNode['subviews']:null;
195
+ }
196
+
197
+ // Checks, if any options are defined.
198
+ _hasOptions = _dataNode['options'] !== undefined;
199
+ _options = _hasOptions?_dataNode['options']:null;
200
+ if( !_hasOptions && _origNode){
201
+ _hasOptions = _origNode['options'] !== undefined;
202
+ _options = _hasOptions?_origNode['options']:null;
203
+ }
204
+
205
+ // JS Extension block
206
+ _hasExtension = _dataNode['extend'] !== undefined;
207
+ _extension = _hasExtension?_dataNode['extend']:null;
208
+ if( !_hasExtension && _origNode){
209
+ _hasExtension = _origNode['extend'] !== undefined;
210
+ _extension = _hasExtension?_origNode['extend']:null;
211
+ }
212
+
213
+ // JS Extension block
214
+ _hasBind = _dataNode['bind'] !== undefined;
215
+ _bind = _hasBind?_dataNode['bind']:null;
216
+ if( !_hasBind && _origNode){
217
+ _hasBind = _origNode['bind'] !== undefined;
218
+ _bind = _hasBind?_origNode['bind']:null;
219
+ }
220
+
221
+ // JS Definition block
222
+ _hasDefinition = _dataNode['define'] !== undefined;
223
+ _definitions = _hasDefinition?_dataNode['define']:null;
224
+ if( !_hasDefinition && _origNode){
225
+ _hasDefinition = _origNode['define'] !== undefined;
226
+ _definitions = _hasDefinition?_origNode['define']:null;
227
+ }
228
+
229
+ // The HView-derived class instance, instance is by default the parent
230
+ _instance = _parent;
231
+
169
232
  this.scopeDepth ++;
170
233
  this.scopes.push({});
171
234
  try{
@@ -200,12 +263,19 @@ COMM.JSONRenderer = HClass.extend({
200
263
  }
201
264
  if(_hasOptions){
202
265
  if(_hasBind){
203
- _options.valueObj = COMM.Values.values[_bind];
266
+ if( _bind instanceof HValue ){
267
+ _options.valueObj = _bind;
268
+ }
269
+ else if( COMM.Values.values[_bind] !== undefined ){
270
+ _options.valueObj = COMM.Values.values[_bind];
271
+ }
272
+ else {
273
+ console.log('renderNode warning; No such valueId:'+_bind);
274
+ }
204
275
  }
205
276
  else{
206
277
  if(_options['valueObjId'] !== undefined){
207
- var _valueObjId = _options['valueObjId'];
208
- _options['valueObj'] = COMM.Values.values[_options['valueObjId']];
278
+ _options.valueObj = COMM.Values.values[_options['valueObjId']];
209
279
  }
210
280
  }
211
281
  }
@@ -219,7 +289,15 @@ COMM.JSONRenderer = HClass.extend({
219
289
  }
220
290
  if(!_hasOptions){
221
291
  if(_hasBind){
222
- COMM.Values.values[_bind].bind(_instance);
292
+ if( _bind instanceof HValue ){
293
+ _bind.bind( _instance );
294
+ }
295
+ else if( COMM.Values.values[_bind] !== undefined ){
296
+ COMM.Values.values[_bind].bind(_instance);
297
+ }
298
+ else {
299
+ console.log('renderNode warning; No such valueId:'+_bind);
300
+ }
223
301
  }
224
302
  }
225
303
  }
@@ -38,7 +38,7 @@ HMiniMenu = HRadioButtonList.extend({
38
38
  }
39
39
  y -= (i-1)*this.subComponentHeight;
40
40
  if(y < 0){
41
- y = y%this.subComponentHeight;
41
+ y = this.subComponentHeight%y;
42
42
  }
43
43
  if(this.options['menuItemGeom']){
44
44
  if(this.options.menuItemGeom.width){
@@ -53,7 +53,7 @@ module RSence
53
53
  if gui_data.class == Array
54
54
  gui_data = {
55
55
  'type' => 'GUITree',
56
- 'version' => 0.7,
56
+ 'version' => 0.9,
57
57
  'class' => 'RSence.GUIApp',
58
58
  'options' => {
59
59
  'priority' => 0,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rsence-pre
3
3
  version: !ruby/object:Gem::Version
4
- hash: 91
4
+ hash: 89
5
5
  prerelease:
6
6
  segments:
7
7
  - 2
8
8
  - 2
9
9
  - 0
10
- - 18
11
- version: 2.2.0.18
10
+ - 19
11
+ version: 2.2.0.19
12
12
  platform: ruby
13
13
  authors:
14
14
  - Riassence Inc.
@@ -17,7 +17,7 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2011-08-02 00:00:00 Z
20
+ date: 2011-08-03 00:00:00 Z
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
23
  name: rsence-deps
@@ -163,6 +163,11 @@ files:
163
163
  - js/controls/radiobutton/themes/default/radiobutton.html
164
164
  - js/controls/radiobutton/themes/default/radiobutton_parts1-ie6.gif
165
165
  - js/controls/radiobutton/themes/default/radiobutton_parts1.png
166
+ - js/controls/searchfield/searchfield.coffee
167
+ - js/controls/searchfield/themes/default/searchfield.css
168
+ - js/controls/searchfield/themes/default/searchfield.html
169
+ - js/controls/searchfield/themes/default/searchfield_parts1-ie6.gif
170
+ - js/controls/searchfield/themes/default/searchfield_parts1.png
166
171
  - js/controls/sliders/slider/slider.js
167
172
  - js/controls/sliders/slider/themes/default/hslider_tracks-ie6.gif
168
173
  - js/controls/sliders/slider/themes/default/hslider_tracks.png