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