Add order on trees.
authorBruno Sinou <bsinou@argeo.org>
Sat, 16 Nov 2013 11:12:48 +0000 (11:12 +0000)
committerBruno Sinou <bsinou@argeo.org>
Sat, 16 Nov 2013 11:12:48 +0000 (11:12 +0000)
Add an image for active env

git-svn-id: https://svn.argeo.org/slc/trunk@6619 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

plugins/org.argeo.slc.akb.ui/plugin.xml
plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/AkbImages.java
plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/providers/AkbTreeLabelProvider.java
plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/utils/AkbItemsComparator.java [new file with mode: 0644]
plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/views/AkbTemplatesTreeView.java
plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/views/EnvironmentsTreeView.java
plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/wizards/CreateEnvInstanceWizard.java

index a6a9a741fdb3b06273766ae0893fc06d0e937283..15465cb26da92041ff44827c939b498c725a7252 100644 (file)
                        class="org.argeo.eclipse.spring.SpringExtensionFactory"
                        icon="icons/treeView.png"
                        id="org.argeo.slc.akb.ui.akbTemplatesTreeView"
-                       name="Akb Templates"
+                       name="AKB Templates"
                        restorable="true">
                </view>
                <view
                        class="org.argeo.eclipse.spring.SpringExtensionFactory"
                        icon="icons/treeView.png"
                        id="org.argeo.slc.akb.ui.environmentsTreeView"
-                       name="Akb Environments"
+                       name="AKB Environments"
                        restorable="true">
                </view>
        </extension>
index 6007604467975e7fae854884322ff30b529c143d..e2cefacd75516d91c32609cf9ff5c160a37b895e 100644 (file)
@@ -11,11 +11,15 @@ public class AkbImages {
 
        public final static Image TEMPLATE = AkbUiPlugin.getImageDescriptor(
                        "icons/template.gif").createImage();
+       public final static Image ACTIVE_ENV = AkbUiPlugin.getImageDescriptor(
+                       "icons/environment.png").createImage();
+       
        public final static Image CONNECTOR_FOLDER = AkbUiPlugin
                        .getImageDescriptor("icons/connectors.gif").createImage();
 
        public final static Image ITEM_FOLDER = AkbUiPlugin.getImageDescriptor(
                        "icons/itemFolder.gif").createImage();
+       
        public final static Image JDBC_CONNECTOR = AkbUiPlugin.getImageDescriptor(
                        "icons/jdbcConnector.gif").createImage();
        public final static Image JDBC_QUERY = AkbUiPlugin.getImageDescriptor(
@@ -36,4 +40,4 @@ public class AkbImages {
                else
                        return null;
        }
-}
+}
\ No newline at end of file
index 9489afd61c5e7dde89c812120bd8aad2297fd33d..3c6b43fac9040bc351074601c0136b709dfc1595 100644 (file)
@@ -30,6 +30,9 @@ public class AkbTreeLabelProvider extends LabelProvider {
                                else
                                        return node.getName();
                        }
