Author: vdegtyarev
Date: Wed Oct 12 04:32:56 2016
New Revision: 1764374
URL: http://svn.apache.org/viewvc?rev=1764374&view=rev
Log:
Merged revision(s) 1764373 from openmeetings/application/branches/3.2.x: to
branch.
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
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
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml?rev=1764374&r1=1764373&r2=1764374&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
Wed Oct 12 04:32:56 2016
@@ -1970,4 +1970,7 @@
<entry key="admin.group.form.recordingTtl">Recordings expire in</entry>
<entry key="admin.group.form.reminderDays">Expire reminder sent
in</entry>
<entry key="admin.group.form.days">days</entry>
+ <entry key="files.download.original">Original</entry>
+ <entry key="files.download.pdf">PDF</entry>
+ <entry key="files.download.jpg">JPG</entry>
</properties>
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=1764374&r1=1764373&r2=1764374&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
Wed Oct 12 04:32:56 2016
@@ -20,6 +20,7 @@
-->
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
+ <form wicket:id="form">
<script type="text/javascript">
function treeRevert(dropped) {
$('#tree-anchor').get(0).scrollIntoView();
@@ -39,6 +40,7 @@
<div id="tree-anchor" style="height: 2px; width:
2px;"></div>
<div wicket:id="tree"></div>
</div>
+ <span wicket:id="download" wicket:message="title:867"></span>
<div class="sizes" wicket:id="sizes">
<table>
<tr>
@@ -54,5 +56,6 @@
<div wicket:id="addFolder"></div>
<div wicket:id="errors"></div>
</div>
+ </form>
</wicket:panel>
</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=1764374&r1=1764373&r2=1764374&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 Oct 12 04:32:56 2016
@@ -18,10 +18,15 @@
*/
package org.apache.openmeetings.web.common.tree;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PDF;
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.List;
import java.util.UUID;
import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
@@ -33,6 +38,7 @@ import org.apache.openmeetings.db.entity
import org.apache.openmeetings.web.app.Application;
import org.apache.openmeetings.web.common.AddFolderDialog;
import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
+import org.apache.openmeetings.web.util.AjaxDownload;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -45,29 +51,39 @@ import org.apache.wicket.markup.html.pan
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();
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));
final FileItemTree tree;
+ final AjaxSplitButton download = new AjaxSplitButton("download", new
ArrayList<IMenuItem>());
+ private final Form<Void> form = new Form<Void>("form");
public FileTreePanel(String id, Long roomId) {
super(id);
OmTreeProvider tp = new OmTreeProvider(roomId);
setSelected(tp.getRoot(), null);
- add(tree = new FileItemTree("tree", this, tp));
+ form.add(tree = new FileItemTree("tree", this, tp));
+
form.add(download.setVisible(false).setOutputMarkupPlaceholderTag(true).setDefaultModelObject(newDownloadMenuList()));
+ add(form.add(downloader));
}
@Override
@@ -81,7 +97,7 @@ public abstract class FileTreePanel exte
createFolder(target, getModelObject());
}
};
- add(addFolder);
+ form.add(addFolder);
Droppable<FileItem> trashToolbar = new
Droppable<FileItem>("trash-toolbar") {
private static final long serialVersionUID = 1L;
@@ -131,7 +147,7 @@ public abstract class FileTreePanel exte
}
}
};
- add(trashToolbar);
+ form.add(trashToolbar);
trashToolbar.add(getUpload("upload"));
trashToolbar.add(new WebMarkupContainer("create").add(new
AjaxEventBehavior("click") {
private static final long serialVersionUID = 1L;
@@ -166,10 +182,10 @@ public abstract class FileTreePanel exte
}
});
- add(trees.add(tree).setOutputMarkupId(true));
+ form.add(trees.add(tree).setOutputMarkupId(true));
updateSizes();
- add(sizes.add(new Label("homeSize", homeSize), new
Label("publicSize", publicSize)).setOutputMarkupId(true));
- add(errorsDialog);
+ form.add(sizes.add(new Label("homeSize", homeSize), new
Label("publicSize", publicSize)).setOutputMarkupId(true));
+ form.add(errorsDialog);
}
protected String getContainment() {
@@ -242,6 +258,9 @@ public abstract class FileTreePanel exte
public void setSelected(FileItem fi, AjaxRequestTarget target) {
FileItem _prev = selected.getObject();
updateNode(target, _prev);
+ if (target != null) {
+ target.add(download.setVisible(fi.getType() ==
Type.Presentation || fi.getType() == Type.Image));
+ }
selected.setObject(fi);
updateNode(target, fi);
}
@@ -253,4 +272,64 @@ public abstract class FileTreePanel exte
publicSize.detach();
super.onDetach();
}
+
+ private List<IMenuItem> newDownloadMenuList() {
+ 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);
+ }
+ });
+ //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);
+ }
+ });
+ //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);
+ }
+ });
+ return list;
+ }
}