-> Finalisation of file download for RAP
authorBruno Sinou <bsinou@argeo.org>
Wed, 9 Mar 2011 22:43:32 +0000 (22:43 +0000)
committerBruno Sinou <bsinou@argeo.org>
Wed, 9 Mar 2011 22:43:32 +0000 (22:43 +0000)
-> some little UI Bugs

git-svn-id: https://svn.argeo.org/commons/trunk@4275 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/browser/NodeLabelProvider.java
eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/commands/DeleteNode.java
eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/commands/ImportFileSystem.java
eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/views/GenericJcrBrowser.java
eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/wizards/ImportFileSystemWizard.java

index 3d5ef58a4296e550765e74376c36f01f21b9ddc6..71157aae14015ee393770b496203e1ef52a01fa9 100644 (file)
@@ -40,8 +40,12 @@ public class NodeLabelProvider extends LabelProvider {
                                for (NodeType type : node.getMixinNodeTypes())
                                        mixins.append(' ').append(type.getName());
 
+                               // System.out.println("URL : "
+                               // + createDownloadHtml("test.pdf", "Downlad"));
+
                                return label + " [" + node.getPrimaryNodeType().getName()
                                                + mixins + "]";
+                               // + createDownloadHtml("test.pdf", "Downlad");
                        }
                        return element.toString();
                } catch (RepositoryException e) {
@@ -78,4 +82,5 @@ public class NodeLabelProvider extends LabelProvider {
                }
                return super.getImage(element);
        }
+
 }
index 5133b04b628fd300ff501c071fb2f73f93832b69..fc8ad6a0c36fbdf2f136740039d22cd6d06829e5 100644 (file)
@@ -3,9 +3,11 @@ package org.argeo.eclipse.ui.jcr.commands;
 import java.util.Iterator;
 
 import javax.jcr.Node;
+import javax.jcr.RepositoryException;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.argeo.ArgeoException;
 import org.argeo.eclipse.ui.dialogs.Error;
 import org.argeo.eclipse.ui.jcr.views.GenericJcrBrowser;
 import org.eclipse.core.commands.AbstractHandler;
