Author: solomax
Date: Thu Sep 11 04:16:36 2014
New Revision: 1624190

URL: http://svn.apache.org/r1624190
Log:
[OPENMEETINGS-1041] drag&drop in recordings is improved;

Modified:
    openmeetings/branches/3.0.x/ivy.xml
    openmeetings/branches/3.0.x/src/main/webapp/css/theme.css
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
    
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.java
    
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

Modified: openmeetings/branches/3.0.x/ivy.xml
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/ivy.xml?rev=1624190&r1=1624189&r2=1624190&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/ivy.xml (original)
+++ openmeetings/branches/3.0.x/ivy.xml Thu Sep 11 04:16:36 2014
@@ -226,52 +226,52 @@
                <dependency org="org.simpleframework" name="simple-xml" 
rev="2.7" conf="openmeetings->*" transitive="false">
                        <include type="jar" />
                </dependency>
-               <dependency org="org.apache.wicket" name="wicket-request" 
rev="6.16.0" conf="openmeetings->*" transitive="false">
+               <dependency org="org.apache.wicket" name="wicket-request" 
rev="6.17.0" conf="openmeetings->*" transitive="false">
                        <include type="jar" />
                </dependency>
-               <dependency org="org.apache.wicket" name="wicket-util" 
rev="6.16.0" conf="openmeetings->*" transitive="false">
+               <dependency org="org.apache.wicket" name="wicket-util" 
rev="6.17.0" conf="openmeetings->*" transitive="false">
                        <include type="jar" />
                </dependency>
-               <dependency org="org.apache.wicket" name="wicket-core" 
rev="6.16.0" conf="openmeetings->*" transitive="false">
+               <dependency org="org.apache.wicket" name="wicket-core" 
rev="6.17.0" conf="openmeetings->*" transitive="false">
                        <include type="jar" />
                </dependency>
-               <dependency org="org.apache.wicket" name="wicket-auth-roles" 
rev="6.16.0" conf="openmeetings->*" transitive="false">
+               <dependency org="org.apache.wicket" name="wicket-auth-roles" 
rev="6.17.0" conf="openmeetings->*" transitive="false">
                        <include type="jar" />
                </dependency>
-               <dependency org="org.apache.wicket" name="wicket-ioc" 
rev="6.16.0" conf="openmeetings->*" transitive="false">
+               <dependency org="org.apache.wicket" name="wicket-ioc" 
rev="6.17.0" conf="openmeetings->*" transitive="false">
                        <include type="jar" />
                </dependency>
-               <dependency org="org.apache.wicket" name="wicket-extensions" 
rev="6.16.0" conf="openmeetings->*" transitive="false">
+               <dependency org="org.apache.wicket" name="wicket-extensions" 
rev="6.17.0" conf="openmeetings->*" transitive="false">
                        <include type="jar" />
                </dependency>
-               <dependency org="org.apache.wicket" name="wicket-datetime" 
rev="6.16.0" conf="openmeetings->*" transitive="false">
+               <dependency org="org.apache.wicket" name="wicket-datetime" 
rev="6.17.0" conf="openmeetings->*" transitive="false">
                        <include type="jar" />
                </dependency>
                <dependency org="joda-time" name="joda-time" rev="2.3" 
conf="openmeetings->*" transitive="false">
                        <include type="jar" />
                </dependency>
-               <dependency org="org.apache.wicket" name="wicket-devutils" 
rev="6.16.0" conf="openmeetings->*" transitive="false">
+               <dependency org="org.apache.wicket" name="wicket-devutils" 
rev="6.17.0" conf="openmeetings->*" transitive="false">
                        <include type="jar" />
                </dependency>
-               <dependency org="org.apache.wicket" 
name="wicket-native-websocket-core" rev="6.16.0" conf="openmeetings->*" 
transitive="false">
+               <dependency org="org.apache.wicket" 
name="wicket-native-websocket-core" rev="6.17.0" conf="openmeetings->*" 
transitive="false">
                        <include type="jar" />
                </dependency>
