X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=server%2Forg.argeo.slc.ria%2Fsrc%2Fargeo-ria-lib%2Fslc%2Fclass%2Forg%2Fargeo%2Fslc%2Fria%2FFlowsSelectorView.js;h=4d3494f50ebc69bba5285d8a9e3c825cfc15d92e;hb=f59509dd7a5d4aed1a1b4f8fae72883b3911b16b;hp=d7d6eafeca323a8aa9d4d13e0429d23d8429a4c3;hpb=0d3e11ceb470772cd6bc7218d23bc6985ad6f56b;p=gpl%2Fargeo-slc.git diff --git a/server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/FlowsSelectorView.js b/server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/FlowsSelectorView.js index d7d6eafec..4d3494f50 100644 --- a/server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/FlowsSelectorView.js +++ b/server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/FlowsSelectorView.js @@ -5,6 +5,7 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", { extend : qx.ui.container.Composite, implement : [org.argeo.ria.components.IView], + include : [org.argeo.ria.session.MPrefHolder], construct : function() { this.base(arguments); @@ -91,6 +92,36 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", { }, command : null }, + "preferredHost" : { + label : "Toggle 'Preferred Host'", + icon : "ria/bookmark.png", + shortcut : null, + enabled : true, + menu : null, + toolbar : null, + callback : function(e) { + if (this.tree.isSelectionEmpty()) { + return; + } + var selection = this.tree.getSelection(); + if(selection.length != 1) return; + var agentNode = selection[0]; + if(!agentNode.getUserData("agentHost")) return; + this.togglePreferredHost(agentNode); + }, + selectionChange : function(viewId, selection) { + if (viewId != "form:tree") + return; + if (!selection || selection.length != 1) + return; + var item = selection[0]; + this.setEnabled(false); + if(item.getUserData("agentHost")){ + this.setEnabled(true); + } + }, + command : null + }, "reloadfull" : { label : "Reload Agents", icon : "org.argeo.slc.ria/view-refresh.png", @@ -173,6 +204,14 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", { }, statics : { + + riaPreferences : { + "flowSelector.preferred.hosts" : { + label : "Preferred Hosts (Execution View)", + type : "string" + } + }, + /** * Static loader for the "agent" level (first level) * @@ -181,6 +220,10 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", { */ agentLoader : function(folder) { + var preferredHosts = org.argeo.ria.session.MPrefHolder.loadRiaPreferenceValue("flowSelector.preferred.hosts"); + if(preferredHosts && preferredHosts!=""){ + preferredHosts = preferredHosts.split(","); + } var req = org.argeo.slc.ria.SlcApi.getListAgentsService("agents"); var agents = {}; if(folder.getState() == "loaded" && folder.getUserData("agentsMap")){ @@ -207,9 +250,15 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", { host, modulesLoader, "Loading Modules...", folder.getDragData()); org.argeo.slc.ria.FlowsSelectorView.attachToolTip(agentFolder, uuid); agentFolder.setPersistentTreeID(folder.getPersistentTreeID()+"_"+uuid); + agentFolder.setUserData("agentHost", host); // Used by bookmark system agentFolder.setUserData("agentUuid", uuid); - agentFolder.setIcon("org.argeo.slc.ria/computer.png"); - folder.add(agentFolder); + if(preferredHosts && preferredHosts instanceof Array && qx.lang.Array.contains(preferredHosts, host)){ + folder.addAtBegin(agentFolder); + agentFolder.setIcon("org.argeo.slc.ria/computer_bookmarked.png"); + }else{ + folder.add(agentFolder); + agentFolder.setIcon("org.argeo.slc.ria/computer.png"); + } } if(newAgents){ // Make sure some agents should not be removed @@ -267,7 +316,7 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", { for (var i = 0; i < mods[key].length; i++) { var module = mods[key][i]; var versionFolder = new org.argeo.ria.components.DynamicTreeFolder( - module.getDescription(), flowLoader, + module.getLabel(), flowLoader, "Loading Flows", folder.getDragData()); versionFolder.setUserData("moduleData", { name : key, @@ -275,7 +324,8 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", { }); versionFolder.setIcon("org.argeo.slc.ria/archive.png"); versionFolder.setUserData("agentUuid", agentId); - org.argeo.slc.ria.FlowsSelectorView.attachToolTip(versionFolder, key + ' (' + module.getVersion() + ')'); + var sep = (module.getDescription()!=""?" - ":""); + org.argeo.slc.ria.FlowsSelectorView.attachToolTip(versionFolder, key + ' (' + module.getVersion() + ')'+sep+module.getDescription()); // Warning, we must add it AFTER setting the user data, // because of the persistent loading mechanism. folder.add(versionFolder); @@ -467,6 +517,30 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", { this.remoteNotifier.stopPolling(); }, + /** + * + * @param agentNode {qx.ui.tree.AbstractTreeItem} + */ + togglePreferredHost : function(agentNode){ + var hostName = agentNode.getUserData("agentHost"); + var pref = this.getRiaPreferenceValue("flowSelector.preferred.hosts"); + var prefArray = []; + if(pref){ + prefArray = pref.split(","); + } + if(qx.lang.Array.contains(prefArray, hostName)){ + qx.lang.Array.remove(prefArray, hostName); + agentNode.setIcon("org.argeo.slc.ria/computer.png"); + }else{ + prefArray.push(hostName); + agentNode.setIcon("org.argeo.slc.ria/computer_bookmarked.png"); + var parent = agentNode.getParent(); + parent.remove(agentNode); + parent.addAtBegin(agentNode); + } + this.setRiaPreferenceValue("flowSelector.preferred.hosts", prefArray.join(",")); + }, + /** * Creates the main applet layout. */ @@ -495,7 +569,7 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", { this.rootNode.setOpen(true); this.tree.setContextMenu(org.argeo.ria.event.CommandsManager .getInstance().createMenuFromIds(["addtobatch", - "reloadtree"])); + "reloadtree", "preferredHost"])); this.tree.addListener("changeSelection", function(e) { var viewSelection = this.getViewSelection();