X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=server%2Forg.argeo.slc.ria%2Fsrc%2Fargeo-ria-lib%2Fslc%2Fclass%2Forg%2Fargeo%2Fslc%2Fria%2FFlowsSelectorView.js;h=a6d7c78d66e2d59ada345a581cd2088d5fbdb9dd;hb=425c2ead18e43492446a8e8ecb05b975fdbc0bf0;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..a6d7c78d6 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); @@ -28,6 +29,10 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", { instanceLabel : { init : "" }, + executeAfterAdd : { + init : false, + check : "Boolean" + }, /** * Commands definition, see * {@link org.argeo.ria.event.CommandsManager#definitions} @@ -64,6 +69,11 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", { return; } } + if(this.getExecuteAfterAdd() && batchView.getCommands()){ + batchView.setForceClearPreference(true); + batchView.getCommands()["submitform"].command.execute(); + } + this.setExecuteAfterAdd(false); }, selectionChange : function(viewId, selection) { if (viewId != "form:tree") @@ -91,6 +101,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 +213,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 +229,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 +259,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 +325,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 +333,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 +526,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 +578,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(); @@ -507,6 +590,15 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", { } }, this); + this.tree.addListener("dblclick", function(e){ + var sel = this.tree.getSortedSelection(); + if(sel && sel.length!=1) return; + var origin = sel[0]; + if(origin.classname == "qx.ui.tree.TreeFile"){ + this.setExecuteAfterAdd(true); + this.getCommands()["addtobatch"].command.execute(); + } + }, this); this.add(this.tree); },