Implement preferred host via preferences
authorCharles du Jeu <charles.dujeu@gmail.com>
Fri, 3 Jul 2009 11:38:26 +0000 (11:38 +0000)
committerCharles du Jeu <charles.dujeu@gmail.com>
Fri, 3 Jul 2009 11:38:26 +0000 (11:38 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@2681 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/FlowsSelectorView.js
server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/BatchEntrySpec.js
server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/monitor/FlowsSelectorView.js
server/org.argeo.slc.ria/src/argeo-ria-lib/slc/resource/org.argeo.slc.ria/computer_bookmarked.png [new file with mode: 0644]

index d7d6eafeca323a8aa9d4d13e0429d23d8429a4c3..c9b3b108ba44786a7fa1a85356935aa30fbb393b 100644 (file)
@@ -5,6 +5,7 @@
 qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", {\r
        extend : qx.ui.container.Composite,\r
        implement : [org.argeo.ria.components.IView],\r
+       include : [org.argeo.ria.session.MPrefHolder],\r
 \r
        construct : function() {\r
                this.base(arguments);\r
@@ -91,6 +92,36 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", {
                                        },\r
                                        command : null\r
                                },\r
+                               "preferredHost" : {\r
+                                       label : "Toggle 'Preferred Host'",\r
+                                       icon : "ria/bookmark.png",\r
+                                       shortcut : null,\r
+                                       enabled : true,\r
+                                       menu : null,\r
+                                       toolbar : null,\r
+                                       callback : function(e) {\r
+                                               if (this.tree.isSelectionEmpty()) {\r
+                                                       return;\r
+                                               }\r
+                                               var selection = this.tree.getSelection();\r
+                                               if(selection.length != 1) return;\r
+                                               var agentNode = selection[0];\r
+                                               if(!agentNode.getUserData("agentHost")) return;\r
+                                               this.togglePreferredHost(agentNode);\r
+                                       },\r
+                                       selectionChange : function(viewId, selection) {\r
+                                               if (viewId != "form:tree")\r
+                                                       return;\r
+                                               if (!selection || selection.length != 1)\r
+                                                       return;\r
+                                               var item = selection[0];\r
+                                               this.setEnabled(false);\r
+                                               if(item.getUserData("agentHost")){\r
+                                                       this.setEnabled(true);\r
+                                               }\r
+                                       },\r
+                                       command : null\r
+                               },\r
                                "reloadfull" : {\r
                                        label : "Reload Agents",\r
                                        icon : "org.argeo.slc.ria/view-refresh.png",\r
@@ -173,6 +204,14 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", {
        },\r
 \r
        statics : {             \r
+               \r
+               riaPreferences : {\r
+                       "flowSelector.preferred.hosts" : {\r
+                               label : "Preferred Hosts (Execution View)",\r
+                               type  : "string"\r
+                       }\r
+               },\r
+               \r
                /**\r
                 * Static loader for the "agent" level (first level)\r
                 * \r
@@ -181,6 +220,10 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", {
                 */\r
                agentLoader : function(folder) {\r
 \r
+                       var preferredHosts = org.argeo.ria.session.MPrefHolder.loadRiaPreferenceValue("flowSelector.preferred.hosts");\r
+                       if(preferredHosts && preferredHosts!=""){\r
+                               preferredHosts = preferredHosts.split(",");\r
+                       }\r
                        var req = org.argeo.slc.ria.SlcApi.getListAgentsService("agents");                      \r
                        var agents = {};\r
                        if(folder.getState() == "loaded" && folder.getUserData("agentsMap")){\r
@@ -207,9 +250,17 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", {
                                                        host, modulesLoader, "Loading Modules...", folder.getDragData());\r
                                        org.argeo.slc.ria.FlowsSelectorView.attachToolTip(agentFolder, uuid);\r
                                        agentFolder.setPersistentTreeID(folder.getPersistentTreeID()+"_"+uuid);\r
+                                       agentFolder.setUserData("agentHost", host); // Used by bookmark system\r
                                        agentFolder.setUserData("agentUuid", uuid);\r
-                                       agentFolder.setIcon("org.argeo.slc.ria/computer.png");\r
-                                       folder.add(agentFolder);\r
+                                       if(preferredHosts && preferredHosts instanceof Array && qx.lang.Array.contains(preferredHosts, uuid)){\r
+                                               folder.addAtBegin(agentFolder);\r
+                                               agentFolder.setIcon("org.argeo.slc.ria/computer_bookmarked.png");\r
+                                               agentFolder.setUserData("preferredHost", true);\r
+                                       }else{\r
+                                               folder.add(agentFolder);\r
+                                               agentFolder.setIcon("org.argeo.slc.ria/computer.png");\r
+                                               agentFolder.setUserData("preferredHost", false);\r
+                                       }\r
                                }\r
                                if(newAgents){\r
                                        // Make sure some agents should not be removed\r
@@ -467,6 +518,32 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", {
                        this.remoteNotifier.stopPolling();\r
                },\r
 \r
+               /**\r
+                * \r
+                * @param agentNode {qx.ui.tree.AbstractTreeItem}\r
+                */\r
+               togglePreferredHost : function(agentNode){\r
+                       var hostName = agentNode.getUserData("agentUuid");\r
+                       var pref = this.getRiaPreferenceValue("flowSelector.preferred.hosts");\r
+                       var prefArray = [];\r
+                       if(pref){\r
+                               prefArray = pref.split(",");\r
+                       }\r
+                       if(qx.lang.Array.contains(prefArray, hostName)){\r
+                               qx.lang.Array.remove(prefArray, hostName);\r
+                               agentNode.setIcon("org.argeo.slc.ria/computer.png");\r
+                               agentFolder.setUserData("preferredHost", false);\r
+                       }else{\r
+                               prefArray.push(hostName);\r
+                               agentNode.setIcon("org.argeo.slc.ria/computer_bookmarked.png");\r
+                               agentFolder.setUserData("preferredHost", true);\r
+                               var parent = agentNode.getParent();\r
+                               parent.remove(agentNode);\r
+                               parent.addAtBegin(agentNode);\r
+                       }\r
+                       this.setRiaPreferenceValue("flowSelector.preferred.hosts", prefArray.join(","));\r
+               },\r
+               \r
                /**\r
                 * Creates the main applet layout.\r
                 */\r
@@ -495,7 +572,7 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", {
                        this.rootNode.setOpen(true);\r
                        this.tree.setContextMenu(org.argeo.ria.event.CommandsManager\r
                                        .getInstance().createMenuFromIds(["addtobatch",\r
-                                                       "reloadtree"]));\r
+                                                       "reloadtree", "preferredHost"]));\r
 \r
                        this.tree.addListener("changeSelection", function(e) {\r
                                var viewSelection = this.getViewSelection();\r
index 91231a8b89e558d7ed5e749a9da01d8369a2d551..b21749b105b0731eea65e226d75fa1a4aa551ce7 100644 (file)
@@ -87,8 +87,7 @@ qx.Class.define("org.argeo.slc.ria.execution.BatchEntrySpec", {
                                }\r
                                instanceValues[key] = instValue;\r
                        }\r
-                       this.setValues(instanceValues);\r
-                       this.debug(instanceValues);\r
+                       this.setValues(instanceValues);                 \r
                }\r
        }\r
 });
\ No newline at end of file
index 46cf61e15a0572ece1fa16a049d288791bea545e..b049c2ee0fe7e5196b1bcbea0d74812309521a8a 100644 (file)
@@ -88,6 +88,14 @@ qx.Class.define("org.argeo.slc.ria.monitor.FlowsSelectorView", {
        },\r
 \r
        statics : {\r
+               \r
+               riaPreferences : {\r
+                       "flowSelector.monitor.preferred.hosts" : {\r
+                               label : "Preferred Hosts (Monitoring View)",\r
+                               type  : "string"\r
+                       }\r
+               },\r
+               \r
                /**\r
                 * Static loader for the "agent" level (first level)\r
                 * \r
diff --git a/server/org.argeo.slc.ria/src/argeo-ria-lib/slc/resource/org.argeo.slc.ria/computer_bookmarked.png b/server/org.argeo.slc.ria/src/argeo-ria-lib/slc/resource/org.argeo.slc.ria/computer_bookmarked.png
new file mode 100644 (file)
index 0000000..9441678
Binary files /dev/null and b/server/org.argeo.slc.ria/src/argeo-ria-lib/slc/resource/org.argeo.slc.ria/computer_bookmarked.png differ