Author: solomax
Date: Thu Sep 11 03:14:08 2014
New Revision: 1624188

URL: http://svn.apache.org/r1624188
Log:
[OPENMEETINGS-1030] Recordings/Files section is rewritten to use 
wicket-jqueryui, drag&drop works better

Modified:
    openmeetings/trunk/singlewebapp/openmeetings-web/pom.xml
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.html
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/MyRecordingTreeProvider.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/PublicRecordingTreeProvider.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
    
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/theme.css

Modified: openmeetings/trunk/singlewebapp/openmeetings-web/pom.xml
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/pom.xml?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/openmeetings-web/pom.xml (original)
+++ openmeetings/trunk/singlewebapp/openmeetings-web/pom.xml Thu Sep 11 
03:14:08 2014
@@ -32,7 +32,6 @@
        <properties>
                
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                
<wicket-dashboard.version>0.11.0+wicket-7</wicket-dashboard.version>
-               <dnd.version>0.6.0</dnd.version>
                <commons-io.version>2.4</commons-io.version>
                <commons-fileupload.version>1.3</commons-fileupload.version>
                <mysql.version>5.1.30</mysql.version>
@@ -392,11 +391,6 @@
                        <version>${wicket.version}</version>
                </dependency>
                <dependency>
-                       <groupId>com.github.svenmeier.wicket-dnd</groupId>
-                       <artifactId>wicket-dnd</artifactId>
-                       <version>${dnd.version}</version>
-               </dependency>
-               <dependency>
                        <groupId>commons-io</groupId>
                        <artifactId>commons-io</artifactId>
                        <version>${commons-io.version}</version>

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
 Thu Sep 11 03:14:08 2014
@@ -290,7 +290,7 @@ public class WebSession extends Abstract
                String s = getBean(FieldLanguagesValuesDao.class).getString(id, 
getLanguage());
                s = s == null ? "[Missing]" :
                        (STRINGS_WITH_APP.contains(id) ? 
s.replaceAll("\\$APP_NAME", getBean(ConfigurationDao.class).getAppName()) : s);
-               return s;// + 
(Application.get().getDebugSettings().isDevelopmentUtilitiesEnabled() ? " [" + 
id + "]" : "");
+               return s + 
(Application.get().getDebugSettings().isDevelopmentUtilitiesEnabled() ? " [" + 
id + "]" : "");
        }
        
        public void setLanguage(long languageId) {

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java
 Thu Sep 11 03:14:08 2014
@@ -69,26 +69,27 @@ public class MenuPanel extends BasePanel
                                if (!Strings.isEmpty(gl.getDesc())) {
                                        
link.add(AttributeAppender.append("title", gl.getDesc()));
                                }
-                               item.add(new WebMarkupContainer("childItems")
-                                               .add(new 
ListView<MenuItem>("childItem", gl.getChildren()) {
-                                                       private static final 
long serialVersionUID = 1L;
-               
-                                                       @Override
-                                                       protected void 
populateItem(ListItem<MenuItem> item) {
-                                                               final MenuItem 
m = item.getModelObject();
-                                                               item.add(new 
AjaxLink<Void>("link") {
-                                                                       private 
static final long serialVersionUID = 1L;
-                                                                       {
-                                                                               
add(new Label("name", m.getName()));
-                                                                               
add(new Label("description", m.getDesc()));
-                                                                       }
-                                                                       
-                                                                       public 
void onClick(AjaxRequestTarget target) {
-                                                                               
m.onClick(getMainPage(), target);
-                                                                       }
-                                                               });
-                                                       }
-                                               
}.setReuseItems(true)).setVisible(null != gl.getChildren()));
+                               item.setVisible(gl.isActive());
+                               item.add(new 
WebMarkupContainer("childItems").add(new ListView<MenuItem>("childItem", 
gl.getChildren()) {
+                                               private static final long 
serialVersionUID = 1L;
+       
+                                               @Override
+                                               protected void 
populateItem(ListItem<MenuItem> item) {
+                                                       final MenuItem m = 
item.getModelObject();
+                                                       
item.setVisible(m.isActive());
+                                                       item.add(new 
AjaxLink<Void>("link") {
+                                                               private static 
final long serialVersionUID = 1L;
+                                                               {
+                                                                       add(new 
Label("name", m.getName()));
+                                                                       add(new 
Label("description", m.getDesc()));
+                                                               }
+                                                               
+                                                               public void 
onClick(AjaxRequestTarget target) {
+                                                                       
m.onClick(getMainPage(), target);
+                                                               }
+                                                       });
+                                               }
+                                       }.setReuseItems(true)).setVisible(null 
!= gl.getChildren()));
                        }
                }.setReuseItems(true));
                add(new MenuFunctionsBehavior(menuContainer.getMarkupId(), id));

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemPanel.java
 Thu Sep 11 03:14:08 2014
