/*******************************************************************************
* 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;
}
}