]> 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
Add order on trees.
[gpl/argeo-slc.git] / plugins / org.argeo.slc.akb.ui / src / main / java / org / argeo / slc / akb / ui / views / AkbTemplatesTreeView.java
index b1245f12443e21f042cc9b53a8405461e1b50cda..7028663b54e9aa0ae95585442372df4da5f0491a 100644 (file)
@@ -34,6 +34,7 @@ import org.argeo.eclipse.ui.utils.CommandUtils;
 import org.argeo.jcr.JcrUtils;\r
 import org.argeo.slc.akb.AkbException;\r
 import org.argeo.slc.akb.AkbNames;\r
+import org.argeo.slc.akb.AkbService;\r
 import org.argeo.slc.akb.AkbTypes;\r
 import org.argeo.slc.akb.ui.AkbUiPlugin;\r
 import org.argeo.slc.akb.ui.AkbUiUtils;\r
@@ -41,8 +42,9 @@ import org.argeo.slc.akb.ui.commands.DeleteAkbNodes;
 import org.argeo.slc.akb.ui.commands.OpenAkbNodeEditor;\r
 import org.argeo.slc.akb.ui.providers.AkbTreeLabelProvider;\r
 import org.argeo.slc.akb.ui.providers.TemplatesTreeContentProvider;\r
+import org.argeo.slc.akb.ui.utils.AkbItemsComparator;\r
 import org.argeo.slc.akb.ui.utils.Refreshable;\r
-import org.argeo.slc.akb.ui.views.AkbTemplatesTreeView.ViewDoubleClickListener;\r
+import org.argeo.slc.akb.utils.AkbJcrUtils;\r
 import org.eclipse.jface.action.IContributionItem;\r
 import org.eclipse.jface.action.IMenuListener;\r
 import org.eclipse.jface.action.IMenuManager;\r
@@ -60,7 +62,7 @@ import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.part.ViewPart;\r
 import org.eclipse.ui.services.IServiceLocator;\r
 \r