@@ -35,8 +35,8 @@ public class FileItemPanel extends Folde
        private static final long serialVersionUID = 1L;
        private final WebMarkupContainer errors = new 
WebMarkupContainer("errors");
 
-       public FileItemPanel(String id, final IModel<? extends FileItem> model, 
final ConvertingErrorsDialog errorsDialog) {
-               super(id, model);
+       public FileItemPanel(String id, final IModel<? extends FileItem> model, 
final FileTreePanel fileTreePanel) {
+               super(id, model, fileTreePanel);
                if (model.getObject() instanceof FlvRecording) {
                        FlvRecording r = (FlvRecording)model.getObject();
                        long errorCount = 
getBean(FlvRecordingLogDao.class).countErrors(r.getId());
@@ -46,13 +46,13 @@ public class FileItemPanel extends Folde
        
                                @Override
                                protected void onEvent(AjaxRequestTarget 
target) {
-                                       errorsDialog.setDefaultModel(model);
-                                       errorsDialog.open(target);
+                                       
fileTreePanel.errorsDialog.setDefaultModel(model);
+                                       fileTreePanel.errorsDialog.open(target);
                                }
                        }).setVisible(visible);
                } else {
                        errors.setVisible(false);
                }
-               item.add(errors);
+               drag.add(errors);
        }
 }

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
 Thu Sep 11 03:14:08 2014
@@ -20,11 +20,7 @@ package org.apache.openmeetings.web.comm
 
 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.file.FileExplorerItemDao;
-import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
-import org.apache.openmeetings.db.entity.file.FileExplorerItem;
 import org.apache.openmeetings.db.entity.file.FileItem;
 import org.apache.openmeetings.db.entity.file.FileItem.Type;
 import org.apache.openmeetings.db.entity.record.FlvRecording;
@@ -38,13 +34,6 @@ import org.apache.wicket.markup.repeater
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 
-import wicketdnd.DragSource;
-import wicketdnd.DropTarget;
-import wicketdnd.Location;
-import wicketdnd.Operation;
-import wicketdnd.Reject;
-import wicketdnd.Transfer;
-
 public class FileItemTree<T extends FileItem> extends DefaultNestedTree<T> {
        private static final long serialVersionUID = 1L;
        private final FileTreePanel treePanel;
@@ -64,46 +53,7 @@ public class FileItemTree<T extends File
                        @Override
                        protected Component newLabelComponent(String id, final 
IModel<T> lm) {
                                FileItem r = lm.getObject();
-                               Component result = Type.Folder == r.getType() 
|| r.getId() < 1 ? new FolderPanel(id, lm) : new FileItemPanel(id, lm, 
treePanel.errorsDialog);
-                               if (r.getId() > 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
-                                               public void 
onAfterDrop(AjaxRequestTarget target, wicketdnd.Transfer transfer) {
-                                                       transfer.setData(null);
-                                               }
-                                       }.drag("div"));
-                               }
-                               if (r.getId() < 0 || Type.Folder == 
r.getType()) {
-                                       result.add(new 
DropTarget(Operation.MOVE) {
-                                               private static final long 
serialVersionUID = 1L;
-
-                                               @Override
-                                               public void 
onDrop(AjaxRequestTarget target, Transfer transfer, Location location) throws 
Reject {
-                                                       FileItem p = 
lm.getObject();
-                                                       long pid = p.getId();
-                                                       T f = 
transfer.getData();
-                                                       f.setParentItemId(pid > 
0 ? pid : null); //FIXME need to disable drop to self
-                                                       
f.setOwnerId(p.getOwnerId());
-                                                       
f.setRoomId(p.getRoomId());
-                                                       if (f instanceof 
FlvRecording) {
-                                                               FlvRecording r 
= (FlvRecording)f;
-                                                               
r.setOrganization_id(((FlvRecording)p).getOrganization_id());
-                                                               
getBean(FlvRecordingDao.class).update(r);
-                                                       } else {
-                                                               
getBean(FileExplorerItemDao.class).update((FileExplorerItem)f);
-                                                       }
-                                                       
target.add(treePanel.trees); //FIXME add correct refresh
-                                               }
-                                       }.dropCenter("div"));
-                               }
-                               return result;
+                               return Type.Folder == r.getType() || r.getId() 
< 1 ? new FolderPanel(id, lm, treePanel) : new FileItemPanel(id, lm, treePanel);
                        }
                        
                        @Override

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
 Thu Sep 11 03:14:08 2014