-               <dependency org="org.apache.wicket" 
name="wicket-native-websocket-tomcat" rev="6.16.0" conf="openmeetings->*" 
transitive="false">
+               <dependency org="org.apache.wicket" 
name="wicket-native-websocket-tomcat" rev="6.17.0" conf="openmeetings->*" 
transitive="false">
                        <include type="jar" />
                </dependency>
-               <dependency org="com.googlecode.wicket-jquery-ui" 
name="wicket-jquery-ui-core" rev="6.16.0" conf="openmeetings->*" 
transitive="false">
+               <dependency org="com.googlecode.wicket-jquery-ui" 
name="wicket-jquery-ui-core" rev="6.17.0" conf="openmeetings->*" 
transitive="false">
                        <include type="jar" />
                </dependency>
-               <dependency org="com.googlecode.wicket-jquery-ui" 
name="wicket-jquery-ui" rev="6.16.0" conf="openmeetings->*" transitive="false">
+               <dependency org="com.googlecode.wicket-jquery-ui" 
name="wicket-jquery-ui" rev="6.17.0" conf="openmeetings->*" transitive="false">
             <include type="jar" />
         </dependency>
-               <dependency org="com.googlecode.wicket-jquery-ui" 
name="wicket-jquery-ui-calendar" rev="6.16.0" conf="openmeetings->*" 
transitive="false">
+               <dependency org="com.googlecode.wicket-jquery-ui" 
name="wicket-jquery-ui-calendar" rev="6.17.0" conf="openmeetings->*" 
transitive="false">
                        <include type="jar" />
                </dependency>
-               <dependency org="com.googlecode.wicket-jquery-ui" 
name="wicket-jquery-ui-plugins" rev="6.16.0" conf="openmeetings->*" 
transitive="false">
+               <dependency org="com.googlecode.wicket-jquery-ui" 
name="wicket-jquery-ui-plugins" rev="6.17.0" conf="openmeetings->*" 
transitive="false">
                        <include type="jar" />
                </dependency>
-               <dependency org="com.googlecode.wicket-jquery-ui" 
name="wicket-kendo-ui" rev="6.16.0" conf="openmeetings->*" transitive="false">
+               <dependency org="com.googlecode.wicket-jquery-ui" 
name="wicket-kendo-ui" rev="6.17.0" conf="openmeetings->*" transitive="false">
                        <include type="jar" />
                </dependency>
                <dependency org="ro.fortsoft.wicket.dashboard" 
name="wicket-dashboard-core" rev="0.10" conf="openmeetings->*" 
transitive="false">
@@ -280,13 +280,10 @@
                <dependency org="com.google.code.gson" name="gson" rev="2.2.4" 
conf="openmeetings->*" transitive="false">
                        <include type="jar" />
                </dependency>
-               <dependency org="com.github.svenmeier.wicket-dnd" 
name="wicket-dnd" rev="0.6.0" conf="openmeetings->*" transitive="false">
+               <dependency org="org.wicketstuff" 
name="wicketstuff-urlfragment" rev="6.17.0" conf="openmeetings->*" 
transitive="false">
                        <include type="jar" />
                </dependency>
-               <dependency org="org.wicketstuff" 
name="wicketstuff-urlfragment" rev="6.16.0" conf="openmeetings->*" 
transitive="false">
-                       <include type="jar" />
-               </dependency>
-               <dependency org="org.wicketstuff" name="wicketstuff-html5" 
rev="6.16.0" conf="openmeetings->*" transitive="false">
+               <dependency org="org.wicketstuff" name="wicketstuff-html5" 
rev="6.17.0" conf="openmeetings->*" transitive="false">
                        <include type="jar" />
                </dependency>
                <dependency org="com.vaynberg.wicket.select2" 
name="wicket-select2" rev="2.2.3" conf="openmeetings->*" transitive="false">

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=1624190&r1=1624189&r2=1624190&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 Thu Sep 11 
04:16:36 2014
@@ -288,6 +288,14 @@ html, body {
        width: 250px;
        border: 1px solid #ccc;
 }
