import org.argeo.slc.client.ui.ClientUiPlugin;\r
import org.argeo.slc.client.ui.SlcUiConstants;\r
import org.argeo.slc.client.ui.commands.AddResultFolder;\r
+import org.argeo.slc.client.ui.commands.DeleteItems;\r
+import org.argeo.slc.client.ui.commands.RefreshJcrResultTreeView;\r
import org.argeo.slc.client.ui.commands.RenameResultFolder;\r
import org.argeo.slc.client.ui.commands.RenameResultNode;\r
import org.argeo.slc.client.ui.editors.ProcessEditor;\r
*/\r
private void setOrderedInput(TreeViewer viewer) {\r
// Add specific ordering\r
- resultTreeViewer.setInput(null);\r
+ viewer.setInput(null);\r
viewer.setComparator(null);\r
- resultTreeViewer.setInput(initializeResultTree());\r
+ viewer.setInput(initializeResultTree());\r
viewer.setComparator(new ResultItemsComparator());\r
}\r
\r
}\r
});\r
viewer.getTree().setMenu(menu);\r
+ menuManager.setRemoveAllWhenShown(true);\r
+\r
getSite().registerContextMenu(menuManager, viewer);\r
\r
// add change listener to display TestResult information in the property\r
if (property.getValue().getBoolean())\r
value = "SUCCESS";\r
else {\r
- if (property.getParent().hasNode(\r
+ if (property.getParent().hasProperty(\r
SlcNames.SLC_ERROR_MESSAGE))\r
value = "ERROR";\r
else\r
boolean canAddSubfolder = false;\r
boolean canRenamefolder = false;\r
boolean isSingleResultNode = false;\r
- // Building conditions\r
- if (selection.size() == 1) {\r
- Object obj = selection.getFirstElement();\r
- try {\r
+ boolean isUnderMyResult = false;\r
+ boolean validMultipleDelete = false;\r
+ try {\r
+\r
+ // Building conditions\r
+ if (selection.size() == 1) {\r
+ Object obj = selection.getFirstElement();\r
if (obj instanceof SingleResultNode)\r
isSingleResultNode = true;\r
else if (obj instanceof ParentNodeFolder) {\r
if (cNode.isNodeType(SlcTypes.SLC_RESULT_FOLDER)) {\r
canAddSubfolder = true;\r
canRenamefolder = true;\r
+ isUnderMyResult = true;\r
} else if (cNode\r
.isNodeType(SlcTypes.SLC_MY_RESULT_ROOT_FOLDER)) {\r
canAddSubfolder = true;\r
}\r
}\r
- } catch (RepositoryException re) {\r
- throw new SlcException(\r
- "unexpected error while building condition for context menu",\r
- re);\r
+ } else {\r
+ @SuppressWarnings("rawtypes")\r
+ Iterator it = selection.iterator();\r
+ multicheck: while (it.hasNext()) {\r
+ validMultipleDelete = true;\r
+ Object obj = it.next();\r
+ if (obj instanceof SingleResultNode)\r
+ continue multicheck;\r
+ else if (obj instanceof ParentNodeFolder) {\r
+ Node cNode = ((ParentNodeFolder) obj).getNode();\r
+ if (cNode.isNodeType(SlcTypes.SLC_RESULT_FOLDER))\r
+ continue multicheck;\r
+ else {\r
+ validMultipleDelete = false;\r
+ break multicheck;\r
+ }\r
+ } else {\r
+ validMultipleDelete = false;\r
+ break multicheck;\r
+ }\r
+ }\r
}\r
+ } catch (RepositoryException re) {\r
+ throw new SlcException(\r
+ "unexpected error while building condition for context menu",\r
+ re);\r
}\r
+\r
// Effective Refresh\r
+ CommandUtils.refreshCommand(menuManager, window,\r
+ RefreshJcrResultTreeView.ID,\r
+ RefreshJcrResultTreeView.DEFAULT_LABEL,\r
+ RefreshJcrResultTreeView.DEFAULT_IMG_DESCRIPTOR, true);\r
+\r
+ CommandUtils.refreshCommand(menuManager, window, DeleteItems.ID,\r
+ DeleteItems.DEFAULT_LABEL, DeleteItems.DEFAULT_IMG_DESCRIPTOR,\r
+ isUnderMyResult || isSingleResultNode || validMultipleDelete);\r
+\r
CommandUtils.refreshCommand(menuManager, window, AddResultFolder.ID,\r
AddResultFolder.DEFAULT_LABEL,\r
ClientUiPlugin.getDefault().getWorkbench().getSharedImages()\r
RenameResultFolder.DEFAULT_LABEL,\r
RenameResultFolder.DEFAULT_IMG_DESCRIPTOR, canRenamefolder);\r
\r
+ // Command removed for the time being.\r
CommandUtils.refreshCommand(menuManager, window, RenameResultNode.ID,\r
RenameResultNode.DEFAULT_LABEL,\r
- RenameResultNode.DEFAULT_IMG_DESCRIPTOR, isSingleResultNode);\r
+ RenameResultNode.DEFAULT_IMG_DESCRIPTOR, false);\r
+\r
+ // Test to be removed\r
+ // If you use this pattern, do not forget to call\r
+ // menuManager.setRemoveAllWhenShown(true);\r
+ // when creating the menuManager\r
+\r
+ // menuManager.add(new Action("Test") {\r
+ // public void run() {\r
+ // log.debug("do something");\r
+ // }\r
+ // });\r
}\r
\r
/* INNER CLASSES */\r
} else {\r
@SuppressWarnings("rawtypes")\r
Iterator it = selection.iterator();\r
- StringBuffer nodes = new StringBuffer();\r
+ StringBuilder nodes = new StringBuilder();\r
while (it.hasNext()) {\r
Object obj = it.next();\r
if (obj instanceof SingleResultNode) {\r
Node tNode = ((SingleResultNode) obj).getNode();\r
if (tNode.getPrimaryNodeType().isNodeType(\r
SlcTypes.SLC_TEST_RESULT)) {\r
- nodes.append(tNode.getIdentifier() + ";");\r
+ nodes.append(tNode.getIdentifier()).append(";");\r
}\r
}\r
}\r
}\r
\r
Node target;\r
- boolean passedStatus = source\r
- .getNode(SlcNames.SLC_AGGREGATED_STATUS)\r
- .getProperty(SlcNames.SLC_SUCCESS).getBoolean();\r
+ boolean passedStatus = false;\r
+ if (source.hasNode(SlcNames.SLC_AGGREGATED_STATUS))\r
+ passedStatus = source\r
+ .getNode(SlcNames.SLC_AGGREGATED_STATUS)\r
+ .getProperty(SlcNames.SLC_SUCCESS).getBoolean();\r
\r
boolean isActionUnderMyResult = source.getPath()\r
.startsWith(\r
String destPath = targetParentNode.getPath() + "/"\r
+ name;\r
session.move(sourcePath, destPath);\r
- // session.save();\r
// Update passed status of the parent source Node\r
ResultParentUtils\r
.updatePassedStatus(session.getNode(JcrUtils\r
ResultParentUtils.updatePassedStatus(target.getParent(),\r
passedStatus);\r
session.save();\r
-\r
- // try {\r
- // Node source = session.getNodeByIdentifier(id);\r
- // String name;\r
- // if (source.hasProperty(Property.JCR_TITLE))\r
- // name = source.getProperty(Property.JCR_TITLE)\r
- // .getString();\r
- // else if (source.hasProperty(SlcNames.SLC_TEST_CASE))\r
- // name = source.getProperty(SlcNames.SLC_TEST_CASE)\r
- // .getString();\r
- // else\r
- // name = source.getName();\r
- //\r
- // // Check if a user defined folder result with same name\r
- // // exists\r
- // // at target\r
- // if (targetParentNode.hasNode(name)\r
- // && targetParentNode.getNode(name).isNodeType(\r
- // SlcTypes.SLC_RESULT_FOLDER)) {\r
- // ConfirmOverwriteWizard wizard = new\r
- // ConfirmOverwriteWizard(\r
- // name, targetParentNode);\r
- // WizardDialog dialog = new WizardDialog(Display\r
- // .getDefault().getActiveShell(), wizard);\r
- //\r
- // if (dialog.open() == WizardDialog.CANCEL)\r
- // return true;\r
- //\r
- // if (wizard.overwrite()) {\r
- // targetParentNode.getNode(name).remove();\r
- // // session.save();\r
- // } else\r
- // name = wizard.newName();\r
- // }\r
- //\r
- // Node target;\r
- // boolean passedStatus = source\r
- // .getNode(SlcNames.SLC_AGGREGATED_STATUS)\r
- // .getProperty(SlcNames.SLC_SUCCESS).getBoolean();\r
- //\r
- // if (!isActionUnderMyResult) {// Copy\r
- // target = targetParentNode.addNode(source.getName(),\r
- // source.getPrimaryNodeType().getName());\r
- // JcrUtils.copy(source, target);\r
- // } else {// move\r
- // String sourcePath = source.getPath();\r
- // String destPath = targetParentNode.getPath() + "/"\r
- // + name;\r
- // session.move(sourcePath, destPath);\r
- // // session.save();\r
- // // Update passed status of the parent source Node\r
- // ResultParentUtils\r
- // .updatePassedStatus(session.getNode(JcrUtils\r
- // .parentPath(sourcePath)), true);\r
- // target = session.getNode(destPath);\r
- //\r
- // }\r
- // if (!target.isNodeType(NodeType.MIX_TITLE))\r
- // target.addMixin(NodeType.MIX_TITLE);\r
- // target.setProperty(Property.JCR_TITLE, name);\r
- // ResultParentUtils.updatePassedStatus(target.getParent(),\r
- // passedStatus);\r
- // session.save();\r
-\r
}\r
} catch (RepositoryException re) {\r
throw new SlcException(\r