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