Java tutorial
/******************************************************************************* * GUIManagerQuery - A Graphical User Interface built atop the ManagerQuery * class allowing the user to query the installed version of the JMF as to its * support in termsof different players, processors, and protocols. * * @author Spike Barlow ******************************************************************************/ import java.awt.*; import java.awt.event.*; import javax.media.*; import java.util.*; public class GUIManagerQuery extends Frame implements ActionListener { /** The version of the JMF. */ protected Label versionLabel; /** Button to print JMF's hints. */ protected Button hintsButton; /** Button to print list of players. */ protected Button playersButton; /** Button to print list of processors. */ protected Button processorsButton; /** Button to print list of data sources. */ protected Button sourcesButton; /** TextField in which user can enter protocols or content types. */ protected TextField contentsField; /** Area in which the results are displayed. */ protected TextArea results; /*************************************************************************** * Construct the GUIManagerQuery object, constructing the various components * and laying them out on the screen. **************************************************************************/ public GUIManagerQuery() { super("GUIManagerQuery"); setLayout(new BorderLayout()); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); versionLabel = new Label("JMF v" + Manager.getVersion()); add(versionLabel, "North"); Panel lower = new Panel(); lower.add(new Label("Content/Protocol")); contentsField = new TextField(32); lower.add(contentsField); add(lower, "South"); results = new TextArea(20, 80); results.setEditable(false); add(results, "Center"); Panel controls = new Panel(); controls.setLayout(new GridBagLayout()); GridBagConstraints gbc = new GridBagConstraints(); hintsButton = new Button("Hints"); gbc.gridx = 0; gbc.gridy = 0; controls.add(hintsButton, gbc); hintsButton.addActionListener(this); playersButton = new Button("Players"); gbc.gridy = 1; controls.add(playersButton, gbc); playersButton.addActionListener(this); processorsButton = new Button("Processors"); gbc.gridy = 2; controls.add(processorsButton, gbc); processorsButton.addActionListener(this); sourcesButton = new Button("DataSources"); gbc.gridy = 3; controls.add(sourcesButton, gbc); sourcesButton.addActionListener(this); add(controls, "East"); } /*************************************************************************** * Respond to button presses from the user indicating the desire for * information such as a list of players. **************************************************************************/ public void actionPerformed(ActionEvent e) { int type; String[] cons; //////////////////////////////////////////////////////////////// // Handle hints - simplest case [no need to check content types] //////////////////////////////////////////////////////////////// if (e.getSource() == hintsButton) { results.setText(ManagerQuery.getHints()); } ///////////////////////////////////////////////////////////////////// // Players, processors, or datasources. Need to check the contents // field and if it has text in there then use that as a qualifier // in the search for classes. However if empty then generate a // complete list of all classes of the required type. User may // enter multiple content types either comma or space separated, // hence use of StringTokenizer. //////////////////////////////////////////////////////////////////// else { if (e.getSource() == playersButton) type = ManagerQuery.HANDLERS; else if (e.getSource() == processorsButton) type = ManagerQuery.PROCESSORS; else type = ManagerQuery.DATASOURCES; String contents = contentsField.getText(); if (contents == null || contents.length() == 0) cons = null; else { StringTokenizer tokenizer = new StringTokenizer(contents, " ,\t;"); cons = new String[tokenizer.countTokens()]; for (int i = 0; i < cons.length; i++) cons[i] = tokenizer.nextToken(); } if (cons != null && cons.length > 0) results.setText(ManagerQuery.getHandlersOrProcessors(cons, type)); else if (type == ManagerQuery.HANDLERS) results.setText(ManagerQuery.getHandlers()); else if (type == ManagerQuery.PROCESSORS) results.setText(ManagerQuery.getProcessors()); else results.setText(ManagerQuery.getDataSources()); } } /*************************************************************************** * Main method - construct a GUIManagerQuery frame and show it on the * screen. **************************************************************************/ public static void main(String[] args) { GUIManagerQuery gui = new GUIManagerQuery(); gui.pack(); gui.setSize(640, 600); gui.show(); } }