Author: solomax
Date: Mon Aug 8 04:58:07 2016
New Revision: 1755473
URL: http://svn.apache.org/viewvc?rev=1755473&view=rev
Log:
[OPENMEETINGS-1030] tree deletion is improved
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ConfirmableAjaxBorder.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ConfirmableAjaxBorder.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ConfirmableAjaxBorder.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ConfirmableAjaxBorder.java?rev=1755473&r1=1755472&r2=1755473&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ConfirmableAjaxBorder.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ConfirmableAjaxBorder.java
Mon Aug 8 04:58:07 2016
@@ -23,7 +23,6 @@ import org.apache.wicket.ajax.AjaxReques
import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
import org.apache.wicket.markup.html.border.Border;
import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
@@ -36,21 +35,15 @@ public abstract class ConfirmableAjaxBor
private static final long serialVersionUID = 1L;
private final Form<?> form = new Form<>("form");
private final Form<?> userForm;
- private final IModel<String> title;
- private final IModel<String> message;
+ private final AbstractFormDialog<?> dialog;
public ConfirmableAjaxBorder(String id, String title, String message) {
- this(id, Model.of(title), Model.of(message), null);
+ this(id, title, message, null);
}
public ConfirmableAjaxBorder(String id, String title, String message,
Form<?> form) {
- this(id, Model.of(title), Model.of(message), form);
- }
-
- public ConfirmableAjaxBorder(String id, IModel<String> title,
IModel<String> message, Form<?> form) {
- super(id, message);
- this.title = title;
- this.message = message;
+ super(id, Model.of(message));
+ dialog = newFormDialog("dialog", title, message);
this.userForm = form;
setOutputMarkupId(true);
}
@@ -58,7 +51,6 @@ public abstract class ConfirmableAjaxBor
@Override
protected void onInitialize() {
super.onInitialize();
- final AbstractFormDialog<?> dialog = newFormDialog("dialog",
title, message);
add(new AjaxEventBehavior("click") {
private static final long serialVersionUID = 1L;
@@ -84,6 +76,10 @@ public abstract class ConfirmableAjaxBor
protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
}
+ protected void onEvent(AjaxRequestTarget target) {
+ dialog.open(target);
+ }
+
/**
* Triggered when the form is submitted, but the validation failed
*
@@ -101,8 +97,6 @@ public abstract class ConfirmableAjaxBor
*/
protected abstract void onSubmit(AjaxRequestTarget target, Form<?>
form);
- // Factories //
-
/**
* Create the dialog instance<br/>
* <b>Warning:</b> to be overridden with care!
@@ -112,7 +106,7 @@ public abstract class ConfirmableAjaxBor
* @param message the message to be displayed
* @return the dialog instance
*/
- protected AbstractFormDialog<?> newFormDialog(String id, IModel<String>
title, IModel<String> message) {
+ protected AbstractFormDialog<?> newFormDialog(String id, String title,
String message) {
return new MessageFormDialog(id, title, message,
DialogButtons.OK_CANCEL, DialogIcon.WARN) {
private static final long serialVersionUID = 1L;
@@ -138,11 +132,4 @@ public abstract class ConfirmableAjaxBor
}
};
}
-
- @Override
- protected void onDetach() {
- super.onDetach();
- title.detach();
- message.detach();
- }
}
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html?rev=1755473&r1=1755472&r2=1755473&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
Mon Aug 8 04:58:07 2016
@@ -28,11 +28,11 @@
}
</script>
<div class="file tree item drop area">
- <div class="icons clear trash-toolbar"
wicket:id="trash-toolbar">
+ <div class="icons clear trash-toolbar"
wicket:id="trash-toolbar" wicket:message="title:705">
<span wicket:id="upload" class="add om-icon align-left
clickable" wicket:message="title:702"></span>
<span wicket:id="create" class="folder-create om-icon
align-left clickable" wicket:message="title:703"></span>
<span wicket:id="refresh" class="refresh om-icon
align-left clickable" wicket:message="title:704"></span>
- <span wicket:id="trash" class="trash om-icon
align-right clickable" wicket:message="title:705"></span>
+ <span wicket:id="trash" class="trash om-icon
align-right clickable"></span>
<div class="clear"></div>
</div>
<div wicket:id="tree-container" class="trees">
@@ -57,4 +57,4 @@
<div wicket:id="errors"></div>
</div>
</wicket:panel>
-</html>
\ No newline at end of file
+</html>
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java?rev=1755473&r1=1755472&r2=1755473&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
Mon Aug 8 04:58:07 2016
@@ -23,6 +23,7 @@ import static org.apache.openmeetings.we
import java.util.ArrayList;
import java.util.Date;
+import java.util.UUID;
import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
import org.apache.openmeetings.db.dao.record.RecordingDao;
@@ -36,6 +37,8 @@ import org.apache.openmeetings.web.commo
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.attributes.CallbackParameter;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
import org.apache.wicket.extensions.markup.html.repeater.tree.ITreeProvider;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
@@ -49,7 +52,10 @@ import org.apache.wicket.model.Model;
import com.googlecode.wicket.jquery.core.JQueryBehavior;
import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.core.ajax.IJQueryAjaxAware;
+import com.googlecode.wicket.jquery.core.ajax.JQueryAjaxBehavior;
import com.googlecode.wicket.jquery.ui.interaction.droppable.Droppable;
+import com.googlecode.wicket.jquery.ui.interaction.droppable.DroppableBehavior;
public abstract class FileTreePanel extends Panel {
private static final long serialVersionUID = 1L;
@@ -104,6 +110,37 @@ public abstract class FileTreePanel exte
}
@Override
+ public JQueryBehavior newWidgetBehavior(String
selector) {
+ return new DroppableBehavior(selector, this) {
+ private static final long
serialVersionUID = 1L;
+
+ @Override
+ protected JQueryAjaxBehavior
newOnDropAjaxBehavior(IJQueryAjaxAware source) {
+ return new
OnDropAjaxBehavior(source) {
+ private static final
long serialVersionUID = 1L;
+
+ @Override
+ public CharSequence
getCallbackFunctionBody(CallbackParameter... parameters) {
+ String dialogId
= UUID.randomUUID().toString();
+
+ String
statement = "var $drop = $(this);";
+ statement +=
"$('body').append('<div id=" + dialogId + ">" + getString("713") + "</div>');";
+ statement +=
"$( '#" + dialogId
+
+ "' ).dialog({ title: '" + getString("80") + "', dialogClass: 'no-close',
buttons: [";
+ statement += "
{ text: '" + getString("54") + "', click: function() {
$drop.append(ui.draggable); $(this).dialog('close'); " +
super.getCallbackFunctionBody(parameters) + " } },";
+ statement += "
{ text: '" + getString("25") + "', click: function() { $( this
).dialog('close'); } } ";
+ statement +=
"],";
+ statement +=
"close: function(event, ui) { $(this).dialog('destroy').remove(); }";
+ statement +=
"});";
+
+ return
statement;
+ }
+ };
+ }
+ };
+ }
+
+ @Override
public void onDrop(AjaxRequestTarget target, Component
component) {
Object o = component.getDefaultModelObject();
if (o instanceof FileItem) {
@@ -133,6 +170,14 @@ public abstract class FileTreePanel exte
private static final long serialVersionUID = 1L;
@Override
+ protected void onEvent(AjaxRequestTarget target) {
+ FileItem f = selectedFile.getObject();
+ if (f != null && f.getId() > 0) {
+ super.onEvent(target);
+ }
+ }
+
+ @Override
protected void onSubmit(AjaxRequestTarget target,
Form<?> form) {
delete(selectedFile.getObject(), target);
}
@@ -152,7 +197,7 @@ public abstract class FileTreePanel exte
return new WebMarkupContainer(id).setVisible(false);
}
- void delete(FileItem f, AjaxRequestTarget target) {
+ void delete(FileItem f, IPartialPageRequestHandler handler) {
long id = f.getId();
if (id > 0) {
if (f instanceof Recording) {
@@ -161,7 +206,7 @@ public abstract class FileTreePanel exte
getBean(FileExplorerItemDao.class).delete((FileExplorerItem)f);
}
}
- target.add(trees); //FIXME add correct refresh
+ handler.add(trees); //FIXME add correct refresh
}
public void createRecordingFolder(String name) {
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java?rev=1755473&r1=1755472&r2=1755473&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
Mon Aug 8 04:58:07 2016
@@ -96,6 +96,7 @@ public class FolderPanel extends Panel {
super.onConfigure(behavior);
behavior.setOption("revert",
"treeRevert");
behavior.setOption("cursor",
Options.asString("move"));
+ behavior.setOption("helper", "'clone'");
}
}.setContainment(treePanel.getContainment());
drag.add(AttributeAppender.append("class", r instanceof
Recording ? "recorditem" : "fileitem"));
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ConfirmableAjaxBorder.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ConfirmableAjaxBorder.java?rev=1755473&r1=1755472&r2=1755473&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ConfirmableAjaxBorder.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ConfirmableAjaxBorder.java
Mon Aug 8 04:58:07 2016
@@ -23,7 +23,6 @@ import org.apache.wicket.ajax.AjaxReques
import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
import org.apache.wicket.markup.html.border.Border;
import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
@@ -36,21 +35,15 @@ public abstract class ConfirmableAjaxBor
private static final long serialVersionUID = 1L;
private final Form<?> form = new Form<>("form");
private final Form<?> userForm;
- private final IModel<String> title;
- private final IModel<String> message;
+ private final AbstractFormDialog<?> dialog;
public ConfirmableAjaxBorder(String id, String title, String message) {
- this(id, Model.of(title), Model.of(message), null);
+ this(id, title, message, null);
}
public ConfirmableAjaxBorder(String id, String title, String message,
Form<?> form) {
- this(id, Model.of(title), Model.of(message), form);
- }
-
- public ConfirmableAjaxBorder(String id, IModel<String> title,
IModel<String> message, Form<?> form) {
- super(id, message);
- this.title = title;
- this.message = message;
+ super(id, Model.of(message));
+ dialog = newFormDialog("dialog", title, message);
this.userForm = form;
setOutputMarkupId(true);
}
@@ -58,7 +51,6 @@ public abstract class ConfirmableAjaxBor
@Override
protected void onInitialize() {
super.onInitialize();
- final AbstractFormDialog<?> dialog = newFormDialog("dialog",
title, message);
add(new AjaxEventBehavior("click") {
private static final long serialVersionUID = 1L;
@@ -84,6 +76,10 @@ public abstract class ConfirmableAjaxBor
protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
}
+ protected void onEvent(AjaxRequestTarget target) {
+ dialog.open(target);
+ }
+
/**
* Triggered when the form is submitted, but the validation failed
*
@@ -101,8 +97,6 @@ public abstract class ConfirmableAjaxBor
*/
protected abstract void onSubmit(AjaxRequestTarget target, Form<?>
form);
- // Factories //
-
/**
* Create the dialog instance<br/>
* <b>Warning:</b> to be overridden with care!
@@ -112,7 +106,7 @@ public abstract class ConfirmableAjaxBor
* @param message the message to be displayed
* @return the dialog instance
*/
- protected AbstractFormDialog<?> newFormDialog(String id, IModel<String>
title, IModel<String> message) {
+ protected AbstractFormDialog<?> newFormDialog(String id, String title,
String message) {
return new MessageFormDialog(id, title, message,
DialogButtons.OK_CANCEL, DialogIcon.WARN) {
private static final long serialVersionUID = 1L;
@@ -138,11 +132,4 @@ public abstract class ConfirmableAjaxBor
}
};
}
-
- @Override
- protected void onDetach() {
- super.onDetach();
- title.detach();
- message.detach();
- }
}
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html?rev=1755473&r1=1755472&r2=1755473&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
Mon Aug 8 04:58:07 2016
@@ -28,11 +28,11 @@
}
</script>
<div class="file tree item drop area">
- <div class="icons clear trash-toolbar"
wicket:id="trash-toolbar">
+ <div class="icons clear trash-toolbar"
wicket:id="trash-toolbar" wicket:message="title:705">
<span wicket:id="upload" class="add om-icon align-left
clickable" wicket:message="title:702"></span>
<span wicket:id="create" class="folder-create om-icon
align-left clickable" wicket:message="title:703"></span>
<span wicket:id="refresh" class="refresh om-icon
align-left clickable" wicket:message="title:704"></span>
- <span wicket:id="trash" class="trash om-icon
align-right clickable" wicket:message="title:705"></span>
+ <span wicket:id="trash" class="trash om-icon
align-right clickable"></span>
<div class="clear"></div>
</div>
<div wicket:id="tree-container" class="trees">
@@ -57,4 +57,4 @@
<div wicket:id="errors"></div>
</div>
</wicket:panel>
-</html>
\ No newline at end of file
+</html>
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java?rev=1755473&r1=1755472&r2=1755473&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
Mon Aug 8 04:58:07 2016
@@ -23,6 +23,7 @@ import static org.apache.openmeetings.we
import java.util.ArrayList;
import java.util.Date;
+import java.util.UUID;
import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
import org.apache.openmeetings.db.dao.record.RecordingDao;
@@ -36,6 +37,8 @@ import org.apache.openmeetings.web.commo
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.attributes.CallbackParameter;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
import org.apache.wicket.extensions.markup.html.repeater.tree.ITreeProvider;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
@@ -49,7 +52,10 @@ import org.apache.wicket.model.Model;
import com.googlecode.wicket.jquery.core.JQueryBehavior;
import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.core.ajax.IJQueryAjaxAware;
+import com.googlecode.wicket.jquery.core.ajax.JQueryAjaxBehavior;
import com.googlecode.wicket.jquery.ui.interaction.droppable.Droppable;
+import com.googlecode.wicket.jquery.ui.interaction.droppable.DroppableBehavior;
public abstract class FileTreePanel extends Panel {
private static final long serialVersionUID = 1L;
@@ -104,6 +110,37 @@ public abstract class FileTreePanel exte
}
@Override
+ public JQueryBehavior newWidgetBehavior(String
selector) {
+ return new DroppableBehavior(selector, this) {
+ private static final long
serialVersionUID = 1L;
+
+ @Override
+ protected JQueryAjaxBehavior
newOnDropAjaxBehavior(IJQueryAjaxAware source) {
+ return new
OnDropAjaxBehavior(source) {
+ private static final
long serialVersionUID = 1L;
+
+ @Override
+ public CharSequence
getCallbackFunctionBody(CallbackParameter... parameters) {
+ String dialogId
= UUID.randomUUID().toString();
+
+ String
statement = "var $drop = $(this);";
+ statement +=
"$('body').append('<div id=" + dialogId + ">" + getString("713") + "</div>');";
+ statement +=
"$( '#" + dialogId
+
+ "' ).dialog({ title: '" + getString("80") + "', dialogClass: 'no-close',
buttons: [";
+ statement += "
{ text: '" + getString("54") + "', click: function() {
$drop.append(ui.draggable); $(this).dialog('close'); " +
super.getCallbackFunctionBody(parameters) + " } },";
+ statement += "
{ text: '" + getString("25") + "', click: function() { $( this
).dialog('close'); } } ";
+ statement +=
"],";
+ statement +=
"close: function(event, ui) { $(this).dialog('destroy').remove(); }";
+ statement +=
"});";
+
+ return
statement;
+ }
+ };
+ }
+ };
+ }
+
+ @Override
public void onDrop(AjaxRequestTarget target, Component
component) {
Object o = component.getDefaultModelObject();
if (o instanceof FileItem) {
@@ -133,6 +170,14 @@ public abstract class FileTreePanel exte
private static final long serialVersionUID = 1L;
@Override
+ protected void onEvent(AjaxRequestTarget target) {
+ FileItem f = selectedFile.getObject();
+ if (f != null && f.getId() > 0) {
+ super.onEvent(target);
+ }
+ }
+
+ @Override
protected void onSubmit(AjaxRequestTarget target,
Form<?> form) {
delete(selectedFile.getObject(), target);
}
@@ -152,7 +197,7 @@ public abstract class FileTreePanel exte
return new WebMarkupContainer(id).setVisible(false);
}
- void delete(FileItem f, AjaxRequestTarget target) {
+ void delete(FileItem f, IPartialPageRequestHandler handler) {
long id = f.getId();
if (id > 0) {
if (f instanceof Recording) {
@@ -161,7 +206,7 @@ public abstract class FileTreePanel exte
getBean(FileExplorerItemDao.class).delete((FileExplorerItem)f);
}
}
- target.add(trees); //FIXME add correct refresh
+ handler.add(trees); //FIXME add correct refresh
}
public void createRecordingFolder(String name) {
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java?rev=1755473&r1=1755472&r2=1755473&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
Mon Aug 8 04:58:07 2016
@@ -96,6 +96,7 @@ public class FolderPanel extends Panel {
super.onConfigure(behavior);
behavior.setOption("revert",
"treeRevert");
behavior.setOption("cursor",
Options.asString("move"));
+ behavior.setOption("helper", "'clone'");
}
}.setContainment(treePanel.getContainment());
drag.add(AttributeAppender.append("class", r instanceof
Recording ? "recorditem" : "fileitem"));