Package net.sf.robocode.ui.dialog

Source Code of net.sf.robocode.ui.dialog.PreferencesCommonOptionsTab

/**
* Copyright (c) 2001-2014 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
*/
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;
  }
}
TOP

Related Classes of net.sf.robocode.ui.dialog.PreferencesCommonOptionsTab

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.