Author: solomax
Date: Sat May 18 04:50:17 2013
New Revision: 1484056

URL: http://svn.apache.org/r1484056
Log:
[OPENMEETINGS-626] select/trash works as expected;
        Menu styles are updated to better fit the screen

Modified:
    openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/ConfirmableAjaxLink.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/record/RecordingsPanel.html
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/record/RecordingsPanel.java

Modified: openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css?rev=1484056&r1=1484055&r2=1484056&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css 
(original)
+++ openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css Sat 
May 18 04:50:17 2013
@@ -44,13 +44,19 @@
        background-color: #AFCBFB;
        margin-top: 10px;
 }
-
+.ui-menubar .ui-menu {
+       width: 250px;
+}
+.ui-menu .ui-menu-item a {
+       line-height: 1.2em !important;
+       padding-bottom: 5px !importsnat;
+}
 .menuName {
        font-weight: bold;
 }
-
 .menuDesc {
        font-size: smaller;
+       line-height: 1em !importsnat;
 }
 
 #busy_indicator {

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/ConfirmableAjaxLink.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/ConfirmableAjaxLink.java?rev=1484056&r1=1484055&r2=1484056&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/ConfirmableAjaxLink.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/ConfirmableAjaxLink.java
 Sat May 18 04:50:17 2013
@@ -28,6 +28,7 @@ public abstract class ConfirmableAjaxLin
        public ConfirmableAjaxLink(String id, long confirmId) {
                super(id);
                this.confirmId = confirmId;
+               setOutputMarkupId(true);
        }
 
        @Override

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/record/RecordingsPanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/record/RecordingsPanel.html?rev=1484056&r1=1484055&r2=1484056&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/record/RecordingsPanel.html
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/record/RecordingsPanel.html
 Sat May 18 04:50:17 2013
@@ -26,7 +26,7 @@
                                <div class="icons clear">
                                        <span wicket:id="create" 
class="folder-create-icon align-left clickable"></span>
                                        <span wicket:id="refresh" 
class="refresh-icon align-left clickable"></span>
-                                       <span class="trash-icon 
align-right"></span>
+                                       <span wicket:id="trash" 
class="trash-icon align-right clickable" wicket:ommessage="title:705"></span>
                                        <div class="clear"></div>
                                </div>
                                <div wicket:id="trees" class="trees">
@@ -68,8 +68,8 @@
                                        </table>
                                        <table>
                                                <tr>
-                                                       <td><input 
type="button" wicket:ommessage="value:884"/></td>
-                                                       <td><input 
type="button" wicket:ommessage="value:883"/></td>
+                                                       <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>

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/record/RecordingsPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/record/RecordingsPanel.java?rev=1484056&r1=1484055&r2=1484056&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/record/RecordingsPanel.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/user/record/RecordingsPanel.java
 Sat May 18 04:50:17 2013
@@ -19,23 +19,24 @@
 package org.apache.openmeetings.web.user.record;
 
 import static org.apache.openmeetings.utils.OmFileHelper.getMp4Recording;
+import static org.apache.openmeetings.utils.OmFileHelper.getRecording;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
-import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Set;
 
 import org.apache.openmeetings.data.flvrecord.FlvRecordingDao;
 import org.apache.openmeetings.data.user.dao.UsersDao;
 import org.apache.openmeetings.persistence.beans.domain.Organisation_Users;
 import org.apache.openmeetings.persistence.beans.flvrecord.FlvRecording;
 import org.apache.openmeetings.web.app.WebSession;
+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;
@@ -47,13 +48,14 @@ 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.model.util.SetModel;
 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;
 
@@ -67,9 +69,12 @@ public class RecordingsPanel extends Use
        private final OggRecordingResourceReference oggres = new 
OggRecordingResourceReference();
        private final WebMarkupContainer player;
        private final IModel<List<MediaSource>> playerModel = new 
ListModel<MediaSource>(new ArrayList<MediaSource>());
-       private final IModel<Set<FlvRecording>> myTreeModel = new 
SetModel<FlvRecording>(new HashSet<FlvRecording>());
+       private RecordingTree myTree;
        private 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);
