package framework; import java.awt.event.*; import java.awt.*; import javax.swing.*; /** Base class for many controllers.

The controller component receives commands from the GUI and executes them. Programmersneed to seek a balance between a centralized controller and controllers for each use case.

Note: This controller only works for ActionEvent

Example:

   public class MyController extends Controller {

      public MyController(AppWindow aw) {
         super(aw);
   		 // etc.
   	  }

   	  public void actionPerformed(ActionEvent e) {
   	     try {
   			String arg = e.getActionCommand();
            if (arg.equals("Command 1")) handleCommand1();
            else if (arg.equals("Command 2")) handleCommand2();
            else if (arg.equals("Coimmand 3")) handleCommand3();
            // etc.
            } catch (Exception x) {
               FrameworkUtils.error("Exception thrown: " + x);
            }
       }
       private void handleCommand1() {
	      MyModel m = (MyModel)appWindow.getModel();
	      // update m
	   }
       private void handleCommand2() { ... }
       private void handleCommand3() { ... }
       // etc.
   }
   
*/ public abstract class Controller implements ActionListener { /** The AppWindow that this controller is attached to. From this we can get the model. */ protected AppWindow appWindow; /** Initializes appWindow. @param aw the appWindow that creates this controller. */ public Controller(AppWindow aw) { appWindow = aw; } }