@@ -20,14 +20,23 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org";>
 <wicket:panel>
+       <script type="text/javascript">
+               function treeRevert(dropped) {
+                       $('#tree-anchor').get(0).scrollIntoView();
+                       this.parent().parent().get(0).scrollIntoView();
+                       return !dropped;
+               }
+       </script>
        <div class="file tree">
-               <div class="icons clear">
+               <div class="icons clear trash-toolbar" 
wicket:id="trash-toolbar">
                        <span wicket:id="create" class="folder-create om-icon 
align-left clickable" wicket:ommessage="title:703"></span>
                        <span wicket:id="refresh" class="refresh om-icon 
align-left clickable" wicket:ommessage="title:704"></span>
-                       <span wicket:id="trash" class="trash om-icon 
align-right clickable" wicket:ommessage="title:705"><span style="display: 
block;" wicket:id="drop-center">&nbsp;</span></span>
+                       <span wicket:id="trash" class="trash om-icon 
align-right clickable"></span>
+                       <span style="padding-left: 20px;" 
wicket:ommessage="title:705"><wicket:ommessage key="1224"/></span>
                        <div class="clear"></div>
                </div>
                <div wicket:id="tree-container" class="trees">
+                       <div id="tree-anchor" style="height: 2px; width: 
2px;"></div>
                        <div wicket:id="tree"></div>
                </div>
                <div class="sizes" wicket:id="sizes">

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
 Thu Sep 11 03:14:08 2014
@@ -32,6 +32,7 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.AddFolderDialog;
 import org.apache.openmeetings.web.common.ConfirmableAjaxLink;
+import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.AjaxSelfUpdatingTimerBehavior;
@@ -44,11 +45,9 @@ import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.util.time.Duration;
 
-import wicketdnd.DropTarget;
-import wicketdnd.Location;
-import wicketdnd.Operation;
-import wicketdnd.Reject;
-import wicketdnd.Transfer;
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.interaction.droppable.Droppable;
 
 public abstract class FileTreePanel extends Panel {
        private static final long serialVersionUID = 1L;
@@ -75,7 +74,26 @@ public abstract class FileTreePanel exte
                        }
                };
                add(addFolder);
