superchris-rubyjs 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +131 -0
- data/Rakefile +65 -0
- data/bin/rubyjs +144 -0
- data/rubyjs.gemspec +112 -0
- data/src/rubyjs.rb +3 -0
- data/src/rubyjs/code_generator.rb +474 -0
- data/src/rubyjs/compiler.rb +2061 -0
- data/src/rubyjs/debug_name_generator.rb +95 -0
- data/src/rubyjs/encoder.rb +171 -0
- data/src/rubyjs/eval_into.rb +59 -0
- data/src/rubyjs/lib/core.rb +1016 -0
- data/src/rubyjs/lib/dom_element.rb +66 -0
- data/src/rubyjs/lib/json.rb +101 -0
- data/src/rubyjs/lib/microunit.rb +188 -0
- data/src/rubyjs/model.rb +293 -0
- data/src/rubyjs/name_generator.rb +71 -0
- data/src/rwt/AbsolutePanel.rb +161 -0
- data/src/rwt/DOM.Konqueror.rb +89 -0
- data/src/rwt/DOM.Opera.rb +65 -0
- data/src/rwt/DOM.rb +1044 -0
- data/src/rwt/Event.Opera.rb +35 -0
- data/src/rwt/Event.rb +429 -0
- data/src/rwt/HTTPRequest.IE6.rb +5 -0
- data/src/rwt/HTTPRequest.rb +74 -0
- data/src/rwt/Label.rb +164 -0
- data/src/rwt/Panel.rb +90 -0
- data/src/rwt/RootPanel.rb +16 -0
- data/src/rwt/UIObject.rb +495 -0
- data/src/rwt/Widget.rb +193 -0
- data/src/rwt/ported-from/AbsolutePanel.java +158 -0
- data/src/rwt/ported-from/DOM.java +571 -0
- data/src/rwt/ported-from/DOMImpl.java +426 -0
- data/src/rwt/ported-from/DOMImplOpera.java +82 -0
- data/src/rwt/ported-from/DOMImplStandard.java +234 -0
- data/src/rwt/ported-from/HTTPRequest.java +81 -0
- data/src/rwt/ported-from/HTTPRequestImpl.java +103 -0
- data/src/rwt/ported-from/Label.java +163 -0
- data/src/rwt/ported-from/Panel.java +99 -0
- data/src/rwt/ported-from/UIObject.java +614 -0
- data/src/rwt/ported-from/Widget.java +221 -0
- data/test/benchmark/bm_vm1_block.rb +15 -0
- data/test/benchmark/bm_vm1_const.rb +13 -0
- data/test/benchmark/bm_vm1_ensure.rb +15 -0
- data/test/benchmark/common.rb +5 -0
- data/test/benchmark/params.yaml +7 -0
- data/test/common.Browser.rb +13 -0
- data/test/common.rb +8 -0
- data/test/gen_browser_test_suite.rb +129 -0
- data/test/gen_test_suite.rb +41 -0
- data/test/run_benchs.rb +58 -0
- data/test/run_tests.rb +22 -0
- data/test/test_args.rb +24 -0
- data/test/test_array.rb +22 -0
- data/test/test_case.rb +35 -0
- data/test/test_class.rb +55 -0
- data/test/test_eql.rb +9 -0
- data/test/test_exception.rb +61 -0
- data/test/test_expr.rb +12 -0
- data/test/test_hash.rb +29 -0
- data/test/test_hot_ruby.rb +146 -0
- data/test/test_if.rb +28 -0
- data/test/test_insertion_sort.rb +25 -0
- data/test/test_inspect.rb +10 -0
- data/test/test_lebewesen.rb +39 -0
- data/test/test_massign.rb +66 -0
- data/test/test_new.rb +12 -0
- data/test/test_range.rb +70 -0
- data/test/test_regexp.rb +22 -0
- data/test/test_send.rb +65 -0
- data/test/test_simple_output.rb +5 -0
- data/test/test_splat.rb +21 -0
- data/test/test_string.rb +51 -0
- data/test/test_test.rb +17 -0
- data/test/test_yield.rb +154 -0
- data/utils/js/Makefile +9 -0
- data/utils/js/RunScript.class +0 -0
- data/utils/js/RunScript.java +73 -0
- data/utils/js/js.jar +0 -0
- data/utils/js/run.sh +3 -0
- data/utils/jsc/Makefile +7 -0
- data/utils/jsc/README +3 -0
- data/utils/jsc/RunScript.c +93 -0
- data/utils/jsc/run.sh +15 -0
- data/utils/yuicompressor/README +1 -0
- data/utils/yuicompressor/yuicompressor-2.2.5.jar +0 -0
- metadata +157 -0
@@ -0,0 +1,234 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2007 Google Inc.
|
3
|
+
*
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
5
|
+
* use this file except in compliance with the License. You may obtain a copy of
|
6
|
+
* 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, WITHOUT
|
12
|
+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
13
|
+
* License for the specific language governing permissions and limitations under
|
14
|
+
* the License.
|
15
|
+
*/
|
16
|
+
package com.google.gwt.user.client.impl;
|
17
|
+
|
18
|
+
import com.google.gwt.user.client.Element;
|
19
|
+
import com.google.gwt.user.client.Event;
|
20
|
+
|
21
|
+
/**
|
22
|
+
* Base implementation of {@link com.google.gwt.user.client.impl.DOMImpl} shared
|
23
|
+
* by those browsers that come a bit closer to supporting a common standard (ie,
|
24
|
+
* not IE).
|
25
|
+
*/
|
26
|
+
abstract class DOMImplStandard extends DOMImpl {
|
27
|
+
|
28
|
+
public native boolean compare(Element elem1, Element elem2) /*-{
|
29
|
+
return (elem1 == elem2);
|
30
|
+
}-*/;
|
31
|
+
|
32
|
+
public native Element createInputRadioElement(String name) /*-{
|
33
|
+
var elem = $doc.createElement("INPUT");
|
34
|
+
elem.type = 'radio';
|
35
|
+
elem.name = name;
|
36
|
+
return elem;
|
37
|
+
}-*/;
|
38
|
+
|
39
|
+
public native Element eventGetFromElement(Event evt) /*-{
|
40
|
+
// Standard browsers use relatedTarget rather than fromElement.
|
41
|
+
return evt.relatedTarget ? evt.relatedTarget : null;
|
42
|
+
}-*/;
|
43
|
+
|
44
|
+
public native Element eventGetTarget(Event evt) /*-{
|
45
|
+
return evt.target || null;
|
46
|
+
}-*/;
|
47
|
+
|
48
|
+
public native Element eventGetToElement(Event evt) /*-{
|
49
|
+
// Standard browsers use relatedTarget rather than toElement.
|
50
|
+
return evt.relatedTarget || null;
|
51
|
+
}-*/;
|
52
|
+
|
53
|
+
public native void eventPreventDefault(Event evt) /*-{
|
54
|
+
evt.preventDefault();
|
55
|
+
}-*/;
|
56
|
+
|
57
|
+
public native String eventToString(Event evt) /*-{
|
58
|
+
return evt.toString();
|
59
|
+
}-*/;
|
60
|
+
|
61
|
+
public native Element getChild(Element elem, int index) /*-{
|
62
|
+
var count = 0, child = elem.firstChild;
|
63
|
+
while (child) {
|
64
|
+
var next = child.nextSibling;
|
65
|
+
if (child.nodeType == 1) {
|
66
|
+
if (index == count)
|
67
|
+
return child;
|
68
|
+
++count;
|
69
|
+
}
|
70
|
+
child = next;
|
71
|
+
}
|
72
|
+
|
73
|
+
return null;
|
74
|
+
}-*/;
|
75
|
+
|
76
|
+
public native int getChildCount(Element elem) /*-{
|
77
|
+
var count = 0, child = elem.firstChild;
|
78
|
+
while (child) {
|
79
|
+
if (child.nodeType == 1)
|
80
|
+
++count;
|
81
|
+
child = child.nextSibling;
|
82
|
+
}
|
83
|
+
return count;
|
84
|
+
}-*/;
|
85
|
+
|
86
|
+
public native int getChildIndex(Element parent, Element toFind) /*-{
|
87
|
+
var count = 0, child = parent.firstChild;
|
88
|
+
while (child) {
|
89
|
+
if (child == toFind)
|
90
|
+
return count;
|
91
|
+
if (child.nodeType == 1)
|
92
|
+
++count;
|
93
|
+
child = child.nextSibling;
|
94
|
+
}
|
95
|
+
|
96
|
+
return -1;
|
97
|
+
}-*/;
|
98
|
+
|
99
|
+
public native Element getFirstChild(Element elem) /*-{
|
100
|
+
var child = elem.firstChild;
|
101
|
+
while (child && child.nodeType != 1)
|
102
|
+
child = child.nextSibling;
|
103
|
+
return child || null;
|
104
|
+
}-*/;
|
105
|
+
|
106
|
+
public native Element getNextSibling(Element elem) /*-{
|
107
|
+
var sib = elem.nextSibling;
|
108
|
+
while (sib && sib.nodeType != 1)
|
109
|
+
sib = sib.nextSibling;
|
110
|
+
return sib || null;
|
111
|
+
}-*/;
|
112
|
+
|
113
|
+
public native Element getParent(Element elem) /*-{
|
114
|
+
var parent = elem.parentNode;
|
115
|
+
if(parent == null) {
|
116
|
+
return null;
|
117
|
+
}
|
118
|
+
if (parent.nodeType != 1)
|
119
|
+
parent = null;
|
120
|
+
return parent || null;
|
121
|
+
}-*/;
|
122
|
+
|
123
|
+
public native String iframeGetSrc(Element elem) /*-{
|
124
|
+
return elem.src;
|
125
|
+
}-*/;
|
126
|
+
|
127
|
+
public native void init() /*-{
|
128
|
+
// Set up capture event dispatchers.
|
129
|
+
$wnd.__dispatchCapturedMouseEvent = function(evt) {
|
130
|
+
if ($wnd.__dispatchCapturedEvent(evt)) {
|
131
|
+
var cap = $wnd.__captureElem;
|
132
|
+
if (cap && cap.__listener) {
|
133
|
+
@com.google.gwt.user.client.DOM::dispatchEvent(Lcom/google/gwt/user/client/Event;Lcom/google/gwt/user/client/Element;Lcom/google/gwt/user/client/EventListener;)(evt, cap, cap.__listener);
|
134
|
+
evt.stopPropagation();
|
135
|
+
}
|
136
|
+
}
|
137
|
+
};
|
138
|
+
|
139
|
+
$wnd.__dispatchCapturedEvent = function(evt) {
|
140
|
+
if (!@com.google.gwt.user.client.DOM::previewEvent(Lcom/google/gwt/user/client/Event;)(evt)) {
|
141
|
+
evt.stopPropagation();
|
142
|
+
evt.preventDefault();
|
143
|
+
return false;
|
144
|
+
}
|
145
|
+
|
146
|
+
return true;
|
147
|
+
};
|
148
|
+
|
149
|
+
$wnd.addEventListener('click', $wnd.__dispatchCapturedMouseEvent, true);
|
150
|
+
$wnd.addEventListener('dblclick', $wnd.__dispatchCapturedMouseEvent, true);
|
151
|
+
$wnd.addEventListener('mousedown', $wnd.__dispatchCapturedMouseEvent, true);
|
152
|
+
$wnd.addEventListener('mouseup', $wnd.__dispatchCapturedMouseEvent, true);
|
153
|
+
$wnd.addEventListener('mousemove', $wnd.__dispatchCapturedMouseEvent, true);
|
154
|
+
$wnd.addEventListener('mousewheel', $wnd.__dispatchCapturedMouseEvent, true);
|
155
|
+
$wnd.addEventListener('keydown', $wnd.__dispatchCapturedEvent, true);
|
156
|
+
$wnd.addEventListener('keyup', $wnd.__dispatchCapturedEvent, true);
|
157
|
+
$wnd.addEventListener('keypress', $wnd.__dispatchCapturedEvent, true);
|
158
|
+
|
159
|
+
// Set up normal event dispatcher.
|
160
|
+
$wnd.__dispatchEvent = function(evt) {
|
161
|
+
var listener, curElem = this;
|
162
|
+
while (curElem && !(listener = curElem.__listener))
|
163
|
+
curElem = curElem.parentNode;
|
164
|
+
if (curElem && curElem.nodeType != 1)
|
165
|
+
curElem = null;
|
166
|
+
|
167
|
+
if (listener)
|
168
|
+
@com.google.gwt.user.client.DOM::dispatchEvent(Lcom/google/gwt/user/client/Event;Lcom/google/gwt/user/client/Element;Lcom/google/gwt/user/client/EventListener;)(evt, curElem, listener);
|
169
|
+
};
|
170
|
+
|
171
|
+
$wnd.__captureElem = null;
|
172
|
+
}-*/;
|
173
|
+
|
174
|
+
public native void insertChild(Element parent, Element toAdd, int index) /*-{
|
175
|
+
var count = 0, child = parent.firstChild, before = null;
|
176
|
+
while (child) {
|
177
|
+
if (child.nodeType == 1) {
|
178
|
+
if (count == index) {
|
179
|
+
before = child;
|
180
|
+
break;
|
181
|
+
}
|
182
|
+
++count;
|
183
|
+
}
|
184
|
+
child = child.nextSibling;
|
185
|
+
}
|
186
|
+
|
187
|
+
parent.insertBefore(toAdd, before);
|
188
|
+
}-*/;
|
189
|
+
|
190
|
+
public native boolean isOrHasChild(Element parent, Element child) /*-{
|
191
|
+
while (child) {
|
192
|
+
if (parent == child) {
|
193
|
+
return true;
|
194
|
+
}
|
195
|
+
child = child.parentNode;
|
196
|
+
if (child && (child.nodeType != 1)) {
|
197
|
+
child = null;
|
198
|
+
}
|
199
|
+
}
|
200
|
+
return false;
|
201
|
+
}-*/;
|
202
|
+
|
203
|
+
public native void releaseCapture(Element elem) /*-{
|
204
|
+
if (elem == $wnd.__captureElem)
|
205
|
+
$wnd.__captureElem = null;
|
206
|
+
}-*/;
|
207
|
+
|
208
|
+
public native void setCapture(Element elem) /*-{
|
209
|
+
$wnd.__captureElem = elem;
|
210
|
+
}-*/;
|
211
|
+
|
212
|
+
public native void sinkEvents(Element elem, int bits) /*-{
|
213
|
+
elem.__eventBits = bits;
|
214
|
+
|
215
|
+
elem.onclick = (bits & 0x00001) ? $wnd.__dispatchEvent : null;
|
216
|
+
elem.ondblclick = (bits & 0x00002) ? $wnd.__dispatchEvent : null;
|
217
|
+
elem.onmousedown = (bits & 0x00004) ? $wnd.__dispatchEvent : null;
|
218
|
+
elem.onmouseup = (bits & 0x00008) ? $wnd.__dispatchEvent : null;
|
219
|
+
elem.onmouseover = (bits & 0x00010) ? $wnd.__dispatchEvent : null;
|
220
|
+
elem.onmouseout = (bits & 0x00020) ? $wnd.__dispatchEvent : null;
|
221
|
+
elem.onmousemove = (bits & 0x00040) ? $wnd.__dispatchEvent : null;
|
222
|
+
elem.onkeydown = (bits & 0x00080) ? $wnd.__dispatchEvent : null;
|
223
|
+
elem.onkeypress = (bits & 0x00100) ? $wnd.__dispatchEvent : null;
|
224
|
+
elem.onkeyup = (bits & 0x00200) ? $wnd.__dispatchEvent : null;
|
225
|
+
elem.onchange = (bits & 0x00400) ? $wnd.__dispatchEvent : null;
|
226
|
+
elem.onfocus = (bits & 0x00800) ? $wnd.__dispatchEvent : null;
|
227
|
+
elem.onblur = (bits & 0x01000) ? $wnd.__dispatchEvent : null;
|
228
|
+
elem.onlosecapture = (bits & 0x02000) ? $wnd.__dispatchEvent : null;
|
229
|
+
elem.onscroll = (bits & 0x04000) ? $wnd.__dispatchEvent : null;
|
230
|
+
elem.onload = (bits & 0x08000) ? $wnd.__dispatchEvent : null;
|
231
|
+
elem.onerror = (bits & 0x10000) ? $wnd.__dispatchEvent : null;
|
232
|
+
elem.onmousewheel = (bits & 0x20000) ? $wnd.__dispatchEvent : null;
|
233
|
+
}-*/;
|
234
|
+
}
|
@@ -0,0 +1,81 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2006 Google Inc.
|
3
|
+
*
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
5
|
+
* use this file except in compliance with the License. You may obtain a copy of
|
6
|
+
* 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, WITHOUT
|
12
|
+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
13
|
+
* License for the specific language governing permissions and limitations under
|
14
|
+
* the License.
|
15
|
+
*/
|
16
|
+
package com.google.gwt.user.client;
|
17
|
+
|
18
|
+
import com.google.gwt.core.client.GWT;
|
19
|
+
import com.google.gwt.user.client.impl.HTTPRequestImpl;
|
20
|
+
|
21
|
+
/**
|
22
|
+
* This class allows you to make asynchronous HTTP requests to the originating
|
23
|
+
* server.
|
24
|
+
*/
|
25
|
+
public class HTTPRequest {
|
26
|
+
|
27
|
+
private static final HTTPRequestImpl httpRequest = (HTTPRequestImpl) GWT.create(HTTPRequestImpl.class);
|
28
|
+
|
29
|
+
/**
|
30
|
+
* Makes an asynchronous HTTP GET to a remote server.
|
31
|
+
*
|
32
|
+
* @param url the absolute url to GET
|
33
|
+
* @param handler the response handler to be notified when either the request
|
34
|
+
* fails, or is completed successfully
|
35
|
+
* @return <code>false</code> if the invocation fails to issue
|
36
|
+
*/
|
37
|
+
public static boolean asyncGet(String url, ResponseTextHandler handler) {
|
38
|
+
return httpRequest.asyncGet(url, handler);
|
39
|
+
}
|
40
|
+
|
41
|
+
/**
|
42
|
+
* Makes an asynchronous HTTP GET to a remote server.
|
43
|
+
*
|
44
|
+
* @param url the absolute url to GET
|
45
|
+
* @param handler the response handler to be notified when either the request
|
46
|
+
* fails, or is completed successfully
|
47
|
+
* @return <code>false</code> if the invocation fails to issue
|
48
|
+
*/
|
49
|
+
public static boolean asyncGet(String user, String pwd, String url,
|
50
|
+
ResponseTextHandler handler) {
|
51
|
+
return httpRequest.asyncGet(user, pwd, url, handler);
|
52
|
+
};
|
53
|
+
|
54
|
+
/**
|
55
|
+
* Makes an asynchronous HTTP POST to a remote server.
|
56
|
+
*
|
57
|
+
* @param url the absolute url to which the POST data is delivered
|
58
|
+
* @param postData the data to post
|
59
|
+
* @param handler the response handler to be notified when either the request
|
60
|
+
* fails, or is completed successfully
|
61
|
+
* @return <code>false</code> if the invocation fails to issue
|
62
|
+
*/
|
63
|
+
public static boolean asyncPost(String url, String postData,
|
64
|
+
ResponseTextHandler handler) {
|
65
|
+
return httpRequest.asyncPost(url, postData, handler);
|
66
|
+
}
|
67
|
+
|
68
|
+
/**
|
69
|
+
* Makes an asynchronous HTTP POST to a remote server.
|
70
|
+
*
|
71
|
+
* @param url the absolute url to which the POST data is delivered
|
72
|
+
* @param postData the data to post
|
73
|
+
* @param handler the response handler to be notified when either the request
|
74
|
+
* fails, or is completed successfully
|
75
|
+
* @return <code>false</code> if the invocation fails to issue
|
76
|
+
*/
|
77
|
+
public static boolean asyncPost(String user, String pwd, String url,
|
78
|
+
String postData, ResponseTextHandler handler) {
|
79
|
+
return httpRequest.asyncPost(user, pwd, url, postData, handler);
|
80
|
+
};
|
81
|
+
}
|
@@ -0,0 +1,103 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2006 Google Inc.
|
3
|
+
*
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
5
|
+
* use this file except in compliance with the License. You may obtain a copy of
|
6
|
+
* 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, WITHOUT
|
12
|
+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
13
|
+
* License for the specific language governing permissions and limitations under
|
14
|
+
* the License.
|
15
|
+
*/
|
16
|
+
package com.google.gwt.user.client.impl;
|
17
|
+
|
18
|
+
import com.google.gwt.core.client.JavaScriptObject;
|
19
|
+
import com.google.gwt.user.client.ResponseTextHandler;
|
20
|
+
|
21
|
+
/**
|
22
|
+
* Native implementation associated with
|
23
|
+
* {@link com.google.gwt.user.client.HTTPRequest}.
|
24
|
+
*/
|
25
|
+
public class HTTPRequestImpl {
|
26
|
+
|
27
|
+
static JavaScriptObject nullFunc;
|
28
|
+
|
29
|
+
public HTTPRequestImpl() {
|
30
|
+
nullFunc = JavaScriptObject.createFunction();
|
31
|
+
}
|
32
|
+
|
33
|
+
public boolean asyncGet(String url, ResponseTextHandler handler) {
|
34
|
+
return asyncGet(null, null, url, handler);
|
35
|
+
}
|
36
|
+
|
37
|
+
public boolean asyncGet(String user, String pwd, String url,
|
38
|
+
ResponseTextHandler handler) {
|
39
|
+
return asyncGetImpl(user, pwd, url, handler);
|
40
|
+
}
|
41
|
+
|
42
|
+
public boolean asyncPost(String url, String postData,
|
43
|
+
ResponseTextHandler handler) {
|
44
|
+
return asyncPost(null, null, url, postData, handler);
|
45
|
+
}
|
46
|
+
|
47
|
+
public boolean asyncPost(String user, String pwd, String url,
|
48
|
+
String postData, ResponseTextHandler handler) {
|
49
|
+
return asyncPostImpl(user, pwd, url, postData, handler);
|
50
|
+
}
|
51
|
+
|
52
|
+
public JavaScriptObject createXmlHTTPRequest() {
|
53
|
+
return doCreateXmlHTTPRequest();
|
54
|
+
}
|
55
|
+
|
56
|
+
/**
|
57
|
+
* All the supported browsers except for IE instantiate it as shown.
|
58
|
+
*/
|
59
|
+
protected native JavaScriptObject doCreateXmlHTTPRequest() /*-{
|
60
|
+
return new XMLHttpRequest();
|
61
|
+
}-*/;
|
62
|
+
|
63
|
+
private native boolean asyncGetImpl(String user, String pwd, String url,
|
64
|
+
ResponseTextHandler handler) /*-{
|
65
|
+
var xmlHttp = this.@com.google.gwt.user.client.impl.HTTPRequestImpl::doCreateXmlHTTPRequest()();
|
66
|
+
try {
|
67
|
+
xmlHttp.open("GET", url, true);
|
68
|
+
xmlHttp.setRequestHeader("Content-Type", "text/plain; charset=utf-8");
|
69
|
+
xmlHttp.onreadystatechange = function() {
|
70
|
+
if (xmlHttp.readyState == 4) {
|
71
|
+
xmlHttp.onreadystatechange = @com.google.gwt.user.client.impl.HTTPRequestImpl::nullFunc;
|
72
|
+
handler.@com.google.gwt.user.client.ResponseTextHandler::onCompletion(Ljava/lang/String;)(xmlHttp.responseText || "");
|
73
|
+
}
|
74
|
+
};
|
75
|
+
xmlHttp.send('');
|
76
|
+
return true;
|
77
|
+
} catch (e) {
|
78
|
+
xmlHttp.onreadystatechange = @com.google.gwt.user.client.impl.HTTPRequestImpl::nullFunc;
|
79
|
+
return false;
|
80
|
+
}
|
81
|
+
}-*/;
|
82
|
+
|
83
|
+
private native boolean asyncPostImpl(String user, String pwd, String url,
|
84
|
+
String postData, ResponseTextHandler handler) /*-{
|
85
|
+
var xmlHttp = this.@com.google.gwt.user.client.impl.HTTPRequestImpl::doCreateXmlHTTPRequest()();
|
86
|
+
try {
|
87
|
+
xmlHttp.open("POST", url, true);
|
88
|
+
xmlHttp.setRequestHeader("Content-Type", "text/plain; charset=utf-8");
|
89
|
+
xmlHttp.onreadystatechange = function() {
|
90
|
+
if (xmlHttp.readyState == 4) {
|
91
|
+
xmlHttp.onreadystatechange = @com.google.gwt.user.client.impl.HTTPRequestImpl::nullFunc;
|
92
|
+
handler.@com.google.gwt.user.client.ResponseTextHandler::onCompletion(Ljava/lang/String;)(xmlHttp.responseText || "");
|
93
|
+
}
|
94
|
+
};
|
95
|
+
xmlHttp.send(postData);
|
96
|
+
return true;
|
97
|
+
}
|
98
|
+
catch (e) {
|
99
|
+
xmlHttp.onreadystatechange = @com.google.gwt.user.client.impl.HTTPRequestImpl::nullFunc;
|
100
|
+
return false;
|
101
|
+
}
|
102
|
+
}-*/;
|
103
|
+
}
|
@@ -0,0 +1,163 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2007 Google Inc.
|
3
|
+
*
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
5
|
+
* use this file except in compliance with the License. You may obtain a copy of
|
6
|
+
* 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, WITHOUT
|
12
|
+
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
13
|
+
* License for the specific language governing permissions and limitations under
|
14
|
+
* the License.
|
15
|
+
*/
|
16
|
+
package com.google.gwt.user.client.ui;
|
17
|
+
|
18
|
+
import com.google.gwt.user.client.DOM;
|
19
|
+
import com.google.gwt.user.client.Event;
|
20
|
+
|
21
|
+
/**
|
22
|
+
* A widget that contains arbitrary text, <i>not</i> interpreted as HTML.
|
23
|
+
*
|
24
|
+
* <h3>CSS Style Rules</h3>
|
25
|
+
* <ul class='css'>
|
26
|
+
* <li>.gwt-Label { }</li>
|
27
|
+
* </ul>
|
28
|
+
*
|
29
|
+
* <p>
|
30
|
+
* <h3>Example</h3> {@example com.google.gwt.examples.HTMLExample}
|
31
|
+
* </p>
|
32
|
+
*/
|
33
|
+
public class Label extends Widget implements SourcesClickEvents,
|
34
|
+
SourcesMouseEvents, SourcesMouseWheelEvents,
|
35
|
+
HasHorizontalAlignment, HasText, HasWordWrap {
|
36
|
+
|
37
|
+
private ClickListenerCollection clickListeners;
|
38
|
+
private HorizontalAlignmentConstant horzAlign;
|
39
|
+
private MouseListenerCollection mouseListeners;
|
40
|
+
private MouseWheelListenerCollection mouseWheelListeners;
|
41
|
+
|
42
|
+
/**
|
43
|
+
* Creates an empty label.
|
44
|
+
*/
|
45
|
+
public Label() {
|
46
|
+
setElement(DOM.createDiv());
|
47
|
+
sinkEvents(Event.ONCLICK | Event.MOUSEEVENTS | Event.ONMOUSEWHEEL);
|
48
|
+
setStyleName("gwt-Label");
|
49
|
+
}
|
50
|
+
|
51
|
+
/**
|
52
|
+
* Creates a label with the specified text.
|
53
|
+
*
|
54
|
+
* @param text the new label's text
|
55
|
+
*/
|
56
|
+
public Label(String text) {
|
57
|
+
this();
|
58
|
+
setText(text);
|
59
|
+
}
|
60
|
+
|
61
|
+
/**
|
62
|
+
* Creates a label with the specified text.
|
63
|
+
*
|
64
|
+
* @param text the new label's text
|
65
|
+
* @param wordWrap <code>false</code> to disable word wrapping
|
66
|
+
*/
|
67
|
+
public Label(String text, boolean wordWrap) {
|
68
|
+
this(text);
|
69
|
+
setWordWrap(wordWrap);
|
70
|
+
}
|
71
|
+
|
72
|
+
public void addClickListener(ClickListener listener) {
|
73
|
+
if (clickListeners == null) {
|
74
|
+
clickListeners = new ClickListenerCollection();
|
75
|
+
}
|
76
|
+
clickListeners.add(listener);
|
77
|
+
}
|
78
|
+
|
79
|
+
public void addMouseListener(MouseListener listener) {
|
80
|
+
if (mouseListeners == null) {
|
81
|
+
mouseListeners = new MouseListenerCollection();
|
82
|
+
}
|
83
|
+
mouseListeners.add(listener);
|
84
|
+
}
|
85
|
+
|
86
|
+
public void addMouseWheelListener(MouseWheelListener listener) {
|
87
|
+
if (mouseWheelListeners == null) {
|
88
|
+
mouseWheelListeners = new MouseWheelListenerCollection();
|
89
|
+
}
|
90
|
+
mouseWheelListeners.add(listener);
|
91
|
+
}
|
92
|
+
|
93
|
+
public HorizontalAlignmentConstant getHorizontalAlignment() {
|
94
|
+
return horzAlign;
|
95
|
+
}
|
96
|
+
|
97
|
+
public String getText() {
|
98
|
+
return DOM.getInnerText(getElement());
|
99
|
+
}
|
100
|
+
|
101
|
+
public boolean getWordWrap() {
|
102
|
+
return !DOM.getStyleAttribute(getElement(), "whiteSpace").equals("nowrap");
|
103
|
+
}
|
104
|
+
|
105
|
+
public void onBrowserEvent(Event event) {
|
106
|
+
switch (DOM.eventGetType(event)) {
|
107
|
+
case Event.ONCLICK:
|
108
|
+
if (clickListeners != null) {
|
109
|
+
clickListeners.fireClick(this);
|
110
|
+
}
|
111
|
+
break;
|
112
|
+
|
113
|
+
case Event.ONMOUSEDOWN:
|
114
|
+
case Event.ONMOUSEUP:
|
115
|
+
case Event.ONMOUSEMOVE:
|
116
|
+
case Event.ONMOUSEOVER:
|
117
|
+
case Event.ONMOUSEOUT:
|
118
|
+
if (mouseListeners != null) {
|
119
|
+
mouseListeners.fireMouseEvent(this, event);
|
120
|
+
}
|
121
|
+
break;
|
122
|
+
|
123
|
+
case Event.ONMOUSEWHEEL:
|
124
|
+
if (mouseWheelListeners != null) {
|
125
|
+
mouseWheelListeners.fireMouseWheelEvent(this, event);
|
126
|
+
}
|
127
|
+
break;
|
128
|
+
}
|
129
|
+
}
|
130
|
+
|
131
|
+
public void removeClickListener(ClickListener listener) {
|
132
|
+
if (clickListeners != null) {
|
133
|
+
clickListeners.remove(listener);
|
134
|
+
}
|
135
|
+
}
|
136
|
+
|
137
|
+
public void removeMouseListener(MouseListener listener) {
|
138
|
+
if (mouseListeners != null) {
|
139
|
+
mouseListeners.remove(listener);
|
140
|
+
}
|
141
|
+
}
|
142
|
+
|
143
|
+
public void removeMouseWheelListener(MouseWheelListener listener) {
|
144
|
+
if (mouseWheelListeners != null) {
|
145
|
+
mouseWheelListeners.remove(listener);
|
146
|
+
}
|
147
|
+
}
|
148
|
+
|
149
|
+
public void setHorizontalAlignment(HorizontalAlignmentConstant align) {
|
150
|
+
horzAlign = align;
|
151
|
+
DOM
|
152
|
+
.setStyleAttribute(getElement(), "textAlign", align.getTextAlignString());
|
153
|
+
}
|
154
|
+
|
155
|
+
public void setText(String text) {
|
156
|
+
DOM.setInnerText(getElement(), text);
|
157
|
+
}
|
158
|
+
|
159
|
+
public void setWordWrap(boolean wrap) {
|
160
|
+
DOM.setStyleAttribute(getElement(), "whiteSpace", wrap ? "normal"
|
161
|
+
: "nowrap");
|
162
|
+
}
|
163
|
+
}
|