-/** SLC generic JCR Result tree view. */\r
+/** AKB template tree view. */\r
 public class AkbTemplatesTreeView extends ViewPart implements Refreshable {\r
        // private final static Log log =\r
        // LogFactory.getLog(AkbTemplatesTreeView.class);\r
@@ -70,6 +72,7 @@ public class AkbTemplatesTreeView extends ViewPart implements Refreshable {
 \r
        /* DEPENDENCY INJECTION */\r
        private Session session;\r
+       private AkbService akbService;\r
 \r
        // This page widgets\r
        private TreeViewer envTreeViewer;\r
@@ -97,45 +100,13 @@ public class AkbTemplatesTreeView extends ViewPart implements Refreshable {
        public void createPartControl(Composite parent) {\r
                initialize();\r
 \r
-               envTreeViewer = createResultsTreeViewer(parent);\r
-               envTreeViewer.setInput(initializeResultTree());\r
-\r
-               // parent.setLayout(new FillLayout());\r
-               // // Main layout\r
-               // SashForm sashForm = new SashForm(parent, SWT.VERTICAL);\r
-               // sashForm.setSashWidth(4);\r
-               // sashForm.setLayout(new FillLayout());\r
-\r
-               // Create the tree on top of the view\r
-               // Composite top = new Composite(sashForm, SWT.NONE);\r
-               // GridLayout gl = new GridLayout(1, false);\r
-               // top.setLayout(gl);\r
-               // resultTreeViewer = createResultsTreeViewer(top);\r
-\r
-               // // Create the property viewer on the bottom\r
-               // Composite bottom = new Composite(sashForm, SWT.NONE);\r
-               // bottom.setLayout(new GridLayout(1, false));\r
-               // propertiesViewer = createPropertiesViewer(bottom);\r
-               //\r
-               // sashForm.setWeights(getWeights());\r
-\r
-               // setOrderedInput(resultTreeViewer);\r
+               envTreeViewer = createTreeViewer(parent);\r
+               envTreeViewer.setInput(initializeTree());\r
+               envTreeViewer.setComparator(new AkbItemsComparator());\r
        }\r
 \r
-       /**\r
-        * Override default behaviour so that default defined order remains\r
-        * unchanged on first level of the tree\r
-        */\r
-       // private void setOrderedInput(TreeViewer viewer) {\r
-       // // Add specific ordering\r
-       // viewer.setInput(null);\r
-       // viewer.setComparator(null);\r
-       // viewer.setInput(initializeResultTree());\r
-       // viewer.setComparator(new ResultItemsComparator());\r
-       // }\r
-\r
        // The main tree viewer\r
-       protected TreeViewer createResultsTreeViewer(Composite parent) {\r
+       protected TreeViewer createTreeViewer(Composite parent) {\r
                parent.setLayout(AkbUiUtils.gridLayoutNoBorder());\r
                int style = SWT.BORDER | SWT.MULTI;\r
 \r
@@ -197,7 +168,7 @@ public class AkbTemplatesTreeView extends ViewPart implements Refreshable {
        public void setFocus() {\r
        }\r
 \r
-       private Node[] initializeResultTree() {\r
+       private Node[] initializeTree() {\r
                try {\r
                        NodeIterator ni = templatesParentNode.getNodes();\r
                        List<Node> templates = new ArrayList<Node>();\r
@@ -216,7 +187,7 @@ public class AkbTemplatesTreeView extends ViewPart implements Refreshable {
 \r
        @Override\r
        public void forceRefresh(Object object) {\r
-               envTreeViewer.setInput(initializeResultTree());\r
+               envTreeViewer.setInput(initializeTree());\r
        }\r
 \r
        // ///////////////////////////\r
@@ -235,8 +206,13 @@ public class AkbTemplatesTreeView extends ViewPart implements Refreshable {
                                        .getSelection();\r
 \r
                        Node selected = (Node) selection.getFirstElement();\r
+                       Node currEnv = null;\r
 \r
                        boolean hasSelection = selected != null;\r
+\r
+                       if (hasSelection)\r
+                               currEnv = AkbJcrUtils.getCurrentTemplate(selected);\r
+\r
                        boolean isTemplate = hasSelection ? selected\r
                                        .isNodeType(AkbTypes.AKB_ENV_TEMPLATE) : false;\r
                        boolean isParentItemsFolder = hasSelection ? selected\r
@@ -247,9 +223,12 @@ public class AkbTemplatesTreeView extends ViewPart implements Refreshable {
 \r
                        // Add Connector Alias\r
                        Map<String, String> params = new HashMap<String, String>();\r
-                       if (hasSelection && isTemplate)\r
+                       if (hasSelection && isTemplate) {\r
                                params.put(OpenAkbNodeEditor.PARAM_PARENT_NODE_JCR_ID,\r
                                                selected.getIdentifier());\r
+                               params.put(OpenAkbNodeEditor.PARAM_CURR_ENV_JCR_ID,\r
+                                               currEnv.getIdentifier());\r
+                       }\r
                        params.put(OpenAkbNodeEditor.PARAM_NODE_TYPE,\r
                                        AkbTypes.AKB_CONNECTOR_ALIAS);\r
 \r
@@ -259,19 +238,26 @@ public class AkbTemplatesTreeView extends ViewPart implements Refreshable {
 \r
                        // Item Submenu\r
                        params = new HashMap<String, String>();\r
-                       if (hasSelection)\r
+                       if (hasSelection) {\r
                                params.put(OpenAkbNodeEditor.PARAM_PARENT_NODE_JCR_ID,\r
                                                selected.getIdentifier());\r
+                               params.put(OpenAkbNodeEditor.PARAM_CURR_ENV_JCR_ID,\r
+                                               currEnv.getIdentifier());\r
+                       }\r
                        refreshItemsSubmenu(menuManager, window, "menu.itemsSubmenu",\r
                                        "Add Item", isParentItemsFolder || isTemplate, params);\r
 \r
                        // Add Item Folder\r
                        params = new HashMap<String, String>();\r
-                       if (hasSelection)\r
+                       if (hasSelection) {\r
                                params.put(OpenAkbNodeEditor.PARAM_PARENT_NODE_JCR_ID,\r
                                                selected.getIdentifier());\r
+                               params.put(OpenAkbNodeEditor.PARAM_CURR_ENV_JCR_ID,\r
+                                               currEnv.getIdentifier());\r
+                       }\r
                        params.put(OpenAkbNodeEditor.PARAM_NODE_TYPE,\r
                                        AkbTypes.AKB_ITEM_FOLDER);\r
+\r
                        AkbUiUtils.refreshParameterizedCommand(menuManager, window,\r
                                        "cmd.addItemFolder", OpenAkbNodeEditor.ID,\r
                                        "Add item folder", null, isParentItemsFolder || isTemplate,\r
@@ -475,7 +461,7 @@ public class AkbTemplatesTreeView extends ViewPart implements Refreshable {
 \r
                        Object[] visibles = envTreeViewer.getExpandedElements();\r
                        if (fullRefresh)\r
-                               envTreeViewer.setInput(initializeResultTree());\r
+                               envTreeViewer.setInput(initializeTree());\r
                        else\r
                                envTreeViewer.refresh();\r
 \r
@@ -490,9 +476,16 @@ public class AkbTemplatesTreeView extends ViewPart implements Refreshable {
                        try {\r
                                if (obj instanceof Node) {\r
                                        Node node = (Node) obj;\r
-                                       CommandUtils.callCommand(OpenAkbNodeEditor.ID,\r
-                                                       OpenAkbNodeEditor.PARAM_NODE_JCR_ID,\r
+                                       Node currEnv = AkbJcrUtils.getCurrentTemplate(node);\r
+\r
+                                       // Add Connector Alias\r
+                                       Map<String, String> params = new HashMap<String, String>();\r
+                                       params.put(OpenAkbNodeEditor.PARAM_NODE_JCR_ID,\r
                                                        node.getIdentifier());\r
+                                       params.put(OpenAkbNodeEditor.PARAM_CURR_ENV_JCR_ID,\r
+                                                       currEnv.getIdentifier());\r
+\r
+                                       CommandUtils.callCommand(OpenAkbNodeEditor.ID, params);\r
                                }\r
                        } catch (RepositoryException e) {\r
                                throw new AkbException("Cannot open " + obj, e);\r
@@ -514,4 +507,9 @@ public class AkbTemplatesTreeView extends ViewPart implements Refreshable {
                        throw new AkbException("unable to log in for " + ID + " view");\r
                }\r
        }\r
+\r
+       public void setAkbService(AkbService akbService) {\r
+               this.akbService = akbService;\r
+\r
+       }\r
 }
\ No newline at end of file