+                       if (element instanceof String)
+                               return (String) element;
+
                } catch (RepositoryException e) {
                        throw new AkbException("Unexpected error while getting "
                                        + "Custom node label", e);
@@ -58,6 +61,8 @@ public class AkbTreeLabelProvider extends LabelProvider {
                                        return AkbImages.JDBC_QUERY;
                                else if (node.isNodeType(AkbTypes.AKB_ENV_TEMPLATE))
                                        return AkbImages.TEMPLATE;
+                               else if (node.isNodeType(AkbTypes.AKB_ENV))
+                                       return AkbImages.ACTIVE_ENV;
                                else if (node.isNodeType(AkbTypes.AKB_CONNECTOR_FOLDER))
                                        return AkbImages.CONNECTOR_FOLDER;
                        }
diff --git a/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/utils/AkbItemsComparator.java b/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/utils/AkbItemsComparator.java
new file mode 100644 (file)
index 0000000..bb45ff4
--- /dev/null
@@ -0,0 +1,66 @@
+package org.argeo.slc.akb.ui.utils;
+
+import javax.jcr.Node;
+import javax.jcr.Property;
+import javax.jcr.RepositoryException;
+
+import org.argeo.slc.akb.AkbException;
+import org.argeo.slc.akb.AkbTypes;
+import org.argeo.slc.akb.ui.providers.ActiveTreeItem;
+import org.argeo.slc.akb.utils.AkbJcrUtils;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerComparator;
+
+/** Enable specific sorting of the ResultTreeView */
+public class AkbItemsComparator extends ViewerComparator {
+
+       @Override
+       public int category(Object element) {
+               Node currNode = null;
+               if (element instanceof ActiveTreeItem)
+                       currNode = ((ActiveTreeItem) element).getNode();
+               else if (element instanceof Node)
+                       currNode = (Node) element;
+               else if (element instanceof String)
+                       // TODO why do we have strings
+                       return 10;
+               else
+                       throw new AkbException("Unsupported tree item element type "
+                                       + element);
+
+               try {
+                       if (currNode.isNodeType(AkbTypes.AKB_ITEM_FOLDER))
+                               // folder always first
+                               return 5;
+               } catch (RepositoryException e) {
+                       throw new AkbException("Cannot retrieve category for item", e);
+               }
+               return 10;
+       }
+
+       @Override
+       public int compare(Viewer viewer, Object e1, Object e2) {
+               int cat1 = category(e1);
+               int cat2 = category(e2);
+
+               if (cat1 != cat2) {
+                       return cat1 - cat2;
+               }
+
+               // TODO we only check on one item, types are not mixed for the time
+               // being
+               Node an = null;
+               Node bn = null;
+               if (e1 instanceof ActiveTreeItem) {
+                       an = ((ActiveTreeItem) e1).getNode();
+                       bn = ((ActiveTreeItem) e2).getNode();
+               } else if (e1 instanceof Node) {
+                       an = ((Node) e1);
+                       bn = ((Node) e2);
+               } else
+                       throw new AkbException("Unsupported tree item element type " + e1);
+
+               return super.compare(viewer, AkbJcrUtils.get(an, Property.JCR_TITLE),
+                               AkbJcrUtils.get(bn, Property.JCR_TITLE));
+       }
+}
\ No newline at end of file
index f12a418b584a0972354f49194afd9582a848ba4a..7028663b54e9aa0ae95585442372df4da5f0491a 100644 (file)
@@ -42,6 +42,7 @@ 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.utils.AkbJcrUtils;\r
 import org.eclipse.jface.action.IContributionItem;\r
@@ -101,41 +102,9 @@ public class AkbTemplatesTreeView extends ViewPart implements Refreshable {
 \r
                envTreeViewer = createTreeViewer(parent);\r
                envTreeViewer.setInput(initializeTree());\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.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 createTreeViewer(Composite parent) {\r
                parent.setLayout(AkbUiUtils.gridLayoutNoBorder());\r
index 10812b561d4ab630daf838a67cc3f29af0fb99b3..63e398280cd971015f871f642e6d23ef79e96f75 100644 (file)
@@ -22,6 +22,7 @@ import org.argeo.slc.akb.ui.commands.OpenAkbNodeEditor;
 import org.argeo.slc.akb.ui.providers.ActiveEnvsTreeContentProvider;\r
 import org.argeo.slc.akb.ui.providers.ActiveTreeItem;\r
 import org.argeo.slc.akb.ui.providers.AkbTreeLabelProvider;\r
+import org.argeo.slc.akb.ui.utils.AkbItemsComparator;\r
 import org.argeo.slc.akb.ui.utils.Refreshable;\r
 import org.eclipse.jface.action.IMenuListener;\r
 import org.eclipse.jface.action.IMenuManager;\r
@@ -67,6 +68,7 @@ public class EnvironmentsTreeView extends ViewPart implements Refreshable {
                initialize();\r
                envTreeViewer = createTreeViewer(parent);\r
                envTreeViewer.setInput(activeEnvsParentNode);\r
+               envTreeViewer.setComparator(new AkbItemsComparator());\r
        }\r
 \r
        // The main tree viewer\r
index fc8ee3fedcbf445ba9c6455ac2f0ced3b6b5e676..1b842661777a268cf17d83aab54ac55f7d4d2bd2 100644 (file)
@@ -102,7 +102,7 @@ public class CreateEnvInstanceWizard extends Wizard {
                        valueTxt.addModifyListener(new ModifyListener() {
                                @Override
                                public void modifyText(ModifyEvent e) {
-                                       //TODO implement here name validation.
+                                       // TODO implement here name validation.
                                        getWizard().getContainer().updateButtons();
                                }
                        });
@@ -126,6 +126,7 @@ public class CreateEnvInstanceWizard extends Wizard {
 
                        useDefaultConnChk = new Button(container, SWT.CHECK);
                        useDefaultConnChk.setText("Import default connectors");
+                       useDefaultConnChk.setSelection(true);
 
                        setControl(container);
                }