Mercurial > hg > jslab
diff src/samer/core_/util/AgentAdapter.java @ 0:bf79fb79ee13
Initial Mercurial check in.
author | samer |
---|---|
date | Tue, 17 Jan 2012 17:50:20 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/samer/core_/util/AgentAdapter.java Tue Jan 17 17:50:20 2012 +0000 @@ -0,0 +1,63 @@ +/* + * AgentAdapter.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; +import samer.core.*; +import java.awt.*; +import java.awt.event.*; + +/** + This converts action events and item state + events (eg from buttons, menus, or check box + items) into Agent commands. + */ + +public class AgentAdapter implements ActionListener, ItemListener +{ + private Agent agent; + + public AgentAdapter(Agent a) { agent=a; } + + public Agent getAgent() { return agent; } + + public void actionPerformed(ActionEvent e) { + try { agent.execute(e.getActionCommand(), new UserEnvironment(Shell.env())); } + catch (Exception ex) { + Shell.print("*** error in agent action: "+agent); + Shell.print("*** exception: "+ex); + ex.printStackTrace(); + } + } + + /** + This sends provides a boolean argument to the command + The value comes from the new state of the item. + */ + + public void itemStateChanged(ItemEvent e) + { + Object obj=e.getItem(); + String cmd; + + if (obj instanceof String) cmd = (String)obj; + else if (obj instanceof Component) cmd = ((Component)obj).getName(); + else return; + if (cmd==null) return; + + boolean state = (e.getStateChange()==ItemEvent.SELECTED); + try { agent.execute(cmd,new UserEnvironment(Shell.env(),state)); } + catch (Exception ex) { + Shell.print("*** error in agent action: "+agent); + Shell.print("*** exception: "+ex); + ex.printStackTrace(); + } + } +}