- Iterator<?> it = ((IStructuredSelection) selection).iterator();\r
- Object obj = null;\r
- try {\r
- while (it.hasNext()) {\r
- obj = it.next();\r
- if (obj instanceof Node) {\r
- Node node = (Node) obj;\r
- if (node.isNodeType(SlcTypes.SLC_EXECUTION_MODULE)) {\r
+\r
+ Job job = new Job("Update modules") {\r
+\r
+ @Override\r
+ protected IStatus run(IProgressMonitor monitor) {\r
+ Iterator<?> it = ((IStructuredSelection) selection)\r
+ .iterator();\r
+ Object obj = null;\r
+ try {\r
+ Map<String, Node> nodes = new HashMap<String, Node>();\r
+ nodes: while (it.hasNext()) {\r
+ obj = it.next();\r
+ if (obj instanceof Node) {\r
+ Node node = (Node) obj;\r
+ Node executionModuleNode = null;\r
+ while (executionModuleNode == null) {\r
+ if (node.isNodeType(SlcTypes.SLC_EXECUTION_MODULE)) {\r
+ executionModuleNode = node;\r
+ }\r
+ node = node.getParent();\r
+ if (node.getPath().equals("/"))// root\r
+ continue nodes;\r
+ }\r
+\r
+ if (!nodes.containsKey(executionModuleNode\r
+ .getPath()))\r
+ nodes.put(executionModuleNode.getPath(),\r
+ executionModuleNode);\r
+ }\r
+ }\r
+\r
+ monitor.beginTask("Update modules", nodes.size());\r
+ for (Node executionModuleNode : nodes.values()) {\r
+ monitor.subTask("Update "\r
+ + executionModuleNode.getName());\r