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
},\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
},\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
*/\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
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
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
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