Author: solomax
Date: Wed Jan 22 02:57:15 2014
New Revision: 1560239
URL: http://svn.apache.org/r1560239
Log:
[OPENMEETINGS-870] web.only target includes screenshare.vm;
RecordingPage is added;
Added:
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/RecordingPage.html
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/RecordingPage.java
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.html
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.java
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/VideoPlayer.html
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/VideoPlayer.java
Modified:
openmeetings/trunk/singlewebapp/build.xml
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/Application.java
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/WebSession.java
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.html
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
Modified: openmeetings/trunk/singlewebapp/build.xml
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/build.xml?rev=1560239&r1=1560238&r2=1560239&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/build.xml (original)
+++ openmeetings/trunk/singlewebapp/build.xml Wed Jan 22 02:57:15 2014
@@ -276,7 +276,15 @@
</target>
<!-- Copy any resource or configuration files -->
- <target name="resources">
+ <target name="vmresources">
+ <copy todir="${main.out.dir}" includeEmptyDirs="yes">
+ <fileset dir="${src.base.dir}">
+ <include name="**/*.vm" />
+ </fileset>
+ </copy>
+ </target>
+
+ <target name="resources" depends="vmresources">
<patternset id="xmlpng">
<include name="**/*.xml" />
<include name="**/*.png" />
@@ -285,7 +293,6 @@
<patternset refid="xmlpng" />
<include name="**/*.conf" />
<include name="**/*.properties" />
- <include name="**/*.vm" />
</patternset>
<!-- Main Applications -->
@@ -304,7 +311,7 @@
<target name="web.only" depends="jar.web.only, web.copy"/>
- <target name="jar.web.only" depends="enhance.only.norefresh,
current_revision">
+ <target name="jar.web.only" depends="enhance.only.norefresh,
current_revision, vmresources">
<manifestclasspath property="jar.classpath"
jarfile="${project.distname}-${jar.suffix}.jar">
<classpath refid="compile.classpath" />
</manifestclasspath>
Modified:
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/Application.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/Application.java?rev=1560239&r1=1560238&r2=1560239&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/Application.java
(original)
+++
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/Application.java
Wed Jan 22 02:57:15 2014
@@ -32,6 +32,7 @@ import org.apache.openmeetings.util.Init
import org.apache.openmeetings.web.pages.ActivatePage;
import org.apache.openmeetings.web.pages.MainPage;
import org.apache.openmeetings.web.pages.NotInitedPage;
+import org.apache.openmeetings.web.pages.RecordingPage;
import org.apache.openmeetings.web.pages.ResetPage;
import org.apache.openmeetings.web.pages.SwfPage;
import org.apache.openmeetings.web.pages.auth.SignInPage;
@@ -125,6 +126,7 @@ public class Application extends Authent
mountPage("signin", getSignInPageClass());
mountPage("activate", ActivatePage.class);
mountPage("reset", ResetPage.class);
+ mountPage("/recording/${hash}", RecordingPage.class);
mountResource("/recordings/avi/${id}", new
AviRecordingResourceReference());
mountResource("/recordings/flv/${id}", new
FlvRecordingResourceReference());
mountResource("/recordings/mp4/${id}", new
Mp4RecordingResourceReference());
Modified:
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/WebSession.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/WebSession.java?rev=1560239&r1=1560238&r2=1560239&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/WebSession.java
(original)
+++
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/WebSession.java
Wed Jan 22 02:57:15 2014
@@ -174,7 +174,7 @@ public class WebSession extends Abstract
//FIXME code is duplicated from MainService, need to be unified
SOAPLoginDao soapDao = getBean(SOAPLoginDao.class);
SOAPLogin soapLogin = soapDao.get(secureHash);
- if (!soapLogin.getUsed()) { //add code for ||
(soapLogin.getAllowSameURLMultipleTimes())
+ if (soapLogin != null && !soapLogin.getUsed()) { //add code for
|| (soapLogin.getAllowSameURLMultipleTimes())
SessiondataDao sessionDao =
getBean(SessiondataDao.class);
Sessiondata sd =
sessionDao.getSessionByHash(soapLogin.getSessionHash());
if (sd != null && sd.getSessionXml() != null) {
Added:
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/RecordingPage.html
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/RecordingPage.html?rev=1560239&view=auto
==============================================================================
---
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/RecordingPage.html
(added)
+++
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/RecordingPage.html
Wed Jan 22 02:57:15 2014
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:extend>
+ <div style="display: inline-block; float: left;" wicket:id="info"></div>
+ <div style="display: inline-block; float: left;"
wicket:id="player"></div>
+</wicket:extend>
+</html>
+
Added:
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/RecordingPage.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/RecordingPage.java?rev=1560239&view=auto
==============================================================================
---
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/RecordingPage.java
(added)
+++
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/pages/RecordingPage.java
Wed Jan 22 02:57:15 2014
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.openmeetings.web.pages;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getRecordingId;
+
+import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.user.record.VideoInfo;
+import org.apache.openmeetings.web.user.record.VideoPlayer;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.request.IRequestParameters;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+
+public class RecordingPage extends BaseInitedPage {
+ private static final long serialVersionUID = 1L;
+
+ public RecordingPage(PageParameters p) {
+ String hash = p.get("hash").toString();
+ FlvRecording r = null;
+ if (WebSession.get().signIn(hash)) {
+ Long recId = getRecordingId();
+ if (WebSession.get().signIn(hash) && recId != null) {
+ r = getBean(FlvRecordingDao.class).get(recId);
+ }
+ }
+ add(new VideoInfo("info", r).setVisible(r != null), new
VideoPlayer("player").setVisible(r != null));
+ }
+
+ @Override
+ protected void onParameterArrival(IRequestParameters requestParameters,
AjaxRequestTarget target) {
+ }
+}
Modified:
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.html
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.html?rev=1560239&r1=1560238&r2=1560239&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.html
(original)
+++
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.html
Wed Jan 22 02:57:15 2014
@@ -47,40 +47,10 @@
</tr>
</table>
</div>
- <div wicket:id="info" class="info">
- <table>
- <tr>
- <td><wicket:ommessage
key="863"/></td>
- <td><span
wicket:id="fileName"></span></td>
- </tr>
- <tr>
- <td><wicket:ommessage
key="864"/></td>
- <td><span
wicket:id="fileSize"></span></td>
- </tr>
- <tr>
- <td><wicket:ommessage
key="865"/></td>
- <td><span
wicket:id="recordEnd"></span></td>
- </tr>
- <tr>
- <td><wicket:ommessage
key="874"/></td>
- <td><span
wicket:id="room_id"></span></td>
- </tr>
- </table>
- <table>
- <tr>
- <td><input
type="button" wicket:id="dAVI" wicket:ommessage="value:884"/></td>
- <td><input
type="button" wicket:id="dFLV" wicket:ommessage="value:883"/></td>
- </tr>
- </table>
- </div>
+ <div wicket:id="info"></div>
</td>
- <td class="video" wicket:id="video">
- <div wicket:id="wait"></div>
- <div class="player">
- <video wicket:id="player">
- Your browser does not support
HTML5 video. <!-- FIXME hardcoded -->
- </video>
- </div>
+ <td>
+ <div wicket:id="video"></div>
</td>
</tr>
</table>
Modified:
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java?rev=1560239&r1=1560238&r2=1560239&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
(original)
+++
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
Wed Jan 22 02:57:15 2014
@@ -19,8 +19,6 @@
package org.apache.openmeetings.web.user.record;
import static org.apache.openmeetings.util.OmFileHelper.getMp4Recording;
-import static org.apache.openmeetings.util.OmFileHelper.getRecording;
-import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.openmeetings.web.app.WebSession.getUserId;
@@ -38,9 +36,6 @@ import org.apache.openmeetings.web.app.W
import org.apache.openmeetings.web.common.AddFolderDialog;
import org.apache.openmeetings.web.common.ConfirmableAjaxLink;
import org.apache.openmeetings.web.common.UserPanel;
-import org.apache.openmeetings.web.util.AjaxDownload;
-import org.apache.openmeetings.web.util.Mp4RecordingResourceReference;
-import org.apache.openmeetings.web.util.OggRecordingResourceReference;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -50,33 +45,19 @@ import org.apache.wicket.extensions.mark
import org.apache.wicket.extensions.markup.html.repeater.tree.content.Folder;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.repeater.ReuseIfModelsEqualStrategy;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
-import org.apache.wicket.model.util.ListModel;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.wicket.util.resource.FileResourceStream;
-import org.wicketstuff.html5.media.MediaSource;
-import org.wicketstuff.html5.media.video.Html5Video;
public class RecordingsPanel extends UserPanel {
private static final long serialVersionUID = 1321258690447136958L;
- private WebMarkupContainer info = new WebMarkupContainer("info");
- private WebMarkupContainer trees = new WebMarkupContainer("trees");
- private WebMarkupContainer video = new WebMarkupContainer("video");
- private WebMarkupContainer wait = new WebMarkupContainer("wait");
- private final Mp4RecordingResourceReference mp4res = new
Mp4RecordingResourceReference();
- private final OggRecordingResourceReference oggres = new
OggRecordingResourceReference();
- private final WebMarkupContainer player;
- private final IModel<List<MediaSource>> playerModel = new
ListModel<MediaSource>(new ArrayList<MediaSource>());
- private RecordingTree myTree;
- private IModel<FlvRecording> rm = new
CompoundPropertyModel<FlvRecording>(new FlvRecording());
+ private final WebMarkupContainer trees = new
WebMarkupContainer("trees");
+ private final VideoPlayer video = new VideoPlayer("video");
+ private final VideoInfo info = new VideoInfo("info");
+ private final RecordingTree myTree;
+ private final IModel<FlvRecording> rm = new
CompoundPropertyModel<FlvRecording>(new FlvRecording());
private RecordingTree selected;
- private Button dAVI = new Button("dAVI");
- private Button dFLV = new Button("dFLV");
- private AjaxDownload download = new AjaxDownload();
public RecordingsPanel(String id) {
super(id);
@@ -141,47 +122,7 @@ public class RecordingsPanel extends Use
);
add(new Label("homeSize", ""));
add(new Label("publicSize", ""));
- add(info.setDefaultModel(rm).add(
- new Label("fileName"), new Label("fileSize")
- , new Label("recordEnd"), new Label("room_id")
- ,
dFLV.setEnabled(false).setOutputMarkupId(true),
dAVI.setEnabled(false).setOutputMarkupId(true)
- ).setOutputMarkupId(true)
- );
- player = new Html5Video("player", playerModel) {
- private static final long serialVersionUID =
-6058309447222765121L;
-
- @Override
- protected boolean isAutoPlay() {
- return false;
- }
-
- @Override
- protected boolean isControls() {
- return true;
- }
- };
- dAVI.add(new AjaxEventBehavior("click"){
- private static final long serialVersionUID =
5487675326677710761L;
-
- @Override
- protected void onEvent(AjaxRequestTarget target) {
-
download.setFileName(rm.getObject().getAlternateDownload());
- download.setResourceStream(new
FileResourceStream(getRecording(rm.getObject().getAlternateDownload())));
- download.initiate(target);
- }
- });
- dFLV.add(new AjaxEventBehavior("click"){
- private static final long serialVersionUID =
8630730552169483717L;
-
- @Override
- protected void onEvent(AjaxRequestTarget target) {
-
download.setFileName(rm.getObject().getFileHash());
- download.setResourceStream(new
FileResourceStream(getRecording(rm.getObject().getFileHash())));
- download.initiate(target);
- }
- });
- add(video.add(wait.setVisible(false),
player.setVisible(false)).setOutputMarkupId(true));
- add(download);
+ add(video, info);
}
//FIXME need to be generalized to use as Room files explorer
@@ -253,16 +194,8 @@ public class RecordingsPanel extends Use
}
updateBranch(r, target);
} else {
- boolean videoExists =
getMp4Recording(r.getFileHash()).exists();
- if (videoExists) {
- PageParameters pp = new
PageParameters().add("id", r.getFlvRecordingId());
-
playerModel.setObject(Arrays.asList(
- new
MediaSource("" + getRequestCycle().urlFor(mp4res, pp), "video/mp4")
- , new
MediaSource("" + getRequestCycle().urlFor(oggres, pp), "video/ogg")));
- }
- player.setVisible(videoExists);
- target.add(video, info,
dAVI.setEnabled(isRecordingExists(r.getAlternateDownload())));
- target.add(video, info,
dFLV.setEnabled(isRecordingExists(r.getFileHash())));
+ video.update(target, r);
+ info.update(target, r);
updateNode(r, target);
}
}
Added:
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.html
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.html?rev=1560239&view=auto
==============================================================================
---
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.html
(added)
+++
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.html
Wed Jan 22 02:57:15 2014
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:panel>
+ <div class="info" wicket:id="container">
+ <table>
+ <tr>
+ <td><wicket:ommessage key="863"/></td>
+ <td><span wicket:id="fileName"></span></td>
+ </tr>
+ <tr>
+ <td><wicket:ommessage key="864"/></td>
+ <td><span wicket:id="fileSize"></span></td>
+ </tr>
+ <tr>
+ <td><wicket:ommessage key="865"/></td>
+ <td><span wicket:id="recordEnd"></span></td>
+ </tr>
+ <tr>
+ <td><wicket:ommessage key="874"/></td>
+ <td><span wicket:id="room_id"></span></td>
+ </tr>
+ </table>
+ <table>
+ <tr>
+ <td><input type="button" wicket:id="dAVI"
wicket:ommessage="value:884"/></td>
+ <td><input type="button" wicket:id="dFLV"
wicket:ommessage="value:883"/></td>
+ </tr>
+ </table>
+ </div>
+</wicket:panel>
+</html>
Added:
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.java?rev=1560239&view=auto
==============================================================================
---
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.java
(added)
+++
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/VideoInfo.java
Wed Jan 22 02:57:15 2014
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.openmeetings.web.user.record;
+
+import static org.apache.openmeetings.util.OmFileHelper.getRecording;
+import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
+
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.web.util.AjaxDownload;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Button;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.util.resource.FileResourceStream;
+
+public class VideoInfo extends Panel {
+ private static final long serialVersionUID = 1L;
+ private final static WebMarkupContainer container = new
WebMarkupContainer("container");
+ private final Button dAVI = new Button("dAVI");
+ private final Button dFLV = new Button("dFLV");
+ private final AjaxDownload download = new AjaxDownload();
+ private final IModel<FlvRecording> rm = new
CompoundPropertyModel<FlvRecording>(new FlvRecording());
+
+ public VideoInfo(String id) {
+ this(id, null);
+ }
+
+ public VideoInfo(String id, FlvRecording r) {
+ super(id);
+ add(container.setOutputMarkupId(true));
+ setDefaultModel(rm);
+
+ container.add(new Label("fileName"), new Label("fileSize"), new
Label("recordEnd"), new Label("room_id"),
+ dFLV.setEnabled(false), dAVI.setEnabled(false));
+ dAVI.add(new AjaxEventBehavior("click"){
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+
download.setFileName(rm.getObject().getAlternateDownload());
+ download.setResourceStream(new
FileResourceStream(getRecording(rm.getObject().getAlternateDownload())));
+ download.initiate(target);
+ }
+ });
+ dFLV.add(new AjaxEventBehavior("click"){
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+
download.setFileName(rm.getObject().getFileHash());
+ download.setResourceStream(new
FileResourceStream(getRecording(rm.getObject().getFileHash())));
+ download.initiate(target);
+ }
+ });
+ add(download);
+ update(null, r);
+ }
+
+ public VideoInfo update(AjaxRequestTarget target, FlvRecording r) {
+ rm.setObject(r == null ? new FlvRecording() : r);
+
+
dAVI.setEnabled(isRecordingExists(rm.getObject().getAlternateDownload()));
+
dFLV.setEnabled(isRecordingExists(rm.getObject().getFileHash()));
+ if (target != null) {
+ target.add(container);
+ }
+
+ return this;
+ }
+}
Added:
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/VideoPlayer.html
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/VideoPlayer.html?rev=1560239&view=auto
==============================================================================
---
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/VideoPlayer.html
(added)
+++
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/VideoPlayer.html
Wed Jan 22 02:57:15 2014
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:panel>
+ <div class="video" wicket:id="container">
+ <div wicket:id="wait"></div>
+ <video wicket:id="player">
+ Your browser does not support HTML5 video. <!-- FIXME
hardcoded -->
+ </video>
+ </div>
+</wicket:panel>
+</html>
Added:
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/VideoPlayer.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/VideoPlayer.java?rev=1560239&view=auto
==============================================================================
---
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/VideoPlayer.java
(added)
+++
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/VideoPlayer.java
Wed Jan 22 02:57:15 2014
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.apache.openmeetings.web.user.record;
+
+import static org.apache.openmeetings.util.OmFileHelper.getMp4Recording;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.web.util.Mp4RecordingResourceReference;
+import org.apache.openmeetings.web.util.OggRecordingResourceReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.util.ListModel;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.wicketstuff.html5.media.MediaSource;
+import org.wicketstuff.html5.media.video.Html5Video;
+
+public class VideoPlayer extends Panel {
+ private static final long serialVersionUID = 1L;
+ private final WebMarkupContainer wait = new WebMarkupContainer("wait");
//FIXME not used
+ private final WebMarkupContainer container = new
WebMarkupContainer("container");
+ private final Mp4RecordingResourceReference mp4res = new
Mp4RecordingResourceReference();
+ private final OggRecordingResourceReference oggres = new
OggRecordingResourceReference();
+ private final WebMarkupContainer player;
+ private final IModel<List<MediaSource>> playerModel = new
ListModel<MediaSource>(new ArrayList<MediaSource>());
+
+ public VideoPlayer(String id) {
+ this(id, null);
+ }
+
+ public VideoPlayer(String id, FlvRecording r) {
+ super(id);
+ add(container.setOutputMarkupPlaceholderTag(true));
+ player = new Html5Video("player", playerModel) {
+ private static final long serialVersionUID =
-6058309447222765121L;
+
+ @Override
+ protected boolean isAutoPlay() {
+ return false;
+ }
+
+ @Override
+ protected boolean isControls() {
+ return true;
+ }
+ };
+ container.add(wait.setVisible(false), player);
+ update(null, r);
+ }
+
+ public VideoPlayer update(AjaxRequestTarget target, FlvRecording r) {
+ boolean videoExists = r != null &&
getMp4Recording(r.getFileHash()).exists();
+ if (videoExists) {
+ PageParameters pp = new PageParameters().add("id",
r.getFlvRecordingId());
+ playerModel.setObject(Arrays.asList(
+ new MediaSource("" +
getRequestCycle().urlFor(mp4res, pp), "video/mp4")
+ , new MediaSource("" +
getRequestCycle().urlFor(oggres, pp), "video/ogg")));
+ }
+ container.setVisible(videoExists);
+ if (target != null) {
+ target.add(container);
+ }
+
+ return this;
+ }
+}