-               add(new WebMarkupContainer("create").add(new 
AjaxEventBehavior("onclick") {
+               Droppable<FileItem> trashToolbar = new 
Droppable<FileItem>("trash-toolbar") {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       public void onConfigure(JQueryBehavior behavior) {
+                               super.onConfigure(behavior);
+                               behavior.setOption("hoverClass", 
Options.asString("ui-state-hover trash-toolbar-hover"));
+                               behavior.setOption("accept", 
Options.asString(".recorditem, .fileitem"));
+                       }
+                       
+                       @Override
+                       public void onDrop(AjaxRequestTarget target, Component 
component) {
+                               Object o = component.getDefaultModelObject();
+                               if (o instanceof FileItem) {
+                                       delete((FileItem)o, target);
+                               }
+                       }
+               };
+               add(trashToolbar);
+               trashToolbar.add(new WebMarkupContainer("create").add(new 
AjaxEventBehavior("onclick") {
                        private static final long serialVersionUID = 1L;
 
                        @Override
@@ -83,7 +101,7 @@ public abstract class FileTreePanel exte
                                addFolder.open(target);
                        }
                }));
-               add(new WebMarkupContainer("refresh").add(new 
AjaxEventBehavior("onclick") {
+               trashToolbar.add(new WebMarkupContainer("refresh").add(new 
AjaxEventBehavior("onclick") {
                        private static final long serialVersionUID = 1L;
 
                        @Override
@@ -91,24 +109,14 @@ public abstract class FileTreePanel exte
                                target.add(trees); //FIXME add correct refresh
                        }
                }));
-               ConfirmableAjaxLink trash = new ConfirmableAjaxLink("trash", 
713) {
+               trashToolbar.add(new ConfirmableAjaxLink("trash", 713) {
                        private static final long serialVersionUID = 1L;
 
                        @Override
                        public void onClick(AjaxRequestTarget target) {
                                delete(selectedFile.getObject(), target);
                        }
-               };
-               trash.add(new 
WebMarkupContainer("drop-center").setOutputMarkupId(true)).add(new 
DropTarget(Operation.MOVE) {
-                       private static final long serialVersionUID = 1L;
-
-                       @Override
-                       public void onDrop(AjaxRequestTarget target, Transfer 
transfer, Location location) throws Reject {
-                               FileItem f = transfer.getData();
-                               delete(f, target);
-                       }
-               }.dropCenter("span"));
-               add(trash/*.add(new WindowsTheme())*/); //TODO check theme here
+               });
                
                add(trees.add(treesView).setOutputMarkupId(true));
                updateSizes();

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.html?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.html
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.html
 Thu Sep 11 03:14:08 2014
@@ -20,6 +20,6 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org";>
 <wicket:panel>
-       <div wicket:id="item" class="file item"><wicket:child /><span 
wicket:id="name" class="name"></span></div>
+       <div wicket:id="drop" class="file item"><div 
wicket:id="drag"><wicket:child /><span wicket:id="name" 
class="name"></span></div></div>
 </wicket:panel>
 </html>

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
 Thu Sep 11 03:14:08 2014
@@ -26,7 +26,10 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.file.FileItem;
 import org.apache.openmeetings.db.entity.file.FileItem.Type;
 import org.apache.openmeetings.db.entity.record.FlvRecording;
+import org.apache.wicket.Component;
+import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.behavior.AttributeAppender;
 import org.apache.wicket.extensions.ajax.markup.html.AjaxEditableLabel;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
@@ -34,17 +37,72 @@ import org.apache.wicket.markup.html.pan
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 
-import wicketdnd.theme.WindowsTheme;
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.interaction.draggable.Draggable;
+import com.googlecode.wicket.jquery.ui.interaction.droppable.Droppable;
 
 public class FolderPanel extends Panel {
        private static final long serialVersionUID = 1L;
-       protected final WebMarkupContainer item = new 
WebMarkupContainer("item");
+       protected final MarkupContainer drop;
+       protected final MarkupContainer drag;
 
-       public FolderPanel(String id, final IModel<? extends FileItem> model) {
+       public FolderPanel(String id, final IModel<? extends FileItem> model, 
final FileTreePanel treePanel) {
                super(id, model);
                FileItem r = model.getObject();
-               add(new WindowsTheme());
-               item.add(Type.Folder == r.getType() ? new 
AjaxEditableLabel<String>("name", Model.of(model.getObject().getFileName())) {
+               drop = r.getType() == Type.Folder ? new 
Droppable<FileItem>("drop", Model.of(r)) {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       public void onConfigure(JQueryBehavior behavior) {
+                               super.onConfigure(behavior);
+                               behavior.setOption("hoverClass", 
Options.asString("ui-state-hover"));
+                               behavior.setOption("accept", 
Options.asString(getDefaultModelObject() instanceof FlvRecording ? 
".recorditem" : ".fileitem"));
+                       }
+                       
+                       @Override
+                       public void onDrop(AjaxRequestTarget target, Component 
component) {
+                               Object o = component.getDefaultModelObject();
+                               if (o instanceof FileItem) {
+                                       FileItem p = 
(FileItem)drop.getDefaultModelObject();
+                                       FileItem f = (FileItem)o;
+                                       long pid = p.getId();
+                                       //FIXME parent should not be moved to 
child !!!!!!!
+                                       if (pid == f.getId()) {
+                                               return;
+                                       }
+                                       f.setParentItemId(pid > 0 ? pid : null);
+                                       f.setOwnerId(p.getOwnerId());
+                                       f.setRoomId(p.getRoomId());
+                                       if (f instanceof FlvRecording) {
+                                               FlvRecording r = 
(FlvRecording)f;
+                                               
r.setOrganization_id(((FlvRecording)p).getOrganization_id());
+                                               
getBean(FlvRecordingDao.class).update(r);
+                                       } else {
+                                               
getBean(FileExplorerItemDao.class).update((FileExplorerItem)f);
+                                       }
+                               }
+                               target.add(treePanel.trees); //FIXME add 
correct refresh
+                       }
+               } : new WebMarkupContainer("drop");
+               if (r.getId() < 1) {
+                       drag = new WebMarkupContainer("drag");
+               } else {
+                       Draggable<? extends FileItem> d = new 
Draggable<FileItem>("drag", Model.of(r)) {
+                               private static final long serialVersionUID = 1L;
+
+                               @Override
+                               public void onConfigure(JQueryBehavior 
behavior) {
+                                       super.onConfigure(behavior);
+                                       behavior.setOption("revert", 
"treeRevert");
+                                       behavior.setOption("cursor", 
Options.asString("move"));
+                               }
+                       };
+                       d.setContainment(".file.tree, .icons");
+                       d.add(AttributeAppender.append("class", r instanceof 
FlvRecording ? "recorditem" : "fileitem"));
+                       drag = d;
+               }
+               drag.add(r.getId() < 1 || r.getType() != Type.Folder ? new 
Label("name", r.getFileName()) : new AjaxEditableLabel<String>("name", 
Model.of(model.getObject().getFileName())) {
                        private static final long serialVersionUID = 1L;
                        
                        @Override
@@ -68,7 +126,7 @@ public class FolderPanel extends Panel {
                        public void onEdit(AjaxRequestTarget target) {
                                super.onEdit(target);
                        }
-               } : new Label("name", r.getFileName()));
-               add(item.setOutputMarkupId(true));
+               });
+               add(drop.add(drag).setOutputMarkupId(true));
        }
 }

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/MyRecordingTreeProvider.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/MyRecordingTreeProvider.java?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/MyRecordingTreeProvider.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/MyRecordingTreeProvider.java
 Thu Sep 11 03:14:08 2014
@@ -25,6 +25,7 @@ import java.util.Arrays;
 import java.util.Iterator;
 
 import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
+import org.apache.openmeetings.db.entity.file.FileItem.Type;
 import org.apache.openmeetings.db.entity.record.FlvRecording;
 import org.apache.openmeetings.web.app.WebSession;
 
@@ -34,6 +35,7 @@ public class MyRecordingTreeProvider ext
        public Iterator<? extends FlvRecording> getRoots() {
                FlvRecording r = new FlvRecording();
                r.setId(0L);
+               r.setType(Type.Folder);
                r.setFileName(WebSession.getString(860));
                r.setOwnerId(getUserId());
                return Arrays.asList(r).iterator();

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/PublicRecordingTreeProvider.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/PublicRecordingTreeProvider.java?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/PublicRecordingTreeProvider.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/PublicRecordingTreeProvider.java
 Thu Sep 11 03:14:08 2014
@@ -24,6 +24,7 @@ import java.util.Arrays;
 import java.util.Iterator;
 
 import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
+import org.apache.openmeetings.db.entity.file.FileItem.Type;
 import org.apache.openmeetings.db.entity.record.FlvRecording;
 import org.apache.openmeetings.web.app.WebSession;
 
@@ -42,6 +43,7 @@ public class PublicRecordingTreeProvider
                r.setId(orgId == null ? -1 : -orgId);
                r.setOrganization_id(orgId);
                r.setOwnerId(null);
+               r.setType(Type.Folder);
                String pub = WebSession.getString(861);
                r.setFileName(orgId == null ? pub : String.format("%s (%s)", 
pub, name));
                return Arrays.asList(r).iterator();

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java
 Thu Sep 11 03:14:08 2014
@@ -76,7 +76,7 @@ public class MainPage extends BaseInited
        private final WebMarkupContainer topLinks = new 
WebMarkupContainer("topLinks");
        private final MarkupContainer contents;
        private final AbstractAjaxTimerBehavior areaBehavior;
-       private DebugBar dev = null;
+       private final Component dev;
        
        public MainPage(PageParameters pp) {
                super();
@@ -121,10 +121,9 @@ public class MainPage extends BaseInited
                });
                add(about);
                if 
(getApplication().getDebugSettings().isDevelopmentUtilitiesEnabled()) {
-                   add(dev = new DebugBar("dev"));
-                   dev.setOutputMarkupId(true);
+                   add((dev = new DebugBar("dev")).setOutputMarkupId(true));
                } else {
-                   add(new EmptyPanel("dev").setVisible(false));
+                   add((dev = new EmptyPanel("dev")).setVisible(false));
                }               
                topLinks.add(new ExternalLink("bug", 
"https://issues.apache.org/jira/browse/OPENMEETINGS";));//FIXME hardcoded
                

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
 Thu Sep 11 03:14:08 2014
@@ -41,5 +41,6 @@
                <div class="wb" wicket:id="whiteboard"></div>
        </div>
        <div wicket:id="invite"></div>
+       <div wicket:id="createPoll"></div>
 </wicket:panel>
 </html>

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
 Thu Sep 11 03:14:08 2014
@@ -97,7 +97,7 @@ public class RoomPanel extends BasePanel
        private long roomId;
        private Client c;
        private final StartSharingEventBehavior startSharing;
-       private AbstractDefaultAjaxBehavior aab = new 
AbstractDefaultAjaxBehavior() {
+       private final AbstractDefaultAjaxBehavior aab = new 
AbstractDefaultAjaxBehavior() {
                private static final long serialVersionUID = 1L;
 
                @Override
@@ -116,6 +116,15 @@ public class RoomPanel extends BasePanel
                }
        };
        private final InvitationDialog invite;
+       private final CreatePollDialog createPoll;
+       private final MenuPanel menuPanel;
+       private final RoomMenuItem shareItem;
+       private final RoomMenuItem applyModer;
+       private final RoomMenuItem applyWB;
+       private final RoomMenuItem applyAV;
+       private final RoomMenuItem pollVote;
+       private final RoomMenuItem pollResult;
+       private final RoomMenuItem sipDialer;
        
        public RoomPanel(String id, long _roomId) {
                this(id, getBean(RoomDao.class).get(_roomId));
@@ -124,8 +133,27 @@ public class RoomPanel extends BasePanel
        public RoomPanel(String id, Room r) {
                super(id);
                this.roomId = r.getId();
-               invite = new InvitationDialog("invite", roomId);
-               add(new MenuPanel("roomMenu", 
getMenu()).setVisible(!r.getHideTopBar()));
+               shareItem = new RoomMenuItem(WebSession.getString(239), 
WebSession.getString(1480)) {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       public void onClick(MainPage page, AjaxRequestTarget 
target) {
+                               startSharing.respond(target);
+                       }
+               };
+               applyModer = new RoomMenuItem(WebSession.getString(784), 
WebSession.getString(1481));
+               applyModer.setActive(false);
+               applyWB = new RoomMenuItem(WebSession.getString(785), 
WebSession.getString(1492));
+               applyWB.setActive(false);
+               applyAV = new RoomMenuItem(WebSession.getString(786), 
WebSession.getString(1482));
+               applyAV.setActive(false);
+               pollVote = new RoomMenuItem(WebSession.getString(42), 
WebSession.getString(1485));
+               pollVote.setActive(false);
+               pollResult = new RoomMenuItem(WebSession.getString(37), 
WebSession.getString(1484));
+               pollResult.setActive(false);
+               sipDialer = new RoomMenuItem(WebSession.getString(1447), 
WebSession.getString(1488));
+               sipDialer.setActive(false);
+               add((menuPanel = new MenuPanel("roomMenu", 
getMenu())).setVisible(!r.getHideTopBar()));
                WebMarkupContainer wb = new WebMarkupContainer("whiteboard");
                add(wb.setOutputMarkupId(true));
                add(new WhiteboardBehavior("1", wb.getMarkupId(), null, null, 
null));
@@ -201,7 +229,8 @@ public class RoomPanel extends BasePanel
                                startSharing.respond(target);
                        }
                }).add(new AttributeAppender("title", 
WebSession.getString(1480)))); //FIXME add/remove
-               add(invite);
+               add(invite = new InvitationDialog("invite", roomId));
+               add(createPoll = new CreatePollDialog("createPoll", roomId));
        }
 
        private JSONArray getStringLabels(long... ids) {
@@ -287,9 +316,8 @@ public class RoomPanel extends BasePanel
        }
        
        private List<MenuItem> getMenu() {
-               //TODO hide/show
                List<MenuItem> menu = new ArrayList<MenuItem>();
-               menu.add(new RoomMenuItem(WebSession.getString(308), 
WebSession.getString(309), "room menu exit") {
+               RoomMenuItem exit = new RoomMenuItem(WebSession.getString(308), 
WebSession.getString(309), "room menu exit") {
                        private static final long serialVersionUID = 1L;
 
                        @Override
@@ -305,7 +333,10 @@ public class RoomPanel extends BasePanel
                                        throw new RedirectToUrlException(url);
                                }
                        }
-               });
+               };
+               User u = getBean(UserDao.class).get(getUserId());
+               exit.setActive(u.getType() != User.Type.external && u.getType() 
!= User.Type.contact);
+               menu.add(exit);//TODO check this
                MenuItem files = new RoomMenuItem(WebSession.getString(245));
                List<RoomMenuItem> fileItems = new ArrayList<RoomMenuItem>();
                fileItems.add(new RoomMenuItem(WebSession.getString(15), 
WebSession.getString(1479)));
@@ -323,21 +354,21 @@ public class RoomPanel extends BasePanel
                                invite.open(target);
                        }
                });
