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;
+       }
+}


Reply via email to