package nl.tudelft.simulation.logger.gui; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JPanel; import nl.tudelft.simulation.event.EventInterface; import nl.tudelft.simulation.event.EventListenerInterface; import nl.tudelft.simulation.event.util.EventProducingMap; import nl.tudelft.simulation.logger.Logger; /** * A LoggerSelectFrame
* (c) copyright 2002-2005 Delft University of Technology , the * Netherlands.
* See for project information www.simulation.tudelft.nl
* License of use: Lesser General Public License (LGPL) , no * warranty. * @version $Revision: 1.2 $ $Date: 2010/08/10 11:39:18 $ * @author Peter Jacobs, Niels Lang, Alexander Verbraeck */ public class LoggerSelectFrame extends JFrame implements EventListenerInterface { /** The default serial version UID for serializable classes. */ private static final long serialVersionUID = 1L; /** the loggerChooser. */ private JComboBox loggerChooser; /** the openButton. */ private JButton openButton = new JButton("Open"); /** * constructs a new LoggerSelectFrame. */ public LoggerSelectFrame() { super("Logger selection Frame"); this.initialize(); } /** * initializes the frame */ private void initialize() { JPanel contentPane = new JPanel(new BorderLayout()); this.loggerChooser = new JComboBox(Logger.getLoggerNames()); contentPane.setPreferredSize(new Dimension(300, (int) this.loggerChooser.getPreferredSize().getHeight())); Logger.LOGGERS.addListener(this, EventProducingMap.OBJECT_ADDED_EVENT); Logger.LOGGERS.addListener(this, EventProducingMap.OBJECT_REMOVED_EVENT); this.openButton.addActionListener(new MyActionListener(this.loggerChooser)); contentPane.add(this.loggerChooser, BorderLayout.CENTER); contentPane.add(this.openButton, BorderLayout.EAST); this.setContentPane(contentPane); pack(); setVisible(true); } /** {@inheritDoc} */ @Override public synchronized void notify(final EventInterface event) { if (event.getType().equals(EventProducingMap.OBJECT_ADDED_EVENT) || event.getType().equals(EventProducingMap.OBJECT_REMOVED_EVENT)) { String[] names = Logger.getLoggerNames(); this.loggerChooser.removeAllItems(); for (int i = 0; i < names.length; i++) { this.loggerChooser.addItem(names[i]); } this.repaint(); } } /** * A MyActionListener */ private class MyActionListener implements ActionListener { /** the loggerChooser. */ private JComboBox myLoggerChooser = null; /** * creates a new MyActionListener * @param loggerChooser the chooser */ public MyActionListener(final JComboBox loggerChooser) { this.myLoggerChooser = loggerChooser; } /** {@inheritDoc} */ @Override public void actionPerformed(final ActionEvent actionEvent) { if (this.myLoggerChooser.getSelectedItem() != null) { String logger = (String) this.myLoggerChooser.getSelectedItem(); new LoggerFrame(java.util.logging.Logger.getLogger(logger)); } else { Logger.warning(this, "actionPerformed", actionEvent.getActionCommand() + " on empty logger"); } } } }