X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=eclipse%2Fruntime%2Forg.argeo.eclipse.ui.jcr%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Feclipse%2Fui%2Fjcr%2Fviews%2FGenericJcrBrowser.java;h=cf70923158629d960737d83f9e8db655ae87eb7d;hb=5489d914ae3576354936390e980072792af6d6ef;hp=2496177824088a4404888cbbd47aae8e82263620;hpb=5f0b7679ef0cbcb1b101f71673f1e5e24e735b39;p=lgpl%2Fargeo-commons.git diff --git a/eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/views/GenericJcrBrowser.java b/eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/views/GenericJcrBrowser.java index 249617782..cf7092315 100644 --- a/eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/views/GenericJcrBrowser.java +++ b/eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/views/GenericJcrBrowser.java @@ -1,7 +1,6 @@ package org.argeo.eclipse.ui.jcr.views; -import java.io.BufferedInputStream; -import java.io.File; +import java.io.InputStream; import java.util.Arrays; import javax.jcr.Node; @@ -10,6 +9,8 @@ import javax.jcr.PropertyType; import javax.jcr.RepositoryException; import org.apache.commons.io.IOUtils; +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.browser.NodeContentProvider; @@ -17,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; @@ -26,6 +29,7 @@ import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TableViewerColumn; import org.eclipse.jface.viewers.TreeViewer; @@ -39,6 +43,8 @@ import org.eclipse.swt.widgets.Menu; import org.eclipse.ui.part.ViewPart; public class GenericJcrBrowser extends ViewPart { + private final static Log log = LogFactory.getLog(GenericJcrBrowser.class); + private TreeViewer nodesViewer; private TableViewer propertiesViewer; @@ -46,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); @@ -75,6 +98,7 @@ public class GenericJcrBrowser extends ViewPart { } } }); + nodesViewer.addDoubleClickListener(new IDoubleClickListener() { public void doubleClick(DoubleClickEvent event) { if (event.getSelection() == null @@ -83,38 +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; } - BufferedInputStream fis = null; + + InputStream fis = null; try { - fis = (BufferedInputStream) child + 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); @@ -126,6 +174,7 @@ public class GenericJcrBrowser extends ViewPart { re.printStackTrace(); } + } } @@ -200,6 +249,8 @@ public class GenericJcrBrowser extends ViewPart { sashForm.setWeights(getWeights()); + nodesViewer.setComparer(new NodeViewerComparer()); + } @Override @@ -229,10 +280,18 @@ public class GenericJcrBrowser extends ViewPart { } public void nodeRemoved(Node parentNode) { - nodesViewer.refresh(parentNode); + + IStructuredSelection newSel = new StructuredSelection(parentNode); + nodesViewer.setSelection(newSel, true); + // Force refresh + IStructuredSelection tmpSel = (IStructuredSelection) nodesViewer + .getSelection(); + nodesViewer.refresh(tmpSel.getFirstElement()); } + // IoC public void setRepositoryRegister(RepositoryRegister repositoryRegister) { this.repositoryRegister = repositoryRegister; } + }