juice 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. data/{History.txt → History.txt } +0 -0
  2. data/Manifest.txt +37 -0
  3. data/{PostInstall.txt → PostInstall.txt } +0 -0
  4. data/{README.rdoc → README.rdoc } +0 -0
  5. data/StarterApplication/Framework/Juice.Alert.js +59 -0
  6. data/StarterApplication/Framework/Juice.Application.js +33 -0
  7. data/StarterApplication/Framework/Juice.Button.js +25 -0
  8. data/StarterApplication/Framework/Juice.Confirm.js +42 -0
  9. data/StarterApplication/Framework/Juice.Cookie.js +50 -0
  10. data/StarterApplication/Framework/Juice.DOM.js +223 -0
  11. data/StarterApplication/Framework/Juice.Event.js +57 -0
  12. data/StarterApplication/Framework/Juice.Image.js +38 -0
  13. data/StarterApplication/Framework/Juice.JSONPConnection.js +42 -0
  14. data/StarterApplication/Framework/Juice.Layout.js +29 -0
  15. data/StarterApplication/Framework/Juice.Window.js +73 -0
  16. data/StarterApplication/Framework/Juice.i18n.js +46 -0
  17. data/StarterApplication/Framework/Juice.js +324 -0
  18. data/StarterApplication/Framework/Resources/Themes/Default.css +85 -0
  19. data/StarterApplication/Framework/Resources/Themes/Default/images/Thumbs.db +0 -0
  20. data/StarterApplication/Framework/Resources/Themes/Default/images/button-sprite.png +0 -0
  21. data/StarterApplication/Framework/Resources/Themes/Default/images/spinner.gif +0 -0
  22. data/StarterApplication/Framework/Resources/images/Thumbs.db +0 -0
  23. data/StarterApplication/Framework/Resources/images/spinner.gif +0 -0
  24. data/StarterApplication/LICENSE +20 -0
  25. data/StarterApplication/README +6 -0
  26. data/StarterApplication/appController.js +18 -0
  27. data/StarterApplication/index.html +26 -0
  28. data/StarterApplication/juice.app +5 -0
  29. data/bin/juice +78 -0
  30. data/lib/{JSquish.rb → JSquish.rb } +0 -0
  31. data/lib/{juice.rb → juice.rb } +1 -1
  32. data/script/{console → console } +0 -0
  33. data/script/{console.cmd → console.cmd } +0 -0
  34. data/script/{destroy → destroy } +0 -0
  35. data/script/{destroy.cmd → destroy.cmd } +0 -0
  36. data/script/{generate → generate } +0 -0
  37. data/script/{generate.cmd → generate.cmd } +0 -0
  38. metadata +41 -20
  39. data/Manifest.txt +0 -14
  40. data/Rakefile +0 -20
