diff --git a/.gitignore b/.gitignore index 0f0d9b0..cb38c24 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,6 @@ webcam/target webcam-demo/target webcam-demo/src/main/webapp/VAADIN/widgetsets + +.idea +*.iml \ No newline at end of file diff --git a/README.md b/README.md index 4e316ea..06cdde1 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# Webcam Add-on for Vaadin 7 +# Webcam Add-on for Vaadin 8 -Webcam is an HTML5 webcam component for Vaadin 7. +Webcam is an HTML5 webcam component for Vaadin 8. ## Online demo @@ -14,10 +14,10 @@ Official releases of this add-on will later be available at Vaadin Directory. Fo ## Building and running demo -- git clone https://github.com/tehapo/webcam.git -- mvn clean install -- cd demo -- mvn jetty:run +- `git clone https://github.com/tehapo/webcam.git` +- `mvn clean install` +- `cd webcam-demo` +- `mvn jetty:run` To see the demo, navigate to http://localhost:8080/ diff --git a/pom.xml b/pom.xml index f024400..bd85f7a 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.vaadin.teemu webcam-root pom - 0.3.0 + 0.3.2-SNAPSHOT Webcam Add-on Root Project diff --git a/webcam-demo/pom.xml b/webcam-demo/pom.xml index 5dcbfe1..dfff4e7 100644 --- a/webcam-demo/pom.xml +++ b/webcam-demo/pom.xml @@ -5,12 +5,12 @@ org.vaadin.teemu webcam-demo war - 0.3.0 + 0.3.2-SNAPSHOT Webcam Add-on Demo UTF-8 - 7.0.7 + 8.0.5 ${vaadin.version} diff --git a/webcam-demo/src/main/webapp/VAADIN/themes/demo/styles.scss b/webcam-demo/src/main/webapp/VAADIN/themes/demo/styles.scss index 263af35..bc573ab 100644 --- a/webcam-demo/src/main/webapp/VAADIN/themes/demo/styles.scss +++ b/webcam-demo/src/main/webapp/VAADIN/themes/demo/styles.scss @@ -1,4 +1,4 @@ -@import "../reindeer/reindeer.scss"; +@import "../valo/valo.scss"; $blue: #00b4f0; $gray: #d1d1cf; @@ -35,8 +35,8 @@ $darkgreen: darken($green, 30%); // Prefix all selectors in your theme with .demo .demo { - // Include reindeer theme styles in your theme - @include reindeer; + // Include valo theme styles in your theme + @include valo; // You can style your demo app right here .demoContentLayout { diff --git a/webcam/pom.xml b/webcam/pom.xml index fb00e57..77ab203 100644 --- a/webcam/pom.xml +++ b/webcam/pom.xml @@ -5,12 +5,12 @@ org.vaadin.teemu webcam jar - 0.3.0 + 0.3.2-SNAPSHOT Webcam UTF-8 - 7.0.7 + 8.0.5 ${vaadin.version} diff --git a/webcam/src/main/java/org/vaadin/teemu/webcam/Webcam.java b/webcam/src/main/java/org/vaadin/teemu/webcam/Webcam.java index ad789f1..cbb1913 100644 --- a/webcam/src/main/java/org/vaadin/teemu/webcam/Webcam.java +++ b/webcam/src/main/java/org/vaadin/teemu/webcam/Webcam.java @@ -75,6 +75,10 @@ public void capture() { getRpcProxy(WebcamClientRpc.class).capture(); } + public void stopStream() { + getRpcProxy(WebcamClientRpc.class).stopStream(); + } + protected OutputStream getOutputStream(String filename, String mimeType) { if (receiver != null) { return receiver.receiveUpload(filename, mimeType); diff --git a/webcam/src/main/java/org/vaadin/teemu/webcam/client/WebcamClientRpc.java b/webcam/src/main/java/org/vaadin/teemu/webcam/client/WebcamClientRpc.java index f2269a5..132b3ab 100644 --- a/webcam/src/main/java/org/vaadin/teemu/webcam/client/WebcamClientRpc.java +++ b/webcam/src/main/java/org/vaadin/teemu/webcam/client/WebcamClientRpc.java @@ -9,4 +9,9 @@ public interface WebcamClientRpc extends ClientRpc { */ public void capture(); + /** + * Passes the command to stop all tracks on the camera stream + */ + public void stopStream(); + } \ No newline at end of file diff --git a/webcam/src/main/java/org/vaadin/teemu/webcam/client/WebcamConnector.java b/webcam/src/main/java/org/vaadin/teemu/webcam/client/WebcamConnector.java index ba1acc5..6f2f427 100644 --- a/webcam/src/main/java/org/vaadin/teemu/webcam/client/WebcamConnector.java +++ b/webcam/src/main/java/org/vaadin/teemu/webcam/client/WebcamConnector.java @@ -37,6 +37,11 @@ public void capture() { // Commanded by the server-side component. captureNow(); } + + @Override + public void stopStream() { + getWidget().stopSteam(); + } }); } diff --git a/webcam/src/main/java/org/vaadin/teemu/webcam/client/WebcamStream.java b/webcam/src/main/java/org/vaadin/teemu/webcam/client/WebcamStream.java index bd91df4..1bc6a3f 100644 --- a/webcam/src/main/java/org/vaadin/teemu/webcam/client/WebcamStream.java +++ b/webcam/src/main/java/org/vaadin/teemu/webcam/client/WebcamStream.java @@ -11,7 +11,12 @@ protected WebcamStream() { // @formatter:off public final native void stop() /*-{ - this.stop(); + for (var i = 0; i < this.getTracks().length; i++) { + var track = this.getTracks()[i]; + if(track !== null) { + track.stop(); + } + } }-*/; // @formatter:on diff --git a/webcam/src/main/java/org/vaadin/teemu/webcam/client/WebcamWidget.java b/webcam/src/main/java/org/vaadin/teemu/webcam/client/WebcamWidget.java index 3d09676..1063760 100644 --- a/webcam/src/main/java/org/vaadin/teemu/webcam/client/WebcamWidget.java +++ b/webcam/src/main/java/org/vaadin/teemu/webcam/client/WebcamWidget.java @@ -45,6 +45,13 @@ private Element getVideoElement() { return video.getElement(); } + + protected void stopSteam() { + if (stream != null) { + stream.stop(); + } + } + public void setClickListener(EventListener listener) { if (video != null) { DOM.setEventListener(video.getElement(), listener); @@ -54,9 +61,7 @@ public void setClickListener(EventListener listener) { @Override protected void onUnload() { super.onUnload(); - if (stream != null) { - stream.stop(); - } + stopSteam(); } // @formatter:off