You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2014/02/17 20:09:19 UTC
svn commit: r1569088 - in /openmeetings: branches/3.0.x/
branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/
branches/3.0.x/src/db/java/org/apache/openmeetings/db/dto/file/
branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/reco...
Author: solomax
Date: Mon Feb 17 19:09:19 2014
New Revision: 1569088
URL: http://svn.apache.org/r1569088
Log:
[OPENMEETINGS-923] drag-n-drop functionality is added to the recordings
Added:
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.html
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.java
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.html
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.java
Modified:
openmeetings/branches/3.0.x/ivy.xml
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dto/file/RecordingObject.java
openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecording.java
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvRecorderConverter.java
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java
openmeetings/branches/3.0.x/src/main/webapp/css/theme.css
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.html
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.java
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.html
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
openmeetings/trunk/singlewebapp/ivy.xml
openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java
openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dto/file/RecordingObject.java
openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecording.java
openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java
openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/converter/FlvRecorderConverter.java
openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java
openmeetings/trunk/singlewebapp/src/main/webapp/css/theme.css
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.html
openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.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/branches/3.0.x/ivy.xml
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/ivy.xml?rev=1569088&r1=1569087&r2=1569088&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/ivy.xml (original)
+++ openmeetings/branches/3.0.x/ivy.xml Mon Feb 17 19:09:19 2014
@@ -280,11 +280,9 @@
<dependency org="com.google.code.gson" name="gson" rev="2.2.4" conf="openmeetings->*" transitive="false">
<include type="jar" />
</dependency>
- <!-- TODO need to be uncommented to implement file drad-n-drop to whiteboard
<dependency org="com.github.svenmeier.wicket-dnd" name="wicket-dnd" rev="0.6.0" conf="openmeetings->*" transitive="false">
<include type="jar" />
</dependency>
- -->
<dependency org="org.wicketstuff" name="wicketstuff-urlfragment" rev="6.13.0" conf="openmeetings->*" transitive="false">
<include type="jar" />
</dependency>
Modified: openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java?rev=1569088&r1=1569087&r2=1569088&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java (original)
+++ openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java Mon Feb 17 19:09:19 2014
@@ -187,7 +187,7 @@ public class FlvRecordingDao {
String hql = "SELECT c FROM FlvRecording c " + "WHERE c.deleted = false "
+ "AND (c.ownerId IS NULL OR c.ownerId = 0) "
+ "AND (c.parentFileExplorerItemId IS NULL OR c.parentFileExplorerItemId = 0) "
- + "ORDER BY c.isFolder DESC, c.fileName ";
+ + "ORDER BY c.folder DESC, c.fileName ";
TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
@@ -200,24 +200,7 @@ public class FlvRecordingDao {
}
public List<FlvRecording> getFlvRecordingRootByPublic(Long organization_id) {
- try {
-
- String hql = "SELECT c FROM FlvRecording c " + "WHERE c.deleted <> :deleted " + "AND c.ownerId IS NULL "
- + "AND c.organization_id = :organization_id "
- + "AND (c.parentFileExplorerItemId IS NULL OR c.parentFileExplorerItemId = 0) "
- + "ORDER BY c.isFolder DESC, c.fileName ";
-
- TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
- query.setParameter("organization_id", organization_id);
- query.setParameter("deleted", true);
-
- List<FlvRecording> flvRecordingList = query.getResultList();
-
- return flvRecordingList;
- } catch (Exception ex2) {
- log.error("[getFlvRecordingRootByPublic]: ", ex2);
- }
- return null;
+ return em.createNamedQuery("getRecordingsByOrganization", FlvRecording.class).setParameter("organization_id", organization_id).getResultList();
}
public List<FlvRecording> getFlvRecordingRootByOwner(Long ownerId) {
@@ -225,7 +208,7 @@ public class FlvRecordingDao {
String hql = "SELECT c FROM FlvRecording c " + "WHERE c.deleted <> :deleted " + "AND c.ownerId = :ownerId "
+ "AND (c.parentFileExplorerItemId IS NULL OR c.parentFileExplorerItemId = 0) "
- + "ORDER BY c.isFolder DESC, c.fileName ";
+ + "ORDER BY c.folder DESC, c.fileName ";
TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
query.setParameter("deleted", true);
@@ -247,7 +230,7 @@ public class FlvRecordingDao {
+ "WHERE c.deleted <> :deleted "
+ "AND c.ownerId = :ownerId "
+ "AND (c.parentFileExplorerItemId IS NULL OR c.parentFileExplorerItemId = :parentFileExplorerItemId)"
- + "ORDER BY c.isFolder DESC, c.fileName ";
+ + "ORDER BY c.folder DESC, c.fileName ";
TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
query.setParameter("deleted", true);
@@ -267,7 +250,7 @@ public class FlvRecordingDao {
try {
String hql = "SELECT c FROM FlvRecording c " + "WHERE c.deleted <> :deleted " + "AND c.room_id = :room_id "
- + "ORDER BY c.isFolder DESC, c.fileName ";
+ + "ORDER BY c.folder DESC, c.fileName ";
TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
query.setParameter("deleted", true);
@@ -287,7 +270,7 @@ public class FlvRecordingDao {
String hql = "SELECT c FROM FlvRecording c " + "WHERE c.deleted <> :deleted "
+ "AND c.parentFileExplorerItemId = :parentFileExplorerItemId "
- + "ORDER BY c.isFolder DESC, c.fileName ";
+ + "ORDER BY c.folder DESC, c.fileName ";
TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
query.setParameter("deleted", true);
@@ -317,7 +300,7 @@ public class FlvRecordingDao {
flvRecording.setFileSize(fileSize);
flvRecording.setInserted(new Date());
flvRecording.setInsertedBy(user_id);
- flvRecording.setIsFolder(true);
+ flvRecording.setFolder(true);
flvRecording.setIsImage(false);
flvRecording.setIsPresentation(false);
flvRecording.setIsRecording(true);
@@ -353,7 +336,7 @@ public class FlvRecordingDao {
flvRecording.setFileSize(fileSize);
flvRecording.setInserted(new Date());
flvRecording.setInsertedBy(user_id);
- flvRecording.setIsFolder(false);
+ flvRecording.setFolder(false);
flvRecording.setIsImage(false);
flvRecording.setIsPresentation(false);
flvRecording.setIsRecording(true);
@@ -511,7 +494,7 @@ public class FlvRecordingDao {
}
}
- public void updateFlvRecording(FlvRecording fId) {
+ public void update(FlvRecording fId) {
try {
if (fId.getFlvRecordingId() == 0) {
Modified: openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dto/file/RecordingObject.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dto/file/RecordingObject.java?rev=1569088&r1=1569087&r2=1569088&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dto/file/RecordingObject.java (original)
+++ openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dto/file/RecordingObject.java Mon Feb 17 19:09:19 2014
@@ -80,7 +80,7 @@ public class RecordingObject {
this.ownerId = customObject.getOwnerId();//OwnerID => only set if its directly root in Owner Directory, other Folders and Files
//maybe are also in a Home directory but just because their parent is
- this.isFolder = customObject.getIsFolder();
+ this.isFolder = customObject.isFolder();
this.isImage = customObject.getIsImage();
this.isPresentation = customObject.getIsPresentation();
this.isRecording = customObject.getIsRecording();
Modified: openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecording.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecording.java?rev=1569088&r1=1569087&r2=1569088&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecording.java (original)
+++ openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecording.java Mon Feb 17 19:09:19 2014
@@ -65,6 +65,9 @@ import org.simpleframework.xml.Root;
+ "FROM FlvRecording c, User u "
+ "WHERE c.insertedBy = u.user_id AND u.externalUserId = :externalUserId AND u.externalUserType = :externalUserType "
+ "AND c.deleted = false")
+ , @NamedQuery(name = "getRecordingsByOrganization", query = "SELECT f FROM FlvRecording f WHERE f.deleted = false AND f.ownerId IS NULL "
+ + "AND f.organization_id = :organization_id AND (f.parentFileExplorerItemId IS NULL OR f.parentFileExplorerItemId = 0) "
+ + "ORDER BY f.folder DESC, f.fileName")
})
@Table(name = "flvrecording")
@Root(name = "flvrecording")
@@ -110,7 +113,7 @@ public class FlvRecording implements Ser
@Column(name = "is_folder")
@Element(data = true, required = false)
- private Boolean isFolder;
+ private boolean folder;
@Column(name = "is_image")
@Element(data = true, required = false)
@@ -258,12 +261,12 @@ public class FlvRecording implements Ser
this.ownerId = ownerId;
}
- public Boolean getIsFolder() {
- return isFolder;
+ public boolean isFolder() {
+ return folder;
}
- public void setIsFolder(Boolean isFolder) {
- this.isFolder = isFolder;
+ public void setFolder(boolean folder) {
+ this.folder = folder;
}
public Boolean getIsImage() {
Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java?rev=1569088&r1=1569087&r2=1569088&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java Mon Feb 17 19:09:19 2014
@@ -279,7 +279,7 @@ public class FlvInterviewConverter exten
flvRecording.setAlternateDownload(alternateDownloadName);
- recordingDao.updateFlvRecording(flvRecording);
+ recordingDao.update(flvRecording);
convertToMp4(flvRecording, returnLog);
logDao.deleteByRecordingId(flvRecording.getFlvRecordingId());
Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvRecorderConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvRecorderConverter.java?rev=1569088&r1=1569087&r2=1569088&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvRecorderConverter.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/converter/FlvRecorderConverter.java Mon Feb 17 19:09:19 2014
@@ -202,7 +202,7 @@ public class FlvRecorderConverter extend
flvRecording.setAlternateDownload(alternateDownloadName);
- recordingDao.updateFlvRecording(flvRecording);
+ recordingDao.update(flvRecording);
convertToMp4(flvRecording, returnLog);
for (ConverterProcessResult returnMap : returnLog) {
Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java?rev=1569088&r1=1569087&r2=1569088&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java Mon Feb 17 19:09:19 2014
@@ -532,7 +532,7 @@ public class FLVRecorderService implemen
flvRecording.setProgressPostProcessing(0);
- flvRecordingDaoImpl.updateFlvRecording(flvRecording);
+ flvRecordingDaoImpl.update(flvRecording);
if (flvRecording.getIsInterview() == null || !flvRecording.getIsInterview()) {
flvRecorderConverterTask.startConversionThread(flvRecordingId);
Modified: openmeetings/branches/3.0.x/src/main/webapp/css/theme.css
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/css/theme.css?rev=1569088&r1=1569087&r2=1569088&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/css/theme.css (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/css/theme.css Mon Feb 17 19:09:19 2014
@@ -352,6 +352,7 @@ div.tableWrapperSmall {
}
.recording {
width: 100%;
+ display: inline-block;
}
.recording .files {
width: 250px;
@@ -446,6 +447,9 @@ div.tableWrapperSmall {
background-image: url(images/world_link.png);
background-repeat: no-repeat;
}
+.selected .recording.item {
+ background-color: #0099FF;
+}
.recording.item {
position: relative;
}
Added: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.html?rev=1569088&view=auto
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.html (added)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.html Mon Feb 17 19:09:19 2014
@@ -0,0 +1,23 @@
+<?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:extend><span wicket:id="errors" class="errors"></span></wicket:extend>
+</html>
Added: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.java?rev=1569088&view=auto
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.java (added)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.java Mon Feb 17 19:09:19 2014
@@ -0,0 +1,49 @@
+/*
+ * 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.MP4_EXTENSION;
+import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import org.apache.openmeetings.db.dao.record.FlvRecordingLogDao;
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.model.IModel;
+
+public class RecordingItemPanel extends RecordingPanel {
+ private static final long serialVersionUID = 1L;
+
+ public RecordingItemPanel(String id, final IModel<FlvRecording> model, final RecordingErrorsDialog errorsDialog) {
+ super(id, model);
+ long errorCount = getBean(FlvRecordingLogDao.class).countErrors(model.getObject().getFlvRecordingId());
+ boolean visible = errorCount != 0 || !isRecordingExists(model.getObject().getFileHash() + MP4_EXTENSION);
+ item.add(new WebMarkupContainer("errors").add(new AjaxEventBehavior("click") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ errorsDialog.setDefaultModel(model);
+ errorsDialog.open(target);
+ }
+ }).setVisible(visible));
+ }
+}
Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.html?rev=1569088&r1=1569087&r2=1569088&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.html (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.html Mon Feb 17 19:09:19 2014
@@ -20,6 +20,6 @@
-->
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
- <div class="recording item"><span wicket:id="name" class="name"></span><span wicket:id="errors" class="errors"></span></div>
+ <div wicket:id="item" class="recording item"><span wicket:id="name" class="name"></span><wicket:child /></div>
</wicket:panel>
</html>
Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.java?rev=1569088&r1=1569087&r2=1569088&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.java Mon Feb 17 19:09:19 2014
@@ -18,35 +18,49 @@
*/
package org.apache.openmeetings.web.user.record;
-import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
-import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
import static org.apache.openmeetings.web.app.Application.getBean;
-import org.apache.openmeetings.db.dao.record.FlvRecordingLogDao;
+import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
import org.apache.openmeetings.db.entity.record.FlvRecording;
-import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.extensions.ajax.markup.html.AjaxEditableLabel;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+
+import wicketdnd.theme.WindowsTheme;
public class RecordingPanel extends Panel {
private static final long serialVersionUID = 1L;
+ protected final WebMarkupContainer item = new WebMarkupContainer("item");
- public RecordingPanel(String id, final IModel<FlvRecording> model, final RecordingErrorsDialog errorsDialog) {
+ public RecordingPanel(String id, final IModel<FlvRecording> model) {
super(id, model);
- add(new Label("name", model.getObject().getFileName()));
- long errorCount = getBean(FlvRecordingLogDao.class).countErrors(model.getObject().getFlvRecordingId());
- boolean visible = errorCount != 0 || !isRecordingExists(model.getObject().getFileHash() + MP4_EXTENSION);
- add(new WebMarkupContainer("errors").add(new AjaxEventBehavior("click") {
+ FlvRecording r = model.getObject();
+ add(new WindowsTheme());
+ item.add(r.isFolder() ? new AjaxEditableLabel<String>("name", Model.of(model.getObject().getFileName())) {
private static final long serialVersionUID = 1L;
-
+
+ @Override
+ protected String getLabelAjaxEvent() {
+ return "dblClick";
+ }
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target) {
+ super.onSubmit(target);
+ FlvRecording r = model.getObject();
+ r.setFileName(getEditor().getModelObject());
+ getBean(FlvRecordingDao.class).update(r);
+ }
+
@Override
- protected void onEvent(AjaxRequestTarget target) {
- errorsDialog.setDefaultModel(model);
- errorsDialog.open(target);
+ public void onEdit(AjaxRequestTarget target) {
+ super.onEdit(target);
}
- }).setVisible(visible));
+ } : new Label("name", r.getFileName()));
+ add(item.setOutputMarkupId(true));
}
}
Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.html?rev=1569088&r1=1569087&r2=1569088&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.html (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.html Mon Feb 17 19:09:19 2014
@@ -29,11 +29,10 @@
<span wicket:id="trash" class="trash om-icon align-right clickable" wicket:ommessage="title:705"></span>
<div class="clear"></div>
</div>
- <div wicket:id="trees" class="trees">
- <div wicket:id="myrecordings"></div>
- <div wicket:id="publicrecordings"></div>
+ <div wicket:id="tree-container" class="trees">
+ <div wicket:id="tree"></div>
</div>
- <div class="sizes">
+ <div class="sizes" wicket:id="sizes">
<table>
<tr>
<td><wicket:ommessage key="923"/></td>
Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java?rev=1569088&r1=1569087&r2=1569088&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java Mon Feb 17 19:09:19 2014
@@ -24,16 +24,15 @@ import static org.apache.openmeetings.ut
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.Iterator;
-import java.util.List;
import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.dto.file.RecordingContainerData;
import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.db.entity.user.Organisation;
import org.apache.openmeetings.db.entity.user.Organisation_Users;
import org.apache.openmeetings.web.app.WebSession;
import org.apache.openmeetings.web.common.AddFolderDialog;
@@ -43,24 +42,31 @@ import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.AjaxSelfUpdatingTimerBehavior;
-import org.apache.wicket.extensions.ajax.markup.html.AjaxEditableLabel;
import org.apache.wicket.extensions.markup.html.repeater.tree.DefaultNestedTree;
import org.apache.wicket.extensions.markup.html.repeater.tree.ITreeProvider;
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.repeater.RepeatingView;
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.util.time.Duration;
+import wicketdnd.DragSource;
+import wicketdnd.DropTarget;
+import wicketdnd.Location;
+import wicketdnd.Operation;
+import wicketdnd.Reject;
+import wicketdnd.Transfer;
+
public class RecordingsPanel extends UserPanel {
private static final long serialVersionUID = 1321258690447136958L;
- private final WebMarkupContainer trees = new WebMarkupContainer("trees");
+ private final WebMarkupContainer trees = new WebMarkupContainer("tree-container");
+ private final WebMarkupContainer sizes = new WebMarkupContainer("sizes");
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 final IModel<String> homeSize = Model.of((String)null);
private final IModel<String> publicSize = Model.of((String)null);
@@ -69,8 +75,7 @@ public class RecordingsPanel extends Use
public RecordingsPanel(String id) {
super(id);
- rm.getObject().setFlvRecordingId(-3);
- rm.getObject().setOwnerId(getUserId());
+ rm.getObject().setFlvRecordingId(Long.MIN_VALUE);
final AddFolderDialog addFolder = new AddFolderDialog("addFolder", WebSession.getString(712)) {
private static final long serialVersionUID = 1L;
@@ -80,15 +85,18 @@ public class RecordingsPanel extends Use
f.setFileName(getModelObject());
f.setInsertedBy(getUserId());
f.setInserted(new Date());
- f.setIsFolder(true);
+ f.setFolder(true);
f.setIsImage(false);
f.setIsPresentation(false);
f.setIsRecording(true);
long parentId = rm.getObject().getFlvRecordingId();
f.setParentFileExplorerItemId(parentId > 0 ? parentId : 0);
f.setOwnerId(rm.getObject().getOwnerId());
- getBean(FlvRecordingDao.class).updateFlvRecording(f);
- target.add(trees);
+ if (parentId < 0) {
+ f.setOrganization_id(-parentId);
+ }
+ getBean(FlvRecordingDao.class).update(f);
+ target.add(trees); //FIXME add correct refresh
}
};
add(addFolder);
@@ -105,14 +113,11 @@ public class RecordingsPanel extends Use
@Override
protected void onEvent(AjaxRequestTarget target) {
- target.add(trees);
- for (FlvRecording r : myTree.getModelObject()) {
- myTree.expand(r);
- }
+ target.add(trees); //FIXME add correct refresh
}
}));
add(new ConfirmableAjaxLink("trash", 713) {
- private static final long serialVersionUID = 4145757350556878550L;
+ private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
@@ -120,24 +125,23 @@ public class RecordingsPanel extends Use
if (id > 0) {
getBean(FlvRecordingDao.class).deleteFlvRecording(id);
}
- target.add(trees);
+ target.add(trees); //FIXME add correct refresh
}
});
- add(trees
- .add(myTree = new RecordingTree("myrecordings", new MyRecordingTreeProvider()))
- .add(new RecordingTree("publicrecordings", new PublicRecordingTreeProvider()))
- .setOutputMarkupId(true)
- );
+ RepeatingView treesView = new RepeatingView("tree");
+ treesView.add(selected = new RecordingTree(treesView.newChildId(), new MyRecordingTreeProvider()));
+ for (Organisation_Users ou : getBean(UserDao.class).get(getUserId()).getOrganisation_users()) {
+ Organisation o = ou.getOrganisation();
+ treesView.add(new RecordingTree(treesView.newChildId(), new PublicRecordingTreeProvider(o.getOrganisation_id(), o.getName())));
+ }
+ add(trees.add(treesView).setOutputMarkupId(true));
updateSizes();
- final Label homeSizeLbl = new Label("homeSize", homeSize);
- final Label publicSizeLbl = new Label("publicSize", publicSize);
- add(homeSizeLbl.setOutputMarkupId(true), publicSizeLbl.setOutputMarkupId(true));
- add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(30)) {
+ add(sizes.add(new Label("homeSize", homeSize), new Label("publicSize", publicSize)).setOutputMarkupId(true));
+ sizes.add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(30)) {
private static final long serialVersionUID = 1L;
protected void onPostProcessTarget(AjaxRequestTarget target) {
updateSizes();
- target.add(homeSizeLbl, publicSizeLbl);
}
});
add(video, info, errorsDialog);
@@ -150,6 +154,7 @@ public class RecordingsPanel extends Use
publicSize.setObject(getHumanSize(sizeData.getPublicFileSize()));
}
}
+
//FIXME need to be generalized to use as Room files explorer
class RecordingTree extends DefaultNestedTree<FlvRecording> {
private static final long serialVersionUID = 2527395034256868022L;
@@ -167,32 +172,46 @@ public class RecordingsPanel extends Use
@Override
protected Component newLabelComponent(String id, final IModel<FlvRecording> lm) {
FlvRecording r = lm.getObject();
- if (r.getIsFolder() != null && r.getIsFolder()) {
- return new AjaxEditableLabel<String>(id, newLabelModel(lm)) {
- private static final long serialVersionUID = -6631089550858911148L;
+ Component result = r.isFolder() || r.getFlvRecordingId() < 1 ? new RecordingPanel(id, lm) : new RecordingItemPanel(id, lm, errorsDialog);
+ if (r.getFlvRecordingId() > 0) {
+ result.add(new DragSource(Operation.MOVE) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onBeforeDrop(Component drag, Transfer transfer) throws Reject {
+ transfer.setData(lm.getObject());
+ };
@Override
- protected void onSubmit(AjaxRequestTarget target) {
- super.onSubmit(target);
- FlvRecording r = getModelObject();
- r.setFileName(getEditor().getModelObject());
- getBean(FlvRecordingDao.class).updateFlvRecording(r);
+ public void onAfterDrop(AjaxRequestTarget target, wicketdnd.Transfer transfer) {
+ transfer.setData(null);
}
-
+ }.drag("div"));
+ }
+ if (r.getFlvRecordingId() < 0 || r.isFolder()) {
+ result.add(new DropTarget(Operation.MOVE) {
+ private static final long serialVersionUID = 1L;
+
@Override
- public void onEdit(AjaxRequestTarget target) {
- if (isSelected()) {
- super.onEdit(target);
+ public void onDrop(AjaxRequestTarget target, Transfer transfer, Location location) throws Reject {
+ FlvRecording p = lm.getObject();
+ long pid = p.getFlvRecordingId();
+ FlvRecording r = transfer.getData();
+ if (pid == 0) {
+ r.setParentFileExplorerItemId(null);
+ } else if (pid < 0) {
+ r.setOrganization_id(-pid);
+ r.setParentFileExplorerItemId(null);
+ } else {
+ r.setParentFileExplorerItemId(pid);
}
+ r.setOwnerId(p.getOwnerId());
+ getBean(FlvRecordingDao.class).update(r);
+ target.add(trees); //FIXME add correct refresh
}
- };
- } else {
- if (r.getFlvRecordingId() > 0) {
- return new RecordingPanel(id, lm, errorsDialog);
- } else {
- return super.newLabelComponent(id, lm);
- }
+ }.dropCenter("div"));
}
+ return result;
}
@Override
@@ -209,15 +228,16 @@ public class RecordingsPanel extends Use
protected void onClick(AjaxRequestTarget target) {
FlvRecording r = getModelObject();
FlvRecording _prev = rm.getObject();
- if (r.getFlvRecordingId() > 0) {
- rm.setObject(r);
- }
- if (selected != null && _prev != null) {
- selected.updateBranch(_prev, target);
- selected.updateNode(_prev, target);
+ rm.setObject(r);
+ if (_prev != null) {
+ if (_prev.isFolder()) {
+ selected.updateBranch(_prev, target);
+ } else {
+ selected.updateNode(_prev, target);
+ }
}
selected = RecordingTree.this;
- if (r.getIsFolder() == null || r.getIsFolder()) {
+ if (r.isFolder()) {
if (getState(r) == State.COLLAPSED) {
super.onClick(target);
}
@@ -232,12 +252,12 @@ public class RecordingsPanel extends Use
@Override
protected String getOtherStyleClass(FlvRecording t) {
String style;
- if (t.getFlvRecordingId() == -2) {
+ if (t.getFlvRecordingId() == 0) {
style = "my-recordings om-icon";
- } else if (t.getFlvRecordingId() == -1) {
+ } else if (t.getFlvRecordingId() < 0) {
style = "public-recordings om-icon";
} else {
- style = t.getIsFolder() ? super.getOtherStyleClass(t)
+ style = t.isFolder() ? super.getOtherStyleClass(t)
: (isRecordingExists(t.getFileHash() + MP4_EXTENSION) ? "recording om-icon" : "broken-recording om-icon");
}
if (isSelected()) {
@@ -250,9 +270,9 @@ public class RecordingsPanel extends Use
protected String getOpenStyleClass() {
String style;
FlvRecording r = getModelObject();
- if (r.getFlvRecordingId() == -2) {
+ if (r.getFlvRecordingId() == 0) {
style = "my-recordings om-icon";
- } else if (r.getFlvRecordingId() == -1) {
+ } else if (r.getFlvRecordingId() < 0) {
style = "public-recordings om-icon";
} else {
style = super.getOpenStyleClass();
@@ -264,9 +284,9 @@ public class RecordingsPanel extends Use
protected String getClosedStyleClass() {
String style;
FlvRecording r = getModelObject();
- if (r.getFlvRecordingId() == -2) {
+ if (r.getFlvRecordingId() == 0) {
style = "my-recordings om-icon";
- } else if (r.getFlvRecordingId() == -1) {
+ } else if (r.getFlvRecordingId() < 0) {
style = "public-recordings om-icon";
} else {
style = super.getClosedStyleClass();
@@ -287,14 +307,14 @@ public class RecordingsPanel extends Use
public Iterator<? extends FlvRecording> getRoots() {
FlvRecording r = new FlvRecording();
- r.setFlvRecordingId(-2);
+ r.setFlvRecordingId(0);
r.setFileName(WebSession.getString(860));
r.setOwnerId(getUserId());
return Arrays.asList(r).iterator();
}
public Iterator<? extends FlvRecording> getChildren(FlvRecording node) {
- if (node.getFlvRecordingId() < 0) {
+ if (node.getFlvRecordingId() == 0) {
return getBean(FlvRecordingDao.class).getFlvRecordingRootByOwner(getUserId()).iterator();
} else {
return super.getChildren(node);
@@ -304,21 +324,24 @@ public class RecordingsPanel extends Use
class PublicRecordingTreeProvider extends RecordingTreeProvider {
private static final long serialVersionUID = 5502610991599632079L;
+ private final long orgId;
+ private final String name;
+ public PublicRecordingTreeProvider(long orgId, String name) {
+ this.orgId = orgId;
+ this.name = name;
+ }
+
public Iterator<? extends FlvRecording> getRoots() {
FlvRecording r = new FlvRecording();
- r.setFlvRecordingId(-1);
- r.setFileName(WebSession.getString(861));
+ r.setFlvRecordingId(-orgId);
+ r.setFileName(String.format("%s (%s)", WebSession.getString(861), name));
return Arrays.asList(r).iterator();
}
public Iterator<? extends FlvRecording> getChildren(FlvRecording node) {
if (node.getFlvRecordingId() < 0) {
- List<FlvRecording> roots = new ArrayList<FlvRecording>();
- for (Organisation_Users ou : getBean(UserDao.class).get(getUserId()).getOrganisation_users()) {
- roots.addAll(getBean(FlvRecordingDao.class).getFlvRecordingRootByPublic(ou.getOrganisation().getOrganisation_id()));
- }
- return roots.iterator();
+ return getBean(FlvRecordingDao.class).getFlvRecordingRootByPublic(orgId).iterator();
} else {
return super.getChildren(node);
}
@@ -333,7 +356,7 @@ public class RecordingsPanel extends Use
}
public boolean hasChildren(FlvRecording node) {
- return node.getFlvRecordingId() < 0 || node.getIsFolder();
+ return node.getFlvRecordingId() <= 0 || node.isFolder();
}
public Iterator<? extends FlvRecording> getChildren(FlvRecording node) {
Modified: openmeetings/trunk/singlewebapp/ivy.xml
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/ivy.xml?rev=1569088&r1=1569087&r2=1569088&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/ivy.xml (original)
+++ openmeetings/trunk/singlewebapp/ivy.xml Mon Feb 17 19:09:19 2014
@@ -276,11 +276,9 @@
<dependency org="com.google.code.gson" name="gson" rev="2.2.4" conf="openmeetings->*" transitive="false">
<include type="jar" />
</dependency>
- <!-- TODO need to be uncommented to implement file drad-n-drop to whiteboard
<dependency org="com.github.svenmeier.wicket-dnd" name="wicket-dnd" rev="0.6.0" conf="openmeetings->*" transitive="false">
<include type="jar" />
</dependency>
- -->
<dependency org="org.wicketstuff" name="wicketstuff-urlfragment" rev="6.13.0" conf="openmeetings->*" transitive="false">
<include type="jar" />
</dependency>
Modified: openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java?rev=1569088&r1=1569087&r2=1569088&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java (original)
+++ openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/record/FlvRecordingDao.java Mon Feb 17 19:09:19 2014
@@ -187,7 +187,7 @@ public class FlvRecordingDao {
String hql = "SELECT c FROM FlvRecording c " + "WHERE c.deleted = false "
+ "AND (c.ownerId IS NULL OR c.ownerId = 0) "
+ "AND (c.parentFileExplorerItemId IS NULL OR c.parentFileExplorerItemId = 0) "
- + "ORDER BY c.isFolder DESC, c.fileName ";
+ + "ORDER BY c.folder DESC, c.fileName ";
TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
@@ -200,24 +200,7 @@ public class FlvRecordingDao {
}
public List<FlvRecording> getFlvRecordingRootByPublic(Long organization_id) {
- try {
-
- String hql = "SELECT c FROM FlvRecording c " + "WHERE c.deleted <> :deleted " + "AND c.ownerId IS NULL "
- + "AND c.organization_id = :organization_id "
- + "AND (c.parentFileExplorerItemId IS NULL OR c.parentFileExplorerItemId = 0) "
- + "ORDER BY c.isFolder DESC, c.fileName ";
-
- TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
- query.setParameter("organization_id", organization_id);
- query.setParameter("deleted", true);
-
- List<FlvRecording> flvRecordingList = query.getResultList();
-
- return flvRecordingList;
- } catch (Exception ex2) {
- log.error("[getFlvRecordingRootByPublic]: ", ex2);
- }
- return null;
+ return em.createNamedQuery("getRecordingsByOrganization", FlvRecording.class).setParameter("organization_id", organization_id).getResultList();
}
public List<FlvRecording> getFlvRecordingRootByOwner(Long ownerId) {
@@ -225,7 +208,7 @@ public class FlvRecordingDao {
String hql = "SELECT c FROM FlvRecording c " + "WHERE c.deleted <> :deleted " + "AND c.ownerId = :ownerId "
+ "AND (c.parentFileExplorerItemId IS NULL OR c.parentFileExplorerItemId = 0) "
- + "ORDER BY c.isFolder DESC, c.fileName ";
+ + "ORDER BY c.folder DESC, c.fileName ";
TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
query.setParameter("deleted", true);
@@ -247,7 +230,7 @@ public class FlvRecordingDao {
+ "WHERE c.deleted <> :deleted "
+ "AND c.ownerId = :ownerId "
+ "AND (c.parentFileExplorerItemId IS NULL OR c.parentFileExplorerItemId = :parentFileExplorerItemId)"
- + "ORDER BY c.isFolder DESC, c.fileName ";
+ + "ORDER BY c.folder DESC, c.fileName ";
TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
query.setParameter("deleted", true);
@@ -267,7 +250,7 @@ public class FlvRecordingDao {
try {
String hql = "SELECT c FROM FlvRecording c " + "WHERE c.deleted <> :deleted " + "AND c.room_id = :room_id "
- + "ORDER BY c.isFolder DESC, c.fileName ";
+ + "ORDER BY c.folder DESC, c.fileName ";
TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
query.setParameter("deleted", true);
@@ -287,7 +270,7 @@ public class FlvRecordingDao {
String hql = "SELECT c FROM FlvRecording c " + "WHERE c.deleted <> :deleted "
+ "AND c.parentFileExplorerItemId = :parentFileExplorerItemId "
- + "ORDER BY c.isFolder DESC, c.fileName ";
+ + "ORDER BY c.folder DESC, c.fileName ";
TypedQuery<FlvRecording> query = em.createQuery(hql, FlvRecording.class);
query.setParameter("deleted", true);
@@ -317,7 +300,7 @@ public class FlvRecordingDao {
flvRecording.setFileSize(fileSize);
flvRecording.setInserted(new Date());
flvRecording.setInsertedBy(user_id);
- flvRecording.setIsFolder(true);
+ flvRecording.setFolder(true);
flvRecording.setIsImage(false);
flvRecording.setIsPresentation(false);
flvRecording.setIsRecording(true);
@@ -353,7 +336,7 @@ public class FlvRecordingDao {
flvRecording.setFileSize(fileSize);
flvRecording.setInserted(new Date());
flvRecording.setInsertedBy(user_id);
- flvRecording.setIsFolder(false);
+ flvRecording.setFolder(false);
flvRecording.setIsImage(false);
flvRecording.setIsPresentation(false);
flvRecording.setIsRecording(true);
@@ -511,7 +494,7 @@ public class FlvRecordingDao {
}
}
- public void updateFlvRecording(FlvRecording fId) {
+ public void update(FlvRecording fId) {
try {
if (fId.getFlvRecordingId() == 0) {
Modified: openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dto/file/RecordingObject.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dto/file/RecordingObject.java?rev=1569088&r1=1569087&r2=1569088&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dto/file/RecordingObject.java (original)
+++ openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dto/file/RecordingObject.java Mon Feb 17 19:09:19 2014
@@ -80,7 +80,7 @@ public class RecordingObject {
this.ownerId = customObject.getOwnerId();//OwnerID => only set if its directly root in Owner Directory, other Folders and Files
//maybe are also in a Home directory but just because their parent is
- this.isFolder = customObject.getIsFolder();
+ this.isFolder = customObject.isFolder();
this.isImage = customObject.getIsImage();
this.isPresentation = customObject.getIsPresentation();
this.isRecording = customObject.getIsRecording();
Modified: openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecording.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecording.java?rev=1569088&r1=1569087&r2=1569088&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecording.java (original)
+++ openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/entity/record/FlvRecording.java Mon Feb 17 19:09:19 2014
@@ -65,6 +65,9 @@ import org.simpleframework.xml.Root;
+ "FROM FlvRecording c, User u "
+ "WHERE c.insertedBy = u.user_id AND u.externalUserId = :externalUserId AND u.externalUserType = :externalUserType "
+ "AND c.deleted = false")
+ , @NamedQuery(name = "getRecordingsByOrganization", query = "SELECT f FROM FlvRecording f WHERE f.deleted = false AND f.ownerId IS NULL "
+ + "AND f.organization_id = :organization_id AND (f.parentFileExplorerItemId IS NULL OR f.parentFileExplorerItemId = 0) "
+ + "ORDER BY f.folder DESC, f.fileName")
})
@Table(name = "flvrecording")
@Root(name = "flvrecording")
@@ -110,7 +113,7 @@ public class FlvRecording implements Ser
@Column(name = "is_folder")
@Element(data = true, required = false)
- private Boolean isFolder;
+ private boolean folder;
@Column(name = "is_image")
@Element(data = true, required = false)
@@ -258,12 +261,12 @@ public class FlvRecording implements Ser
this.ownerId = ownerId;
}
- public Boolean getIsFolder() {
- return isFolder;
+ public boolean isFolder() {
+ return folder;
}
- public void setIsFolder(Boolean isFolder) {
- this.isFolder = isFolder;
+ public void setFolder(boolean folder) {
+ this.folder = folder;
}
public Boolean getIsImage() {
Modified: openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java?rev=1569088&r1=1569087&r2=1569088&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java (original)
+++ openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/converter/FlvInterviewConverter.java Mon Feb 17 19:09:19 2014
@@ -279,7 +279,7 @@ public class FlvInterviewConverter exten
flvRecording.setAlternateDownload(alternateDownloadName);
- recordingDao.updateFlvRecording(flvRecording);
+ recordingDao.update(flvRecording);
convertToMp4(flvRecording, returnLog);
logDao.deleteByRecordingId(flvRecording.getFlvRecordingId());
Modified: openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/converter/FlvRecorderConverter.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/converter/FlvRecorderConverter.java?rev=1569088&r1=1569087&r2=1569088&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/converter/FlvRecorderConverter.java (original)
+++ openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/converter/FlvRecorderConverter.java Mon Feb 17 19:09:19 2014
@@ -202,7 +202,7 @@ public class FlvRecorderConverter extend
flvRecording.setAlternateDownload(alternateDownloadName);
- recordingDao.updateFlvRecording(flvRecording);
+ recordingDao.update(flvRecording);
convertToMp4(flvRecording, returnLog);
for (ConverterProcessResult returnMap : returnLog) {
Modified: openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java?rev=1569088&r1=1569087&r2=1569088&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java (original)
+++ openmeetings/trunk/singlewebapp/src/main/java/org/apache/openmeetings/remote/FLVRecorderService.java Mon Feb 17 19:09:19 2014
@@ -532,7 +532,7 @@ public class FLVRecorderService implemen
flvRecording.setProgressPostProcessing(0);
- flvRecordingDaoImpl.updateFlvRecording(flvRecording);
+ flvRecordingDaoImpl.update(flvRecording);
if (flvRecording.getIsInterview() == null || !flvRecording.getIsInterview()) {
flvRecorderConverterTask.startConversionThread(flvRecordingId);
Modified: openmeetings/trunk/singlewebapp/src/main/webapp/css/theme.css
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/main/webapp/css/theme.css?rev=1569088&r1=1569087&r2=1569088&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/main/webapp/css/theme.css (original)
+++ openmeetings/trunk/singlewebapp/src/main/webapp/css/theme.css Mon Feb 17 19:09:19 2014
@@ -352,6 +352,7 @@ div.tableWrapperSmall {
}
.recording {
width: 100%;
+ display: inline-block;
}
.recording .files {
width: 250px;
@@ -446,6 +447,9 @@ div.tableWrapperSmall {
background-image: url(images/world_link.png);
background-repeat: no-repeat;
}
+.selected .recording.item {
+ background-color: #0099FF;
+}
.recording.item {
position: relative;
}
Added: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.html?rev=1569088&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.html (added)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.html Mon Feb 17 19:09:19 2014
@@ -0,0 +1,23 @@
+<?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:extend><span wicket:id="errors" class="errors"></span></wicket:extend>
+</html>
Added: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.java?rev=1569088&view=auto
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.java (added)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.java Mon Feb 17 19:09:19 2014
@@ -0,0 +1,49 @@
+/*
+ * 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.MP4_EXTENSION;
+import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import org.apache.openmeetings.db.dao.record.FlvRecordingLogDao;
+import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.model.IModel;
+
+public class RecordingItemPanel extends RecordingPanel {
+ private static final long serialVersionUID = 1L;
+
+ public RecordingItemPanel(String id, final IModel<FlvRecording> model, final RecordingErrorsDialog errorsDialog) {
+ super(id, model);
+ long errorCount = getBean(FlvRecordingLogDao.class).countErrors(model.getObject().getFlvRecordingId());
+ boolean visible = errorCount != 0 || !isRecordingExists(model.getObject().getFileHash() + MP4_EXTENSION);
+ item.add(new WebMarkupContainer("errors").add(new AjaxEventBehavior("click") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ errorsDialog.setDefaultModel(model);
+ errorsDialog.open(target);
+ }
+ }).setVisible(visible));
+ }
+}
Modified: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.html?rev=1569088&r1=1569087&r2=1569088&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.html (original)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.html Mon Feb 17 19:09:19 2014
@@ -20,6 +20,6 @@
-->
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
- <div class="recording item"><span wicket:id="name" class="name"></span><span wicket:id="errors" class="errors"></span></div>
+ <div wicket:id="item" class="recording item"><span wicket:id="name" class="name"></span><wicket:child /></div>
</wicket:panel>
</html>
Modified: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.java?rev=1569088&r1=1569087&r2=1569088&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.java (original)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/user/record/RecordingPanel.java Mon Feb 17 19:09:19 2014
@@ -18,35 +18,49 @@
*/
package org.apache.openmeetings.web.user.record;
-import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
-import static org.apache.openmeetings.util.OmFileHelper.isRecordingExists;
import static org.apache.openmeetings.web.app.Application.getBean;
-import org.apache.openmeetings.db.dao.record.FlvRecordingLogDao;
+import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
import org.apache.openmeetings.db.entity.record.FlvRecording;
-import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.extensions.ajax.markup.html.AjaxEditableLabel;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+
+import wicketdnd.theme.WindowsTheme;
public class RecordingPanel extends Panel {
private static final long serialVersionUID = 1L;
+ protected final WebMarkupContainer item = new WebMarkupContainer("item");
- public RecordingPanel(String id, final IModel<FlvRecording> model, final RecordingErrorsDialog errorsDialog) {
+ public RecordingPanel(String id, final IModel<FlvRecording> model) {
super(id, model);
- add(new Label("name", model.getObject().getFileName()));
- long errorCount = getBean(FlvRecordingLogDao.class).countErrors(model.getObject().getFlvRecordingId());
- boolean visible = errorCount != 0 || !isRecordingExists(model.getObject().getFileHash() + MP4_EXTENSION);
- add(new WebMarkupContainer("errors").add(new AjaxEventBehavior("click") {
+ FlvRecording r = model.getObject();
+ add(new WindowsTheme());
+ item.add(r.isFolder() ? new AjaxEditableLabel<String>("name", Model.of(model.getObject().getFileName())) {
private static final long serialVersionUID = 1L;
-
+
+ @Override
+ protected String getLabelAjaxEvent() {
+ return "dblClick";
+ }
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target) {
+ super.onSubmit(target);
+ FlvRecording r = model.getObject();
+ r.setFileName(getEditor().getModelObject());
+ getBean(FlvRecordingDao.class).update(r);
+ }
+
@Override
- protected void onEvent(AjaxRequestTarget target) {
- errorsDialog.setDefaultModel(model);
- errorsDialog.open(target);
+ public void onEdit(AjaxRequestTarget target) {
+ super.onEdit(target);
}
- }).setVisible(visible));
+ } : new Label("name", r.getFileName()));
+ add(item.setOutputMarkupId(true));
}
}
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=1569088&r1=1569087&r2=1569088&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 Mon Feb 17 19:09:19 2014
@@ -29,11 +29,10 @@
<span wicket:id="trash" class="trash om-icon align-right clickable" wicket:ommessage="title:705"></span>
<div class="clear"></div>
</div>
- <div wicket:id="trees" class="trees">
- <div wicket:id="myrecordings"></div>
- <div wicket:id="publicrecordings"></div>
+ <div wicket:id="tree-container" class="trees">
+ <div wicket:id="tree"></div>
</div>
- <div class="sizes">
+ <div class="sizes" wicket:id="sizes">
<table>
<tr>
<td><wicket:ommessage key="923"/></td>
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=1569088&r1=1569087&r2=1569088&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 Mon Feb 17 19:09:19 2014
@@ -24,16 +24,15 @@ import static org.apache.openmeetings.ut
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.Iterator;
-import java.util.List;
import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.dto.file.RecordingContainerData;
import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.openmeetings.db.entity.user.Organisation;
import org.apache.openmeetings.db.entity.user.Organisation_Users;
import org.apache.openmeetings.web.app.WebSession;
import org.apache.openmeetings.web.common.AddFolderDialog;
@@ -43,24 +42,31 @@ import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.AjaxSelfUpdatingTimerBehavior;
-import org.apache.wicket.extensions.ajax.markup.html.AjaxEditableLabel;
import org.apache.wicket.extensions.markup.html.repeater.tree.DefaultNestedTree;
import org.apache.wicket.extensions.markup.html.repeater.tree.ITreeProvider;
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.repeater.RepeatingView;
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.util.time.Duration;
+import wicketdnd.DragSource;
+import wicketdnd.DropTarget;
+import wicketdnd.Location;
+import wicketdnd.Operation;
+import wicketdnd.Reject;
+import wicketdnd.Transfer;
+
public class RecordingsPanel extends UserPanel {
private static final long serialVersionUID = 1321258690447136958L;
- private final WebMarkupContainer trees = new WebMarkupContainer("trees");
+ private final WebMarkupContainer trees = new WebMarkupContainer("tree-container");
+ private final WebMarkupContainer sizes = new WebMarkupContainer("sizes");
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 final IModel<String> homeSize = Model.of((String)null);
private final IModel<String> publicSize = Model.of((String)null);
@@ -69,8 +75,7 @@ public class RecordingsPanel extends Use
public RecordingsPanel(String id) {
super(id);
- rm.getObject().setFlvRecordingId(-3);
- rm.getObject().setOwnerId(getUserId());
+ rm.getObject().setFlvRecordingId(Long.MIN_VALUE);
final AddFolderDialog addFolder = new AddFolderDialog("addFolder", WebSession.getString(712)) {
private static final long serialVersionUID = 1L;
@@ -80,15 +85,18 @@ public class RecordingsPanel extends Use
f.setFileName(getModelObject());
f.setInsertedBy(getUserId());
f.setInserted(new Date());
- f.setIsFolder(true);
+ f.setFolder(true);
f.setIsImage(false);
f.setIsPresentation(false);
f.setIsRecording(true);
long parentId = rm.getObject().getFlvRecordingId();
f.setParentFileExplorerItemId(parentId > 0 ? parentId : 0);
f.setOwnerId(rm.getObject().getOwnerId());
- getBean(FlvRecordingDao.class).updateFlvRecording(f);
- target.add(trees);
+ if (parentId < 0) {
+ f.setOrganization_id(-parentId);
+ }
+ getBean(FlvRecordingDao.class).update(f);
+ target.add(trees); //FIXME add correct refresh
}
};
add(addFolder);
@@ -105,14 +113,11 @@ public class RecordingsPanel extends Use
@Override
protected void onEvent(AjaxRequestTarget target) {
- target.add(trees);
- for (FlvRecording r : myTree.getModelObject()) {
- myTree.expand(r);
- }
+ target.add(trees); //FIXME add correct refresh
}
}));
add(new ConfirmableAjaxLink("trash", 713) {
- private static final long serialVersionUID = 4145757350556878550L;
+ private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
@@ -120,24 +125,23 @@ public class RecordingsPanel extends Use
if (id > 0) {
getBean(FlvRecordingDao.class).deleteFlvRecording(id);
}
- target.add(trees);
+ target.add(trees); //FIXME add correct refresh
}
});
- add(trees
- .add(myTree = new RecordingTree("myrecordings", new MyRecordingTreeProvider()))
- .add(new RecordingTree("publicrecordings", new PublicRecordingTreeProvider()))
- .setOutputMarkupId(true)
- );
+ RepeatingView treesView = new RepeatingView("tree");
+ treesView.add(selected = new RecordingTree(treesView.newChildId(), new MyRecordingTreeProvider()));
+ for (Organisation_Users ou : getBean(UserDao.class).get(getUserId()).getOrganisation_users()) {
+ Organisation o = ou.getOrganisation();
+ treesView.add(new RecordingTree(treesView.newChildId(), new PublicRecordingTreeProvider(o.getOrganisation_id(), o.getName())));
+ }
+ add(trees.add(treesView).setOutputMarkupId(true));
updateSizes();
- final Label homeSizeLbl = new Label("homeSize", homeSize);
- final Label publicSizeLbl = new Label("publicSize", publicSize);
- add(homeSizeLbl.setOutputMarkupId(true), publicSizeLbl.setOutputMarkupId(true));
- add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(30)) {
+ add(sizes.add(new Label("homeSize", homeSize), new Label("publicSize", publicSize)).setOutputMarkupId(true));
+ sizes.add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(30)) {
private static final long serialVersionUID = 1L;
protected void onPostProcessTarget(AjaxRequestTarget target) {
updateSizes();
- target.add(homeSizeLbl, publicSizeLbl);
}
});
add(video, info, errorsDialog);
@@ -150,6 +154,7 @@ public class RecordingsPanel extends Use
publicSize.setObject(getHumanSize(sizeData.getPublicFileSize()));
}
}
+
//FIXME need to be generalized to use as Room files explorer
class RecordingTree extends DefaultNestedTree<FlvRecording> {
private static final long serialVersionUID = 2527395034256868022L;
@@ -167,32 +172,46 @@ public class RecordingsPanel extends Use
@Override
protected Component newLabelComponent(String id, final IModel<FlvRecording> lm) {
FlvRecording r = lm.getObject();
- if (r.getIsFolder() != null && r.getIsFolder()) {
- return new AjaxEditableLabel<String>(id, newLabelModel(lm)) {
- private static final long serialVersionUID = -6631089550858911148L;
+ Component result = r.isFolder() || r.getFlvRecordingId() < 1 ? new RecordingPanel(id, lm) : new RecordingItemPanel(id, lm, errorsDialog);
+ if (r.getFlvRecordingId() > 0) {
+ result.add(new DragSource(Operation.MOVE) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onBeforeDrop(Component drag, Transfer transfer) throws Reject {
+ transfer.setData(lm.getObject());
+ };
@Override
- protected void onSubmit(AjaxRequestTarget target) {
- super.onSubmit(target);
- FlvRecording r = getModelObject();
- r.setFileName(getEditor().getModelObject());
- getBean(FlvRecordingDao.class).updateFlvRecording(r);
+ public void onAfterDrop(AjaxRequestTarget target, wicketdnd.Transfer transfer) {
+ transfer.setData(null);
}
-
+ }.drag("div"));
+ }
+ if (r.getFlvRecordingId() < 0 || r.isFolder()) {
+ result.add(new DropTarget(Operation.MOVE) {
+ private static final long serialVersionUID = 1L;
+
@Override
- public void onEdit(AjaxRequestTarget target) {
- if (isSelected()) {
- super.onEdit(target);
+ public void onDrop(AjaxRequestTarget target, Transfer transfer, Location location) throws Reject {
+ FlvRecording p = lm.getObject();
+ long pid = p.getFlvRecordingId();
+ FlvRecording r = transfer.getData();
+ if (pid == 0) {
+ r.setParentFileExplorerItemId(null);
+ } else if (pid < 0) {
+ r.setOrganization_id(-pid);
+ r.setParentFileExplorerItemId(null);
+ } else {
+ r.setParentFileExplorerItemId(pid);
}
+ r.setOwnerId(p.getOwnerId());
+ getBean(FlvRecordingDao.class).update(r);
+ target.add(trees); //FIXME add correct refresh
}
- };
- } else {
- if (r.getFlvRecordingId() > 0) {
- return new RecordingPanel(id, lm, errorsDialog);
- } else {
- return super.newLabelComponent(id, lm);
- }
+ }.dropCenter("div"));
}
+ return result;
}
@Override
@@ -209,15 +228,16 @@ public class RecordingsPanel extends Use
protected void onClick(AjaxRequestTarget target) {
FlvRecording r = getModelObject();
FlvRecording _prev = rm.getObject();
- if (r.getFlvRecordingId() > 0) {
- rm.setObject(r);
- }
- if (selected != null && _prev != null) {
- selected.updateBranch(_prev, target);
- selected.updateNode(_prev, target);
+ rm.setObject(r);
+ if (_prev != null) {
+ if (_prev.isFolder()) {
+ selected.updateBranch(_prev, target);
+ } else {
+ selected.updateNode(_prev, target);
+ }
}
selected = RecordingTree.this;
- if (r.getIsFolder() == null || r.getIsFolder()) {
+ if (r.isFolder()) {
if (getState(r) == State.COLLAPSED) {
super.onClick(target);
}
@@ -232,12 +252,12 @@ public class RecordingsPanel extends Use
@Override
protected String getOtherStyleClass(FlvRecording t) {
String style;
- if (t.getFlvRecordingId() == -2) {
+ if (t.getFlvRecordingId() == 0) {
style = "my-recordings om-icon";
- } else if (t.getFlvRecordingId() == -1) {
+ } else if (t.getFlvRecordingId() < 0) {
style = "public-recordings om-icon";
} else {
- style = t.getIsFolder() ? super.getOtherStyleClass(t)
+ style = t.isFolder() ? super.getOtherStyleClass(t)
: (isRecordingExists(t.getFileHash() + MP4_EXTENSION) ? "recording om-icon" : "broken-recording om-icon");
}
if (isSelected()) {
@@ -250,9 +270,9 @@ public class RecordingsPanel extends Use
protected String getOpenStyleClass() {
String style;
FlvRecording r = getModelObject();
- if (r.getFlvRecordingId() == -2) {
+ if (r.getFlvRecordingId() == 0) {
style = "my-recordings om-icon";
- } else if (r.getFlvRecordingId() == -1) {
+ } else if (r.getFlvRecordingId() < 0) {
style = "public-recordings om-icon";
} else {
style = super.getOpenStyleClass();
@@ -264,9 +284,9 @@ public class RecordingsPanel extends Use
protected String getClosedStyleClass() {
String style;
FlvRecording r = getModelObject();
- if (r.getFlvRecordingId() == -2) {
+ if (r.getFlvRecordingId() == 0) {
style = "my-recordings om-icon";
- } else if (r.getFlvRecordingId() == -1) {
+ } else if (r.getFlvRecordingId() < 0) {
style = "public-recordings om-icon";
} else {
style = super.getClosedStyleClass();
@@ -287,14 +307,14 @@ public class RecordingsPanel extends Use
public Iterator<? extends FlvRecording> getRoots() {
FlvRecording r = new FlvRecording();
- r.setFlvRecordingId(-2);
+ r.setFlvRecordingId(0);
r.setFileName(WebSession.getString(860));
r.setOwnerId(getUserId());
return Arrays.asList(r).iterator();
}
public Iterator<? extends FlvRecording> getChildren(FlvRecording node) {
- if (node.getFlvRecordingId() < 0) {
+ if (node.getFlvRecordingId() == 0) {
return getBean(FlvRecordingDao.class).getFlvRecordingRootByOwner(getUserId()).iterator();
} else {
return super.getChildren(node);
@@ -304,21 +324,24 @@ public class RecordingsPanel extends Use
class PublicRecordingTreeProvider extends RecordingTreeProvider {
private static final long serialVersionUID = 5502610991599632079L;
+ private final long orgId;
+ private final String name;
+ public PublicRecordingTreeProvider(long orgId, String name) {
+ this.orgId = orgId;
+ this.name = name;
+ }
+
public Iterator<? extends FlvRecording> getRoots() {
FlvRecording r = new FlvRecording();
- r.setFlvRecordingId(-1);
- r.setFileName(WebSession.getString(861));
+ r.setFlvRecordingId(-orgId);
+ r.setFileName(String.format("%s (%s)", WebSession.getString(861), name));
return Arrays.asList(r).iterator();
}
public Iterator<? extends FlvRecording> getChildren(FlvRecording node) {
if (node.getFlvRecordingId() < 0) {
- List<FlvRecording> roots = new ArrayList<FlvRecording>();
- for (Organisation_Users ou : getBean(UserDao.class).get(getUserId()).getOrganisation_users()) {
- roots.addAll(getBean(FlvRecordingDao.class).getFlvRecordingRootByPublic(ou.getOrganisation().getOrganisation_id()));
- }
- return roots.iterator();
+ return getBean(FlvRecordingDao.class).getFlvRecordingRootByPublic(orgId).iterator();
} else {
return super.getChildren(node);
}
@@ -333,7 +356,7 @@ public class RecordingsPanel extends Use
}
public boolean hasChildren(FlvRecording node) {
- return node.getFlvRecordingId() < 0 || node.getIsFolder();
+ return node.getFlvRecordingId() <= 0 || node.isFolder();
}
public Iterator<? extends FlvRecording> getChildren(FlvRecording node) {