Mercurial > hg > jslab
view src/samer/core_/util/shell/AgentManager.java @ 8:5e3cbbf173aa tip
Reorganise some more
author | samer |
---|---|
date | Fri, 05 Apr 2019 22:41:58 +0100 |
parents | bf79fb79ee13 |
children |
line wrap: on
line source
/* * AgentManager.java * * Copyright (c) 2000, Samer Abdallah, King's College London. * All rights reserved. * * This software is provided AS iS and WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. */ package samer.core.util.shell; import samer.core.*; import java.awt.event.*; import java.util.*; public class AgentManager implements Agent, ActionListener { private Vector agents=new Vector(); //private boolean exitOnReturn=false; public AgentManager() { Shell.put("AgentManager",this); } public ActionListener getBroadcaster() { return this; } public void actionPerformed(ActionEvent e) { dispatch(e.getActionCommand(),Shell.env()); } public void getCommands(Agent.Registry r) { r.add("help").add("agents"); } public void execute(String cmd, Environment env) throws Exception { if (cmd.equals("agents")) { Shell.print("registered agents:"); Enumeration i=agents.elements(); while(i.hasMoreElements()) { Shell.print(i.nextElement().toString()); } } else if (cmd.equals("help")) help(); } //public void exitOnReturn() { Shell.trace("*** exit on return"); exitOnReturn=true; } public void registerAgent(Agent a) { Shell.trace("registering agent: "+a); agents.addElement(a); } public void deregisterAgent(Agent a) { Shell.trace("deregistering agent: "+a); agents.removeElement(a); } public void dispatch(String cmd, Environment env) { Enumeration i=agents.elements(); while(i.hasMoreElements()) { Agent agent=(Agent)i.nextElement(); try { agent.execute(cmd,env); } catch (Exception ex) { Shell.print("*** agent error in "+agent); Shell.print("*** exception: "+ex); ex.printStackTrace(); } } //if (exitOnReturn) System.exit(0); } public void help() { Shell.print("____________________________________"); Shell.print("Registered Agents and their commands"); Enumeration i=agents.elements(); Agent.Registry printer = new Agent.Registry() { public void setTarget(Agent a) {} public Registry add( String name) { Shell.print("\t"+name); return this; } public Registry add( String name, boolean initialValue) { Shell.print("\t"+name+" (boolean)"); return this; } public void group() { Shell.print("............"); } }; while(i.hasMoreElements()) { Agent a=(Agent)(i.nextElement()); Shell.print(""); Shell.print("---- "+a.getClass().getName()); a.getCommands(printer); } } }