mirror of
https://github.com/Eaglercraft-TeaVM-Fork/eagler-teavm.git
synced 2024-12-22 16:14:10 -08:00
Adds HTML5 Video Demo Application
This commit is contained in:
parent
ec4e4a9771
commit
14a6c099d9
|
@ -32,5 +32,6 @@
|
|||
<modules>
|
||||
<module>teavm-samples-hello</module>
|
||||
<module>teavm-samples-benchmark</module>
|
||||
<module>teavm-samples-video</module>
|
||||
</modules>
|
||||
</project>
|
110
teavm-samples/teavm-samples-video/pom.xml
Normal file
110
teavm-samples/teavm-samples-video/pom.xml
Normal file
|
@ -0,0 +1,110 @@
|
|||
<!--
|
||||
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.
|
||||
-->
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<parent>
|
||||
<groupId>org.teavm</groupId>
|
||||
<artifactId>teavm-samples</artifactId>
|
||||
<version>0.3.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>teavm-samples-video</artifactId>
|
||||
|
||||
<packaging>war</packaging>
|
||||
|
||||
<name>TeaVM HTML5 video web application</name>
|
||||
<description>A sample application that shows HTML5 video implementation for TeaVM</description>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.teavm</groupId>
|
||||
<artifactId>teavm-classlib</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.teavm</groupId>
|
||||
<artifactId>teavm-jso</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.teavm</groupId>
|
||||
<artifactId>teavm-dom</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.servlet</groupId>
|
||||
<artifactId>javax.servlet-api</artifactId>
|
||||
<version>3.1.0</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<artifactId>maven-war-plugin</artifactId>
|
||||
<version>2.4</version>
|
||||
<configuration>
|
||||
<webResources>
|
||||
<resource>
|
||||
<directory>${project.build.directory}/generated/js</directory>
|
||||
</resource>
|
||||
</webResources>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.teavm</groupId>
|
||||
<artifactId>teavm-maven-plugin</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>web-client</id>
|
||||
<phase>prepare-package</phase>
|
||||
<goals>
|
||||
<goal>build-javascript</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<targetDirectory>${project.build.directory}/generated/js/teavm</targetDirectory>
|
||||
<mainClass>org.teavm.samples.video.Player</mainClass>
|
||||
<runtime>SEPARATE</runtime>
|
||||
<minifying>false</minifying>
|
||||
<debugInformationGenerated>true</debugInformationGenerated>
|
||||
<sourceMapsGenerated>true</sourceMapsGenerated>
|
||||
<sourceFilesCopied>true</sourceFilesCopied>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||
<configuration>
|
||||
<configLocation>../../checkstyle.xml</configLocation>
|
||||
<propertyExpansion>config_loc=${basedir}/../..</propertyExpansion>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-source-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-javadoc-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
|
@ -0,0 +1,221 @@
|
|||
/*
|
||||
* Copyright 2014 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.samples.video;
|
||||
|
||||
import org.teavm.dom.browser.Window;
|
||||
import org.teavm.dom.events.Event;
|
||||
import org.teavm.dom.events.EventListener;
|
||||
import org.teavm.dom.html.HTMLBodyElement;
|
||||
import org.teavm.dom.html.HTMLButtonElement;
|
||||
import org.teavm.dom.html.HTMLDocument;
|
||||
import org.teavm.dom.html.HTMLElement;
|
||||
import org.teavm.dom.html.HTMLSourceElement;
|
||||
import org.teavm.dom.html.HTMLVideoElement;
|
||||
import org.teavm.jso.JS;
|
||||
|
||||
public final class Player {
|
||||
|
||||
private static Window window = (Window)JS.getGlobal();
|
||||
private static HTMLDocument document = window.getDocument();
|
||||
|
||||
private Player() {
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
HTMLSourceElement sourceMp4 = (HTMLSourceElement)document.createElement("source");
|
||||
sourceMp4.setAttribute("id", "mp4");
|
||||
sourceMp4.setSrc("http://media.w3.org/2010/05/sintel/trailer.mp4");
|
||||
sourceMp4.setAttribute("type", "video/mp4");
|
||||
|
||||
HTMLSourceElement sourceWebm = (HTMLSourceElement)document.createElement("source");
|
||||
sourceWebm.setAttribute("id", "webm");
|
||||
sourceWebm.setSrc("http://media.w3.org/2010/05/sintel/trailer.webm");
|
||||
sourceWebm.setAttribute("type", "video/webm");
|
||||
|
||||
HTMLSourceElement sourceOgv = (HTMLSourceElement)document.createElement("source");
|
||||
sourceOgv.setAttribute("id", "ogv");
|
||||
sourceOgv.setSrc("http://media.w3.org/2010/05/sintel/trailer.ogv");
|
||||
sourceOgv.setAttribute("type", "video/ogg");
|
||||
|
||||
HTMLElement p = document.createElement("p");
|
||||
p.appendChild(document.createTextNode("Your user agent does not support the HTML5 Video element."));
|
||||
|
||||
final HTMLVideoElement video = (HTMLVideoElement)document.createElement("video");
|
||||
video.setAttribute("id", "video");
|
||||
video.setControls(true);
|
||||
video.setPreload("none");
|
||||
video.setMediaGroup("myVideoGroup");
|
||||
video.setPoster("http://media.w3.org/2010/05/sintel/poster.png");
|
||||
video.appendChild(sourceMp4);
|
||||
video.appendChild(sourceWebm);
|
||||
video.appendChild(sourceOgv);
|
||||
video.appendChild(p);
|
||||
|
||||
HTMLElement divVideo = document.createElement("div");
|
||||
divVideo.appendChild(video);
|
||||
|
||||
HTMLButtonElement loadButton = (HTMLButtonElement)document.createElement("button");
|
||||
loadButton.appendChild(document.createTextNode("load()"));
|
||||
loadButton.addEventListener("click", new EventListener() {
|
||||
@Override
|
||||
public void handleEvent(Event evt) {
|
||||
video.load();
|
||||
}
|
||||
});
|
||||
|
||||
HTMLButtonElement playButton = (HTMLButtonElement)document.createElement("button");
|
||||
playButton.appendChild(document.createTextNode("play()"));
|
||||
playButton.addEventListener("click", new EventListener() {
|
||||
@Override
|
||||
public void handleEvent(Event evt) {
|
||||
video.play();
|
||||
}
|
||||
});
|
||||
|
||||
HTMLButtonElement pauseButton = (HTMLButtonElement)document.createElement("button");
|
||||
pauseButton.appendChild(document.createTextNode("pause()"));
|
||||
pauseButton.addEventListener("click", new EventListener() {
|
||||
@Override
|
||||
public void handleEvent(Event evt) {
|
||||
video.pause();
|
||||
}
|
||||
});
|
||||
|
||||
HTMLButtonElement currentTimePlusButton = (HTMLButtonElement)document.createElement("button");
|
||||
currentTimePlusButton.appendChild(document.createTextNode("currentTime+=10"));
|
||||
currentTimePlusButton.addEventListener("click", new EventListener() {
|
||||
@Override
|
||||
public void handleEvent(Event evt) {
|
||||
video.getController().setCurrentTime(video.getController().getCurrentTime() + 10);
|
||||
}
|
||||
});
|
||||
|
||||
HTMLButtonElement currentTimeMinusButton = (HTMLButtonElement)document.createElement("button");
|
||||
currentTimeMinusButton.appendChild(document.createTextNode("currentTime-=10"));
|
||||
currentTimeMinusButton.addEventListener("click", new EventListener() {
|
||||
@Override
|
||||
public void handleEvent(Event evt) {
|
||||
video.getController().setCurrentTime(video.getController().getCurrentTime() - 10);
|
||||
}
|
||||
});
|
||||
|
||||
HTMLButtonElement currentTime50Button = (HTMLButtonElement)document.createElement("button");
|
||||
currentTime50Button.appendChild(document.createTextNode("currentTime=50"));
|
||||
currentTime50Button.addEventListener("click", new EventListener() {
|
||||
@Override
|
||||
public void handleEvent(Event evt) {
|
||||
video.getController().setCurrentTime(50);
|
||||
}
|
||||
});
|
||||
|
||||
HTMLButtonElement playbackRateIncrementButton = (HTMLButtonElement)document.createElement("button");
|
||||
playbackRateIncrementButton.appendChild(document.createTextNode("playbackRate++"));
|
||||
playbackRateIncrementButton.addEventListener("click", new EventListener() {
|
||||
@Override
|
||||
public void handleEvent(Event evt) {
|
||||
video.getController().setPlaybackRate(video.getController().getPlaybackRate() + 1);
|
||||
}
|
||||
});
|
||||
|
||||
HTMLButtonElement playbackRateDecrementButton = (HTMLButtonElement)document.createElement("button");
|
||||
playbackRateDecrementButton.appendChild(document.createTextNode("playbackRate--"));
|
||||
playbackRateDecrementButton.addEventListener("click", new EventListener() {
|
||||
@Override
|
||||
public void handleEvent(Event evt) {
|
||||
video.getController().setPlaybackRate(video.getController().getPlaybackRate() - 1);
|
||||
}
|
||||
});
|
||||
|
||||
HTMLButtonElement playbackRatePlusButton = (HTMLButtonElement)document.createElement("button");
|
||||
playbackRatePlusButton.appendChild(document.createTextNode("playbackRate+=0.1"));
|
||||
playbackRatePlusButton.addEventListener("click", new EventListener() {
|
||||
@Override
|
||||
public void handleEvent(Event evt) {
|
||||
video.getController().setPlaybackRate(video.getController().getPlaybackRate() + 0.1);
|
||||
}
|
||||
});
|
||||
|
||||
HTMLButtonElement playbackRateMinusButton = (HTMLButtonElement)document.createElement("button");
|
||||
playbackRateMinusButton.appendChild(document.createTextNode("playbackRate-=0.1"));
|
||||
playbackRateMinusButton.addEventListener("click", new EventListener() {
|
||||
@Override
|
||||
public void handleEvent(Event evt) {
|
||||
video.getController().setPlaybackRate(video.getController().getPlaybackRate() - 0.1);
|
||||
}
|
||||
});
|
||||
|
||||
HTMLButtonElement volumePlusButton = (HTMLButtonElement)document.createElement("button");
|
||||
volumePlusButton.appendChild(document.createTextNode("volume+=0.1"));
|
||||
volumePlusButton.addEventListener("click", new EventListener() {
|
||||
@Override
|
||||
public void handleEvent(Event evt) {
|
||||
video.getController().setVolume(video.getController().getVolume() + 0.1f);
|
||||
}
|
||||
});
|
||||
|
||||
HTMLButtonElement volumeMinusButton = (HTMLButtonElement)document.createElement("button");
|
||||
volumeMinusButton.appendChild(document.createTextNode("volume-=0.1"));
|
||||
volumeMinusButton.addEventListener("click", new EventListener() {
|
||||
@Override
|
||||
public void handleEvent(Event evt) {
|
||||
video.getController().setVolume(video.getController().getVolume() - 0.1f);
|
||||
}
|
||||
});
|
||||
|
||||
HTMLButtonElement muteButton = (HTMLButtonElement)document.createElement("button");
|
||||
muteButton.appendChild(document.createTextNode("muted=true"));
|
||||
muteButton.addEventListener("click", new EventListener() {
|
||||
@Override
|
||||
public void handleEvent(Event evt) {
|
||||
video.getController().setMuted(true);
|
||||
}
|
||||
});
|
||||
|
||||
HTMLButtonElement unmuteButton = (HTMLButtonElement)document.createElement("button");
|
||||
unmuteButton.appendChild(document.createTextNode("muted=false"));
|
||||
unmuteButton.addEventListener("click", new EventListener() {
|
||||
@Override
|
||||
public void handleEvent(Event evt) {
|
||||
video.getController().setMuted(false);
|
||||
}
|
||||
});
|
||||
|
||||
HTMLElement divButtons = document.createElement("div");
|
||||
divButtons.setAttribute("id", "buttons");
|
||||
divButtons.appendChild(loadButton);
|
||||
divButtons.appendChild(playButton);
|
||||
divButtons.appendChild(pauseButton);
|
||||
divButtons.appendChild(document.createElement("br"));
|
||||
divButtons.appendChild(currentTimePlusButton);
|
||||
divButtons.appendChild(currentTimeMinusButton);
|
||||
divButtons.appendChild(currentTime50Button);
|
||||
divButtons.appendChild(document.createElement("br"));
|
||||
divButtons.appendChild(playbackRateIncrementButton);
|
||||
divButtons.appendChild(playbackRateDecrementButton);
|
||||
divButtons.appendChild(playbackRatePlusButton);
|
||||
divButtons.appendChild(playbackRateMinusButton);
|
||||
divButtons.appendChild(document.createElement("br"));
|
||||
divButtons.appendChild(volumePlusButton);
|
||||
divButtons.appendChild(volumeMinusButton);
|
||||
divButtons.appendChild(muteButton);
|
||||
divButtons.appendChild(unmuteButton);
|
||||
|
||||
HTMLBodyElement body = document.getBody();
|
||||
body.appendChild(divVideo);
|
||||
body.appendChild(divButtons);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
|
||||
version="3.0">
|
||||
</web-app>
|
28
teavm-samples/teavm-samples-video/src/main/webapp/index.html
Normal file
28
teavm-samples/teavm-samples-video/src/main/webapp/index.html
Normal file
|
@ -0,0 +1,28 @@
|
|||
<!--
|
||||
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.
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>HTML5 Video web application</title>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
|
||||
<script type="text/javascript" charset="utf-8" src="teavm/runtime.js"></script>
|
||||
<script type="text/javascript" charset="utf-8" src="teavm/classes.js"></script>
|
||||
<link href="style.css" rel="stylesheet" type="text/css">
|
||||
</head>
|
||||
<body onload="main()">
|
||||
<h1>HTML5 Video web application</h1>
|
||||
</body>
|
||||
</html>
|
12
teavm-samples/teavm-samples-video/src/main/webapp/style.css
Normal file
12
teavm-samples/teavm-samples-video/src/main/webapp/style.css
Normal file
|
@ -0,0 +1,12 @@
|
|||
video {
|
||||
border: 1px solid black;
|
||||
padding: 0; margin: 0;
|
||||
width: 427px;
|
||||
height: 240px;
|
||||
background-color: black;
|
||||
margin: auto;
|
||||
float: left;
|
||||
}
|
||||
#buttons {
|
||||
text-align: center;
|
||||
}
|
Loading…
Reference in New Issue
Block a user