mirror of
https://github.com/Eaglercraft-TeaVM-Fork/eagler-teavm.git
synced 2025-01-09 00:14:10 -08:00
Fix JSO dependencies
This commit is contained in:
parent
0064abeab7
commit
e717adcd84
|
@ -13,10 +13,18 @@
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package org.teavm.samples.benchmark.teavm;
|
package org.teavm.jso.browser;
|
||||||
|
|
||||||
|
import org.teavm.jso.JSBody;
|
||||||
import org.teavm.jso.JSObject;
|
import org.teavm.jso.JSObject;
|
||||||
|
|
||||||
public interface Performance extends JSObject {
|
public final class Performance implements JSObject {
|
||||||
double now();
|
private Performance() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@JSBody(params = {}, script = "return Performance.now();")
|
||||||
|
public static native double now();
|
||||||
|
|
||||||
|
@JSBody(params = {}, script = "return typeof(Performance) !== 'undefined';")
|
||||||
|
public static native boolean isSupported();
|
||||||
}
|
}
|
|
@ -19,7 +19,9 @@ import java.lang.annotation.Annotation;
|
||||||
import org.teavm.dependency.PluggableDependency;
|
import org.teavm.dependency.PluggableDependency;
|
||||||
import org.teavm.javascript.spi.GeneratedBy;
|
import org.teavm.javascript.spi.GeneratedBy;
|
||||||
import org.teavm.javascript.spi.InjectedBy;
|
import org.teavm.javascript.spi.InjectedBy;
|
||||||
import org.teavm.jso.plugin.JS;
|
import org.teavm.jso.JSBody;
|
||||||
|
import org.teavm.jso.JSObject;
|
||||||
|
import org.teavm.jso.browser.Window;
|
||||||
import org.teavm.platform.metadata.ClassResource;
|
import org.teavm.platform.metadata.ClassResource;
|
||||||
import org.teavm.platform.metadata.StaticFieldResource;
|
import org.teavm.platform.metadata.StaticFieldResource;
|
||||||
import org.teavm.platform.plugin.PlatformGenerator;
|
import org.teavm.platform.plugin.PlatformGenerator;
|
||||||
|
@ -32,19 +34,21 @@ public final class Platform {
|
||||||
private Platform() {
|
private Platform() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PlatformObject getPlatformObject(Object obj) {
|
@InjectedBy(PlatformGenerator.class)
|
||||||
return (PlatformObject) JS.marshall(obj);
|
public static native PlatformObject getPlatformObject(Object obj);
|
||||||
}
|
|
||||||
|
|
||||||
@GeneratedBy(PlatformGenerator.class)
|
@GeneratedBy(PlatformGenerator.class)
|
||||||
@PluggableDependency(PlatformGenerator.class)
|
@PluggableDependency(PlatformGenerator.class)
|
||||||
public static native Object clone(Object obj);
|
public static native Object clone(Object obj);
|
||||||
|
|
||||||
public static boolean isInstance(PlatformObject obj, PlatformClass cls) {
|
public static boolean isInstance(PlatformObject obj, PlatformClass cls) {
|
||||||
return obj != null && !JS.isUndefined(obj.getPlatformClass().getMetadata())
|
return obj != null && !isUndefined(obj.getPlatformClass().getMetadata())
|
||||||
&& isAssignable(obj.getPlatformClass(), cls);
|
&& isAssignable(obj.getPlatformClass(), cls);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@JSBody(params = "object", script = "return typeof object === 'undefined';")
|
||||||
|
private static native boolean isUndefined(JSObject object);
|
||||||
|
|
||||||
public static boolean isAssignable(PlatformClass from, PlatformClass to) {
|
public static boolean isAssignable(PlatformClass from, PlatformClass to) {
|
||||||
if (from == to) {
|
if (from == to) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -63,15 +67,15 @@ public final class Platform {
|
||||||
public static native Class<?> asJavaClass(PlatformObject obj);
|
public static native Class<?> asJavaClass(PlatformObject obj);
|
||||||
|
|
||||||
public static PlatformPrimitives getPrimitives() {
|
public static PlatformPrimitives getPrimitives() {
|
||||||
return (PlatformPrimitives) JS.getGlobal();
|
return (PlatformPrimitives) Window.current();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PlatformConsole getConsole() {
|
public static PlatformConsole getConsole() {
|
||||||
return (PlatformConsole) JS.getGlobal();
|
return (PlatformConsole) Window.current();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int nextObjectId() {
|
public static int nextObjectId() {
|
||||||
return ((PlatformHelper) JS.getGlobal()).nextId();
|
return ((PlatformHelper) Window.current()).nextId();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static <T> T newInstance(PlatformClass cls) {
|
public static <T> T newInstance(PlatformClass cls) {
|
||||||
|
@ -127,14 +131,14 @@ public final class Platform {
|
||||||
public static native int schedule(PlatformRunnable runnable, int timeout);
|
public static native int schedule(PlatformRunnable runnable, int timeout);
|
||||||
|
|
||||||
public static void killSchedule(int id) {
|
public static void killSchedule(int id) {
|
||||||
((PlatformHelper) JS.getGlobal()).killSchedule(id);
|
((PlatformHelper) Window.current()).killSchedule(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static <T> PlatformQueue<T> createQueue() {
|
public static <T> PlatformQueue<T> createQueue() {
|
||||||
return ((PlatformHelper) JS.getGlobal()).newQueue();
|
return ((PlatformHelper) Window.current()).newQueue();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PlatformString stringFromCharCode(int charCode) {
|
public static PlatformString stringFromCharCode(int charCode) {
|
||||||
return ((PlatformHelper) JS.getGlobal()).getStringClass().fromCharCode(charCode);
|
return ((PlatformHelper) Window.current()).getStringClass().fromCharCode(charCode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,6 +69,7 @@ public class PlatformGenerator implements Generator, Injector, DependencyPlugin
|
||||||
case "asJavaClass":
|
case "asJavaClass":
|
||||||
case "classFromResource":
|
case "classFromResource":
|
||||||
case "objectFromResource":
|
case "objectFromResource":
|
||||||
|
case "marshall":
|
||||||
context.writeExpr(context.getArgument(0));
|
context.writeExpr(context.getArgument(0));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,13 +22,12 @@ import org.jbox2d.collision.shapes.ShapeType;
|
||||||
import org.jbox2d.common.Vec2;
|
import org.jbox2d.common.Vec2;
|
||||||
import org.jbox2d.dynamics.Body;
|
import org.jbox2d.dynamics.Body;
|
||||||
import org.jbox2d.dynamics.Fixture;
|
import org.jbox2d.dynamics.Fixture;
|
||||||
import org.teavm.jso.browser.TimerHandler;
|
import org.teavm.jso.browser.Performance;
|
||||||
import org.teavm.jso.browser.Window;
|
import org.teavm.jso.browser.Window;
|
||||||
import org.teavm.jso.canvas.CanvasRenderingContext2D;
|
import org.teavm.jso.canvas.CanvasRenderingContext2D;
|
||||||
import org.teavm.jso.dom.html.HTMLCanvasElement;
|
import org.teavm.jso.dom.html.HTMLCanvasElement;
|
||||||
import org.teavm.jso.dom.html.HTMLDocument;
|
import org.teavm.jso.dom.html.HTMLDocument;
|
||||||
import org.teavm.jso.dom.html.HTMLElement;
|
import org.teavm.jso.dom.html.HTMLElement;
|
||||||
import org.teavm.jso.plugin.JS;
|
|
||||||
import org.teavm.samples.benchmark.Scene;
|
import org.teavm.samples.benchmark.Scene;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -36,11 +35,9 @@ import org.teavm.samples.benchmark.Scene;
|
||||||
* @author Alexey Andreev
|
* @author Alexey Andreev
|
||||||
*/
|
*/
|
||||||
public final class BenchmarkStarter {
|
public final class BenchmarkStarter {
|
||||||
private static Window window = (Window) JS.getGlobal();
|
private static HTMLDocument document = Window.current().getDocument();
|
||||||
private static HTMLDocument document = window.getDocument();
|
|
||||||
private static HTMLCanvasElement canvas = (HTMLCanvasElement) document.getElementById("benchmark-canvas");
|
private static HTMLCanvasElement canvas = (HTMLCanvasElement) document.getElementById("benchmark-canvas");
|
||||||
private static HTMLElement resultTableBody = document.getElementById("result-table-body");
|
private static HTMLElement resultTableBody = document.getElementById("result-table-body");
|
||||||
private static Performance performance = (Performance) JS.get(window, JS.wrap("performance"));
|
|
||||||
private static Scene scene = new Scene();
|
private static Scene scene = new Scene();
|
||||||
private static int currentSecond;
|
private static int currentSecond;
|
||||||
private static long startMillisecond;
|
private static long startMillisecond;
|
||||||
|
@ -55,9 +52,9 @@ public final class BenchmarkStarter {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void makeStep() {
|
private static void makeStep() {
|
||||||
double start = performance.now();
|
double start = Performance.now();
|
||||||
scene.calculate();
|
scene.calculate();
|
||||||
double end = performance.now();
|
double end = Performance.now();
|
||||||
int second = (int) ((System.currentTimeMillis() - startMillisecond) / 1000);
|
int second = (int) ((System.currentTimeMillis() - startMillisecond) / 1000);
|
||||||
if (second > currentSecond) {
|
if (second > currentSecond) {
|
||||||
HTMLElement row = document.createElement("tr");
|
HTMLElement row = document.createElement("tr");
|
||||||
|
@ -74,11 +71,7 @@ public final class BenchmarkStarter {
|
||||||
}
|
}
|
||||||
timeSpentCalculating += end - start;
|
timeSpentCalculating += end - start;
|
||||||
render();
|
render();
|
||||||
window.setTimeout(new TimerHandler() {
|
Window.setTimeout(() -> makeStep(), scene.timeUntilNextStep());
|
||||||
@Override public void onTimer() {
|
|
||||||
makeStep();
|
|
||||||
}
|
|
||||||
}, scene.timeUntilNextStep());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void render() {
|
private static void render() {
|
||||||
|
|
|
@ -20,12 +20,10 @@ import org.teavm.jso.browser.Window;
|
||||||
import org.teavm.jso.dom.html.HTMLButtonElement;
|
import org.teavm.jso.dom.html.HTMLButtonElement;
|
||||||
import org.teavm.jso.dom.html.HTMLDocument;
|
import org.teavm.jso.dom.html.HTMLDocument;
|
||||||
import org.teavm.jso.dom.html.HTMLElement;
|
import org.teavm.jso.dom.html.HTMLElement;
|
||||||
import org.teavm.jso.plugin.JS;
|
|
||||||
|
|
||||||
public final class Client {
|
public final class Client {
|
||||||
private static Window window = (Window) JS.getGlobal();
|
private static HTMLDocument document = Window.current().getDocument();
|
||||||
private static HTMLDocument document = window.getDocument();
|
private static HTMLButtonElement helloButton = document.getElementById("hello-button").cast();
|
||||||
private static HTMLButtonElement helloButton = (HTMLButtonElement) document.getElementById("hello-button");
|
|
||||||
private static HTMLElement responsePanel = document.getElementById("response-panel");
|
private static HTMLElement responsePanel = document.getElementById("response-panel");
|
||||||
private static HTMLElement thinkingPanel = document.getElementById("thinking-panel");
|
private static HTMLElement thinkingPanel = document.getElementById("thinking-panel");
|
||||||
|
|
||||||
|
@ -39,7 +37,7 @@ public final class Client {
|
||||||
private static void sayHello() {
|
private static void sayHello() {
|
||||||
helloButton.setDisabled(true);
|
helloButton.setDisabled(true);
|
||||||
thinkingPanel.getStyle().setProperty("display", "");
|
thinkingPanel.getStyle().setProperty("display", "");
|
||||||
final XMLHttpRequest xhr = window.createXMLHttpRequest();
|
XMLHttpRequest xhr = XMLHttpRequest.create();
|
||||||
xhr.setOnReadyStateChange(() -> {
|
xhr.setOnReadyStateChange(() -> {
|
||||||
if (xhr.getReadyState() == XMLHttpRequest.DONE) {
|
if (xhr.getReadyState() == XMLHttpRequest.DONE) {
|
||||||
receiveResponse(xhr.getResponseText());
|
receiveResponse(xhr.getResponseText());
|
||||||
|
|
|
@ -21,45 +21,42 @@ import org.teavm.jso.dom.html.HTMLButtonElement;
|
||||||
import org.teavm.jso.dom.html.HTMLDocument;
|
import org.teavm.jso.dom.html.HTMLDocument;
|
||||||
import org.teavm.jso.dom.html.HTMLElement;
|
import org.teavm.jso.dom.html.HTMLElement;
|
||||||
import org.teavm.jso.dom.html.HTMLInputElement;
|
import org.teavm.jso.dom.html.HTMLInputElement;
|
||||||
import org.teavm.jso.plugin.JS;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author Junji Takakura
|
* @author Junji Takakura
|
||||||
*/
|
*/
|
||||||
public final class Application {
|
public final class Application {
|
||||||
|
private static HTMLDocument document = Window.current().getDocument();
|
||||||
private static Window window = (Window) JS.getGlobal();
|
private static Storage storage = Window.current().getSessionStorage();
|
||||||
private static HTMLDocument document = window.getDocument();
|
|
||||||
private static Storage storage = window.getSessionStorage();
|
|
||||||
|
|
||||||
private Application() {
|
private Application() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
if (storage == null) {
|
if (storage == null) {
|
||||||
window.alert("storage is not supported.");
|
Window.alert("storage is not supported.");
|
||||||
}
|
}
|
||||||
|
|
||||||
HTMLButtonElement saveButton = (HTMLButtonElement) document.getElementById("save-button");
|
HTMLButtonElement saveButton = document.getElementById("save-button").cast();
|
||||||
saveButton.addEventListener("click", e -> {
|
saveButton.addEventListener("click", e -> {
|
||||||
String key = ((HTMLInputElement) document.getElementById("key")).getValue();
|
String key = document.getElementById("key").<HTMLInputElement>cast().getValue();
|
||||||
String value = ((HTMLInputElement) document.getElementById("value")).getValue();
|
String value = document.getElementById("value").<HTMLInputElement>cast().getValue();
|
||||||
|
|
||||||
if (key != null && key.length() > 0 && value != null && value.length() > 0) {
|
if (key != null && key.length() > 0 && value != null && value.length() > 0) {
|
||||||
storage.setItem(key, value);
|
storage.setItem(key, value);
|
||||||
draw();
|
draw();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
HTMLButtonElement deleteButton = (HTMLButtonElement) document.getElementById("delete-button");
|
HTMLButtonElement deleteButton = document.getElementById("delete-button").cast();
|
||||||
deleteButton.addEventListener("click", e -> {
|
deleteButton.addEventListener("click", e -> {
|
||||||
String key = ((HTMLInputElement) document.getElementById("key")).getValue();
|
String key = document.getElementById("key").<HTMLInputElement>cast().getValue();
|
||||||
if (key != null && key.length() > 0) {
|
if (key != null && key.length() > 0) {
|
||||||
storage.removeItem(key);
|
storage.removeItem(key);
|
||||||
draw();
|
draw();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
HTMLButtonElement deleteAllButton = (HTMLButtonElement) document.getElementById("delete-all-button");
|
HTMLButtonElement deleteAllButton = document.getElementById("delete-all-button").cast();
|
||||||
deleteAllButton.addEventListener("click", e -> {
|
deleteAllButton.addEventListener("click", e -> {
|
||||||
storage.clear();
|
storage.clear();
|
||||||
draw();
|
draw();
|
||||||
|
|
|
@ -22,28 +22,25 @@ import org.teavm.jso.dom.html.HTMLDocument;
|
||||||
import org.teavm.jso.dom.html.HTMLElement;
|
import org.teavm.jso.dom.html.HTMLElement;
|
||||||
import org.teavm.jso.dom.html.HTMLSourceElement;
|
import org.teavm.jso.dom.html.HTMLSourceElement;
|
||||||
import org.teavm.jso.dom.html.HTMLVideoElement;
|
import org.teavm.jso.dom.html.HTMLVideoElement;
|
||||||
import org.teavm.jso.plugin.JS;
|
|
||||||
|
|
||||||
public final class Player {
|
public final class Player {
|
||||||
|
private static HTMLDocument document = Window.current().getDocument();
|
||||||
private static Window window = (Window) JS.getGlobal();
|
|
||||||
private static HTMLDocument document = window.getDocument();
|
|
||||||
|
|
||||||
private Player() {
|
private Player() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
HTMLSourceElement sourceMp4 = (HTMLSourceElement) document.createElement("source");
|
HTMLSourceElement sourceMp4 = document.createElement("source").cast();
|
||||||
sourceMp4.setAttribute("id", "mp4");
|
sourceMp4.setAttribute("id", "mp4");
|
||||||
sourceMp4.setSrc("http://media.w3.org/2010/05/sintel/trailer.mp4");
|
sourceMp4.setSrc("http://media.w3.org/2010/05/sintel/trailer.mp4");
|
||||||
sourceMp4.setAttribute("type", "video/mp4");
|
sourceMp4.setAttribute("type", "video/mp4");
|
||||||
|
|
||||||
HTMLSourceElement sourceWebm = (HTMLSourceElement) document.createElement("source");
|
HTMLSourceElement sourceWebm = document.createElement("source").cast();
|
||||||
sourceWebm.setAttribute("id", "webm");
|
sourceWebm.setAttribute("id", "webm");
|
||||||
sourceWebm.setSrc("http://media.w3.org/2010/05/sintel/trailer.webm");
|
sourceWebm.setSrc("http://media.w3.org/2010/05/sintel/trailer.webm");
|
||||||
sourceWebm.setAttribute("type", "video/webm");
|
sourceWebm.setAttribute("type", "video/webm");
|
||||||
|
|
||||||
HTMLSourceElement sourceOgv = (HTMLSourceElement) document.createElement("source");
|
HTMLSourceElement sourceOgv = document.createElement("source").cast();
|
||||||
sourceOgv.setAttribute("id", "ogv");
|
sourceOgv.setAttribute("id", "ogv");
|
||||||
sourceOgv.setSrc("http://media.w3.org/2010/05/sintel/trailer.ogv");
|
sourceOgv.setSrc("http://media.w3.org/2010/05/sintel/trailer.ogv");
|
||||||
sourceOgv.setAttribute("type", "video/ogg");
|
sourceOgv.setAttribute("type", "video/ogg");
|
||||||
|
@ -51,7 +48,7 @@ public final class Player {
|
||||||
HTMLElement p = document.createElement("p");
|
HTMLElement p = document.createElement("p");
|
||||||
p.appendChild(document.createTextNode("Your user agent does not support the HTML5 Video element."));
|
p.appendChild(document.createTextNode("Your user agent does not support the HTML5 Video element."));
|
||||||
|
|
||||||
HTMLVideoElement video = (HTMLVideoElement) document.createElement("video");
|
HTMLVideoElement video = document.createElement("video").cast();
|
||||||
video.setAttribute("id", "video");
|
video.setAttribute("id", "video");
|
||||||
video.setControls(true);
|
video.setControls(true);
|
||||||
video.setPreload("none");
|
video.setPreload("none");
|
||||||
|
@ -65,61 +62,61 @@ public final class Player {
|
||||||
HTMLElement divVideo = document.createElement("div");
|
HTMLElement divVideo = document.createElement("div");
|
||||||
divVideo.appendChild(video);
|
divVideo.appendChild(video);
|
||||||
|
|
||||||
HTMLButtonElement loadButton = (HTMLButtonElement) document.createElement("button");
|
HTMLButtonElement loadButton = document.createElement("button").cast();
|
||||||
loadButton.appendChild(document.createTextNode("load()"));
|
loadButton.appendChild(document.createTextNode("load()"));
|
||||||
loadButton.addEventListener("click", evt -> video.load());
|
loadButton.addEventListener("click", evt -> video.load());
|
||||||
|
|
||||||
HTMLButtonElement playButton = (HTMLButtonElement) document.createElement("button");
|
HTMLButtonElement playButton = document.createElement("button").cast();
|
||||||
playButton.appendChild(document.createTextNode("play()"));
|
playButton.appendChild(document.createTextNode("play()"));
|
||||||
playButton.addEventListener("click", evt -> video.play());
|
playButton.addEventListener("click", evt -> video.play());
|
||||||
|
|
||||||
HTMLButtonElement pauseButton = (HTMLButtonElement) document.createElement("button");
|
HTMLButtonElement pauseButton = document.createElement("button").cast();
|
||||||
pauseButton.appendChild(document.createTextNode("pause()"));
|
pauseButton.appendChild(document.createTextNode("pause()"));
|
||||||
pauseButton.addEventListener("click", evt -> video.pause());
|
pauseButton.addEventListener("click", evt -> video.pause());
|
||||||
|
|
||||||
HTMLButtonElement currentTimePlusButton = (HTMLButtonElement) document.createElement("button");
|
HTMLButtonElement currentTimePlusButton = document.createElement("button").cast();
|
||||||
currentTimePlusButton.appendChild(document.createTextNode("currentTime+=10"));
|
currentTimePlusButton.appendChild(document.createTextNode("currentTime+=10"));
|
||||||
currentTimePlusButton.addEventListener("click", evt -> video.setCurrentTime(video.getCurrentTime() + 10));
|
currentTimePlusButton.addEventListener("click", evt -> video.setCurrentTime(video.getCurrentTime() + 10));
|
||||||
|
|
||||||
HTMLButtonElement currentTimeMinusButton = (HTMLButtonElement) document.createElement("button");
|
HTMLButtonElement currentTimeMinusButton = document.createElement("button").cast();
|
||||||
currentTimeMinusButton.appendChild(document.createTextNode("currentTime-=10"));
|
currentTimeMinusButton.appendChild(document.createTextNode("currentTime-=10"));
|
||||||
currentTimeMinusButton.addEventListener("click", evt -> video.setCurrentTime(video.getCurrentTime() - 10));
|
currentTimeMinusButton.addEventListener("click", evt -> video.setCurrentTime(video.getCurrentTime() - 10));
|
||||||
|
|
||||||
HTMLButtonElement currentTime50Button = (HTMLButtonElement) document.createElement("button");
|
HTMLButtonElement currentTime50Button = document.createElement("button").cast();
|
||||||
currentTime50Button.appendChild(document.createTextNode("currentTime=50"));
|
currentTime50Button.appendChild(document.createTextNode("currentTime=50"));
|
||||||
currentTime50Button.addEventListener("click", evt -> video.setCurrentTime(50));
|
currentTime50Button.addEventListener("click", evt -> video.setCurrentTime(50));
|
||||||
|
|
||||||
HTMLButtonElement playbackRateIncrementButton = (HTMLButtonElement) document.createElement("button");
|
HTMLButtonElement playbackRateIncrementButton = document.createElement("button").cast();
|
||||||
playbackRateIncrementButton.appendChild(document.createTextNode("playbackRate++"));
|
playbackRateIncrementButton.appendChild(document.createTextNode("playbackRate++"));
|
||||||
playbackRateIncrementButton.addEventListener("click", evt -> video.setPlaybackRate(
|
playbackRateIncrementButton.addEventListener("click", evt -> video.setPlaybackRate(
|
||||||
video.getPlaybackRate() + 1));
|
video.getPlaybackRate() + 1));
|
||||||
|
|
||||||
HTMLButtonElement playbackRateDecrementButton = (HTMLButtonElement) document.createElement("button");
|
HTMLButtonElement playbackRateDecrementButton = document.createElement("button").cast();
|
||||||
playbackRateDecrementButton.appendChild(document.createTextNode("playbackRate--"));
|
playbackRateDecrementButton.appendChild(document.createTextNode("playbackRate--"));
|
||||||
playbackRateDecrementButton.addEventListener("click", evt -> video.setPlaybackRate(
|
playbackRateDecrementButton.addEventListener("click", evt -> video.setPlaybackRate(
|
||||||
video.getPlaybackRate() - 1));
|
video.getPlaybackRate() - 1));
|
||||||
|
|
||||||
HTMLButtonElement playbackRatePlusButton = (HTMLButtonElement) document.createElement("button");
|
HTMLButtonElement playbackRatePlusButton = document.createElement("button").cast();
|
||||||
playbackRatePlusButton.appendChild(document.createTextNode("playbackRate+=0.1"));
|
playbackRatePlusButton.appendChild(document.createTextNode("playbackRate+=0.1"));
|
||||||
playbackRatePlusButton.addEventListener("click", evt -> video.setPlaybackRate(video.getPlaybackRate() + 0.1));
|
playbackRatePlusButton.addEventListener("click", evt -> video.setPlaybackRate(video.getPlaybackRate() + 0.1));
|
||||||
|
|
||||||
HTMLButtonElement playbackRateMinusButton = (HTMLButtonElement) document.createElement("button");
|
HTMLButtonElement playbackRateMinusButton = document.createElement("button").cast();
|
||||||
playbackRateMinusButton.appendChild(document.createTextNode("playbackRate-=0.1"));
|
playbackRateMinusButton.appendChild(document.createTextNode("playbackRate-=0.1"));
|
||||||
playbackRateMinusButton.addEventListener("click", evt -> video.setPlaybackRate(video.getPlaybackRate() - 0.1));
|
playbackRateMinusButton.addEventListener("click", evt -> video.setPlaybackRate(video.getPlaybackRate() - 0.1));
|
||||||
|
|
||||||
HTMLButtonElement volumePlusButton = (HTMLButtonElement) document.createElement("button");
|
HTMLButtonElement volumePlusButton = document.createElement("button").cast();
|
||||||
volumePlusButton.appendChild(document.createTextNode("volume+=0.1"));
|
volumePlusButton.appendChild(document.createTextNode("volume+=0.1"));
|
||||||
volumePlusButton.addEventListener("click", evt -> video.setVolume(video.getVolume() + 0.1f));
|
volumePlusButton.addEventListener("click", evt -> video.setVolume(video.getVolume() + 0.1f));
|
||||||
|
|
||||||
HTMLButtonElement volumeMinusButton = (HTMLButtonElement) document.createElement("button");
|
HTMLButtonElement volumeMinusButton = document.createElement("button").cast();
|
||||||
volumeMinusButton.appendChild(document.createTextNode("volume-=0.1"));
|
volumeMinusButton.appendChild(document.createTextNode("volume-=0.1"));
|
||||||
volumeMinusButton.addEventListener("click", evt -> video.setVolume(video.getVolume() - 0.1f));
|
volumeMinusButton.addEventListener("click", evt -> video.setVolume(video.getVolume() - 0.1f));
|
||||||
|
|
||||||
HTMLButtonElement muteButton = (HTMLButtonElement) document.createElement("button");
|
HTMLButtonElement muteButton = document.createElement("button").cast();
|
||||||
muteButton.appendChild(document.createTextNode("muted=true"));
|
muteButton.appendChild(document.createTextNode("muted=true"));
|
||||||
muteButton.addEventListener("click", evt -> video.setMuted(true));
|
muteButton.addEventListener("click", evt -> video.setMuted(true));
|
||||||
|
|
||||||
HTMLButtonElement unmuteButton = (HTMLButtonElement) document.createElement("button");
|
HTMLButtonElement unmuteButton = document.createElement("button").cast();
|
||||||
unmuteButton.appendChild(document.createTextNode("muted=false"));
|
unmuteButton.appendChild(document.createTextNode("muted=false"));
|
||||||
unmuteButton.addEventListener("click", evt -> video.setMuted(false));
|
unmuteButton.addEventListener("click", evt -> video.setMuted(false));
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,6 @@ import static org.junit.Assert.*;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.teavm.jso.JSBody;
|
import org.teavm.jso.JSBody;
|
||||||
import org.teavm.jso.JSObject;
|
import org.teavm.jso.JSObject;
|
||||||
import org.teavm.jso.plugin.JS;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -28,14 +27,10 @@ import org.teavm.jso.plugin.JS;
|
||||||
public class JSOTest {
|
public class JSOTest {
|
||||||
@Test
|
@Test
|
||||||
public void complexConstructorParenthesized() {
|
public void complexConstructorParenthesized() {
|
||||||
RegExp regexp = getWindow().createRegExp(".");
|
RegExp regexp = RegExp.create();
|
||||||
assertEquals(".", regexp.getSource());
|
assertEquals(".", regexp.getSource());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Window getWindow() {
|
|
||||||
return (Window)JS.getGlobal();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void externalMethodsResolved() {
|
public void externalMethodsResolved() {
|
||||||
int r = jsMethod(new Callback() {
|
int r = jsMethod(new Callback() {
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
*/
|
*/
|
||||||
package org.teavm.jso.test;
|
package org.teavm.jso.test;
|
||||||
|
|
||||||
|
import org.teavm.jso.JSBody;
|
||||||
import org.teavm.jso.JSObject;
|
import org.teavm.jso.JSObject;
|
||||||
import org.teavm.jso.JSProperty;
|
import org.teavm.jso.JSProperty;
|
||||||
|
|
||||||
|
@ -22,7 +23,10 @@ import org.teavm.jso.JSProperty;
|
||||||
*
|
*
|
||||||
* @author Alexey Andreev
|
* @author Alexey Andreev
|
||||||
*/
|
*/
|
||||||
public interface RegExp extends JSObject {
|
public abstract class RegExp implements JSObject {
|
||||||
@JSProperty
|
@JSProperty
|
||||||
String getSource();
|
public abstract String getSource();
|
||||||
|
|
||||||
|
@JSBody(params = {}, script = "return new RegExp();")
|
||||||
|
public static native RegExp create();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2015 Alexey Andreev.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package org.teavm.jso.test;
|
|
||||||
|
|
||||||
import org.teavm.jso.JSConstructor;
|
|
||||||
import org.teavm.jso.JSObject;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @author Alexey Andreev
|
|
||||||
*/
|
|
||||||
public interface Window extends JSObject {
|
|
||||||
@JSConstructor("RegExp")
|
|
||||||
RegExp createRegExp(String regex);
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user