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=414cb010ac71d4a6974429c16d9ad8104477b78e;hb=5a00c032d8c7b9617777db83b0a6d60ab6b74d18;hp=eb23629673f4c367f7fef24847eabc2cdd555c13;hpb=591e96576707e4139b142026a7d915ffdde1e223;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 eb2362967..414cb010a 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,18 +1,26 @@ 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; 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; 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.specific.FileHandler; import org.argeo.jcr.RepositoryRegister; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.viewers.ColumnLabelProvider; @@ -21,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; @@ -34,6 +43,8 @@ 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 TreeViewer nodesViewer; private TableViewer propertiesViewer; @@ -83,6 +94,43 @@ public class GenericJcrBrowser extends ViewPart { } else if (obj instanceof WorkspaceNode) { ((WorkspaceNode) obj).login(); nodesViewer.refresh(obj); + } // call the openFile commands on node + else if (obj instanceof Node) { + Node node = (Node) obj; + try { + if (node.isNodeType("nt:file")) { + + 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); + } catch (Exception e) { + throw new ArgeoException( + "Stream error while opening file", e); + } finally { + IOUtils.closeQuietly(fis); + } + } + } catch (RepositoryException re) { + re.printStackTrace(); + + } } } @@ -186,7 +234,69 @@ public class GenericJcrBrowser extends ViewPart { } public void nodeRemoved(Node parentNode) { - nodesViewer.refresh(parentNode); + + List al = new ArrayList(); + al.add(parentNode); + + IStructuredSelection newSel = new StructuredSelection(al); + // IStructuredSelection newSel = new StructuredSelection(parentNode); + + if (log.isDebugEnabled()) + log.debug("new selection size = " + newSel.size()); + + nodesViewer.setSelection(newSel, true); + 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 parameters = new + // ArrayList(); + // + // // 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); + // } } public void setRepositoryRegister(RepositoryRegister repositoryRegister) {