Author: solomax
Date: Wed Jan 18 12:05:51 2017
New Revision: 1779316
URL: http://svn.apache.org/viewvc?rev=1779316&view=rev
Log:
[OPENMEETINGS-1527] initial work on code clean-up
Added:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
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/room/sidebar/UploadDialog.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
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/room/sidebar/UploadDialog.java
Added:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java?rev=1779316&view=auto
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
(added)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
Wed Jan 18 12:05:51 2017
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") + you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.common.tree;
+
+import java.io.File;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.util.resource.FileResourceStream;
+
+import com.googlecode.wicket.jquery.ui.JQueryIcon;
+import com.googlecode.wicket.jquery.ui.widget.menu.MenuItem;
+
+public class DownloadMenuItem extends MenuItem {
+ private static final long serialVersionUID = 1L;
+ private final String ext;
+ private final FileTreePanel tree;
+
+ public DownloadMenuItem(String title, FileTreePanel tree, String ext) {
+ super(title, JQueryIcon.ARROWTHICKSTOP_1_S);
+ this.ext = ext;
+ this.tree = tree;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ File f = tree.getLastSelected().getFile(ext);
+ return f != null && f.exists();
+ }
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ File f = tree.getLastSelected().getFile(ext);
+ tree.downloader.setFileName(f.getName());
+ tree.downloader.setResourceStream(new FileResourceStream(f));
+ tree.downloader.initiate(target);
+ }
+}
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java?rev=1779316&r1=1779315&r2=1779316&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
Wed Jan 18 12:05:51 2017
@@ -58,7 +58,7 @@ public class FileItemTree extends Defaul
shift = o.optBoolean(PARAM_SHIFT);
ctrl = o.optBoolean(PARAM_CTRL);
}
- treePanel.setSelected(f, target, shift, ctrl);
+ treePanel.select(f, target, shift, ctrl);
if (Type.Folder == f.getType() && getState(f) ==
State.COLLAPSED) {
this.expand(f);
} else {
@@ -78,13 +78,14 @@ public class FileItemTree extends Defaul
@Override
protected Component newLabelComponent(String id, final
IModel<FileItem> lm) {
FileItem r = lm.getObject();
- return Type.Folder == r.getType() || r.getId()
== null ? new FolderPanel(id, lm, treePanel) : new FileItemPanel(id, lm,
treePanel);
+ return Type.Folder == r.getType() || r.getId()
== null
+ ? new FolderPanel(id, lm,
treePanel)
+ : new FileItemPanel(id, lm,
treePanel);
}
@Override
protected boolean isSelected() {
- FileItem f = getModelObject(), s =
treePanel.getSelected();
- return s.getHash().equals(f.getHash());
+ return treePanel.isSelected(getModelObject());
}
@Override
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=1779316&r1=1779315&r2=1779316&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
Wed Jan 18 12:05:51 2017
@@ -24,10 +24,12 @@ import static org.apache.openmeetings.ut
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.openmeetings.web.app.WebSession.getUserId;
-import java.io.File;
import java.util.ArrayList;
import java.util.Date;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
import java.util.UUID;
import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
@@ -48,28 +50,25 @@ import org.apache.wicket.markup.html.Web
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
-import org.apache.wicket.util.resource.FileResourceStream;
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.JQueryIcon;
import com.googlecode.wicket.jquery.ui.form.button.AjaxSplitButton;
import com.googlecode.wicket.jquery.ui.interaction.droppable.Droppable;
import com.googlecode.wicket.jquery.ui.interaction.droppable.DroppableBehavior;
import com.googlecode.wicket.jquery.ui.widget.menu.IMenuItem;
-import com.googlecode.wicket.jquery.ui.widget.menu.MenuItem;
public abstract class FileTreePanel extends Panel {
private static final long serialVersionUID = 1L;
final WebMarkupContainer trees = new
WebMarkupContainer("tree-container");
private final WebMarkupContainer sizes = new
WebMarkupContainer("sizes");
- private final IModel<FileItem> selected = new
CompoundPropertyModel<FileItem>((FileItem)null);
- private final AjaxDownload downloader = new AjaxDownload();
+ private FileItem lastSelected = null;
+ private Map<String, FileItem> selected = new HashMap<>();
+ final AjaxDownload downloader = new AjaxDownload();
protected final IModel<String> homeSize = Model.of((String)null);
protected final IModel<String> publicSize = Model.of((String)null);
final ConvertingErrorsDialog errorsDialog = new
ConvertingErrorsDialog("errors", Model.of((Recording)null));
@@ -82,7 +81,7 @@ public abstract class FileTreePanel exte
super(id);
this.addFolder = addFolder;
OmTreeProvider tp = new OmTreeProvider(roomId);
- setSelected(tp.getRoot(), null, false, false);
+ select(tp.getRoot(), null, false, false);
form.add(tree = new FileItemTree("tree", this, tp));
form.add(download.setVisible(false).setOutputMarkupPlaceholderTag(true));
add(form.add(downloader));
@@ -164,15 +163,16 @@ public abstract class FileTreePanel exte
@Override
protected void onEvent(AjaxRequestTarget target) {
- FileItem f = selected.getObject();
- if (f != null && f.getId() != null) {
+ if (!selected.isEmpty()) {
super.onEvent(target);
}
}
@Override
protected void onSubmit(AjaxRequestTarget target,
Form<?> form) {
- delete(selected.getObject(), target);
+ for (Entry<String, FileItem> e :
selected.entrySet()) {
+ delete(e.getValue(), target);
+ }
}
});
@@ -191,8 +191,8 @@ public abstract class FileTreePanel exte
}
void delete(FileItem f, IPartialPageRequestHandler handler) {
- long id = f.getId();
- if (id > 0) {
+ Long id = f.getId();
+ if (id != null) {
if (f instanceof Recording) {
getBean(RecordingDao.class).delete((Recording)f);
} else {
@@ -205,7 +205,7 @@ public abstract class FileTreePanel exte
protected abstract void update(AjaxRequestTarget target, FileItem f);
public void createFolder(AjaxRequestTarget target, String name) {
- FileItem p = selected.getObject();
+ FileItem p = lastSelected;
boolean isRecording = p instanceof Recording;
FileItem f = isRecording ? new Recording() : new
FileExplorerItem();
f.setName(name);
@@ -213,6 +213,7 @@ public abstract class FileTreePanel exte
f.setInserted(new Date());
f.setType(Type.Folder);
f.setOwnerId(p.getOwnerId());
+ //TODO lastSelected.parent??
f.setParentId(Type.Folder == p.getType() ? p.getId() : null);
if (isRecording) {
Recording r = (Recording)f;
@@ -227,8 +228,12 @@ public abstract class FileTreePanel exte
public abstract void updateSizes();
- public FileItem getSelected() {
- return selected.getObject();
+ public boolean isSelected(FileItem f) {
+ return selected.containsKey(f.getHash());
+ }
+
+ public FileItem getLastSelected() {
+ return lastSelected;
}
public void update(IPartialPageRequestHandler handler) {
@@ -246,19 +251,29 @@ public abstract class FileTreePanel exte
}
}
- public void setSelected(FileItem fi, AjaxRequestTarget target, boolean
shift, boolean ctrl) {
- FileItem _prev = selected.getObject();
- updateNode(target, _prev);
+ public void select(FileItem fi, AjaxRequestTarget target, boolean
shift, boolean ctrl) {
+ updateNode(target, lastSelected);
+ if (ctrl) {
+ if (isSelected(fi)) {
+ selected.remove(fi.getId());
+ } else {
+ selected.put(fi.getHash(), fi);
+ }
+ } else if (shift) {
+ //search
+ } else {
+ selected.clear();
+ selected.put(fi.getHash(), fi);
+ }
+ lastSelected = fi;
+ updateNode(target, lastSelected);
if (target != null) {
- target.add(download.setVisible(fi.getType() ==
Type.Presentation || fi.getType() == Type.Image));
+ target.add(download.setVisible(lastSelected.getType()
== Type.Presentation || lastSelected.getType() == Type.Image));
}
- selected.setObject(fi);
- updateNode(target, fi);
}
@Override
protected void onDetach() {
- selected.detach();
homeSize.detach();
publicSize.detach();
super.onDetach();
@@ -268,59 +283,11 @@ public abstract class FileTreePanel exte
List<IMenuItem> list = new ArrayList<>();
//original
- list.add(new MenuItem(getString("files.download.original"),
JQueryIcon.ARROWTHICKSTOP_1_S) {
- private static final long serialVersionUID = 1L;
-
- @Override
- public boolean isEnabled() {
- File f = selected.getObject().getFile();
- return f != null && f.exists();
- }
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- File f = selected.getObject().getFile();
- downloader.setFileName(f.getName());
- downloader.setResourceStream(new
FileResourceStream(f));
- downloader.initiate(target);
- }
- });
+ list.add(new
DownloadMenuItem(getString("files.download.original"), this, null));
//pdf
- list.add(new MenuItem(getString("files.download.pdf"),
JQueryIcon.ARROWTHICKSTOP_1_S) {
- private static final long serialVersionUID = 1L;
-
- @Override
- public boolean isEnabled() {
- File f =
selected.getObject().getFile(EXTENSION_PDF);
- return f != null && f.exists();
- }
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- File f =
selected.getObject().getFile(EXTENSION_PDF);
- downloader.setFileName(f.getName());
- downloader.setResourceStream(new
FileResourceStream(f));
- downloader.initiate(target);
- }
- });
+ list.add(new DownloadMenuItem(getString("files.download.pdf"),
this, EXTENSION_PDF));
//jpg
- list.add(new MenuItem(getString("files.download.jpg"),
JQueryIcon.ARROWTHICKSTOP_1_S) {
- private static final long serialVersionUID = 1L;
-
- @Override
- public boolean isEnabled() {
- File f =
selected.getObject().getFile(EXTENSION_JPG);
- return f != null && f.exists();
- }
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- File f =
selected.getObject().getFile(EXTENSION_JPG);
- downloader.setFileName(f.getName());
- downloader.setResourceStream(new
FileResourceStream(f));
- downloader.initiate(target);
- }
- });
+ list.add(new DownloadMenuItem(getString("files.download.jpg"),
this, EXTENSION_JPG));
return list;
}
}
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java?rev=1779316&r1=1779315&r2=1779316&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
Wed Jan 18 12:05:51 2017
@@ -102,7 +102,7 @@ public class UploadDialog extends Abstra
form.add(feedback.setOutputMarkupId(true),
toWb.setOutputMarkupId(true)
,
cleanBlock.add(cleanWb.setOutputMarkupId(true)).setVisible(false).setOutputMarkupPlaceholderTag(true))
.setOutputMarkupId(true);
-
+
form.setMultiPart(true);
form.setMaxSize(Bytes.bytes(getBean(ConfigurationDao.class).getMaxUploadSize()));
// Model is necessary here to avoid writing image to the User
object
@@ -113,11 +113,11 @@ public class UploadDialog extends Abstra
@Override
public void detach() {
}
-
+
@Override
public void setObject(List<FileUpload> object) {
}
-
+
@Override
public List<FileUpload> getObject() {
return null;
@@ -147,12 +147,12 @@ public class UploadDialog extends Abstra
super.onClick(target, button);
}
}
-
+
@Override
protected List<DialogButton> getButtons() {
return Arrays.asList(upload, cancel);
}
-
+
@Override
public DialogButton getSubmitButton() {
return upload;
@@ -171,7 +171,7 @@ public class UploadDialog extends Abstra
handler.add(form, fileName);
handler.appendJavaScript(String.format("bindUpload('%s',
'%s');", form.getMarkupId(), fileName.getMarkupId()));
}
-
+
@Override
protected void onError(AjaxRequestTarget target) {
target.add(feedback);
@@ -184,7 +184,7 @@ public class UploadDialog extends Abstra
FileExplorerItem f = new FileExplorerItem();
f.setSize(fu.getSize());
f.setName(fu.getClientFileName());
- FileItem parent = roomFiles.getSelected();
+ FileItem parent = roomFiles.getLastSelected();
if (parent == null || !(parent instanceof
FileExplorerItem)) {
f.setOwnerId(getUserId());
} else {
@@ -195,7 +195,7 @@ public class UploadDialog extends Abstra
}
}
f.setInsertedBy(getUserId());
-
+
try {
ConverterProcessResultList logs =
getBean(FileProcessor.class).processFile(getUserId(), f, fu.getInputStream());
for (Entry<String, ConverterProcessResult>
entry : logs.getJobs().entrySet()) {
Added:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java?rev=1779316&view=auto
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
(added)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
Wed Jan 18 12:05:51 2017
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") + you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.common.tree;
+
+import java.io.File;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.util.resource.FileResourceStream;
+
+import com.googlecode.wicket.jquery.ui.JQueryIcon;
+import com.googlecode.wicket.jquery.ui.widget.menu.MenuItem;
+
+public class DownloadMenuItem extends MenuItem {
+ private static final long serialVersionUID = 1L;
+ private final String ext;
+ private final FileTreePanel tree;
+
+ public DownloadMenuItem(String title, FileTreePanel tree, String ext) {
+ super(title, JQueryIcon.ARROWTHICKSTOP_1_S);
+ this.ext = ext;
+ this.tree = tree;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ File f = tree.getLastSelected().getFile(ext);
+ return f != null && f.exists();
+ }
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ File f = tree.getLastSelected().getFile(ext);
+ tree.downloader.setFileName(f.getName());
+ tree.downloader.setResourceStream(new FileResourceStream(f));
+ tree.downloader.initiate(target);
+ }
+}
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java?rev=1779316&r1=1779315&r2=1779316&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
Wed Jan 18 12:05:51 2017
@@ -58,7 +58,7 @@ public class FileItemTree extends Defaul
shift = o.optBoolean(PARAM_SHIFT);
ctrl = o.optBoolean(PARAM_CTRL);
}
- treePanel.setSelected(f, target, shift, ctrl);
+ treePanel.select(f, target, shift, ctrl);
if (Type.Folder == f.getType() && getState(f) ==
State.COLLAPSED) {
this.expand(f);
} else {
@@ -78,13 +78,14 @@ public class FileItemTree extends Defaul
@Override
protected Component newLabelComponent(String id, final
IModel<FileItem> lm) {
FileItem r = lm.getObject();
- return Type.Folder == r.getType() || r.getId()
== null ? new FolderPanel(id, lm, treePanel) : new FileItemPanel(id, lm,
treePanel);
+ return Type.Folder == r.getType() || r.getId()
== null
+ ? new FolderPanel(id, lm,
treePanel)
+ : new FileItemPanel(id, lm,
treePanel);
}
@Override
protected boolean isSelected() {
- FileItem f = getModelObject(), s =
treePanel.getSelected();
- return s.getHash().equals(f.getHash());
+ return treePanel.isSelected(getModelObject());
}
@Override
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=1779316&r1=1779315&r2=1779316&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
Wed Jan 18 12:05:51 2017
@@ -24,10 +24,12 @@ import static org.apache.openmeetings.ut
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.openmeetings.web.app.WebSession.getUserId;
-import java.io.File;
import java.util.ArrayList;
import java.util.Date;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
import java.util.UUID;
import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
@@ -48,28 +50,25 @@ import org.apache.wicket.markup.html.Web
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
-import org.apache.wicket.util.resource.FileResourceStream;
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.JQueryIcon;
import com.googlecode.wicket.jquery.ui.form.button.AjaxSplitButton;
import com.googlecode.wicket.jquery.ui.interaction.droppable.Droppable;
import com.googlecode.wicket.jquery.ui.interaction.droppable.DroppableBehavior;
import com.googlecode.wicket.jquery.ui.widget.menu.IMenuItem;
-import com.googlecode.wicket.jquery.ui.widget.menu.MenuItem;
public abstract class FileTreePanel extends Panel {
private static final long serialVersionUID = 1L;
final WebMarkupContainer trees = new
WebMarkupContainer("tree-container");
private final WebMarkupContainer sizes = new
WebMarkupContainer("sizes");
- private final IModel<FileItem> selected = new
CompoundPropertyModel<FileItem>((FileItem)null);
- private final AjaxDownload downloader = new AjaxDownload();
+ private FileItem lastSelected = null;
+ private Map<String, FileItem> selected = new HashMap<>();
+ final AjaxDownload downloader = new AjaxDownload();
protected final IModel<String> homeSize = Model.of((String)null);
protected final IModel<String> publicSize = Model.of((String)null);
final ConvertingErrorsDialog errorsDialog = new
ConvertingErrorsDialog("errors", Model.of((Recording)null));
@@ -82,7 +81,7 @@ public abstract class FileTreePanel exte
super(id);
this.addFolder = addFolder;
OmTreeProvider tp = new OmTreeProvider(roomId);
- setSelected(tp.getRoot(), null, false, false);
+ select(tp.getRoot(), null, false, false);
form.add(tree = new FileItemTree("tree", this, tp));
form.add(download.setVisible(false).setOutputMarkupPlaceholderTag(true));
add(form.add(downloader));
@@ -164,15 +163,16 @@ public abstract class FileTreePanel exte
@Override
protected void onEvent(AjaxRequestTarget target) {
- FileItem f = selected.getObject();
- if (f != null && f.getId() != null) {
+ if (!selected.isEmpty()) {
super.onEvent(target);
}
}
@Override
protected void onSubmit(AjaxRequestTarget target,
Form<?> form) {
- delete(selected.getObject(), target);
+ for (Entry<String, FileItem> e :
selected.entrySet()) {
+ delete(e.getValue(), target);
+ }
}
});
@@ -191,8 +191,8 @@ public abstract class FileTreePanel exte
}
void delete(FileItem f, IPartialPageRequestHandler handler) {
- long id = f.getId();
- if (id > 0) {
+ Long id = f.getId();
+ if (id != null) {
if (f instanceof Recording) {
getBean(RecordingDao.class).delete((Recording)f);
} else {
@@ -205,7 +205,7 @@ public abstract class FileTreePanel exte
protected abstract void update(AjaxRequestTarget target, FileItem f);
public void createFolder(AjaxRequestTarget target, String name) {
- FileItem p = selected.getObject();
+ FileItem p = lastSelected;
boolean isRecording = p instanceof Recording;
FileItem f = isRecording ? new Recording() : new
FileExplorerItem();
f.setName(name);
@@ -213,6 +213,7 @@ public abstract class FileTreePanel exte
f.setInserted(new Date());
f.setType(Type.Folder);
f.setOwnerId(p.getOwnerId());
+ //TODO lastSelected.parent??
f.setParentId(Type.Folder == p.getType() ? p.getId() : null);
if (isRecording) {
Recording r = (Recording)f;
@@ -227,8 +228,12 @@ public abstract class FileTreePanel exte
public abstract void updateSizes();
- public FileItem getSelected() {
- return selected.getObject();
+ public boolean isSelected(FileItem f) {
+ return selected.containsKey(f.getHash());
+ }
+
+ public FileItem getLastSelected() {
+ return lastSelected;
}
public void update(IPartialPageRequestHandler handler) {
@@ -246,19 +251,29 @@ public abstract class FileTreePanel exte
}
}
- public void setSelected(FileItem fi, AjaxRequestTarget target, boolean
shift, boolean ctrl) {
- FileItem _prev = selected.getObject();
- updateNode(target, _prev);
+ public void select(FileItem fi, AjaxRequestTarget target, boolean
shift, boolean ctrl) {
+ updateNode(target, lastSelected);
+ if (ctrl) {
+ if (isSelected(fi)) {
+ selected.remove(fi.getId());
+ } else {
+ selected.put(fi.getHash(), fi);
+ }
+ } else if (shift) {
+ //search
+ } else {
+ selected.clear();
+ selected.put(fi.getHash(), fi);
+ }
+ lastSelected = fi;
+ updateNode(target, lastSelected);
if (target != null) {
- target.add(download.setVisible(fi.getType() ==
Type.Presentation || fi.getType() == Type.Image));
+ target.add(download.setVisible(lastSelected.getType()
== Type.Presentation || lastSelected.getType() == Type.Image));
}
- selected.setObject(fi);
- updateNode(target, fi);
}
@Override
protected void onDetach() {
- selected.detach();
homeSize.detach();
publicSize.detach();
super.onDetach();
@@ -268,59 +283,11 @@ public abstract class FileTreePanel exte
List<IMenuItem> list = new ArrayList<>();
//original
- list.add(new MenuItem(getString("files.download.original"),
JQueryIcon.ARROWTHICKSTOP_1_S) {
- private static final long serialVersionUID = 1L;
-
- @Override
- public boolean isEnabled() {
- File f = selected.getObject().getFile();
- return f != null && f.exists();
- }
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- File f = selected.getObject().getFile();
- downloader.setFileName(f.getName());
- downloader.setResourceStream(new
FileResourceStream(f));
- downloader.initiate(target);
- }
- });
+ list.add(new
DownloadMenuItem(getString("files.download.original"), this, null));
//pdf
- list.add(new MenuItem(getString("files.download.pdf"),
JQueryIcon.ARROWTHICKSTOP_1_S) {
- private static final long serialVersionUID = 1L;
-
- @Override
- public boolean isEnabled() {
- File f =
selected.getObject().getFile(EXTENSION_PDF);
- return f != null && f.exists();
- }
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- File f =
selected.getObject().getFile(EXTENSION_PDF);
- downloader.setFileName(f.getName());
- downloader.setResourceStream(new
FileResourceStream(f));
- downloader.initiate(target);
- }
- });
+ list.add(new DownloadMenuItem(getString("files.download.pdf"),
this, EXTENSION_PDF));
//jpg
- list.add(new MenuItem(getString("files.download.jpg"),
JQueryIcon.ARROWTHICKSTOP_1_S) {
- private static final long serialVersionUID = 1L;
-
- @Override
- public boolean isEnabled() {
- File f =
selected.getObject().getFile(EXTENSION_JPG);
- return f != null && f.exists();
- }
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- File f =
selected.getObject().getFile(EXTENSION_JPG);
- downloader.setFileName(f.getName());
- downloader.setResourceStream(new
FileResourceStream(f));
- downloader.initiate(target);
- }
- });
+ list.add(new DownloadMenuItem(getString("files.download.jpg"),
this, EXTENSION_JPG));
return list;
}
}
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java?rev=1779316&r1=1779315&r2=1779316&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
Wed Jan 18 12:05:51 2017
@@ -102,7 +102,7 @@ public class UploadDialog extends Abstra
form.add(feedback.setOutputMarkupId(true),
toWb.setOutputMarkupId(true)
,
cleanBlock.add(cleanWb.setOutputMarkupId(true)).setVisible(false).setOutputMarkupPlaceholderTag(true))
.setOutputMarkupId(true);
-
+
form.setMultiPart(true);
form.setMaxSize(Bytes.bytes(getBean(ConfigurationDao.class).getMaxUploadSize()));
// Model is necessary here to avoid writing image to the User
object
@@ -113,11 +113,11 @@ public class UploadDialog extends Abstra
@Override
public void detach() {
}
-
+
@Override
public void setObject(List<FileUpload> object) {
}
-
+
@Override
public List<FileUpload> getObject() {
return null;
@@ -147,12 +147,12 @@ public class UploadDialog extends Abstra
super.onClick(target, button);
}
}
-
+
@Override
protected List<DialogButton> getButtons() {
return Arrays.asList(upload, cancel);
}
-
+
@Override
public DialogButton getSubmitButton() {
return upload;
@@ -171,7 +171,7 @@ public class UploadDialog extends Abstra
handler.add(form, fileName);
handler.appendJavaScript(String.format("bindUpload('%s',
'%s');", form.getMarkupId(), fileName.getMarkupId()));
}
-
+
@Override
protected void onError(AjaxRequestTarget target) {
target.add(feedback);
@@ -184,7 +184,7 @@ public class UploadDialog extends Abstra
FileExplorerItem f = new FileExplorerItem();
f.setSize(fu.getSize());
f.setName(fu.getClientFileName());
- FileItem parent = roomFiles.getSelected();
+ FileItem parent = roomFiles.getLastSelected();
if (parent == null || !(parent instanceof
FileExplorerItem)) {
f.setOwnerId(getUserId());
} else {
@@ -195,7 +195,7 @@ public class UploadDialog extends Abstra
}
}
f.setInsertedBy(getUserId());
-
+
try {
ConverterProcessResultList logs =
getBean(FileProcessor.class).processFile(getUserId(), f, fu.getInputStream());
for (Entry<String, ConverterProcessResult>
entry : logs.getJobs().entrySet()) {