/* * $Id$ * * Copyright (c) 2000-2008 by Rodney Kinney, Joel Uckelman * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License (LGPL) as published by the Free Software Foundation. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, copies are available * at http://www.opensource.org. */ package VASSAL.launch; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.io.File; import java.net.MalformedURLException; import java.net.URL; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JToolBar; import org.apache.commons.lang.SystemUtils; import VASSAL.build.module.Documentation; import VASSAL.configure.ShowHelpAction; import VASSAL.i18n.Resources; import VASSAL.tools.ApplicationIcons; import VASSAL.tools.ErrorDialog; import VASSAL.tools.WrapLayout; import VASSAL.tools.menu.MenuBarProxy; import VASSAL.tools.menu.MenuManager; import VASSAL.tools.menu.MenuProxy; public class PlayerWindow extends JFrame { private static final long serialVersionUID = 1L; public JToolBar getToolBar() { return toolBar; } public JPanel getControlPanel() { return controlPanel; } protected final JToolBar toolBar = new JToolBar(); protected final JPanel controlPanel = new JPanel(); public PlayerWindow() { setTitle("VASSAL"); setLayout(new BorderLayout()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ApplicationIcons.setFor(this); // setup menubar and actions final MenuManager mm = MenuManager.getInstance(); final MenuBarProxy mb = mm.getMenuBarProxyFor(this); // file menu final MenuProxy fileMenu = new MenuProxy(Resources.getString("General.file")); fileMenu.setMnemonic(Resources.getString("General.file.shortcut").charAt(0)); fileMenu.add(mm.addMarker("PredefinedSetup.start")); fileMenu.add(mm.addMarker("PredefinedSetup.end")); fileMenu.add(mm.addKey("GameState.new_game")); fileMenu.add(mm.addKey("GameState.load_game")); fileMenu.add(mm.addKey("GameState.save_game")); fileMenu.add(mm.addKey("GameState.close_game")); fileMenu.addSeparator(); fileMenu.add(mm.addKey("BasicLogger.begin_logfile")); fileMenu.add(mm.addKey("BasicLogger.end_logfile")); if (SystemUtils.IS_OS_MAC_OSX) { fileMenu.add(mm.addMarker("Editor.File.start")); fileMenu.add(mm.addMarker("Editor.File.end")); } else { fileMenu.addSeparator(); fileMenu.add(mm.addKey("Prefs.edit_preferences")); fileMenu.addSeparator(); fileMenu.add(mm.addKey("General.quit")); } mm.addAction("General.quit", new ShutDownAction()); // help menu final MenuProxy helpMenu = new MenuProxy(Resources.getString("General.help")); // FIMXE: setting mnemonic from first letter could cause collisions in // some languages helpMenu.setMnemonic(Resources.getString("General.help.shortcut").charAt(0)); helpMenu.add(mm.addMarker("Documentation.VASSAL.start")); helpMenu.add(mm.addKey("General.help")); helpMenu.add(mm.addKey("Help.user_guide")); helpMenu.add(mm.addMarker("Documentation.VASSAL.end")); helpMenu.addSeparator(); helpMenu.add(mm.addMarker("Documentation.Module.start")); helpMenu.add(mm.addMarker("Documentation.Module.end")); helpMenu.add(mm.addKey("Documentation.about_module")); if (!SystemUtils.IS_OS_MAC_OSX) { helpMenu.add(mm.addKey("AboutScreen.about_vassal")); } // Tools menu final MenuProxy toolsMenu = new MenuProxy(Resources.getString("General.tools")); toolsMenu.setMnemonic(Resources.getString("General.tools.shortcut").charAt(0)); toolsMenu.add(mm.addKey("GameRefresher.refresh_counters")); try { final URL url = new File(Documentation.getDocumentationBaseDir(), "README.html").toURI().toURL(); mm.addAction("General.help", new ShowHelpAction(url, null)); } catch (MalformedURLException e) { ErrorDialog.bug(e); } try { final URL url = new File(Documentation.getDocumentationBaseDir(), "userguide/userguide.pdf").toURI().toURL(); mm.addAction("Help.user_guide", new ShowHelpAction("Help.user_guide", url, null)); } catch (MalformedURLException e) { ErrorDialog.bug(e); } mm.addAction("AboutScreen.about_vassal", new AboutVASSALAction(this)); mb.add(fileMenu); mb.add(toolsMenu); mb.add(mm.addMarker("Editor.MenuBar.start")); mb.add(mm.addMarker("Editor.MenuBar.end")); mb.add(helpMenu); setJMenuBar(mm.getMenuBarFor(this)); // build toolbar toolBar.setLayout(new WrapLayout(FlowLayout.LEFT, 0, 0)); toolBar.setAlignmentX(0.0f); toolBar.setFloatable(false); add(toolBar, BorderLayout.NORTH); // build central area controlPanel.setLayout(new BorderLayout()); controlPanel.setPreferredSize(new Dimension(800, 600)); add(controlPanel, BorderLayout.CENTER); pack(); } }