/******************************************************************************* * Copyright (c) 2001, 2010 Mathew A. Nelson and Robocode contributors * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://robocode.sourceforge.net/license/epl-v10.html * * Contributors: * Mathew A. Nelson * - Initial API and implementation * Flemming N. Larsen * - Added Rendering Options tab * - Added Sound Options tab * - Added Common Options tab * - Code cleanup * Matthew Reeder * - Added keyboard mnemonics to View Options and Development Options tabs *******************************************************************************/ package net.sf.robocode.ui.dialog; import net.sf.robocode.settings.ISettingsManager; import net.sf.robocode.ui.IImageManager; import net.sf.robocode.ui.IWindowManager; import javax.swing.*; import java.awt.*; import java.awt.event.KeyEvent; /** * @author Mathew A. Nelson (original) * @author Flemming N. Larsen (contributor) * @author Matthew Reeder (contributor) */ @SuppressWarnings("serial") public class PreferencesDialog extends JDialog implements WizardListener { private JPanel preferencesDialogContentPane; private WizardTabbedPane tabbedPane; private WizardController buttonsPanel; private PreferencesCommonOptionsTab commonOptionsTab; private PreferencesDevelopmentOptionsTab developmentOptionsTab; private PreferencesViewOptionsTab viewOptionsTab; private PreferencesRenderingOptionsTab renderingOptionsTab; private PreferencesSoundOptionsTab soundOptionsTab; private final ISettingsManager properties; private final IImageManager imageManager; public PreferencesDialog(ISettingsManager properties, IWindowManager windowManager, IImageManager imageManager) { super(windowManager.getRobocodeFrame(), true); this.properties = properties; this.imageManager = imageManager; initialize(); } private void initialize() { setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); setTitle("Preferences"); setContentPane(getPreferencesDialogContentPane()); } public void cancelButtonActionPerformed() { dispose(); } private WizardController getButtonsPanel() { if (buttonsPanel == null) { buttonsPanel = getTabbedPane().getWizardController(); } return buttonsPanel; } private JPanel getPreferencesDialogContentPane() { getButtonsPanel(); if (preferencesDialogContentPane == null) { preferencesDialogContentPane = new JPanel(); preferencesDialogContentPane.setLayout(new BorderLayout()); preferencesDialogContentPane.add(getTabbedPane(), BorderLayout.CENTER); preferencesDialogContentPane.add(getButtonsPanel(), BorderLayout.SOUTH); } return preferencesDialogContentPane; } private WizardTabbedPane getTabbedPane() { if (tabbedPane == null) { tabbedPane = new WizardTabbedPane(this); int tabIndex = 0; tabbedPane.insertTab("Common Options", null, getCommonOptionsTab(), null, tabIndex); tabbedPane.setMnemonicAt(tabIndex, KeyEvent.VK_O); tabbedPane.setDisplayedMnemonicIndexAt(tabIndex++, 1); tabbedPane.insertTab("Development Options", null, getDevelopmentOptionsTab(), null, tabIndex); tabbedPane.setMnemonicAt(tabIndex, KeyEvent.VK_D); tabbedPane.setDisplayedMnemonicIndexAt(tabIndex++, 0); tabbedPane.insertTab("View Options", null, getViewOptionsTab(), null, tabIndex); tabbedPane.setMnemonicAt(tabIndex, KeyEvent.VK_W); tabbedPane.setDisplayedMnemonicIndexAt(tabIndex++, 3); tabbedPane.insertTab("Rendering Options", null, getRenderingOptionsTab(), null, tabIndex); tabbedPane.setMnemonicAt(tabIndex, KeyEvent.VK_R); tabbedPane.setDisplayedMnemonicIndexAt(tabIndex++, 0); tabbedPane.insertTab("Sound Options", null, getSoundOptionsTab(), null, tabIndex); tabbedPane.setMnemonicAt(tabIndex, KeyEvent.VK_S); tabbedPane.setDisplayedMnemonicIndexAt(tabIndex++, 0); } return tabbedPane; } private JPanel getCommonOptionsTab() { if (commonOptionsTab == null) { commonOptionsTab = new PreferencesCommonOptionsTab(properties); } return commonOptionsTab; } private JPanel getDevelopmentOptionsTab() { if (developmentOptionsTab == null) { developmentOptionsTab = new PreferencesDevelopmentOptionsTab(properties); } return developmentOptionsTab; } private JPanel getViewOptionsTab() { if (viewOptionsTab == null) { viewOptionsTab = new PreferencesViewOptionsTab(properties); } return viewOptionsTab; } private JPanel getRenderingOptionsTab() { if (renderingOptionsTab == null) { renderingOptionsTab = new PreferencesRenderingOptionsTab(properties, imageManager); } return renderingOptionsTab; } private JPanel getSoundOptionsTab() { if (soundOptionsTab == null) { soundOptionsTab = new PreferencesSoundOptionsTab(properties); } return soundOptionsTab; } public void finishButtonActionPerformed() { commonOptionsTab.storePreferences(); developmentOptionsTab.storePreferences(); viewOptionsTab.storePreferences(); renderingOptionsTab.storePreferences(); soundOptionsTab.storePreferences(); dispose(); } }