+.trash-toolbar {
+       font-weight: bold;
+       line-height: 20px;
+       color: transparent;
+}
+.trash-toolbar-hover {
+       color: inherit;
+}
 .recording .files .trees {
        min-height: 400px;
        max-height: 600px;

Modified: 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
URL: 
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard.java?rev=1624190&r1=1624189&r2=1624190&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
 Thu Sep 11 04:16:36 2014
@@ -340,7 +340,7 @@ public class InstallWizard extends Wizar
                                                        );
                                        } else {
                                                
progressBar.setModelObject(Application.get()._getBean(ImportInitvalues.class).getProgress());
-                                               progressBar.respond(target);
+                                               progressBar.refresh(target);
                                                //TODO uncomment later 
target.add(value);
                                                //TODO add current step result 
as info
                                        }

Modified: 
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=1624190&r1=1624189&r2=1624190&view=diff
==============================================================================
--- 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.java
 (original)
+++ 
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/record/RecordingItemPanel.java
 Thu Sep 11 04:16:36 2014
@@ -33,18 +33,18 @@ 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);
+       public RecordingItemPanel(String id, final IModel<FlvRecording> model, 
final RecordingsPanel treePanel) {
+               super(id, model, treePanel);
                FlvRecording r = model.getObject();
                long errorCount = 
getBean(FlvRecordingLogDao.class).countErrors(r.getFlvRecordingId());
                boolean visible = errorCount != 0 || (Status.PROCESSING != 
r.getStatus() && !isRecordingExists(r.getFileHash() + MP4_EXTENSION));
-               item.add(new WebMarkupContainer("errors").add(new 
AjaxEventBehavior("click") {
+               drag.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);
+                               treePanel.errorsDialog.setDefaultModel(model);
+                               treePanel.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=1624190&r1=1624189&r2=1624190&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
 Thu Sep 11 04:16:36 2014
@@ -20,6 +20,6 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org";>
 <wicket:panel>
-       <div wicket:id="item" class="recording item"><span wicket:id="name" 
class="name"></span><wicket:child /></div>
+       <div wicket:id="drop" class="recording item"><div 
wicket:id="drag"><wicket:child /><span wicket:id="name" 
class="name"></span></div></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=1624190&r1=1624189&r2=1624190&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
 Thu Sep 11 04:16:36 2014
@@ -22,7 +22,10 @@ import static org.apache.openmeetings.we
 
 import org.apache.openmeetings.db.dao.record.FlvRecordingDao;
 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;
@@ -30,17 +33,67 @@ 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 RecordingPanel extends Panel {
        private static final long serialVersionUID = 1L;
-       protected final WebMarkupContainer item = new 
WebMarkupContainer("item");
+       protected final MarkupContainer drop;
+       protected final MarkupContainer drag;
 
-       public RecordingPanel(String id, final IModel<FlvRecording> model) {
+       public RecordingPanel(String id, final IModel<FlvRecording> model, 
final RecordingsPanel treePanel) {
                super(id, model);
                FlvRecording r = model.getObject();
-               add(new WindowsTheme());
-               item.add(r.isFolder() ? new AjaxEditableLabel<String>("name", 
Model.of(model.getObject().getFileName())) {
+               drop = r.isFolder() ? new Droppable<FlvRecording>("drop", 
model) {
+                       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(".recorditem"));
+                       }
+                       
+                       @Override
+                       public void onDrop(AjaxRequestTarget target, Component 
component) {
+                               Object o = component.getDefaultModelObject();
+                               if (o instanceof FlvRecording) {
+                                       FlvRecording p = 
(FlvRecording)drop.getDefaultModelObject();
+                                       FlvRecording f = (FlvRecording)o;
+                                       long pid = p.getFlvRecordingId();
+                                       //FIXME parent should not be moved to 
child !!!!!!!
+                                       if (pid == f.getFlvRecordingId()) {
+                                               return;
+                                       }
+                                       f.setParentFileExplorerItemId(pid > 0 ? 
pid : null);
+                                       f.setOwnerId(p.getOwnerId());
+                                       f.setRoom_id(p.getRoom_id());
+                                       
f.setOrganization_id((p).getOrganization_id());
+                                       
getBean(FlvRecordingDao.class).update(f);
+                               }
+                               target.add(treePanel.trees); //FIXME add 
correct refresh
+                       }
+               } : new WebMarkupContainer("drop");
+               if (r.getFlvRecordingId() < 1) {
+                       drag = new WebMarkupContainer("drag");
+               } else {
+                       Draggable<FlvRecording> d = new 
Draggable<FlvRecording>("drag", model) {
+                               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");
+                       d.add(AttributeAppender.append("class", "recorditem"));
+                       drag = d;
+               }
+               drag.add(r.getFlvRecordingId() < 1 || !r.isFolder() ? new 
Label("name", r.getFileName()) : new AjaxEditableLabel<String>("name", 
Model.of(model.getObject().getFileName())) {
                        private static final long serialVersionUID = 1L;
                        
                        @Override
@@ -51,16 +104,16 @@ public class RecordingPanel extends Pane
                        @Override
                        protected void onSubmit(AjaxRequestTarget target) {
                                super.onSubmit(target);
-                               FlvRecording r = model.getObject();
-                               r.setFileName(getEditor().getModelObject());
-                               getBean(FlvRecordingDao.class).update(r);
+                               FlvRecording fi = model.getObject();
+                               fi.setFileName(getEditor().getModelObject());
+                               getBean(FlvRecordingDao.class).update(fi);
                        }
                        
                        @Override
                        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/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=1624190&r1=1624189&r2=1624190&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
 Thu Sep 11 04:16:36 2014
@@ -20,16 +20,25 @@
 -->
 <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>
        <table class="recording">
                <tr>
-                       <td valign="top" class="files">
-                               <div class="icons clear">
-                                       <span wicket:id="create" 
class="folder-create om-icon align-left clickable"></span>
-                                       <span wicket:id="refresh" 
class="refresh om-icon align-left clickable"></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>
+                       <td valign="top" class="files file tree">
+                               <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"></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/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=1624190&r1=1624189&r2=1624190&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
 Thu Sep 11 04:16:36 2014
@@ -55,23 +55,20 @@ 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;
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.interaction.droppable.Droppable;
 
 public class RecordingsPanel extends UserPanel {
        private static final long serialVersionUID = 1321258690447136958L;
-       private final WebMarkupContainer trees = new 
WebMarkupContainer("tree-container");
+       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 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);
-       private final RecordingErrorsDialog errorsDialog = new 
RecordingErrorsDialog("errors", Model.of((FlvRecording)null));
+       final RecordingErrorsDialog errorsDialog = new 
RecordingErrorsDialog("errors", Model.of((FlvRecording)null));
        private RecordingTree selected;
        
        public RecordingsPanel(String id) {
@@ -102,45 +99,49 @@ public class RecordingsPanel extends Use
                        }
                };
                add(addFolder);
-               add(new WebMarkupContainer("create").add(new 
AjaxEventBehavior("onclick") {
+               Droppable<FlvRecording> trashToolbar = new 
Droppable<FlvRecording>("trash-toolbar") {
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       protected void onEvent(AjaxRequestTarget target) {
-                               addFolder.open(target);
+                       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"));
                        }
-               }));
-               add(new WebMarkupContainer("refresh").add(new 
AjaxEventBehavior("onclick") {
+                       
+                       @Override
+                       public void onDrop(AjaxRequestTarget target, Component 
component) {
+                               Object o = component.getDefaultModelObject();
+                               if (o instanceof FlvRecording) {
+                                       delete((FlvRecording)o, target);
+                               }
+                       }
+               };
+               add(trashToolbar);
+               trashToolbar.add(new WebMarkupContainer("create").add(new 
AjaxEventBehavior("onclick") {
                        private static final long serialVersionUID = 1L;
 
                        @Override
                        protected void onEvent(AjaxRequestTarget target) {
-                               target.add(trees); //FIXME add correct refresh
+                               addFolder.open(target);
                        }
                }));
-               ConfirmableAjaxLink trash = new ConfirmableAjaxLink("trash", 
713) {
+               trashToolbar.add(new WebMarkupContainer("refresh").add(new 
AjaxEventBehavior("onclick") {
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       public void onClick(AjaxRequestTarget target) {
-                               long id = rm.getObject().getFlvRecordingId();
-                               if (id > 0) {
-                                       
getBean(FlvRecordingDao.class).delete(rm.getObject());
-                               }
+                       protected void onEvent(AjaxRequestTarget target) {
                                target.add(trees); //FIXME add correct refresh
                        }
-               };
-               trash.add(new 
WebMarkupContainer("drop-center").setOutputMarkupId(true)).add(new 
DropTarget(Operation.MOVE) {
+               }));
+               trashToolbar.add(new ConfirmableAjaxLink("trash", 713) {
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       public void onDrop(AjaxRequestTarget target, Transfer 
transfer, Location location) throws Reject {
-                               FlvRecording r = transfer.getData();
-                               getBean(FlvRecordingDao.class).delete(r);
-                               target.add(trees); //FIXME add correct refresh
+                       public void onClick(AjaxRequestTarget target) {
+                               delete(rm.getObject(), target);
                        }
-               }.dropCenter("span"));
-               add(trash/*.add(new WindowsTheme())*/); //TODO check theme here
+               });
                RepeatingView treesView = new RepeatingView("tree");
                treesView.add(selected = new 
RecordingTree(treesView.newChildId(), new MyRecordingTreeProvider()));
                treesView.add(new RecordingTree(treesView.newChildId(), new 
PublicRecordingTreeProvider(null, null)));
@@ -161,6 +162,14 @@ public class RecordingsPanel extends Use
                add(video, info, errorsDialog);
        }
 
+       void delete(FlvRecording f, AjaxRequestTarget target) {
+               long id = f.getFlvRecordingId();
+               if (id > 0) {
+                       getBean(FlvRecordingDao.class).delete(f);
+               }
+               target.add(trees); //FIXME add correct refresh
+       }
+       
        private void updateSizes() {
                RecordingContainerData sizeData = 
getBean(FlvRecordingDao.class).getRecordingContainerData(getUserId());
                if (sizeData != null) {
@@ -186,40 +195,7 @@ public class RecordingsPanel extends Use
                                @Override
                                protected Component newLabelComponent(String 
id, final IModel<FlvRecording> lm) {
                                        FlvRecording r = lm.getObject();
-                                       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
-                                                       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 
onDrop(AjaxRequestTarget target, Transfer transfer, Location location) throws 
Reject {
-                                                               FlvRecording p 
= lm.getObject();
-                                                               long pid = 
p.getFlvRecordingId();
-                                                               FlvRecording r 
= transfer.getData();
-                                                               
r.setParentFileExplorerItemId(pid > 0 ? pid : null);
-                                                               
r.setOrganization_id(p.getOrganization_id());
-                                                               
r.setOwnerId(p.getOwnerId());
-                                                               
getBean(FlvRecordingDao.class).update(r);
-                                                               
target.add(trees); //FIXME add correct refresh
-                                                       }
-                                               }.dropCenter("div"));
-                                       }
-                                       return result;
+                                       return r.isFolder() || 
r.getFlvRecordingId() < 1 ? new RecordingPanel(id, lm, RecordingsPanel.this) : 
new RecordingItemPanel(id, lm, RecordingsPanel.this);
                                }
                                
                                @Override
@@ -309,6 +285,7 @@ public class RecordingsPanel extends Use
                        FlvRecording r = new FlvRecording();
                        r.setFlvRecordingId(0);
                        r.setFileName(WebSession.getString(860));
+                       r.setFolder(true);
                        r.setOwnerId(getUserId());
                        return Arrays.asList(r).iterator();
                }
@@ -337,6 +314,7 @@ public class RecordingsPanel extends Use
                        r.setFlvRecordingId(orgId == null ? -1 : -orgId);
                        r.setOrganization_id(orgId);
                        r.setOwnerId(null);
+                       r.setFolder(true);
                        String pub = WebSession.getString(861);
                        r.setFileName(orgId == null ? pub : String.format("%s 
(%s)", pub, name));
                        return Arrays.asList(r).iterator();


Reply via email to