@@ -101,21 +106,35 @@ public class RecordingsPanel extends Use
                        @Override
                        protected void onEvent(AjaxRequestTarget target) {
                                target.add(trees);
+                               for (FlvRecording r : myTree.getModelObject()) {
+                                       myTree.expand(r);
+                               }
                        }
                }));
+               add(new ConfirmableAjaxLink("trash", 713) {
+                       private static final long serialVersionUID = 
4145757350556878550L;
+
+                       @Override
+                       public void onClick(AjaxRequestTarget target) {
+                               long id = rm.getObject().getFlvRecordingId();
+                               if (id > 0) {
+                                       
getBean(FlvRecordingDao.class).deleteFlvRecording(id);
+                               }
+                               target.add(trees);
+                       }
+               });
                add(trees
-                       .add(new RecordingTree("myrecordings", new 
MyRecordingTreeProvider(), myTreeModel))
-                       .add(new RecordingTree("publicrecordings", new 
PublicRecordingTreeProvider(), null))
+                       .add(myTree = new RecordingTree("myrecordings", new 
MyRecordingTreeProvider()))
+                       .add(new RecordingTree("publicrecordings", new 
PublicRecordingTreeProvider()))
                        .setOutputMarkupId(true)
                        );
                add(new Label("homeSize", ""));
                add(new Label("publicSize", ""));
-               add(info.setDefaultModel(rm)
-                       .add(new Label("fileName"))
-                       .add(new Label("fileSize"))
-                       .add(new Label("recordEnd"))
-                       .add(new Label("room_id"))
-                       .setOutputMarkupId(true)
+               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;
@@ -130,15 +149,36 @@ public class RecordingsPanel extends Use
                                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);
        }
 
        //FIXME need to be generalized to use as Room files explorer
        class RecordingTree extends DefaultNestedTree<FlvRecording> {
                private static final long serialVersionUID = 
2527395034256868022L;
 
-               public RecordingTree(String id, ITreeProvider<FlvRecording> tp, 
IModel<Set<FlvRecording>> model) {
-                       super(id, tp, model);
+               public RecordingTree(String id, ITreeProvider<FlvRecording> tp) 
{
+                       super(id, tp);
                        setItemReuseStrategy(new ReuseIfModelsEqualStrategy());
                }
                
@@ -188,14 +228,19 @@ public class RecordingsPanel extends Use
                                protected void onClick(AjaxRequestTarget 
target) {
                                        FlvRecording r = getModelObject();
                                        FlvRecording _prev = rm.getObject();
-                                       rm.setObject(r);
+                                       if (r.getFlvRecordingId() > 0) {
+                                               rm.setObject(r);
+                                       }
                                        if (selected != null && _prev != null) {
                                                selected.updateBranch(_prev, 
target);
                                                selected.updateNode(_prev, 
target);
                                        }
                                        selected = RecordingTree.this;
                                        if (r.getIsFolder() == null || 
r.getIsFolder()) {
-                                               super.onClick(target);
+                                               if (getState(r) == 
State.COLLAPSED) {
+                                                       super.onClick(target);
+                                               }
+                                               updateBranch(r, target);
                                        } else {
                                                boolean videoExists = 
getMp4Recording(r.getFileHash()).exists();
                                                if (videoExists) {
@@ -205,7 +250,9 @@ public class RecordingsPanel extends Use
                                                                        , new 
MediaSource("" + getRequestCycle().urlFor(oggres, pp), "video/ogg")));
                                                }
                                                player.setVisible(videoExists);
-                                               target.add(video, info);
+                                               target.add(video, info, 
dAVI.setEnabled(getRecording(r.getAlternateDownload()).exists()));
+                                               target.add(video, info, 
dFLV.setEnabled(getRecording(r.getFileHash()).exists()));
+                                               updateNode(r, target);
                                        }
                                }
                                
@@ -220,6 +267,9 @@ public class RecordingsPanel extends Use
                                                style = t.getIsFolder() ? 
super.getOtherStyleClass(t)
                                                                : 
(getMp4Recording(t.getFileHash()).exists() ? "recording-icon" : 
"broken-recording-icon");
                                        }
+                                       if (isSelected()) {
+                                               style += " selected";
+                                       }
                                        return style;
                                }
                                


Reply via email to