]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/views/AkbTemplatesTreeView.java
Work on items editors
[gpl/argeo-slc.git] / plugins / org.argeo.slc.akb.ui / src / main / java / org / argeo / slc / akb / ui / views / AkbTemplatesTreeView.java
index 004e151c51485ab95bf241d952368a94b4ec6966..399f128f5388cb10924fbe505342ab0266ab2ecc 100644 (file)
@@ -36,6 +36,7 @@ import org.argeo.slc.akb.AkbException;
 import org.argeo.slc.akb.AkbNames;\r
 import org.argeo.slc.akb.AkbTypes;\r
 import org.argeo.slc.akb.ui.AkbUiPlugin;\r
+import org.argeo.slc.akb.ui.AkbUiUtils;\r
 import org.argeo.slc.akb.ui.commands.DeleteAkbNodes;\r
 import org.argeo.slc.akb.ui.commands.OpenAkbNodeEditor;\r
 import org.argeo.slc.akb.ui.providers.AkbTreeLabelProvider;\r
@@ -81,7 +82,8 @@ public class AkbTemplatesTreeView extends ViewPart {
        private EventListener allResultsObserver = null;\r
        private final static String[] observedNodeTypesUnderAllResults = {\r
                        AkbTypes.AKB_ENV_TEMPLATE, AkbTypes.AKB_CONNECTOR_ALIAS,\r
-                       AkbTypes.AKB_ITEM, AkbTypes.AKB_ITEM_FOLDER };\r
+                       AkbTypes.AKB_ITEM, AkbTypes.AKB_ITEM_FOLDER,\r
+                       AkbTypes.AKB_CONNECTOR_FOLDER };\r
 \r
        // private EventListener myResultsObserver = null;\r
        // private EventListener allResultsObserver = null;\r
@@ -139,29 +141,6 @@ public class AkbTemplatesTreeView extends ViewPart {
                // sashForm.setWeights(getWeights());\r
 \r
                // setOrderedInput(resultTreeViewer);\r
-\r
-               // Initialize observer\r
-               // try {\r
-               // ObservationManager observationManager = session.getWorkspace()\r
-               // .getObservationManager();\r
-               // myResultsObserver = new MyResultsObserver(resultTreeViewer\r
-               // .getTree().getDisplay());\r
-               // allResultsObserver = new AllResultsObserver(resultTreeViewer\r
-               // .getTree().getDisplay());\r
-               //\r
-               // // observe tree changes under MyResults\r
-               // observationManager.addEventListener(myResultsObserver,\r
-               // Event.NODE_ADDED | Event.NODE_REMOVED,\r
-               // SlcJcrResultUtils.getMyResultsBasePath(session), true,\r
-               // null, observedNodeTypesUnderMyResult, false);\r
-               // // observe tree changes under All results\r
-               // observationManager.addEventListener(allResultsObserver,\r
-               // Event.NODE_ADDED | Event.NODE_REMOVED,\r
-               // SlcJcrResultUtils.getSlcResultsBasePath(session), true,\r
-               // null, observedNodeTypesUnderAllResults, false);\r
-               // } catch (RepositoryException e) {\r
-               // throw new SlcException("Cannot register listeners", e);\r
-               // }\r
        }\r
 \r
        /**\r
@@ -178,6 +157,7 @@ public class AkbTemplatesTreeView extends ViewPart {
 \r
        // The main tree viewer\r
        protected TreeViewer createResultsTreeViewer(Composite parent) {\r
+               parent.setLayout(AkbUiUtils.gridLayoutNoBorder());\r
                int style = SWT.BORDER | SWT.MULTI;\r
 \r
                TreeViewer viewer = new TreeViewer(parent, style);\r
@@ -255,9 +235,26 @@ public class AkbTemplatesTreeView extends ViewPart {
 \r
                protected void onEventInUiThread(List<Event> events)\r
                                throws RepositoryException {\r
-                       resultTreeViewer.setInput(initializeResultTree());\r
-                       // if (lastSelectedSourceElementParent != null)\r
-                       // refresh(lastSelectedSourceElementParent);\r
+                       boolean fullRefresh = false;\r
+\r
+                       eventLoop: for (Event event : events) {\r
+                               String currPath = event.getPath();\r
+                               if (session.nodeExists(currPath)) {\r
+                                       Node node = session.getNode(currPath);\r
+                                       if (node.isNodeType(AkbTypes.AKB_ENV_TEMPLATE)) {\r
+                                               fullRefresh = true;\r
+                                               break eventLoop;\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+                       Object[] visibles = resultTreeViewer.getExpandedElements();\r
+                       if (fullRefresh)\r
+                               resultTreeViewer.setInput(initializeResultTree());\r
+                       else\r
+                               resultTreeViewer.refresh();\r
+\r
+                       resultTreeViewer.setExpandedElements(visibles);\r
                }\r
        }\r
 \r
@@ -271,7 +268,6 @@ public class AkbTemplatesTreeView extends ViewPart {
 \r
        private Node[] initializeResultTree() {\r
                try {\r
-\r
                        NodeIterator ni = templatesParentNode.getNodes();\r
                        List<Node> templates = new ArrayList<Node>();\r
 \r
@@ -282,7 +278,6 @@ public class AkbTemplatesTreeView extends ViewPart {
                        }\r
 \r
                        Node[] templateArr = templates.toArray(new Node[templates.size()]);\r
-\r
                        return templateArr;\r
                } catch (RepositoryException re) {\r
                        throw new AkbException("Error while initializing templates Tree.",\r