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;
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;
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;
} 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();
+
+ }
}
}
}
public void nodeRemoved(Node parentNode) {
- nodesViewer.refresh(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());
+
+ 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<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);
+ // }
}
public void setRepositoryRegister(RepositoryRegister repositoryRegister) {