@@ -17,7 +19,7 @@ import org.eclipse.ui.handlers.HandlerUtil;
 
 /** Deletes the selected nodes */
 public class DeleteNode extends AbstractHandler {
-       private static Log log = LogFactory.getLog(DeleteNode.class);
+       private final static Log log = LogFactory.getLog(DeleteNode.class);
 
        public Object execute(ExecutionEvent event) throws ExecutionException {
                ISelection selection = HandlerUtil.getActiveWorkbenchWindow(event)
@@ -25,32 +27,41 @@ public class DeleteNode extends AbstractHandler {
                GenericJcrBrowser view = (GenericJcrBrowser) HandlerUtil
                                .getActiveWorkbenchWindow(event).getActivePage()
                                .findView(HandlerUtil.getActivePartId(event));
+
                if (selection != null && selection instanceof IStructuredSelection) {
                        Iterator<?> it = ((IStructuredSelection) selection).iterator();
                        Object obj = null;
+                       Node ancestor = null;
                        try {
                                while (it.hasNext()) {
                                        obj = it.next();
                                        if (obj instanceof Node) {
                                                Node node = (Node) obj;
                                                Node parentNode = node.getParent();
-                                               log.debug("Node ids : node :" + node.getIdentifier()
-                                                               + " - pNode : " + parentNode.getIdentifier());
                                                node.remove();
-
-                                               // Postpone the refresh after the session.save
-                                               // view.nodeRemoved(parentNode);
-
                                                node.getSession().save();
-                                               if (log.isDebugEnabled())
-                                                       log.debug("session saved");
-                                               view.nodeRemoved(parentNode);
+                                               ancestor = getOlder(ancestor, parentNode);
                                        }
                                }
+                               if (ancestor != null)
+                                       view.nodeRemoved(ancestor);
                        } catch (Exception e) {
                                Error.show("Cannot delete node " + obj, e);
                        }
                }
                return null;
        }
+
+       private Node getOlder(Node A, Node B) {
+               try {
+
+                       if (A == null)
+                               return B == null ? null : B;
+                       // Todo enhanced this method
+                       else
+                               return A.getDepth() <= B.getDepth() ? A : B;
+               } catch (RepositoryException re) {
+                       throw new ArgeoException("Cannot find ancestor", re);
+               }
+       }
 }
index dcaf137ed8b4690dd17ec4e5fcd83930e0fb7fd2..b1e999f7ea2125ef27801112f2163edf54e771aa 100644 (file)
@@ -2,6 +2,8 @@ package org.argeo.eclipse.ui.jcr.commands;
 
 import javax.jcr.Node;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.argeo.eclipse.ui.dialogs.Error;
 import org.argeo.eclipse.ui.jcr.views.GenericJcrBrowser;
 import org.argeo.eclipse.ui.jcr.wizards.ImportFileSystemWizard;
@@ -14,6 +16,7 @@ import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.ui.handlers.HandlerUtil;
 
 public class ImportFileSystem extends AbstractHandler {
+       private static Log log = LogFactory.getLog(ImportFileSystem.class);
 
        public Object execute(ExecutionEvent event) throws ExecutionException {
                ISelection selection = HandlerUtil.getActiveWorkbenchWindow(event)
@@ -27,11 +30,11 @@ public class ImportFileSystem extends AbstractHandler {
                        try {
                                if (obj instanceof Node) {
                                        Node folder = (Node) obj;
-//                                     if (!folder.getPrimaryNodeType().getName()
-//                                                     .equals(NodeType.NT_FOLDER)) {
-//                                             Error.show("Can only import to a folder node");
-//                                             return null;
-//                                     }
+                                       // if (!folder.getPrimaryNodeType().getName()
+                                       // .equals(NodeType.NT_FOLDER)) {
+                                       // Error.show("Can only import to a folder node");
+                                       // return null;
+                                       // }
                                        ImportFileSystemWizard wizard = new ImportFileSystemWizard(
                                                        folder);
                                        WizardDialog dialog = new WizardDialog(
index 414cb010ac71d4a6974429c16d9ad8104477b78e..cf70923158629d960737d83f9e8db655ae87eb7d 100644 (file)
@@ -1,9 +1,7 @@
 package org.argeo.eclipse.ui.jcr.views;
 
 import java.io.InputStream;
-import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.List;
 
 import javax.jcr.Node;
 import javax.jcr.Property;
@@ -20,6 +18,8 @@ import org.argeo.eclipse.ui.jcr.browser.NodeLabelProvider;
 import org.argeo.eclipse.ui.jcr.browser.PropertiesContentProvider;
 import org.argeo.eclipse.ui.jcr.browser.RepositoryNode;
 import org.argeo.eclipse.ui.jcr.browser.WorkspaceNode;
+import org.argeo.eclipse.ui.jcr.utils.JcrFileProvider;
+import org.argeo.eclipse.ui.jcr.utils.NodeViewerComparer;
 import org.argeo.eclipse.ui.specific.FileHandler;
 import org.argeo.jcr.RepositoryRegister;
 import org.eclipse.jface.action.MenuManager;
@@ -43,7 +43,7 @@ import org.eclipse.swt.widgets.Menu;
 import org.eclipse.ui.part.ViewPart;
 
 public class GenericJcrBrowser extends ViewPart {
-       private static Log log = LogFactory.getLog(GenericJcrBrowser.class);
+       private final static Log log = LogFactory.getLog(GenericJcrBrowser.class);
 
        private TreeViewer nodesViewer;
        private TableViewer propertiesViewer;
@@ -52,6 +52,23 @@ public class GenericJcrBrowser extends ViewPart {
 
        @Override
        public void createPartControl(Composite parent) {
+               /*
+                * TEST
+                */
+
+               // Instantiate the generic object that fits for
+               // both RCP & RAP, must be final to be accessed in the double click
+               // listener.
+               // Not that in RAP, it registers a service handler that provide the
+               // access to the files.
+
+               final JcrFileProvider jfp = new JcrFileProvider();
+               final FileHandler fh = new FileHandler(jfp);
+
+               /*
+                * TEST END
+                */
+
                parent.setLayout(new FillLayout());
 
                SashForm sashForm = new SashForm(parent, SWT.VERTICAL);
@@ -81,6 +98,7 @@ public class GenericJcrBrowser extends ViewPart {
                                                }
                                        }
                                });
+
                nodesViewer.addDoubleClickListener(new IDoubleClickListener() {
                        public void doubleClick(DoubleClickEvent event) {
                                if (event.getSelection() == null
@@ -89,37 +107,62 @@ public class GenericJcrBrowser extends ViewPart {
                                Object obj = ((IStructuredSelection) event.getSelection())
                                                .getFirstElement();
                                if (obj instanceof RepositoryNode) {
-                                       ((RepositoryNode) obj).login();
+                                       RepositoryNode rpNode = (RepositoryNode) obj;
+                                       rpNode.login();
+                                       // For the file provider to be able to browse the repo.
+                                       // TODO : enhanced that.
+                                       jfp.setRepositoryNode(rpNode);
+                                       
                                        nodesViewer.refresh(obj);
                                } else if (obj instanceof WorkspaceNode) {
                                        ((WorkspaceNode) obj).login();
                                        nodesViewer.refresh(obj);
                                } // call the openFile commands on node
                                else if (obj instanceof Node) {
+                                       // Shell shell =
+                                       // aup.getWorkbench().getActiveWorkbenchWindow()
+                                       // .getShell();
+                                       // we can also do
+                                       // event.getViewer().getControl().getShell();
+
+                                       // Browser browser = new Browser(shell, SWT.NONE);
+                                       // browser.setText(encodedURL);
+                                       // boolean check = browser.setUrl(encodedURL);
+                                       // System.out.println("soo ?? : " + check);
+                                       // System.out.println("script : " + browser.executeScript);
+
+                                       // try {
+                                       // RWT.getResponse().sendRedirect(encodedURL);
+                                       // } catch (IOException e1) {
+                                       // // TODO Auto-generated catch block
+                                       // e1.printStackTrace();
+                                       // }
+
+                                       // final Browser browser = new Browser(parent, SWT.NONE);
+                                       // browser.setText(createDownloadHtml("test.pdf",
+                                       // "Download file"));
+
                                        Node node = (Node) obj;
                                        try {
                                                if (node.isNodeType("nt:file")) {
+                                                       String name = node.getName();
+                                                       String id = node.getIdentifier();
 
                                                        Node child = node.getNodes().nextNode();
                                                        if (!child.isNodeType("nt:resource")) {
                                                                Error.show("Cannot open file children Node that are not of 'nt:resource' type.");
                                                                return;
                                                        }
+
                                                        InputStream fis = null;
 
                                                        try {
                                                                fis = (InputStream) child
                                                                                .getProperty("jcr:data").getBinary()
                                                                                .getStream();
-
-                                                               String name = node.getName();
-
                                                                // Instantiate the generic object that fits for
-                                                               // both
-                                                               // RCP & RAP.
-                                                               FileHandler fh = new FileHandler();
-                                                               fh.openFile(name, fis);
-                                                               // fh.openFile(file);
+                                                               // both RCP & RAP.
+                                                               fh.openFile(name, id, fis);
                                                        } catch (Exception e) {
                                                                throw new ArgeoException(
                                                                                "Stream error while opening file", e);
@@ -131,6 +174,7 @@ public class GenericJcrBrowser extends ViewPart {
                                                re.printStackTrace();
 
                                        }
+
                                }
 
                        }
@@ -205,6 +249,8 @@ public class GenericJcrBrowser extends ViewPart {
 
                sashForm.setWeights(getWeights());
 
+               nodesViewer.setComparer(new NodeViewerComparer());
+
        }
 
        @Override
@@ -235,71 +281,17 @@ public class GenericJcrBrowser extends ViewPart {
 
        public void nodeRemoved(Node parentNode) {
 
-               List<Node> al = new ArrayList<Node>();
-               al.add(parentNode);
-
-               IStructuredSelection newSel = new StructuredSelection(al);
-               // IStructuredSelection newSel = new StructuredSelection(parentNode);
-
-               if (log.isDebugEnabled())
-                       log.debug("new selection size = " + newSel.size());
-
+               IStructuredSelection newSel = new StructuredSelection(parentNode);
                nodesViewer.setSelection(newSel, true);
+               // Force refresh
                IStructuredSelection tmpSel = (IStructuredSelection) nodesViewer
                                .getSelection();
-
-               if (log.isDebugEnabled())
-                       log.debug("set selection size = " + tmpSel.size());
-
-               nodesViewer.refresh();
-
-               //
-               // log.debug(" Class selected (Parent 1ST element) : "
-               // + tmpSel.getFirstElement().getClass());
-               // setFocus();
-               //
-               // nodesViewer.refresh(parentNode);
-
-               // // Call the refresh node command
-               // try {
-               // IWorkbench iw = JcrUiPlugin.getDefault().getWorkbench();
-               // IHandlerService handlerService = (IHandlerService) iw
-               // .getService(IHandlerService.class);
-               //
-               // // get the command from plugin.xml
-               // IWorkbenchWindow window = iw.getActiveWorkbenchWindow();
-               // ICommandService cmdService = (ICommandService) window
-               // .getService(ICommandService.class);
-               // Command cmd = cmdService
-               // .getCommand(OpenEbiDetailsEditor.COMMAND_NAME);
-               //
-               // // log.debug("cmd : " + cmd);
-               // ArrayList<Parameterization> parameters = new
-               // ArrayList<Parameterization>();
-               //
-               // // get the parameter
-               // IParameter iparam = cmd
-               // .getParameter(OpenEbiDetailsEditor.PARAM_UUID);
-               //
-               // Parameterization params = new Parameterization(iparam,
-               // ((String[]) obj)[0]);
-               // parameters.add(params);
-               //
-               // // build the parameterized command
-               // ParameterizedCommand pc = new ParameterizedCommand(cmd,
-               // parameters.toArray(new Parameterization[parameters.size()]));
-               //
-               // // execute the command
-               // handlerService = (IHandlerService) window
-               // .getService(IHandlerService.class);
-               // handlerService.executeCommand(pc, null);
-               //
-               // } catch (Exception e) {
-               // throw new ArgeoException("Error opening EBI", e);
-               // }
+               nodesViewer.refresh(tmpSel.getFirstElement());
        }
 
+       // IoC
        public void setRepositoryRegister(RepositoryRegister repositoryRegister) {
                this.repositoryRegister = repositoryRegister;
        }
+
 }
index 14a30174945d58d19749fc10ac65355da46d736d..e52fa6768aba927a95b0b2d6b54d3fc567f5c33e 100644 (file)
@@ -38,8 +38,12 @@ public class ImportFileSystemWizard extends Wizard {
 
        @Override
        public void addPages() {
-               page1 = new ImportFileSystemWizardPage();
-               addPage(page1);
+               try {
+                       page1 = new ImportFileSystemWizardPage();
+                       addPage(page1);
+               } catch (Exception e) {
+                       e.printStackTrace();
+               }
        }
 
        /**