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();
+		}
+	}
+}