X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=plugins%2Forg.argeo.slc.client.ui%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fclient%2Fui%2Fviews%2FJcrResultTreeView.java;h=5ace2381a44d8ddb8582943bf2fde4397c65c465;hb=fd6362dda19f29ca746ecefae779694e6cb43dd4;hp=99d131d8fb50c3fcf3079200b9d5660351de6bd8;hpb=89114859830f6e159a259937375bd063f25f80c9;p=gpl%2Fargeo-slc.git diff --git a/plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/views/JcrResultTreeView.java b/plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/views/JcrResultTreeView.java index 99d131d8f..5ace2381a 100644 --- a/plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/views/JcrResultTreeView.java +++ b/plugins/org.argeo.slc.client.ui/src/main/java/org/argeo/slc/client/ui/views/JcrResultTreeView.java @@ -32,8 +32,6 @@ import javax.jcr.observation.Event; import javax.jcr.observation.EventListener; import javax.jcr.observation.ObservationManager; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.argeo.ArgeoException; import org.argeo.eclipse.ui.jcr.AsyncUiEventListener; import org.argeo.eclipse.ui.utils.CommandUtils; @@ -42,6 +40,8 @@ import org.argeo.slc.SlcException; import org.argeo.slc.client.ui.ClientUiPlugin; import org.argeo.slc.client.ui.SlcUiConstants; import org.argeo.slc.client.ui.commands.AddResultFolder; +import org.argeo.slc.client.ui.commands.DeleteItems; +import org.argeo.slc.client.ui.commands.RefreshJcrResultTreeView; import org.argeo.slc.client.ui.commands.RenameResultFolder; import org.argeo.slc.client.ui.commands.RenameResultNode; import org.argeo.slc.client.ui.editors.ProcessEditor; @@ -105,7 +105,8 @@ public class JcrResultTreeView extends ViewPart { private final static DateFormat dateFormat = new SimpleDateFormat( SlcUiConstants.DEFAULT_DISPLAY_DATE_TIME_FORMAT); - private final static Log log = LogFactory.getLog(JcrResultTreeView.class); + // private final static Log log = + // LogFactory.getLog(JcrResultTreeView.class); /* DEPENDENCY INJECTION */ private Session session; @@ -125,17 +126,8 @@ public class JcrResultTreeView extends ViewPart { private final static String[] observedNodeTypesUnderAllResults = { SlcTypes.SLC_TEST_RESULT, NodeType.NT_UNSTRUCTURED }; - // FIXME cache to ease D&D - // private boolean isActionUnderMyResult = false; - // private ResultParent lastSelectedTargetElement; - // private ResultParent lastSelectedSourceElement; - // private ResultParent lastSelectedSourceElementParent; private boolean isResultFolder = false; - // FIXME we cache the fact that we are moving a node to avoid exception - // triggered by the "Add Node" event while moving - // boolean isMoveInProgress = false; - /** * To be overridden to adapt size of form and result frames. */ @@ -196,9 +188,9 @@ public class JcrResultTreeView extends ViewPart { */ private void setOrderedInput(TreeViewer viewer) { // Add specific ordering - resultTreeViewer.setInput(null); + viewer.setInput(null); viewer.setComparator(null); - resultTreeViewer.setInput(initializeResultTree()); + viewer.setInput(initializeResultTree()); viewer.setComparator(new ResultItemsComparator()); } @@ -222,8 +214,7 @@ public class JcrResultTreeView extends ViewPart { // Override default behaviour to insure that 2 distincts results that // have the same name will be correctly and distincly returned by - // corresponding - // TreeViewer.getSelection() method. + // corresponding TreeViewer.getSelection() method. viewer.setComparer(new ResultItemsComparer()); // viewer.setLabelProvider(rtLblProvider); @@ -244,6 +235,8 @@ public class JcrResultTreeView extends ViewPart { } }); viewer.getTree().setMenu(menu); + menuManager.setRemoveAllWhenShown(true); + getSite().registerContextMenu(menuManager, viewer); // add change listener to display TestResult information in the property @@ -304,9 +297,9 @@ public class JcrResultTreeView extends ViewPart { value = dateFormat.format(date.getTime()); } else if (SlcNames.SLC_SUCCESS.equals(name)) { if (property.getValue().getBoolean()) - value = "SUCCESS"; + value = "PASSED"; else { - if (property.getParent().hasNode( + if (property.getParent().hasProperty( SlcNames.SLC_ERROR_MESSAGE)) value = "ERROR"; else @@ -492,10 +485,13 @@ public class JcrResultTreeView extends ViewPart { boolean canAddSubfolder = false; boolean canRenamefolder = false; boolean isSingleResultNode = false; - // Building conditions - if (selection.size() == 1) { - Object obj = selection.getFirstElement(); - try { + boolean isUnderMyResult = false; + boolean validMultipleDelete = false; + try { + + // Building conditions + if (selection.size() == 1) { + Object obj = selection.getFirstElement(); if (obj instanceof SingleResultNode) isSingleResultNode = true; else if (obj instanceof ParentNodeFolder) { @@ -503,18 +499,50 @@ public class JcrResultTreeView extends ViewPart { if (cNode.isNodeType(SlcTypes.SLC_RESULT_FOLDER)) { canAddSubfolder = true; canRenamefolder = true; + isUnderMyResult = true; } else if (cNode .isNodeType(SlcTypes.SLC_MY_RESULT_ROOT_FOLDER)) { canAddSubfolder = true; } } - } catch (RepositoryException re) { - throw new SlcException( - "unexpected error while building condition for context menu", - re); + } else { + @SuppressWarnings("rawtypes") + Iterator it = selection.iterator(); + multicheck: while (it.hasNext()) { + validMultipleDelete = true; + Object obj = it.next(); + if (obj instanceof SingleResultNode) + continue multicheck; + else if (obj instanceof ParentNodeFolder) { + Node cNode = ((ParentNodeFolder) obj).getNode(); + if (cNode.isNodeType(SlcTypes.SLC_RESULT_FOLDER)) + continue multicheck; + else { + validMultipleDelete = false; + break multicheck; + } + } else { + validMultipleDelete = false; + break multicheck; + } + } } + } catch (RepositoryException re) { + throw new SlcException( + "unexpected error while building condition for context menu", + re); } + // Effective Refresh + CommandUtils.refreshCommand(menuManager, window, + RefreshJcrResultTreeView.ID, + RefreshJcrResultTreeView.DEFAULT_LABEL, + RefreshJcrResultTreeView.DEFAULT_IMG_DESCRIPTOR, true); + + CommandUtils.refreshCommand(menuManager, window, DeleteItems.ID, + DeleteItems.DEFAULT_LABEL, DeleteItems.DEFAULT_IMG_DESCRIPTOR, + isUnderMyResult || isSingleResultNode || validMultipleDelete); + CommandUtils.refreshCommand(menuManager, window, AddResultFolder.ID, AddResultFolder.DEFAULT_LABEL, ClientUiPlugin.getDefault().getWorkbench().getSharedImages() @@ -525,9 +553,21 @@ public class JcrResultTreeView extends ViewPart { RenameResultFolder.DEFAULT_LABEL, RenameResultFolder.DEFAULT_IMG_DESCRIPTOR, canRenamefolder); + // Command removed for the time being. CommandUtils.refreshCommand(menuManager, window, RenameResultNode.ID, RenameResultNode.DEFAULT_LABEL, - RenameResultNode.DEFAULT_IMG_DESCRIPTOR, isSingleResultNode); + RenameResultNode.DEFAULT_IMG_DESCRIPTOR, false); + + // Test to be removed + // If you use this pattern, do not forget to call + // menuManager.setRemoveAllWhenShown(true); + // when creating the menuManager + + // menuManager.add(new Action("Test") { + // public void run() { + // log.debug("do something"); + // } + // }); } /* INNER CLASSES */ @@ -589,14 +629,14 @@ public class JcrResultTreeView extends ViewPart { } else { @SuppressWarnings("rawtypes") Iterator it = selection.iterator(); - StringBuffer nodes = new StringBuffer(); + StringBuilder nodes = new StringBuilder(); while (it.hasNext()) { Object obj = it.next(); if (obj instanceof SingleResultNode) { Node tNode = ((SingleResultNode) obj).getNode(); if (tNode.getPrimaryNodeType().isNodeType( SlcTypes.SLC_TEST_RESULT)) { - nodes.append(tNode.getIdentifier() + ";"); + nodes.append(tNode.getIdentifier()).append(";"); } } } @@ -677,7 +717,7 @@ public class JcrResultTreeView extends ViewPart { ResultParentUtils.updatePassedStatus( session.getNode(JcrUtils.parentPath(sourcePath)), true); - Node target = session.getNode(destPath); + // Node target = session.getNode(destPath); session.save(); return true; } @@ -722,9 +762,11 @@ public class JcrResultTreeView extends ViewPart { } Node target; - boolean passedStatus = source - .getNode(SlcNames.SLC_AGGREGATED_STATUS) - .getProperty(SlcNames.SLC_SUCCESS).getBoolean(); + boolean passedStatus = false; + if (source.hasNode(SlcNames.SLC_AGGREGATED_STATUS)) + passedStatus = source + .getNode(SlcNames.SLC_AGGREGATED_STATUS) + .getProperty(SlcNames.SLC_SUCCESS).getBoolean(); boolean isActionUnderMyResult = source.getPath() .startsWith( @@ -740,7 +782,6 @@ public class JcrResultTreeView extends ViewPart { String destPath = targetParentNode.getPath() + "/" + name; session.move(sourcePath, destPath); - // session.save(); // Update passed status of the parent source Node ResultParentUtils .updatePassedStatus(session.getNode(JcrUtils @@ -754,70 +795,6 @@ public class JcrResultTreeView extends ViewPart { ResultParentUtils.updatePassedStatus(target.getParent(), passedStatus); session.save(); - - // try { - // Node source = session.getNodeByIdentifier(id); - // String name; - // if (source.hasProperty(Property.JCR_TITLE)) - // name = source.getProperty(Property.JCR_TITLE) - // .getString(); - // else if (source.hasProperty(SlcNames.SLC_TEST_CASE)) - // name = source.getProperty(SlcNames.SLC_TEST_CASE) - // .getString(); - // else - // name = source.getName(); - // - // // Check if a user defined folder result with same name - // // exists - // // at target - // if (targetParentNode.hasNode(name) - // && targetParentNode.getNode(name).isNodeType( - // SlcTypes.SLC_RESULT_FOLDER)) { - // ConfirmOverwriteWizard wizard = new - // ConfirmOverwriteWizard( - // name, targetParentNode); - // WizardDialog dialog = new WizardDialog(Display - // .getDefault().getActiveShell(), wizard); - // - // if (dialog.open() == WizardDialog.CANCEL) - // return true; - // - // if (wizard.overwrite()) { - // targetParentNode.getNode(name).remove(); - // // session.save(); - // } else - // name = wizard.newName(); - // } - // - // Node target; - // boolean passedStatus = source - // .getNode(SlcNames.SLC_AGGREGATED_STATUS) - // .getProperty(SlcNames.SLC_SUCCESS).getBoolean(); - // - // if (!isActionUnderMyResult) {// Copy - // target = targetParentNode.addNode(source.getName(), - // source.getPrimaryNodeType().getName()); - // JcrUtils.copy(source, target); - // } else {// move - // String sourcePath = source.getPath(); - // String destPath = targetParentNode.getPath() + "/" - // + name; - // session.move(sourcePath, destPath); - // // session.save(); - // // Update passed status of the parent source Node - // ResultParentUtils - // .updatePassedStatus(session.getNode(JcrUtils - // .parentPath(sourcePath)), true); - // target = session.getNode(destPath); - // - // } - // if (!target.isNodeType(NodeType.MIX_TITLE)) - // target.addMixin(NodeType.MIX_TITLE); - // target.setProperty(Property.JCR_TITLE, name); - // ResultParentUtils.updatePassedStatus(target.getParent(), - // passedStatus); - // session.save(); - } } catch (RepositoryException re) { throw new SlcException(