From: <bur...@us...> - 2010-03-29 06:00:41
|
Revision: 6655 http://freecol.svn.sourceforge.net/freecol/?rev=6655&view=rev Author: burschik Date: 2010-03-29 06:00:34 +0000 (Mon, 29 Mar 2010) Log Message: ----------- Simplify optionUI. Modified Paths: -------------- freecol/trunk/src/net/sf/freecol/client/gui/option/AudioMixerOptionUI.java freecol/trunk/src/net/sf/freecol/client/gui/option/LanguageOptionUI.java freecol/trunk/src/net/sf/freecol/client/gui/option/OptionGroupUI.java freecol/trunk/src/net/sf/freecol/client/gui/option/OptionMapUI.java freecol/trunk/src/net/sf/freecol/client/gui/option/PercentageOptionUI.java freecol/trunk/src/net/sf/freecol/client/gui/option/RangeOptionUI.java Modified: freecol/trunk/src/net/sf/freecol/client/gui/option/AudioMixerOptionUI.java =================================================================== --- freecol/trunk/src/net/sf/freecol/client/gui/option/AudioMixerOptionUI.java 2010-03-28 15:45:27 UTC (rev 6654) +++ freecol/trunk/src/net/sf/freecol/client/gui/option/AudioMixerOptionUI.java 2010-03-29 06:00:34 UTC (rev 6655) @@ -1,5 +1,5 @@ /** - * Copyright (C) 2002-2007 The FreeCol Team + * Copyright (C) 2002-2010 The FreeCol Team * * This file is part of FreeCol. * @@ -17,38 +17,35 @@ * along with FreeCol. If not, see <http://www.gnu.org/licenses/>. */ - package net.sf.freecol.client.gui.option; -import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.logging.Logger; +import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.JLabel; -import javax.swing.JPanel; import net.sf.freecol.common.option.AudioMixerOption; import net.sf.freecol.common.option.Option; import net.sf.freecol.common.option.AudioMixerOption.MixerWrapper; +/** + * This class provides visualization for an {@link AudioMixerOption}. In order to + * enable values to be both seen and changed. + */ +public final class AudioMixerOptionUI extends JComboBox implements OptionUpdater, PropertyChangeListener { -/** -* This class provides visualization for an {@link AudioMixerOption}. In order to -* enable values to be both seen and changed. -*/ -public final class AudioMixerOptionUI extends JPanel implements OptionUpdater, PropertyChangeListener { @SuppressWarnings("unused") private static final Logger logger = Logger.getLogger(AudioMixerOptionUI.class.getName()); - private final AudioMixerOption option; - private final JComboBox comboBox; private MixerWrapper originalValue; + private JLabel label; /** @@ -56,28 +53,24 @@ * @param option The <code>AudioMixerOption</code> to make a user interface for. */ public AudioMixerOptionUI(final AudioMixerOption option, boolean editable) { - super(new FlowLayout(FlowLayout.LEFT)); this.option = option; this.originalValue = option.getValue(); String name = option.getName(); String description = option.getShortDescription(); - JLabel label = new JLabel(name, JLabel.LEFT); + label = new JLabel(name, JLabel.LEFT); label.setToolTipText((description != null) ? description : name); add(label); - MixerWrapper[] mixers = option.getOptions(); - - comboBox = new JComboBox(mixers); - add(comboBox); + setModel(new DefaultComboBoxModel(option.getOptions())); reset(); - comboBox.setEnabled(editable); - comboBox.addActionListener(new ActionListener () { + setEnabled(editable); + addActionListener(new ActionListener () { public void actionPerformed(ActionEvent e) { if (option.isPreviewEnabled()) { - MixerWrapper value = (MixerWrapper) comboBox.getSelectedItem(); + MixerWrapper value = (MixerWrapper) getSelectedItem(); if (option.getValue() != value) { option.setValue(value); } @@ -90,6 +83,24 @@ } /** + * Get the <code>Label</code> value. + * + * @return a <code>JLabel</code> value + */ + public JLabel getLabel() { + return label; + } + + /** + * Set the <code>Label</code> value. + * + * @param newLabel The new Label value. + */ + public void setLabel(final JLabel newLabel) { + this.label = newLabel; + } + + /** * Rollback to the original value. * * This method gets called so that changes made to options with @@ -114,8 +125,8 @@ public void propertyChange(PropertyChangeEvent event) { if (event.getPropertyName().equals("value")) { MixerWrapper value = (MixerWrapper) event.getNewValue(); - if (value != comboBox.getSelectedItem()) { - comboBox.setSelectedItem(value); + if (value != getSelectedItem()) { + setSelectedItem(value); originalValue = value; } } @@ -125,13 +136,13 @@ * Updates the value of the {@link Option} this object keeps. */ public void updateOption() { - option.setValue((MixerWrapper) comboBox.getSelectedItem()); + option.setValue((MixerWrapper) getSelectedItem()); } /** * Reset with the value from the option. */ public void reset() { - comboBox.setSelectedItem(option.getValue()); + setSelectedItem(option.getValue()); } } Modified: freecol/trunk/src/net/sf/freecol/client/gui/option/LanguageOptionUI.java =================================================================== --- freecol/trunk/src/net/sf/freecol/client/gui/option/LanguageOptionUI.java 2010-03-28 15:45:27 UTC (rev 6654) +++ freecol/trunk/src/net/sf/freecol/client/gui/option/LanguageOptionUI.java 2010-03-29 06:00:34 UTC (rev 6655) @@ -1,5 +1,5 @@ /** - * Copyright (C) 2002-2007 The FreeCol Team + * Copyright (C) 2002-2010 The FreeCol Team * * This file is part of FreeCol. * @@ -17,16 +17,15 @@ * along with FreeCol. If not, see <http://www.gnu.org/licenses/>. */ - package net.sf.freecol.client.gui.option; -import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.logging.Logger; +import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; @@ -36,47 +35,43 @@ import net.sf.freecol.common.option.LanguageOption.Language; +/** + * This class provides visualization for an {@link LanguageOption}. In order to + * enable values to be both seen and changed. + */ +public final class LanguageOptionUI extends JComboBox implements OptionUpdater, PropertyChangeListener { -/** -* This class provides visualization for an {@link LanguageOption}. In order to -* enable values to be both seen and changed. -*/ -public final class LanguageOptionUI extends JPanel implements OptionUpdater, PropertyChangeListener { @SuppressWarnings("unused") private static final Logger logger = Logger.getLogger(LanguageOptionUI.class.getName()); - private final LanguageOption option; - private final JComboBox comboBox; private Language originalValue; + private JLabel label; /** * Creates a new <code>LanguageOptionUI</code> for the given <code>LanguageOption</code>. * @param option The <code>LanguageOption</code> to make a user interface for. */ public LanguageOptionUI(final LanguageOption option, boolean editable) { - super(new FlowLayout(FlowLayout.LEFT)); this.option = option; this.originalValue = option.getValue(); String name = option.getName(); String description = option.getShortDescription(); - JLabel label = new JLabel(name, JLabel.LEFT); + label = new JLabel(name, JLabel.LEFT); label.setToolTipText((description != null) ? description : name); - add(label); Language[] languages = option.getOptions(); - comboBox = new JComboBox(languages); + setModel(new DefaultComboBoxModel(languages)); reset(); - add(comboBox); - comboBox.setEnabled(editable); - comboBox.addActionListener(new ActionListener () { + setEnabled(editable); + addActionListener(new ActionListener () { public void actionPerformed(ActionEvent e) { if (option.isPreviewEnabled()) { - Language value = (Language) comboBox.getSelectedItem(); + Language value = (Language) getSelectedItem(); if (option.getValue() != value) { option.setValue(value); } @@ -89,6 +84,24 @@ } /** + * Get the <code>Label</code> value. + * + * @return a <code>JLabel</code> value + */ + public JLabel getLabel() { + return label; + } + + /** + * Set the <code>Label</code> value. + * + * @param newLabel The new Label value. + */ + public void setLabel(final JLabel newLabel) { + this.label = newLabel; + } + + /** * Rollback to the original value. * * This method gets called so that changes made to options with @@ -113,8 +126,8 @@ public void propertyChange(PropertyChangeEvent event) { if (event.getPropertyName().equals("value")) { final Language value = (Language) event.getNewValue(); - if (value != comboBox.getSelectedItem()) { - comboBox.setSelectedItem(value); + if (value != getSelectedItem()) { + setSelectedItem(value); originalValue = value; } } @@ -124,13 +137,13 @@ * Updates the value of the {@link Option} this object keeps. */ public void updateOption() { - option.setValue((Language) comboBox.getSelectedItem()); + option.setValue((Language) getSelectedItem()); } /** * Reset with the value from the option. */ public void reset() { - comboBox.setSelectedItem(option.getValue()); + setSelectedItem(option.getValue()); } } Modified: freecol/trunk/src/net/sf/freecol/client/gui/option/OptionGroupUI.java =================================================================== --- freecol/trunk/src/net/sf/freecol/client/gui/option/OptionGroupUI.java 2010-03-28 15:45:27 UTC (rev 6654) +++ freecol/trunk/src/net/sf/freecol/client/gui/option/OptionGroupUI.java 2010-03-29 06:00:34 UTC (rev 6655) @@ -177,7 +177,12 @@ } } else if (o instanceof LanguageOption) { final LanguageOptionUI soi = new LanguageOptionUI((LanguageOption) o, editable); - add(soi, "span 2"); + if (soi.getLabel().getText().length() > 30) { + add(soi.getLabel(), "newline, span 3"); + } else { + add(soi.getLabel()); + } + add(soi); ou.add(soi); buttonAdded = false; if (!o.getId().equals(Option.NO_ID)) { @@ -185,7 +190,12 @@ } } else if (o instanceof AudioMixerOption) { final AudioMixerOptionUI soi = new AudioMixerOptionUI((AudioMixerOption) o, editable); - add(soi, "newline, span"); + if (soi.getLabel().getText().length() > 30) { + add(soi.getLabel(), "newline, span 3"); + } else { + add(soi.getLabel()); + } + add(soi); ou.add(soi); buttonAdded = false; if (!o.getId().equals(Option.NO_ID)) { Modified: freecol/trunk/src/net/sf/freecol/client/gui/option/OptionMapUI.java =================================================================== --- freecol/trunk/src/net/sf/freecol/client/gui/option/OptionMapUI.java 2010-03-28 15:45:27 UTC (rev 6654) +++ freecol/trunk/src/net/sf/freecol/client/gui/option/OptionMapUI.java 2010-03-29 06:00:34 UTC (rev 6655) @@ -174,14 +174,24 @@ } } else if (o instanceof LanguageOption) { System.out.println("found languageOption"); - JComponent c = new LanguageOptionUI((LanguageOption) o, editable); - northPanel.add(c, "span 2"); + LanguageOptionUI c = new LanguageOptionUI((LanguageOption) o, editable); + if (c.getLabel().getText().length() > 30) { + northPanel.add(c.getLabel(), "newline, span 3"); + } else { + northPanel.add(c.getLabel()); + } + northPanel.add(c); ou.add(c); if (!o.getId().equals(Option.NO_ID)) { optionUIs.put(o.getId(), c); } } else if (o instanceof AudioMixerOption) { - JComponent c = new AudioMixerOptionUI((AudioMixerOption) o, editable); + AudioMixerOptionUI c = new AudioMixerOptionUI((AudioMixerOption) o, editable); + if (c.getLabel().getText().length() > 30) { + northPanel.add(c.getLabel(), "newline, span 3"); + } else { + northPanel.add(c.getLabel()); + } northPanel.add(c); ou.add(c); if (!o.getId().equals(Option.NO_ID)) { Modified: freecol/trunk/src/net/sf/freecol/client/gui/option/PercentageOptionUI.java =================================================================== --- freecol/trunk/src/net/sf/freecol/client/gui/option/PercentageOptionUI.java 2010-03-28 15:45:27 UTC (rev 6654) +++ freecol/trunk/src/net/sf/freecol/client/gui/option/PercentageOptionUI.java 2010-03-29 06:00:34 UTC (rev 6655) @@ -1,5 +1,5 @@ /** - * Copyright (C) 2002-2007 The FreeCol Team + * Copyright (C) 2002-2010 The FreeCol Team * * This file is part of FreeCol. * @@ -27,9 +27,9 @@ import java.util.logging.Logger; import javax.swing.BorderFactory; +import javax.swing.DefaultBoundedRangeModel; import javax.swing.JComponent; import javax.swing.JLabel; -import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; @@ -42,17 +42,14 @@ * This class provides visualization for an {@link RangeOption}. In order to * enable values to be both seen and changed. */ -public final class PercentageOptionUI extends JPanel implements OptionUpdater, PropertyChangeListener { +public final class PercentageOptionUI extends JSlider implements OptionUpdater, PropertyChangeListener { @SuppressWarnings("unused") private static final Logger logger = Logger.getLogger(PercentageOptionUI.class.getName()); private final PercentageOption option; - - private final JSlider slider; private int originalValue; - /** * Creates a new <code>PercentageOptionUI</code> for the given * <code>PercentageOption</code>. @@ -62,40 +59,41 @@ */ public PercentageOptionUI(final PercentageOption option, boolean editable) { - setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK), - option.getName())); this.option = option; this.originalValue = option.getValue(); String name = option.getName(); String description = option.getShortDescription(); - slider = new JSlider(JSlider.HORIZONTAL, 0, 100, option.getValue()); + setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK), + option.getName())); + + setModel(new DefaultBoundedRangeModel(option.getValue(), 0, 0, 100)); + setOrientation(JSlider.HORIZONTAL); Hashtable<Integer, JComponent> labels = new Hashtable<Integer, JComponent>(); labels.put(new Integer(0), new JLabel("0 %")); labels.put(new Integer(25), new JLabel("25 %")); labels.put(new Integer(50), new JLabel("50 %")); labels.put(new Integer(75), new JLabel("75 %")); labels.put(new Integer(100), new JLabel("100 %")); - slider.setLabelTable(labels); - slider.setValue(option.getValue()); - slider.setPaintLabels(true); - slider.setMajorTickSpacing(5); - slider.setExtent(0); - slider.setPaintTicks(true); - slider.setSnapToTicks(false); - slider.setPreferredSize(new Dimension(500, 50)); - slider.setToolTipText((description != null) ? description : name); - add(slider); + setLabelTable(labels); + setValue(option.getValue()); + setPaintLabels(true); + setMajorTickSpacing(5); + setExtent(0); + setPaintTicks(true); + setSnapToTicks(false); + setPreferredSize(new Dimension(500, 50)); + setToolTipText((description != null) ? description : name); - slider.setEnabled(editable); - slider.setOpaque(false); + setEnabled(editable); + setOpaque(false); - slider.addChangeListener(new ChangeListener () { + addChangeListener(new ChangeListener () { public void stateChanged(ChangeEvent e) { if (option.isPreviewEnabled()) { - if (option.getValue() != slider.getValue()) { - option.setValue(slider.getValue()); + if (option.getValue() != getValue()) { + option.setValue(getValue()); } } } @@ -131,8 +129,8 @@ public void propertyChange(PropertyChangeEvent event) { if (event.getPropertyName().equals("value")) { final int value = ((Integer) event.getNewValue()).intValue(); - if (value != slider.getValue()) { - slider.setValue(value); + if (value != getValue()) { + setValue(value); originalValue = value; } } @@ -142,13 +140,13 @@ * Updates the value of the {@link Option} this object keeps. */ public void updateOption() { - option.setValue(slider.getValue()); + option.setValue(getValue()); } /** * Reset with the value from the option. */ public void reset() { - slider.setValue(option.getValue()); + setValue(option.getValue()); } } Modified: freecol/trunk/src/net/sf/freecol/client/gui/option/RangeOptionUI.java =================================================================== --- freecol/trunk/src/net/sf/freecol/client/gui/option/RangeOptionUI.java 2010-03-28 15:45:27 UTC (rev 6654) +++ freecol/trunk/src/net/sf/freecol/client/gui/option/RangeOptionUI.java 2010-03-29 06:00:34 UTC (rev 6655) @@ -1,5 +1,5 @@ /** - * Copyright (C) 2002-2007 The FreeCol Team + * Copyright (C) 2002-2010 The FreeCol Team * * This file is part of FreeCol. * @@ -27,9 +27,9 @@ import java.util.logging.Logger; import javax.swing.BorderFactory; +import javax.swing.DefaultBoundedRangeModel; import javax.swing.JComponent; import javax.swing.JLabel; -import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; @@ -41,13 +41,12 @@ * This class provides visualization for an {@link RangeOption}. In order to * enable values to be both seen and changed. */ -public final class RangeOptionUI extends JPanel implements OptionUpdater, PropertyChangeListener { +public final class RangeOptionUI extends JSlider implements OptionUpdater, PropertyChangeListener { @SuppressWarnings("unused") private static final Logger logger = Logger.getLogger(RangeOptionUI.class.getName()); private final RangeOption option; - private final JSlider slider; private int originalValue; @@ -60,42 +59,39 @@ */ public RangeOptionUI(final RangeOption option, boolean editable) { - setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK), - option.getName())); this.option = option; this.originalValue = option.getValue(); + setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK), + option.getName())); String name = option.getName(); String description = option.getShortDescription(); - //JLabel label = new JLabel(name, JLabel.LEFT); - //label.setToolTipText((description != null) ? description : name); - //add(label); - String[] strings = option.getItemValues().values().toArray(new String[0]); - - slider = new JSlider(JSlider.HORIZONTAL, 0, strings.length - 1, option.getValueRank()); + setModel(new DefaultBoundedRangeModel(option.getValueRank(), 0, 0, option.getItemValues().size() - 1)); + setOrientation(JSlider.HORIZONTAL); Hashtable<Integer, JComponent> labels = new Hashtable<Integer, JComponent>(); - for (int i = 0; i < strings.length; i++) { - labels.put(new Integer(i), new JLabel(strings[i])); + int index = 0; + for (String string : option.getItemValues().values()) { + labels.put(index, new JLabel(string)); + index++; } - slider.setLabelTable(labels); - slider.setValue(option.getValueRank()); - slider.setPaintLabels(true); - slider.setMajorTickSpacing(1); - slider.setExtent(0); - slider.setPaintTicks(true); - slider.setSnapToTicks(true); - slider.setPreferredSize(new Dimension(500, 50)); - slider.setToolTipText((description != null) ? description : name); - add(slider); + setLabelTable(labels); + setValue(option.getValueRank()); + setPaintLabels(true); + setMajorTickSpacing(1); + setExtent(0); + setPaintTicks(true); + setSnapToTicks(true); + setPreferredSize(new Dimension(500, 50)); + setToolTipText((description != null) ? description : name); - slider.setEnabled(editable); - slider.setOpaque(false); - slider.addChangeListener(new ChangeListener() { + setEnabled(editable); + setOpaque(false); + addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { if (option.isPreviewEnabled()) { - final int value = slider.getValue(); + final int value = getValue(); if (option.getValue() != value) { option.setValueRank(value); } @@ -133,8 +129,8 @@ public void propertyChange(PropertyChangeEvent event) { if (event.getPropertyName().equals("value")) { final int value = ((Integer) event.getNewValue()).intValue(); - if (value != slider.getValue()) { - slider.setValue(value); + if (value != getValue()) { + setValue(value); originalValue = value; } } @@ -144,13 +140,13 @@ * Updates the value of the {@link Option} this object keeps. */ public void updateOption() { - option.setValueRank(slider.getValue()); + option.setValueRank(getValue()); } /** * Reset with the value from the option. */ public void reset() { - slider.setValue(option.getValueRank()); + setValue(option.getValueRank()); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |