/******************************************************************************* * 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: * Flemming N. Larsen * - Initial API and implementation *******************************************************************************/ package net.sf.robocode.ui.dialog; import net.sf.robocode.settings.ISettingsManager; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; /** * @author Flemming N. Larsen (original) */ @SuppressWarnings("serial") public class PreferencesCommonOptionsTab extends WizardPanel { private JPanel optionsPanel; private JCheckBox notifyAboutBetaVersionsCheckBox; private JCheckBox showResultsCheckBox; private JCheckBox dontHideRankingsCheckBox; private JCheckBox appendWhenSavingResultsCheckBox; private JCheckBox enableReplayRecordingCheckBox; private JCheckBox enableAutoRecordingCheckBox; private final ISettingsManager properties; public PreferencesCommonOptionsTab(ISettingsManager properties) { super(); this.properties = properties; initialize(); } private void initialize() { setLayout(new GridLayout(1, 2)); add(getOptionsPanel()); loadPreferences(properties); } private JPanel getOptionsPanel() { if (optionsPanel == null) { optionsPanel = new JPanel(); optionsPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Common")); optionsPanel.setLayout(new BoxLayout(optionsPanel, BoxLayout.Y_AXIS)); optionsPanel.add(getNotifyAboutBetaVersionsCheckBox()); optionsPanel.add(new JLabel(" ")); optionsPanel.add(getShowResultsCheckBox()); optionsPanel.add(getDontHideRankingsCheckBox()); optionsPanel.add(getAppendWhenSavingResultsCheckBox()); optionsPanel.add(new JLabel(" ")); optionsPanel.add(getEnableReplayRecordingCheckBox()); optionsPanel.add(getEnableAutoRecordingCheckBox()); } return optionsPanel; } private JCheckBox getNotifyAboutBetaVersionsCheckBox() { if (notifyAboutBetaVersionsCheckBox == null) { notifyAboutBetaVersionsCheckBox = new JCheckBox("Notify about new Beta versions of Robocode"); notifyAboutBetaVersionsCheckBox.setMnemonic('B'); notifyAboutBetaVersionsCheckBox.setDisplayedMnemonicIndex(17); } return notifyAboutBetaVersionsCheckBox; } private JCheckBox getShowResultsCheckBox() { if (showResultsCheckBox == null) { showResultsCheckBox = new JCheckBox("Show results when battle(s) ends"); showResultsCheckBox.setMnemonic('h'); showResultsCheckBox.setDisplayedMnemonicIndex(1); } return showResultsCheckBox; } private JCheckBox getDontHideRankingsCheckBox() { if (dontHideRankingsCheckBox == null) { dontHideRankingsCheckBox = new JCheckBox("Don't hide current rankings when main window is minimized"); dontHideRankingsCheckBox.setMnemonic('t'); dontHideRankingsCheckBox.setDisplayedMnemonicIndex(4); } return dontHideRankingsCheckBox; } private JCheckBox getAppendWhenSavingResultsCheckBox() { if (appendWhenSavingResultsCheckBox == null) { appendWhenSavingResultsCheckBox = new JCheckBox("Append when saving results"); appendWhenSavingResultsCheckBox.setMnemonic('A'); } return appendWhenSavingResultsCheckBox; } private JCheckBox getEnableReplayRecordingCheckBox() { if (enableReplayRecordingCheckBox == null) { enableReplayRecordingCheckBox = new JCheckBox("Enable replay recording (uses memory and disk space)"); enableReplayRecordingCheckBox.setMnemonic('E'); } return enableReplayRecordingCheckBox; } private JCheckBox getEnableAutoRecordingCheckBox() { if (enableAutoRecordingCheckBox == null) { enableAutoRecordingCheckBox = new JCheckBox( "Enable auto recording (every finished battle is automatically saved into battles folder)"); enableAutoRecordingCheckBox.setMnemonic('u'); enableAutoRecordingCheckBox.setDisplayedMnemonicIndex(8); enableAutoRecordingCheckBox.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { boolean isSelected = enableAutoRecordingCheckBox.isSelected(); enableReplayRecordingCheckBox.setEnabled(!isSelected); enableReplayRecordingCheckBox.setSelected( isSelected ? true : properties.getOptionsCommonEnableReplayRecording()); } }); } return enableAutoRecordingCheckBox; } private void loadPreferences(ISettingsManager props) { getNotifyAboutBetaVersionsCheckBox().setSelected(props.getOptionsCommonNotifyAboutNewBetaVersions()); getShowResultsCheckBox().setSelected(props.getOptionsCommonShowResults()); getDontHideRankingsCheckBox().setSelected(props.getOptionsCommonDontHideRankings()); getAppendWhenSavingResultsCheckBox().setSelected(props.getOptionsCommonAppendWhenSavingResults()); getEnableReplayRecordingCheckBox().setSelected(props.getOptionsCommonEnableReplayRecording()); getEnableAutoRecordingCheckBox().setSelected(props.getOptionsCommonEnableAutoRecording()); } public void storePreferences() { ISettingsManager props = properties; props.setOptionsCommonNotifyAboutNewBetaVersions(getNotifyAboutBetaVersionsCheckBox().isSelected()); props.setOptionsCommonShowResults(getShowResultsCheckBox().isSelected()); props.setOptionsCommonDontHideRankings(getDontHideRankingsCheckBox().isSelected()); props.setOptionsCommonAppendWhenSavingResults(getAppendWhenSavingResultsCheckBox().isSelected()); props.setOptionsCommonEnableReplayRecording(getEnableReplayRecordingCheckBox().isSelected()); props.setOptionsCommonEnableAutoRecording(getEnableAutoRecordingCheckBox().isSelected()); properties.saveProperties(); } @Override public boolean isReady() { return true; } }