File without changes
data/Manifest.txt ADDED
@@ -0,0 +1,37 @@
1
+ History.txt
2
+ Manifest.txt
3
+ PostInstall.txt
4
+ README.rdoc
5
+ bin/juice
6
+ lib/juice.rb
7
+ lib/JSquish.rb
8
+ script/generate.cmd
9
+ script/generate
10
+ script/destroy.cmd
11
+ script/destroy
12
+ script/console.cmd
13
+ script/console
14
+ StarterApplication/README
15
+ StarterApplication/LICENSE
16
+ StarterApplication/juice.app
17
+ StarterApplication/index.html
18
+ StarterApplication/Framework/Resources/Themes/Default.css
19
+ StarterApplication/Framework/Resources/Themes/Default/images/Thumbs.db
20
+ StarterApplication/Framework/Resources/Themes/Default/images/spinner.gif
21
+ StarterApplication/Framework/Resources/Themes/Default/images/button-sprite.png
22
+ StarterApplication/Framework/Resources/images/Thumbs.db
23
+ StarterApplication/Framework/Resources/images/spinner.gif
24
+ StarterApplication/Framework/Juice.Window.js
25
+ StarterApplication/Framework/Juice.Layout.js
26
+ StarterApplication/Framework/Juice.JSONPConnection.js
27
+ StarterApplication/Framework/Juice.js
28
+ StarterApplication/Framework/Juice.Image.js
29
+ StarterApplication/Framework/Juice.i18n.js
30
+ StarterApplication/Framework/Juice.Event.js
31
+ StarterApplication/Framework/Juice.DOM.js
32
+ StarterApplication/Framework/Juice.Cookie.js
33
+ StarterApplication/Framework/Juice.Confirm.js
34
+ StarterApplication/Framework/Juice.Button.js
35
+ StarterApplication/Framework/Juice.Application.js
36
+ StarterApplication/Framework/Juice.Alert.js
37
+ StarterApplication/appController.js
File without changes
File without changes
@@ -0,0 +1,59 @@
1
+ /*
2
+ Copyright (c) 2009 Justin Baker
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ */
23
+
24
+ Juice.Alert = Juice.Class.create();
25
+ Juice.Alert.prototype = {
26
+ initialize: function(options){
27
+ this.name = (10).toRandomString();
28
+ this.options = options || {};
29
+ this.options.text = this.options.text || "Empty";
30
+ var div = document.createElement("div"), insideDiv = document.createElement("div");
31
+ this.element = div;
32
+ div.setAttribute('id',this.name);
33
+ div.setAttribute('class',Juice._classes._alert);
34
+ if(this.options.title){
35
+ var h1 = document.createElement('h1');
36
+ h1.innerHTML = this.options.title;
37
+ div.appendChild(h1);
38
+ }
39
+ div.appendChild(insideDiv);
40
+ insideDiv.innerHTML = this.options.text;
41
+ var body = Juice.Layout.body;
42
+ body.appendChild(div);
43
+ var half_height = (Juice.Layout.fullHeight/2)-(div.getHeight()/2);
44
+ var half_width = (Juice.Layout.fullWidth/2)-(div.getWidth()/2);
45
+
46
+ div.setStyle({
47
+ top: half_height+'px',
48
+ left:half_width+"px",
49
+ display:'block'
50
+ });
51
+ },
52
+ remove: function(){
53
+ this.element.remove();
54
+ },
55
+ addButton: function(content,fn){
56
+ var button = new Juice.Button(content,fn);
57
+ this.element.appendChild(button.contentView());
58
+ }
59
+ };
@@ -0,0 +1,33 @@
1
+ /*
2
+ Copyright (c) 2009 Justin Baker
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ */
23
+ Juice.Application = Juice.Class.create();
24
+ Juice.Application.prototype = {
25
+ initialize: function(){
26
+ return this;
27
+ },
28
+ addSubview: function(view){
29
+ var body = Juice.Layout.body;
30
+ body.appendChild(view);
31
+ }
32
+ };
33
+
@@ -0,0 +1,25 @@
1
+ Juice.Button = Juice.Class.create();
2
+ Juice.Button.prototype={
3
+ initialize: function(content,fn){
4
+ this.name = (10).toRandomString();
5
+ this.content = content || "Click"
6
+ var button = document.createElement("button");
7
+ button.writeAttributes({
8
+ "class": Juice._classes.button,
9
+ id:this.name
10
+ });
11
+ if(fn){
12
+ button.observe("click",function(event){
13
+ fn.call();
14
+ });
15
+ }
16
+ button.innerHTML = this.content;
17
+ this.button = button;
18
+ },
19
+ remove: function(){
20
+ Juice.$(this.name).remove();
21
+ },
22
+ contentView: function(){
23
+ return this.button;
24
+ }
25
+ };
@@ -0,0 +1,42 @@
1
+ /*
2
+ Copyright (c) 2009 Justin Baker
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ */
23
+
24
+ Juice.Confirm = Juice.Class.create();
25
+ Juice.Confirm.prototype = {
26
+ initialize: function(options){
27
+ options.title = 'Confirm';
28
+ var alert = new Juice.Alert(options);
29
+ alert.addButton('Okay',function(){
30
+ alert.remove();
31
+ options.callback(true);
32
+ });
33
+ alert.addButton('Cancel',function(){
34
+ alert.remove();
35
+ options.callback(false);
36
+ });
37
+
38
+ },
39
+ remove: function(){
40
+ this.element.remove();
41
+ }
42
+ };
@@ -0,0 +1,50 @@
1
+ /*
2
+ Copyright (c) 2009 Justin Baker
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ */
23
+ Juice.Cookie = Juice.Class.create();
24
+ Juice.Cookie.prototype = {
25
+ initialize:function(name,value,days) {
26
+ this.name = name;
27
+ this.value = value;
28
+ if (days) {
29
+ var date = new Date();
30
+ date.setTime(date.getTime()+(days*24*60*60*1000));
31
+ var expires = "; expires="+date.toGMTString();
32
+ }
33
+ else var expires = "";
34
+ document.cookie = this.name+"="+this.value+expires+"; path=/";
35
+ },
36
+ read:function() {
37
+ var nameEQ = this.name + "=";
38
+ var ca = document.cookie.split(';');
39
+ for(var i=0;i < ca.length;i++) {
40
+ var c = ca[i];
41
+ while (c.charAt(0)==' ') c = c.substring(1,c.length);
42
+ if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
43
+ }
44
+ return null;
45
+ },
46
+ erase:function() {
47
+ new Juice.Cookie(this.name,"",-1);
48
+ }
49
+ };
50
+
@@ -0,0 +1,223 @@
1
+ /*
2
+ Copyright (c) 2009 Justin Baker
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ */
23
+ (function(){
24
+ var core_functions = {
25
+ getHeight: function(element){
26
+ var el = element || this;
27
+ var height = el.getStyle("height");
28
+ if(height=='auto'){
29
+ height = el.offsetHeight;
30
+ }
31
+ else{
32
+ height = parseInt(height);
33
+ }
34
+ var pt = parseInt(el.getStyle("padding-top"));
35
+ var pb = parseInt(el.getStyle("padding-bottom"));
36
+ var bt = el.getStyle("border-top-width");
37
+ var bb = el.getStyle("border-bottom-width");
38
+ switch(bt){
39
+ case 'thin':
40
+ bt=2;
41
+ break;
42
+ case 'medium':
43
+ bt=4;
44
+ break;
45
+ case 'thick':
46
+ bt=6;
47
+ break;
48
+ default:
49
+ bt = parseInt(bt);
50
+ }
51
+ switch(bb){
52
+ case 'thin':
53
+ bb=2;
54
+ break;
55
+ case 'medium':
56
+ bb=4;
57
+ break;
58
+ case 'thick':
59
+ bb=6;
60
+ break;
61
+ default:
62
+ bb = parseInt(bb);
63
+ }
64
+ return height+pt+pb+bt+bb;
65
+ },
66
+ getWidth: function(element){
67
+ var el = element || this;
68
+ var width = el.getStyle("width");
69
+ if(width=='auto'){
70
+ width = el.offsetWidth;
71
+ }
72
+ else{
73
+ width = parseInt(width);
74
+ }
75
+ var pl = parseInt(el.getStyle("padding-left"));
76
+ var pr = parseInt(el.getStyle("padding-right"));
77
+ var bl = parseInt(el.getStyle("border-left-width"));
78
+ var br = parseInt(el.getStyle("border-right-width"));
79
+ switch(bl){
80
+ case 'thin':
81
+ bl=2;
82
+ break;
83
+ case 'medium':
84
+ bl=4;
85
+ break;
86
+ case 'thick':
87
+ bl=6;
88
+ break;
89
+ default:
90
+ bl = parseInt(bl);
91
+ }
92
+ switch(br){
93
+ case 'thin':
94
+ br=2;
95
+ break;
96
+ case 'medium':
97
+ br=4;
98
+ break;
99
+ case 'thick':
100
+ br=6;
101
+ break;
102
+ default:
103
+ br = parseInt(br);
104
+ }
105
+ return width+pl+pr+bl+br;
106
+ },
107
+ observe: function(name,fn){
108
+ var event = new Juice.Event(this,name,fn);
109
+ event.create();
110
+ return this;
111
+ },
112
+ getStyle: function(strCssRule){
113
+ var strValue;
114
+ if(document.defaultView && document.defaultView.getComputedStyle){
115
+ strValue = document.defaultView.getComputedStyle(this, "").getPropertyValue(strCssRule);
116
+ }
117
+ else if(this.currentStyle){
118
+ strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
119
+ return p1.toUpperCase();
120
+ });
121
+ strValue = this.currentStyle[strCssRule];
122
+ }
123
+ return strValue;
124
+ },
125
+ remove: function(){
126
+ this.parentNode.removeChild(this);
127
+ },
128
+ visible: function() {
129
+ return this.style.display != 'none';
130
+ },
131
+ toggle: function() {
132
+ core_functions[this.visible() ? 'hide' : 'show'](this);
133
+ return this;
134
+ },
135
+ hide: function() {
136
+ this.style.display = 'none';
137
+ return this;
138
+ },
139
+ show: function() {
140
+ this.style.display = '';
141
+ return this;
142
+ },
143
+ setStyle:function(styles){
144
+ for(var prop in styles){
145
+ this.style[prop] = styles[prop];
146
+ }
147
+ },
148
+ writeAttributes:function(attr){
149
+ for(var prop in attr){
150
+ this.setAttribute(prop,attr[prop])
151
+ }
152
+ },
153
+ getChildren: function(){
154
+ var results=[], elements = this.childNodes;
155
+ for(var element in elements){
156
+ if(elements[element].nodeType==1){
157
+ results.push(elements[element]);
158
+ }
159
+ };
160
+ return Juice.Object.toArray(results);
161
+ },
162
+ descendents:function(){
163
+ return Juice.Object.toArray(this.getElementsByTagName('*'));
164
+ },
165
+ inspect: function(){
166
+ var tag = this.tagName.toLowerCase();
167
+ var id = "#"+this.id;
168
+ var classN = "."+this.className;
169
+ return "#<HTMLElement:"+tag+classN+id;
170
+ }
171
+ };
172
+ Juice.Object.extend(Juice,{DOM:{}});
173
+ Juice.Object.extend(Juice.DOM,{
174
+ extend: function(fns){
175
+ var isIE = (window.navigator.userAgent.indexOf("MSIE") > 0);
176
+ if(!isIE){
177
+ Juice.Object.extend(HTMLElement.prototype,fns);
178
+ }
179
+ else{
180
+ // Fix document.createElement
181
+ var _getCreate = document.createElement;
182
+ function fixCreate(tag){
183
+ var _elem = _getCreate(tag);
184
+ for(var i in fns){
185
+ _elem[i] = fns[i]
186
+ }
187
+ return _elem;
188
+ }
189
+ document.createElement = fixCreate;
190
+ // Fix document.getElementById
191
+ var _getId = document.getElementById;
192
+ function fixId(id){
193
+ var _elem = _getId(id);
194
+ if(_elem != null){
195
+ for(var i in fns){
196
+ _elem[i] = fns[i]
197
+ }
198
+ }
199
+ return _elem;
200
+ }
201
+ document.getElementById = fixId;
202
+ // Fix document.getElementsByTagName
203
+ var _getTags = document.getElementsByTagName;
204
+ function fixTags(tag){
205
+ var _elem = _getTags(tag);
206
+ if(_elem != null){
207
+ for(var index=0; i < _elem.length; i++){
208
+ for(var i in fns){
209
+ _elem[index][i] = fns[i];
210
+ }
211
+ }
212
+ }
213
+ return _elem;
214
+ }
215
+ document.getElementsByTagName = fixTags;
216
+ // Extend the dom quick..
217
+ document.getElementsByTagName("*");
218
+ }
219
+ }
220
+ });
221
+ // This is also our method exposed to extend the dom
222
+ Juice.DOM.extend(core_functions);
223
+ })();