/** * Copyright (C) 2002-2012 The FreeCol Team * * This file is part of FreeCol. * * FreeCol is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * FreeCol is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FreeCol. If not, see <http://www.gnu.org/licenses/>. */ package net.sf.freecol.client.gui.menu; import org.freecolandroid.repackaged.java.awt.BorderLayout; import org.freecolandroid.repackaged.java.awt.Container; import org.freecolandroid.repackaged.java.awt.GraphicsEnvironment; import org.freecolandroid.repackaged.java.awt.event.ActionEvent; import org.freecolandroid.repackaged.java.awt.event.ActionListener; import org.freecolandroid.repackaged.java.awt.event.ItemEvent; import org.freecolandroid.repackaged.java.awt.event.ItemListener; import org.freecolandroid.repackaged.javax.swing.ImageIcon; import org.freecolandroid.repackaged.javax.swing.JFrame; import org.freecolandroid.repackaged.javax.swing.JMenuBar; import org.freecolandroid.repackaged.javax.swing.JMenuItem; import org.freecolandroid.repackaged.javax.swing.JPanel; import org.freecolandroid.repackaged.javax.swing.JScrollPane; import org.freecolandroid.repackaged.javax.swing.JTextArea; import net.sf.freecol.client.FreeColClient; import net.sf.freecol.client.gui.FullScreenFrame; public class FreeColMenuTest implements ActionListener, ItemListener { JTextArea output; JScrollPane scrollPane; String newline = "\n"; public JMenuBar createMenuBar() { JMenuBar menuBar = null; FreeColClient client = new FreeColClient(null, null, true, null, true, null, null); //Create the menu bar. menuBar = new InGameMenuBar(client, client.getGUI()); client.getActionManager().update(); ((FreeColMenuBar)menuBar).update(); return menuBar; } public Container createContentPane() { //Create the content-pane-to-be. JPanel contentPane = new JPanel(new BorderLayout()); contentPane.setOpaque(true); //Create a scrolled text area. output = new JTextArea(5, 30); output.setEditable(false); scrollPane = new JScrollPane(output); //Add the text area to the content pane. contentPane.add(scrollPane, BorderLayout.CENTER); return contentPane; } public void actionPerformed(ActionEvent e) { JMenuItem source = (JMenuItem)(e.getSource()); String s = "Action event detected." + newline + " Event source: " + source.getText() + " (an instance of " + getClassName(source) + ")"; output.append(s + newline); output.setCaretPosition(output.getDocument().getLength()); } public void itemStateChanged(ItemEvent e) { JMenuItem source = (JMenuItem)(e.getSource()); String s = "Item event detected." + newline + " Event source: " + source.getText() + " (an instance of " + getClassName(source) + ")" + newline + " New state: " + ((e.getStateChange() == ItemEvent.SELECTED) ? "selected":"unselected"); output.append(s + newline); output.setCaretPosition(output.getDocument().getLength()); } // Returns just the class name -- no package info. protected String getClassName(Object o) { String classString = o.getClass().getName(); int dotIndex = classString.lastIndexOf("."); return classString.substring(dotIndex+1); } /** Returns an ImageIcon, or null if the path was invalid. * * @param path String * @return <code>ImageIcon</code> */ protected static ImageIcon createImageIcon(String path) { java.net.URL imgURL = FreeColMenuTest.class.getResource(path); if (imgURL != null) { return new ImageIcon(imgURL); } else { System.err.println("Couldn't find file: " + path); return null; } } /** * Create the GUI and show it. For thread safety, * this method should be invoked from the * event-dispatching thread. */ private static void createAndShowGUI() { //Create and set up the window. //JFrame frame = new JFrame("MenuDemo"); FullScreenFrame frame = new FullScreenFrame(GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice()); frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); //Create and set up the content pane. FreeColMenuTest demo = new FreeColMenuTest(); frame.setJMenuBar(demo.createMenuBar()); frame.setContentPane(demo.createContentPane()); //Display the window. frame.setSize(450, 260); frame.setVisible(true); } public static void main(String[] args) { //Schedule a job for the event-dispatching thread: //creating and showing this application's GUI. org.freecolandroid.repackaged.javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } }