Resource manager class


import java.awt.*;
import java.awt.event.*;

/* This class provides an interface to the client who can request a FileManager
   object to interact with. The resource manager determines which decorators
   should be applied to the FileManager.
*/
public class Resources extends Frame implements ActionListener {

  private MenuItem addlogger, addusage;         //two decorator objects which                    
								//can be applied

  private Component server = new FileManager();  //server object

  public Resources() {
    super("Resource Manager");
    MenuBar mbar;
    Menu action;
    TextArea msg = new TextArea("This window allows \n" +   //user information
                                "management to add \n" +
				"decorator objects to \n" +
				"the server before \n"+
				"passing it to the \n" +
				"client.");
    mbar = new MenuBar();
    setMenuBar(mbar);
    enableEvents(WindowEvent.WINDOW_CLOSING);
    setBackground(Color.white);
    action = new Menu("Action");
    mbar.add(action);
    addlogger = new MenuItem("Add logger");
    addlogger.addActionListener(this);                    
    action.add(addlogger);
    addusage = new MenuItem("Add usage monitor");
    addusage.addActionListener(this);
    action.add(addusage);
    add(msg);
    setSize(180,180);
    setVisible(true);
  } //end Resources

  public void actionPerformed(ActionEvent ae){
    MenuItem source = (MenuItem)ae.getSource();
    if (source == addlogger)
      server = new Logger(server);       //add an event logger decorator
    else
      server = new UsageMonitor(server); //add a usage monitor decorator 
  } //end actionPerformed()

  public void processWindowEvent(WindowEvent we){
    if (we.getID() == WindowEvent.WINDOW_CLOSING){
      dispose();
      System.exit(0);
    } //end if
    super.processWindowEvent(we);
  } //end processWindowEvent()

  public Component getServer() {
    return server;
  } //end getServer() 
  
} //end class Resources