Author: vdegtyarev
Date: Wed Oct 12 04:27:38 2016
New Revision: 1764373

URL: http://svn.apache.org/viewvc?rev=1764373&view=rev
Log:
OPENMEETINGS-1469 is fixed. Download functionality is implemented for file tree.

Modified:
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
    
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

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml?rev=1764373&r1=1764372&r2=1764373&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
 Wed Oct 12 04:27:38 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/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=1764373&r1=1764372&r2=1764373&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
 Wed Oct 12 04:27:38 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/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=1764373&r1=1764372&r2=1764373&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 Oct 12 04:27:38 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;
+       }
 }


Reply via email to