-               actionItems.add(new RoomMenuItem(WebSession.getString(239), 
WebSession.getString(1480)) {
+               actionItems.add(shareItem); //FIXME enable/disable
+               actionItems.add(applyModer); //FIXME enable/disable
+               actionItems.add(applyWB); //FIXME enable/disable
+               actionItems.add(applyAV); //FIXME enable/disable
+               actionItems.add(new RoomMenuItem(WebSession.getString(24), 
WebSession.getString(1483)) {
                        private static final long serialVersionUID = 1L;
 
                        @Override
                        public void onClick(MainPage page, AjaxRequestTarget 
target) {
-                               startSharing.respond(target);
+                               createPoll.open(target);
                        }
                });
-               actionItems.add(new RoomMenuItem(WebSession.getString(784), 
WebSession.getString(1481)));
-               actionItems.add(new RoomMenuItem(WebSession.getString(785), 
WebSession.getString(1492)));
-               actionItems.add(new RoomMenuItem(WebSession.getString(786), 
WebSession.getString(1482)));
-               actionItems.add(new RoomMenuItem(WebSession.getString(24), 
WebSession.getString(1483)));
-               actionItems.add(new RoomMenuItem(WebSession.getString(37), 
WebSession.getString(1484)));
-               actionItems.add(new RoomMenuItem(WebSession.getString(42), 
WebSession.getString(1485)));
-               actionItems.add(new RoomMenuItem(WebSession.getString(1447), 
WebSession.getString(1488)));
+               actionItems.add(pollResult); //FIXME enable/disable
+               actionItems.add(pollVote); //FIXME enable/disable
+               actionItems.add(sipDialer);
                actionItems.add(new RoomMenuItem(WebSession.getString(1126), 
WebSession.getString(1490)));
                actions.setChildren(actionItems);
                menu.add(actions);
@@ -408,6 +439,7 @@ public class RoomPanel extends BasePanel
                public Iterator<? extends FileExplorerItem> getRoots() {
                        FileExplorerItem f = new FileExplorerItem();
                        f.setRoomId(roomId);
+                       f.setType(Type.Folder);
                        if (roomId == null) {
                                f.setId(0L);
                                f.setOwnerId(getUserId());

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
 Thu Sep 11 03:14:08 2014
@@ -85,9 +85,11 @@ public class VideoInfo extends Panel {
                FlvRecording r = _r == null ? new FlvRecording() : _r;
                rm.setObject(r);
                try {
-                       Room room = getBean(RoomDao.class).get(r.getRoomId());
-                       if (room != null) {
-                               roomName.setObject(room.getName());
+                       if (r.getRoomId() != null) {
+                               Room room = 
getBean(RoomDao.class).get(r.getRoomId());
+                               if (room != null) {
+                                       roomName.setObject(room.getName());
+                               }
                        }
                } catch (Exception e) {
                        //no-op

Modified: 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/theme.css
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/theme.css?rev=1624188&r1=1624187&r2=1624188&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/theme.css 
(original)
+++ 
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/css/theme.css 
Thu Sep 11 03:14:08 2014
@@ -296,6 +296,14 @@ html, body {
        overflow-x: hidden;
        overflow-y: auto;
 }
+.trash-toolbar {
+       font-weight: bold;
+       line-height: 20px;
+       color: transparent;
+}
+.trash-toolbar-hover {
+       color: inherit;
+}
 .file.tree .files .sizes table, .file.tree .files .info table {
        width: 100%;
 }
@@ -404,6 +412,7 @@ html, body {
 .file.item {
        position: relative;
        display: inline-block;
+       min-width: 150px;
 }
 .file.item .name {
        color: black;


Reply via email to