summaryrefslogtreecommitdiff
path: root/javax
diff options
context:
space:
mode:
authorMark Wielaard <mark@klomp.org>2004-09-04 20:31:20 +0000
committerMark Wielaard <mark@klomp.org>2004-09-04 20:31:20 +0000
commit21388732aa378c306ed7848ebacf120338a5dabf (patch)
tree5175bc521c1b76be2b43d97c87c75b91e3e6a50b /javax
parent43fefa1e7020a3f9eb4abae77ab2e9610fad30c7 (diff)
downloadclasspath-21388732aa378c306ed7848ebacf120338a5dabf.tar.gz
2004-09-04 Mark Wielaard <mark@klomp.org>
* examples/gnu/classpath/examples/swing/Demo.java (mkColorChooser): New method. 2004-09-04 Graydon Hoare <graydon@redhat.com> * javax/swing/JColorChooser.java: Make a couple inner classes static, for jikes. 2004-09-04 Kim Ho <kho@redhat.com> * java/awt/Color.java: Fix documentation. (RGBtoHSB): Use floats for conversions. * javax/swing/ButtonGroup.java: Run Jalopy. (setSelected): Reimplement. * javax/swing/DefaultButtonModel.java: Run Jalopy. (changeState): Let ButtonGroup know that the button is changing state. * javax/swing/JColorChooser.java: Implement. * javax/swing/JLabel.java: Run Jalopy. * javax/swing/JSpinner.java: Run Jalopy. (setValue): New method. * javax/swing/JTabbedPane.java: Run Jalopy. (removeTabAt): Call correct remove method. * javax/swing/SpinnerNumberModel.java: Run Jalopy. (getPreviousValue): Compare minimum value. * javax/swing/Timer.java: Run Jalopy. (run): Comment out println. * javax/swing/ToolTipManager.java: (mouseMoved): Get new tooltip text for location. * javax/swing/colorchooser/AbstractColorChooserPanel.java: Jalopy and Javadoc. * javax/swing/colorchooser/ColorChooserComponentFactory.java: Implement. * javax/swing/colorchooser/DefaultColorSelectionModel.java: Run Jalopy. (setSelectedColor): Fire ChangeEvent. * javax/swing/colorchooser/DefaultHSBChooserPanel.java: New file. Implement. * javax/swing/colorchooser/DefaultPreviewPanel.java: Ditto. * javax/swing/colorchooser/DefaultRGBChooserPanel.java: Ditto. * javax/swing/colorchooser/DefaultSwatchChooserPanel.java: Ditto. * javax/swing/plaf/basic/BasicArrowButton.java: (getArrow): Fix size of upward pointing button. * javax/swing/plaf/basic/BasicColorChooserUI.java: Implement. * javax/swing/plaf/basic/BasicSliderUI.java: (getWidthOfWidestLabel): Use preferred dimensions. (getHeightOfTallestLabel): Ditto. * javax/swing/plaf/basic/BasicSpinnerUI.java: Run Jalopy. (mousePressed): Disable changes to spinner if it is not enabled.
Diffstat (limited to 'javax')
-rw-r--r--javax/swing/ButtonGroup.java76
-rw-r--r--javax/swing/DefaultButtonModel.java265
-rw-r--r--javax/swing/JColorChooser.java932
-rw-r--r--javax/swing/JLabel.java70
-rw-r--r--javax/swing/JSpinner.java186
-rw-r--r--javax/swing/JTabbedPane.java135
-rw-r--r--javax/swing/SpinnerNumberModel.java137
-rw-r--r--javax/swing/Timer.java4
-rw-r--r--javax/swing/ToolTipManager.java2
-rw-r--r--javax/swing/colorchooser/AbstractColorChooserPanel.java190
-rw-r--r--javax/swing/colorchooser/ColorChooserComponentFactory.java78
-rw-r--r--javax/swing/colorchooser/DefaultColorSelectionModel.java73
-rw-r--r--javax/swing/plaf/basic/BasicArrowButton.java20
-rw-r--r--javax/swing/plaf/basic/BasicSliderUI.java13
-rw-r--r--javax/swing/plaf/basic/BasicSpinnerUI.java434
15 files changed, 1589 insertions, 1026 deletions
diff --git a/javax/swing/ButtonGroup.java b/javax/swing/ButtonGroup.java
index 8202fa6cb..5f6a28d86 100644
--- a/javax/swing/ButtonGroup.java
+++ b/javax/swing/ButtonGroup.java
@@ -42,19 +42,18 @@ import java.util.Enumeration;
import java.util.Vector;
-public class ButtonGroup
- implements Serializable
+/**
+ * DOCUMENT ME!
+ */
+public class ButtonGroup implements Serializable
{
+ /** DOCUMENT ME! */
private static final long serialVersionUID = 4259076101881721375L;
- /**
- * The buttons added to this button group.
- */
+ /** The buttons added to this button group. */
protected Vector buttons = new Vector();
- /**
- * The currently selected button model.
- */
+ /** The currently selected button model. */
ButtonModel sel;
/**
@@ -99,17 +98,24 @@ public class ButtonGroup
/**
* Returns the currently selected button model.
*
- * @return the currently selected button model,
- * null if none was selected yet
+ * @return the currently selected button model, null if none was selected
+ * yet
*/
public ButtonModel getSelection()
{
return sel;
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @param m DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
AbstractButton FindButton(ButtonModel m)
{
- for (int i = 0;i < buttons.size(); i++)
+ for (int i = 0; i < buttons.size(); i++)
{
AbstractButton a = (AbstractButton) buttons.get(i);
if (a.getModel() == m)
@@ -119,46 +125,40 @@ public class ButtonGroup
}
/**
- * Sets the currently selected button model. Only one button of a group
- * can be selected at a time.
+ * Sets the currently selected button model. Only one button of a group can
+ * be selected at a time.
*
* @param m the model to select
* @param b true if this button is to be selected, false otherwise
*/
public void setSelected(ButtonModel m, boolean b)
{
- if ((m == sel) && (b == true))
- {
- // clicked on same item twice.
- System.out.println("PRESSED TWICE:" + m + ", sel=" + sel);
- return;
- }
+ if ((sel != m || b) && (! b || sel == m))
+ return;
- if (sel != null)
+ if (b && sel != m)
{
- System.out.println("DESELECTING: " + sel);
- sel.setSelected(! b);
-
- AbstractButton but = FindButton(sel);
- if (but != null)
- {
- System.out.println("REPAINT-REQUEST: " + but.text);
- //but.revalidate();
- but.repaint();
- }
+ ButtonModel old = sel;
+ sel = m;
+
+ if (old != null)
+ old.setSelected(false);
+ AbstractButton button = FindButton(old);
+ if (button != null)
+ button.repaint();
}
- else
- System.out.println("NO SELECTION YET");
-
- sel = m;
+ else if (! b && sel == m)
+ m.setSelected(true);
}
/**
- * Checks if the given <code>ButtonModel</code> is selected
- * in this button group.
+ * Checks if the given <code>ButtonModel</code> is selected in this button
+ * group.
+ *
+ * @param m DOCUMENT ME!
*
- * @return true of given <code>ButtonModel</code> is selected,
- * false otherwise
+ * @return true of given <code>ButtonModel</code> is selected, false
+ * otherwise
*/
public boolean isSelected(ButtonModel m)
{
diff --git a/javax/swing/DefaultButtonModel.java b/javax/swing/DefaultButtonModel.java
index e9a1356e8..d990442d6 100644
--- a/javax/swing/DefaultButtonModel.java
+++ b/javax/swing/DefaultButtonModel.java
@@ -1,4 +1,4 @@
-/* DefaultButtonModel.java --
+/* DefaultButtonModel.java --
Copyright (C) 2002, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -44,87 +44,103 @@ import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import java.io.Serializable;
import java.util.EventListener;
-
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.EventListenerList;
+
/**
* The purpose of this class is to model the dynamic state of an abstract
* button. The concrete button type holding this state may be a a "toggle"
* button (checkbox, radio button) or a "push" button (menu button, button).
- *
- * If the model is disabled, only the "selected" property can be changed.
- * An attempt to change the "armed", "rollover" or "pressed" properties
- * while the model is disabled will be blocked.
- *
- * Any successful (non-blocked) change to the model's properties will
- * trigger the firing of a ChangeEvent.
- *
- * Any change to the "selected" property will trigger the firing of an
- * ItemEvent in addition to ChangeEvent. This is true whether the model is
- * enabled or not.
- *
- * One other state change is special: the transition from "enabled, armed
- * and pressd" to "enabled, armed and not-pressed". This is considered the
- * "trailing edge" of a successful mouse click, and therefore fires an
- * ActionEvent in addition to a ChangeEvent.
+ * If the model is disabled, only the "selected" property can be changed. An
+ * attempt to change the "armed", "rollover" or "pressed" properties while
+ * the model is disabled will be blocked. Any successful (non-blocked) change
+ * to the model's properties will trigger the firing of a ChangeEvent. Any
+ * change to the "selected" property will trigger the firing of an ItemEvent
+ * in addition to ChangeEvent. This is true whether the model is enabled or
+ * not. One other state change is special: the transition from "enabled,
+ * armed and pressd" to "enabled, armed and not-pressed". This is considered
+ * the "trailing edge" of a successful mouse click, and therefore fires an
+ * ActionEvent in addition to a ChangeEvent. In all other respects this class
+ * is just a container of boolean flags.
*
- * In all other respects this class is just a container of boolean flags.
- *
- * @author Graydon Hoare (graydon@redhat.com)
+ * @author Graydon Hoare (graydon_at_redhat.com)
*/
public class DefaultButtonModel implements ButtonModel, Serializable
{
+ /** DOCUMENT ME! */
static final long serialVersionUID = -5342609566534980231L;
- /** Indicates that the button is <em>partially</em> committed to being
- pressed, but not entirely. This usually happens when a user has pressed
- but not yet released the mouse button. */
+ /**
+ * Indicates that the button is <em>partially</em> committed to being
+ * pressed, but not entirely. This usually happens when a user has pressed
+ * but not yet released the mouse button.
+ */
public static final int ARMED = 1;
- /** State constant indicating that the button is enabled. Buttons cannot
- be pressed or selected unless they are enabled. */
+ /**
+ * State constant indicating that the button is enabled. Buttons cannot be
+ * pressed or selected unless they are enabled.
+ */
public static final int ENABLED = 8;
- /** State constant indicating that the user is holding down the button.
- When this transitions from true to false, an ActionEvent may be fired,
- depending on the value of the "armed" property.*/
+ /**
+ * State constant indicating that the user is holding down the button. When
+ * this transitions from true to false, an ActionEvent may be fired,
+ * depending on the value of the "armed" property.
+ */
public static final int PRESSED = 4;
- /** State constant indicating that the mouse is currently positioned over
- the button. */
+ /**
+ * State constant indicating that the mouse is currently positioned over the
+ * button.
+ */
public static final int ROLLOVER = 16;
- /** State constant indicating that the button is selected. This constant
- is only meaningful for toggle-type buttons (radio buttons,
- checkboxes). */
+ /**
+ * State constant indicating that the button is selected. This constant is
+ * only meaningful for toggle-type buttons (radio buttons, checkboxes).
+ */
public static final int SELECTED = 2;
- /** Represents the "state properties" (armed, enabled, pressed, rollover
- and selected) by a bitwise combination of integer constants. */
+ /**
+ * Represents the "state properties" (armed, enabled, pressed, rollover and
+ * selected) by a bitwise combination of integer constants.
+ */
protected int stateMask = ENABLED;
- /** List of ItemListeners, ChangeListeners, and ActionListeners
- registered on this model. */
- protected EventListenerList listenerList = new EventListenerList();;
+ /**
+ * List of ItemListeners, ChangeListeners, and ActionListeners registered on
+ * this model.
+ */
+ protected EventListenerList listenerList = new EventListenerList();
+ ;
- /** The single ChangeEvent this model (re)uses to call its
- ChangeListeners. */
+ /** The single ChangeEvent this model (re)uses to call its ChangeListeners. */
protected ChangeEvent changeEvent = new ChangeEvent(this);
- /** The group this model belongs to. Only one button in a group may be
- selected at any given time. */
+ /**
+ * The group this model belongs to. Only one button in a group may be
+ * selected at any given time.
+ */
protected ButtonGroup group;
-
- /** The key code (one of {@link java.awt.event.KeyEvent} VK_*) used to
- press this button via a keyboard interface. */
+
+ /**
+ * The key code (one of {@link java.awt.event.KeyEvent} VK_) used to press
+ * this button via a keyboard interface.
+ */
protected int mnemonic = KeyEvent.VK_UNDEFINED;
- /** The string used as the "command" property of any ActionEvent this
- model sends. */
+ /**
+ * The string used as the "command" property of any ActionEvent this model
+ * sends.
+ */
protected String actionCommand;
+ /**
+ * Creates a new DefaultButtonModel object.
+ */
public DefaultButtonModel()
{
}
@@ -135,10 +151,10 @@ public class DefaultButtonModel implements ButtonModel, Serializable
*
* @return <code>null</code>
*/
- public Object[] getSelectedObjects()
- {
- return null;
- }
+ public Object[] getSelectedObjects()
+ {
+ return null;
+ }
/**
* Returns a specified class of listeners.
@@ -151,10 +167,10 @@ public class DefaultButtonModel implements ButtonModel, Serializable
{
return listenerList.getListeners(listenerType);
}
-
+
/**
- * Add an ActionListener to the model. Usually only called to subscribe
- * an AbstractButton's listener to the model.
+ * Add an ActionListener to the model. Usually only called to subscribe an
+ * AbstractButton's listener to the model.
*
* @param l The listener to add
*/
@@ -162,10 +178,10 @@ public class DefaultButtonModel implements ButtonModel, Serializable
{
listenerList.add(ActionListener.class, l);
}
-
+
/**
- * Remove an ActionListener to the model. Usually only called to
- * unsubscribe an AbstractButton's listener to the model.
+ * Remove an ActionListener to the model. Usually only called to unsubscribe
+ * an AbstractButton's listener to the model.
*
* @param l The listener to remove
*/
@@ -185,8 +201,8 @@ public class DefaultButtonModel implements ButtonModel, Serializable
}
/**
- * Add an ItemListener to the model. Usually only called to subscribe
- * an AbstractButton's listener to the model.
+ * Add an ItemListener to the model. Usually only called to subscribe an
+ * AbstractButton's listener to the model.
*
* @param l The listener to add
*/
@@ -196,8 +212,8 @@ public class DefaultButtonModel implements ButtonModel, Serializable
}
/**
- * Remove an ItemListener to the model. Usually only called to
- * unsubscribe an AbstractButton's listener to the model.
+ * Remove an ItemListener to the model. Usually only called to unsubscribe
+ * an AbstractButton's listener to the model.
*
* @param l The listener to remove
*/
@@ -217,8 +233,8 @@ public class DefaultButtonModel implements ButtonModel, Serializable
}
/**
- * Add a ChangeListener to the model. Usually only called to subscribe
- * an AbstractButton's listener to the model.
+ * Add a ChangeListener to the model. Usually only called to subscribe an
+ * AbstractButton's listener to the model.
*
* @param l The listener to add
*/
@@ -228,8 +244,8 @@ public class DefaultButtonModel implements ButtonModel, Serializable
}
/**
- * Remove a ChangeListener to the model. Usually only called to
- * unsubscribe an AbstractButton's listener to the model.
+ * Remove a ChangeListener to the model. Usually only called to unsubscribe
+ * an AbstractButton's listener to the model.
*
* @param l The listener to remove
*/
@@ -258,61 +274,60 @@ public class DefaultButtonModel implements ButtonModel, Serializable
public void fireItemStateChanged(ItemEvent e)
{
ItemListener[] ll = getItemListeners();
-
+
for (int i = 0; i < ll.length; i++)
ll[i].itemStateChanged(e);
}
/**
* Inform each ActionListener in the {@link listenerList} that an
- * ActionEvent has occurred. This happens in response to the any change
- * to the {@link stateMask} field which makes the enabled, armed and
- * pressed properties all simultaneously <code>true</code>.
+ * ActionEvent has occurred. This happens in response to the any change to
+ * the {@link stateMask} field which makes the enabled, armed and pressed
+ * properties all simultaneously <code>true</code>.
*
* @param e The ActionEvent to fire
*/
public void fireActionPerformed(ActionEvent e)
{
ActionListener[] ll = getActionListeners();
-
+
for (int i = 0; i < ll.length; i++)
ll[i].actionPerformed(e);
}
/**
- * Inform each ChangeListener in the {@link listenerList} that a
- * ChangeEvent has occurred. This happens in response to the any change
- * to a property of the model.
- *
- * @param event The ChangeEvent to fire
+ * Inform each ChangeListener in the {@link listenerList} that a ChangeEvent
+ * has occurred. This happens in response to the any change to a property
+ * of the model.
*/
public void fireStateChanged()
{
ChangeListener[] ll = getChangeListeners();
-
+
for (int i = 0; i < ll.length; i++)
ll[i].stateChanged(changeEvent);
}
/**
- * Helper method to fire a ChangeEvent with the model as the event's
- * source.
+ * Helper method to fire a ChangeEvent with the model as the event's source.
+ *
+ * @param stateflag DOCUMENT ME!
+ * @param b DOCUMENT ME!
*/
protected void changeState(int stateflag, boolean b)
- {
+ {
int oldstate = stateMask;
int newstate;
if (b)
newstate = oldstate | stateflag;
else
- newstate = oldstate & ~stateflag;
+ newstate = oldstate & ~ stateflag;
if (oldstate == newstate)
return;
- if ((stateflag != SELECTED)
- && (stateflag != ENABLED)
+ if ((stateflag != SELECTED) && (stateflag != ENABLED)
&& (stateMask & ENABLED) == 0)
return;
@@ -320,35 +335,36 @@ public class DefaultButtonModel implements ButtonModel, Serializable
fireStateChanged();
- if ((oldstate & SELECTED) == 0
- && (newstate & SELECTED) == SELECTED)
- fireItemStateChanged(new ItemEvent(this, ItemEvent.ITEM_STATE_CHANGED,
- null, ItemEvent.SELECTED));
+ if ((oldstate & SELECTED) == 0 && (newstate & SELECTED) == SELECTED)
+ {
+ fireItemStateChanged(new ItemEvent(this, ItemEvent.ITEM_STATE_CHANGED,
+ null, ItemEvent.SELECTED));
+ group.setSelected(this, true);
+ }
- else if ((oldstate & SELECTED) == SELECTED
- && (newstate & SELECTED) == 0)
- fireItemStateChanged(new ItemEvent(this, ItemEvent.ITEM_STATE_CHANGED,
- null, ItemEvent.DESELECTED));
-
- else if (((oldstate & ARMED) == ARMED && (oldstate & PRESSED) == PRESSED)
- &&
- ((newstate & ARMED) == ARMED && (newstate & PRESSED) == 0))
+ else if ((oldstate & SELECTED) == SELECTED && (newstate & SELECTED) == 0)
{
- fireActionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED,
- actionCommand));
+ fireItemStateChanged(new ItemEvent(this, ItemEvent.ITEM_STATE_CHANGED,
+ null, ItemEvent.DESELECTED));
+ group.setSelected(this, false);
}
- }
-
+
+ else if (((oldstate & ARMED) == ARMED && (oldstate & PRESSED) == PRESSED)
+ && ((newstate & ARMED) == ARMED && (newstate & PRESSED) == 0))
+ fireActionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED,
+ actionCommand));
+ }
+
/**
* Get the value of the model's "armed" property.
- *
- * @return The current "armed" property
+ *
+ * @return The current "armed" property
*/
public boolean isArmed()
{
return (stateMask & ARMED) == ARMED;
}
-
+
/**
* Set the value of the model's "armed" property.
*
@@ -365,9 +381,9 @@ public class DefaultButtonModel implements ButtonModel, Serializable
* @return The current "enabled" property.
*/
public boolean isEnabled()
- {
+ {
return (stateMask & ENABLED) == ENABLED;
- }
+ }
/**
* Set the value of the model's "enabled" property.
@@ -385,9 +401,9 @@ public class DefaultButtonModel implements ButtonModel, Serializable
* @param p The new "pressed" property
*/
public void setPressed(boolean p)
- {
+ {
changeState(PRESSED, p);
- }
+ }
/**
* Get the value of the model's "pressed" property.
@@ -409,7 +425,6 @@ public class DefaultButtonModel implements ButtonModel, Serializable
changeState(ROLLOVER, r);
}
-
/**
* Set the value of the model's "selected" property.
*
@@ -436,9 +451,9 @@ public class DefaultButtonModel implements ButtonModel, Serializable
* @return The current "rollover" property
*/
public boolean isRollover()
- {
+ {
return (stateMask & ROLLOVER) == ROLLOVER;
- }
+ }
/**
* Get the value of the model's "mnemonic" property.
@@ -446,7 +461,7 @@ public class DefaultButtonModel implements ButtonModel, Serializable
* @return The current "mnemonic" property
*/
public int getMnemonic()
- {
+ {
return mnemonic;
}
@@ -459,15 +474,15 @@ public class DefaultButtonModel implements ButtonModel, Serializable
{
if (mnemonic != key)
{
- mnemonic = key;
- fireStateChanged();
+ mnemonic = key;
+ fireStateChanged();
}
}
-
+
/**
- * Set the value of the model's "actionCommand" property. This property
- * is used as the "command" property of the {@link ActionEvent} fired
- * from the model.
+ * Set the value of the model's "actionCommand" property. This property is
+ * used as the "command" property of the {@link ActionEvent} fired from the
+ * model.
*
* @param s The new "actionCommand" property.
*/
@@ -475,11 +490,11 @@ public class DefaultButtonModel implements ButtonModel, Serializable
{
if (actionCommand != s)
{
- actionCommand = s;
- fireStateChanged();
+ actionCommand = s;
+ fireStateChanged();
}
- }
-
+ }
+
/**
* Returns the current value of the model's "actionCommand" property.
*
@@ -491,9 +506,9 @@ public class DefaultButtonModel implements ButtonModel, Serializable
}
/**
- * Set the value of the model's "group" property. The model is said to be
- * a member of the {@link ButtonGroup} held in its "group" property, and
- * only one model in a given group can have their "selected" property be
+ * Set the value of the model's "group" property. The model is said to be a
+ * member of the {@link ButtonGroup} held in its "group" property, and only
+ * one model in a given group can have their "selected" property be
* <code>true</code> at a time.
*
* @param g The new "group" property
@@ -502,8 +517,8 @@ public class DefaultButtonModel implements ButtonModel, Serializable
{
if (group != g)
{
- group = g;
- fireStateChanged();
+ group = g;
+ fireStateChanged();
}
}
diff --git a/javax/swing/JColorChooser.java b/javax/swing/JColorChooser.java
index 70dde6a19..6ba70ce99 100644
--- a/javax/swing/JColorChooser.java
+++ b/javax/swing/JColorChooser.java
@@ -35,11 +35,16 @@ this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
-
package javax.swing;
+import java.awt.AWTError;
+import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
+import java.awt.Dialog;
+import java.awt.FlowLayout;
+import java.awt.Frame;
+import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.ObjectOutputStream;
@@ -47,314 +52,521 @@ import javax.accessibility.Accessible;
import javax.accessibility.AccessibleContext;
import javax.accessibility.AccessibleRole;
import javax.swing.colorchooser.AbstractColorChooserPanel;
+import javax.swing.colorchooser.ColorChooserComponentFactory;
import javax.swing.colorchooser.ColorSelectionModel;
+import javax.swing.colorchooser.DefaultColorSelectionModel;
import javax.swing.plaf.ColorChooserUI;
+
/**
- * JColorChooser
- * @author Andrew Selkirk
- * @version 1.0
+ * The JColorChooser is a Swing widget that offers users different ways to
+ * select a color. By default, three different panels are presented to the
+ * user that are capable of changing the selected color. There are three ways
+ * to utilize JColorChooser. The first is to build a JColorChooser and add it
+ * to the content pane. The second is to use the createDialog method to
+ * create a JDialog that holds a JColorChooser. The third is to show a
+ * JColorChooser in a JDialog directly using the showDialog method.
*/
-public class JColorChooser extends JComponent implements Accessible {
-
+public class JColorChooser extends JComponent implements Accessible
+{
+ /** DOCUMENT ME! */
private static final long serialVersionUID = 9168066781620640889L;
-
- //-------------------------------------------------------------
- // Classes ----------------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * AccessibleJColorChooser
- */
- protected class AccessibleJColorChooser extends JComponent.AccessibleJComponent {
-
- private static final long serialVersionUID = -2038297864782299082L;
-
- //-------------------------------------------------------------
- // Variables --------------------------------------------------
- //-------------------------------------------------------------
-
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * Constructor AccessibleJColorChooser
- * @param component TODO
- */
- protected AccessibleJColorChooser()
+
+ /**
+ * AccessibleJColorChooser
+ */
+ protected class AccessibleJColorChooser
+ extends JComponent.AccessibleJComponent
+ {
+ /** DOCUMENT ME! */
+ private static final long serialVersionUID = -2038297864782299082L;
+
+ /**
+ * Constructor AccessibleJColorChooser
+ */
+ protected AccessibleJColorChooser()
+ {
+ }
+
+ /**
+ * getAccessibleRole
+ *
+ * @return AccessibleRole
+ */
+ public AccessibleRole getAccessibleRole()
+ {
+ return AccessibleRole.COLOR_CHOOSER;
+ } // getAccessibleRole()
+ } // AccessibleJColorChooser
+
+ /** The model used with the JColorChooser. */
+ private ColorSelectionModel selectionModel;
+
+ /** The preview panel associated with the JColorChooser. */
+ private JComponent previewPanel;
+
+ /**
+ * The set of AbstractColorChooserPanels associated with the JColorChooser.
+ */
+ private AbstractColorChooserPanel[] chooserPanels;
+
+ /** A Drag and Drop property. */
+ private boolean dragEnabled;
+
+ /**
+ * The property fired by the JColorChooser when the selectionModel property
+ * changes.
+ */
+ public static final String SELECTION_MODEL_PROPERTY = "selectionModel";
+
+ /**
+ * The property fired by the JColorChooser when the previewPanel property
+ * changes.
+ */
+ public static final String PREVIEW_PANEL_PROPERTY = "previewPanel";
+
+ /**
+ * The property fired by the JColorChooser when the chooserPanels property
+ * changes.
+ */
+ public static final String CHOOSER_PANELS_PROPERTY = "chooserPanels";
+
+ /** accessibleContext */
+ protected AccessibleContext accessibleContext;
+
+ /**
+ * This method creates a new JColorChooser with the default initial color.
+ */
+ public JColorChooser()
+ {
+ this(new DefaultColorSelectionModel());
+ } // JColorChooser()
+
+ /**
+ * This method creates a new JColorChooser with the given initial color.
+ *
+ * @param initial The initial color.
+ */
+ public JColorChooser(Color initial)
+ {
+ this(new DefaultColorSelectionModel(initial));
+ } // JColorChooser()
+
+ /**
+ * This method creates a new JColorChooser with the given model. The model
+ * will dictate what the initial color for the JColorChooser is.
+ *
+ * @param model The Model to use with the JColorChooser.
+ */
+ public JColorChooser(ColorSelectionModel model)
+ {
+ if (model == null)
+ model = new DefaultColorSelectionModel();
+ selectionModel = model;
+ updateUI();
+ } // JColorChooser()
+
+ /**
+ * This method sets the current color for the JColorChooser.
+ *
+ * @param color The new color for the JColorChooser.
+ */
+ public void setColor(Color color)
+ {
+ if (color != null)
+ selectionModel.setSelectedColor(color);
+ } // setColor()
+
+ /**
+ * This method sets the current color for the JColorChooser using RGB
+ * values.
+ *
+ * @param r The red value.
+ * @param g The green value.
+ * @param b The blue value.
+ */
+ public void setColor(int r, int g, int b)
+ {
+ selectionModel.setSelectedColor(new Color(r, g, b));
+ } // setColor()
+
+ /**
+ * This method sets the current color for the JColorChooser using the
+ * integer value. Bits 0-7 represent the blue value. Bits 8-15 represent
+ * the green value. Bits 16-23 represent the red value.
+ *
+ * @param color The new current color of the JColorChooser.
+ */
+ public void setColor(int color)
+ {
+ setColor(new Color(color, false));
+ } // setColor()
+
+ /**
+ * This method shows a JColorChooser inside a JDialog. The JDialog will
+ * block until it is hidden. The JDialog comes with three buttons: OK,
+ * Cancel, and Reset. Pressing OK or Cancel hide the JDialog. Pressing
+ * Reset will reset the JColorChooser to its initial value.
+ *
+ * @param component The Component that parents the JDialog.
+ * @param title The title displayed in the JDialog.
+ * @param initial The initial color.
+ *
+ * @return The selected color.
+ */
+ public static Color showDialog(Component component, String title,
+ Color initial)
+ {
+ JColorChooser choose = new JColorChooser(initial);
+
+ JDialog dialog = createDialog(component, title, true, choose, null, null);
+
+ dialog.getContentPane().add(choose);
+ dialog.pack();
+ dialog.show();
+
+ return choose.getColor();
+ } // showDialog()
+
+ /**
+ * This is a helper method to make the given JDialog block until it is
+ * hidden.
+ *
+ * @param dialog The JDialog to block.
+ */
+ private static void makeModal(JDialog dialog)
+ {
+ try
+ {
+ synchronized (dialog)
{
+ while (dialog.isVisible())
+ dialog.wait();
}
+ }
+ catch (InterruptedException e)
+ {
+ }
+ }
+
+ /**
+ * This is a helper method to find the first Frame or Dialog ancestor of the
+ * given Component.
+ *
+ * @param c The Component to find ancestors for.
+ *
+ * @return A Frame or Dialog ancestor. Null if none are found.
+ */
+ private static Component findParent(Component c)
+ {
+ Component parent = SwingUtilities.getAncestorOfClass(Frame.class, c);
+ if (parent != null)
+ return parent;
+ parent = SwingUtilities.getAncestorOfClass(Dialog.class, c);
+ return parent;
+ }
+
+ /**
+ * This method will take the given JColorChooser and place it in a JDialog
+ * with the given modal property. Three buttons are displayed in the
+ * JDialog: OK, Cancel and Reset. If OK or Cancel are pressed, the JDialog
+ * is hidden. If Reset is pressed, then the JColorChooser will take on its
+ * default color value. The given okListener will be registered to the OK
+ * button and the cancelListener will be registered to the Cancel button.
+ * If the modal property is set, then the JDialog will block until it is
+ * hidden.
+ *
+ * @param component The Component that will parent the JDialog.
+ * @param title The title displayed in the JDialog.
+ * @param modal The modal property.
+ * @param chooserPane The JColorChooser to place in the JDialog.
+ * @param okListener The ActionListener to register to the OK button.
+ * @param cancelListener The ActionListener to register to the Cancel
+ * button.
+ *
+ * @return A JDialog with the JColorChooser inside of it.
+ *
+ * @throws AWTError If the component is not a suitable parent.
+ */
+ public static JDialog createDialog(Component component, String title,
+ boolean modal, JColorChooser chooserPane,
+ ActionListener okListener,
+ ActionListener cancelListener)
+ {
+ Component parent = findParent(component);
+ if (parent == null)
+ throw new AWTError("No suitable parent found for Component.");
+ JDialog dialog;
+ if (parent instanceof Frame)
+ dialog = new ModalDialog((Frame) parent, title);
+ else
+ dialog = new ModalDialog((Dialog) parent, title);
+ dialog.setModal(modal);
+
+ dialog.getContentPane().setLayout(new BorderLayout());
+
+ JPanel panel = new JPanel();
+ panel.setLayout(new FlowLayout());
+
+ ActionListener al = new DefaultOKCancelListener(dialog);
+
+ JButton ok = new JButton("OK");
+ ok.addActionListener(okListener);
+ ok.addActionListener(al);
+
+ JButton cancel = new JButton("Cancel");
+ cancel.addActionListener(cancelListener);
+ cancel.addActionListener(al);
+
+ JButton reset = new JButton("Reset");
+ reset.addActionListener(new DefaultResetListener(chooserPane));
+
+ dialog.getContentPane().add(chooserPane, BorderLayout.NORTH);
+
+ panel.add(ok);
+ panel.add(cancel);
+ panel.add(reset);
+
+ dialog.getContentPane().add(panel, BorderLayout.SOUTH);
+
+ return dialog;
+ } // createDialog()
+
+ /**
+ * This method returns the UI Component used for this JColorChooser.
+ *
+ * @return The UI Component for this JColorChooser.
+ */
+ public ColorChooserUI getUI()
+ {
+ return (ColorChooserUI) ui;
+ } // getUI()
- /**
- * getAccessibleRole
- * @returns AccessibleRole
- */
- public AccessibleRole getAccessibleRole() {
- return AccessibleRole.COLOR_CHOOSER;
- } // getAccessibleRole()
-
-
- } // AccessibleJColorChooser
-
-
- //-------------------------------------------------------------
- // Variables --------------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * uiClassID
- */
- private static final String uiClassID = "ColorChooserUI";
-
- /**
- * selectionModel
- */
- private ColorSelectionModel selectionModel;
-
- /**
- * previewPanel
- */
- private JComponent previewPanel;
-
- /**
- * chooserPanels
- */
- private AbstractColorChooserPanel[] chooserPanels;
-
- /**
- * SELECTION_MODEL_PROPERTY
- */
- public static final String SELECTION_MODEL_PROPERTY = "selectionModel";
-
- /**
- * PREVIEW_PANEL_PROPERTY
- */
- public static final String PREVIEW_PANEL_PROPERTY = "previewPanel";
-
- /**
- * CHOOSER_PANELS_PROPERTY
- */
- public static final String CHOOSER_PANELS_PROPERTY = "chooserPanels";
-
- /**
- * accessibleContext
- */
- protected AccessibleContext accessibleContext;
-
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * Constructor JColorChooser
- */
- public JColorChooser() {
- // TODO
- } // JColorChooser()
-
- /**
- * Constructor JColorChooser
- * @param initial TODO
- */
- public JColorChooser(Color initial) {
- // TODO
- } // JColorChooser()
-
- /**
- * Constructor JColorChooser
- * @param model TODO
- */
- public JColorChooser(ColorSelectionModel model) {
- // TODO
- } // JColorChooser()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * writeObject
- * @param stream TODO
- * @exception IOException TODO
- */
- private void writeObject(ObjectOutputStream stream) throws IOException {
- // TODO
- } // writeObject()
-
- /**
- * setColor
- * @param color TODO
- */
- public void setColor(Color color) {
- // TODO
- } // setColor()
-
- /**
- * setColor
- * @param r TODO
- * @param g TODO
- * @param b TODO
- */
- public void setColor(int r, int g, int b) {
- // TODO
- } // setColor()
-
- /**
- * setColor
- * @param color TODO
- */
- public void setColor(int color) {
- // TODO
- } // setColor()
-
- /**
- * showDialog
- * @param component TODO
- * @param title TODO
- * @param initial TODO
- * @returns Color
- */
- public static Color showDialog(Component component, String title,
- Color initial) {
- return null; // TODO
- } // showDialog()
-
- /**
- * createDialog
- * @param component TODO
- * @param title TODO
- * @param modal TODO
- * @param chooserPane TODO
- * @param okListener TODO
- * @param cancelListener TODO
- * @returns JDialog
- */
- public static JDialog createDialog(Component component, String title,
- boolean modal, JColorChooser chooserPane,
- ActionListener okListener, ActionListener cancelListener) {
- return null; // TODO
- } // createDialog()
-
- /**
- * getUI
- * @returns ColorChooserUI
- */
- public ColorChooserUI getUI() {
- return (ColorChooserUI) ui;
- } // getUI()
-
- /**
- * setUI
- * @param ui TODO
- */
- public void setUI(ColorChooserUI ui) {
- super.setUI(ui);
- } // setUI()
-
- /**
- * updateUI
- */
- public void updateUI() {
- setUI((ColorChooserUI) UIManager.get(this));
- invalidate();
- } // updateUI()
-
- /**
- * getUIClassID
- * @returns String
- */
- public String getUIClassID() {
- return uiClassID;
- } // getUIClassID()
-
- /**
- * getColor
- * @returns Color
- */
- public Color getColor() {
- return null; // TODO
- } // getColor()
-
- /**
- * setPreviewPanel
- * @param component TODO
- */
- public void setPreviewPanel(JComponent component) {
- // TODO
- } // setPreviewPanel()
-
- /**
- * getPreviewPanel
- * @returns JComponent
- */
- public JComponent getPreviewPanel() {
- return null; // TODO
- } // getPreviewPanel()
-
- /**
- * addChooserPanel
- * @param panel TODO
- */
- public void addChooserPanel(AbstractColorChooserPanel panel) {
- // TODO
- } // addChooserPanel()
-
- /**
- * removeChooserPanel
- * @param panel TODO
- * @returns AbstractColorChooserPanel
- */
- public AbstractColorChooserPanel removeChooserPanel(
- AbstractColorChooserPanel panel) {
- return null; // TODO
- } // removeChooserPanel()
-
- /**
- * setChooserPanels
- * @param panels TODO
- */
- public void setChooserPanels(AbstractColorChooserPanel[] panels) {
- // TODO
- } // setChooserPanels()
-
- /**
- * getChooserPanels
- * @returns AbstractColorChooserPanel[]
- */
- public AbstractColorChooserPanel[] getChooserPanels() {
- return null; // TODO
- } // getChooserPanels()
-
- /**
- * getSelectionModel
- * @returns ColorSelectionModel
- */
- public ColorSelectionModel getSelectionModel() {
- return null; // TODO
- } // getSelectionModel()
-
- /**
- * setSelectionModel
- * @param model TODO
- */
- public void setSelectionModel(ColorSelectionModel model) {
- // TODO
- } // setSelectionModel()
-
- /**
- * paramString
- * @returns String
- */
- protected String paramString() {
- return null; // TODO
- } // paramString()
+ /**
+ * This method sets the UI Component used for this JColorChooser.
+ *
+ * @param ui The UI Component to use with this JColorChooser.
+ */
+ public void setUI(ColorChooserUI ui)
+ {
+ super.setUI(ui);
+ } // setUI()
+
+ /**
+ * This method resets the UI Component property to the Look and Feel
+ * default.
+ */
+ public void updateUI()
+ {
+ setUI((ColorChooserUI) UIManager.getUI(this));
+ revalidate();
+ } // updateUI()
+
+ /**
+ * This method returns a String identifier for the UI Class to be used with
+ * the JColorChooser.
+ *
+ * @return The String identifier for the UI Class.
+ */
+ public String getUIClassID()
+ {
+ return "ColorChooserUI";
+ } // getUIClassID()
+
+ /**
+ * This method returns the current color for the JColorChooser.
+ *
+ * @return The current color for the JColorChooser.
+ */
+ public Color getColor()
+ {
+ return selectionModel.getSelectedColor(); // TODO
+ } // getColor()
+
+ /**
+ * This method changes the previewPanel property for the JTabbedPane. The
+ * previewPanel is responsible for indicating the current color of the
+ * JColorChooser.
+ *
+ * @param component The Component that will act as the previewPanel.
+ */
+ public void setPreviewPanel(JComponent component)
+ {
+ if (component != previewPanel)
+ {
+ JComponent old = previewPanel;
+ previewPanel = component;
+ firePropertyChange(PREVIEW_PANEL_PROPERTY, old, previewPanel);
+ }
+ } // setPreviewPanel()
+
+ /**
+ * This method returns the current previewPanel used with this
+ * JColorChooser.
+ *
+ * @return The current previewPanel.
+ */
+ public JComponent getPreviewPanel()
+ {
+ return previewPanel; // TODO
+ } // getPreviewPanel()
+
+ /**
+ * This method adds the given AbstractColorChooserPanel to the list of the
+ * JColorChooser's chooserPanels.
+ *
+ * @param panel The AbstractColorChooserPanel to add.
+ */
+ public void addChooserPanel(AbstractColorChooserPanel panel)
+ {
+ if (panel == null)
+ return;
+ AbstractColorChooserPanel[] old = chooserPanels;
+ AbstractColorChooserPanel[] newPanels = new AbstractColorChooserPanel[(old == null)
+ ? 1
+ : old.length
+ + 1];
+ if (old != null)
+ System.arraycopy(old, 0, newPanels, 0, old.length);
+ newPanels[newPanels.length - 1] = panel;
+ chooserPanels = newPanels;
+ panel.installChooserPanel(this);
+ firePropertyChange(CHOOSER_PANELS_PROPERTY, old, newPanels);
+ } // addChooserPanel()
+
+ /**
+ * This method removes the given AbstractColorChooserPanel from the
+ * JColorChooser's list of chooserPanels.
+ *
+ * @param panel The AbstractColorChooserPanel to remove.
+ *
+ * @return The AbstractColorChooserPanel that was removed.
+ */
+ public AbstractColorChooserPanel removeChooserPanel(AbstractColorChooserPanel panel)
+ {
+ int index = -1;
+ for (int i = 0; i < chooserPanels.length; i++)
+ if (panel == chooserPanels[i])
+ {
+ index = i;
+ break;
+ }
+
+ if (index == -1)
+ return null;
+
+ AbstractColorChooserPanel[] old = chooserPanels;
+ if (chooserPanels.length == 1)
+ chooserPanels = null;
+ else
+ {
+ AbstractColorChooserPanel[] newPanels = new AbstractColorChooserPanel[chooserPanels.length
+ - 1];
+ System.arraycopy(chooserPanels, 0, newPanels, 0, index);
+ System.arraycopy(chooserPanels, index, newPanels, index - 1,
+ chooserPanels.length - index);
+ chooserPanels = newPanels;
+ }
+ panel.uninstallChooserPanel(this);
+ firePropertyChange(CHOOSER_PANELS_PROPERTY, old, chooserPanels);
+ return panel;
+ }
+
+ /**
+ * This method sets the chooserPanels property for this JColorChooser.
+ *
+ * @param panels The new set of AbstractColorChooserPanels to use.
+ */
+ public void setChooserPanels(AbstractColorChooserPanel[] panels)
+ {
+ if (panels != chooserPanels)
+ {
+ if (chooserPanels != null)
+ for (int i = 0; i < chooserPanels.length; i++)
+ if (chooserPanels[i] != null)
+ chooserPanels[i].uninstallChooserPanel(this);
+
+ AbstractColorChooserPanel[] old = chooserPanels;
+ chooserPanels = panels;
+
+ if (panels != null)
+ for (int i = 0; i < panels.length; i++)
+ if (panels[i] != null)
+ panels[i].installChooserPanel(this);
+
+ firePropertyChange(CHOOSER_PANELS_PROPERTY, old, chooserPanels);
+ }
+ } // setChooserPanels()
+
+ /**
+ * This method returns the AbstractColorChooserPanels used with this
+ * JColorChooser.
+ *
+ * @return The AbstractColorChooserPanels used with this JColorChooser.
+ */
+ public AbstractColorChooserPanel[] getChooserPanels()
+ {
+ return chooserPanels;
+ } // getChooserPanels()
+
+ /**
+ * This method returns the ColorSelectionModel used with this JColorChooser.
+ *
+ * @return The ColorSelectionModel.
+ */
+ public ColorSelectionModel getSelectionModel()
+ {
+ return selectionModel;
+ } // getSelectionModel()
+
+ /**
+ * This method sets the ColorSelectionModel to be used with this
+ * JColorChooser.
+ *
+ * @param model The ColorSelectionModel to be used with this JColorChooser.
+ *
+ * @throws AWTError If the given model is null.
+ */
+ public void setSelectionModel(ColorSelectionModel model)
+ {
+ if (model == null)
+ throw new AWTError("ColorSelectionModel is not allowed to be null.");
+ selectionModel = model;
+ } // setSelectionModel()
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public boolean getDragEnabled()
+ {
+ return dragEnabled;
+ }
+
+ /**
+ * DOCUMENT ME!
+ *
+ * @param b DOCUMENT ME!
+ */
+ public void setDragEnabled(boolean b)
+ {
+ dragEnabled = b;
+ }
+
+ /**
+ * This method returns a String describing the JColorChooser.
+ *
+ * @return A String describing the JColorChooser.
+ */
+ protected String paramString()
+ {
+ return "JColorChooser";
+ } // paramString()
/**
* getAccessibleContext
+ *
* @return AccessibleContext
*/
public AccessibleContext getAccessibleContext()
@@ -364,4 +576,130 @@ public class JColorChooser extends JComponent implements Accessible {
return accessibleContext;
}
+
+ /**
+ * A helper class that hides a JDialog when the action is performed.
+ */
+ static class DefaultOKCancelListener implements ActionListener
+ {
+ /** The JDialog to hide. */
+ private JDialog dialog;
+
+ /**
+ * Creates a new DefaultOKCancelListener with the given JDialog to hide.
+ *
+ * @param dialog The JDialog to hide.
+ */
+ public DefaultOKCancelListener(JDialog dialog)
+ {
+ super();
+ this.dialog = dialog;
+ }
+
+ /**
+ * This method hides the JDialog when called.
+ *
+ * @param e The ActionEvent.
+ */
+ public void actionPerformed(ActionEvent e)
+ {
+ dialog.hide();
+ }
+ }
+
+ /**
+ * This method resets the JColorChooser color to the initial color when the
+ * action is performed.
+ */
+ static class DefaultResetListener implements ActionListener
+ {
+ /** The JColorChooser to reset. */
+ private JColorChooser chooser;
+
+ /** The initial color. */
+ private Color init;
+
+ /**
+ * Creates a new DefaultResetListener with the given JColorChooser.
+ *
+ * @param chooser The JColorChooser to reset.
+ */
+ public DefaultResetListener(JColorChooser chooser)
+ {
+ super();
+ this.chooser = chooser;
+ init = chooser.getColor();
+ }
+
+ /**
+ * This method resets the JColorChooser to its initial color.
+ *
+ * @param e The ActionEvent.
+ */
+ public void actionPerformed(ActionEvent e)
+ {
+ chooser.setColor(init);
+ }
+ }
+
+ /**
+ * This is a custom JDialog that will notify when it is hidden and the modal
+ * property is set.
+ */
+ static class ModalDialog extends JDialog
+ {
+ /** The modal property. */
+ private boolean modal;
+
+ /**
+ * Creates a new ModalDialog object with the given parent and title.
+ *
+ * @param parent The parent of the JDialog.
+ * @param title The title of the JDialog.
+ */
+ public ModalDialog(Frame parent, String title)
+ {
+ super(parent, title);
+ }
+
+ /**
+ * Creates a new ModalDialog object with the given parent and title.
+ *
+ * @param parent The parent of the JDialog.
+ * @param title The title of the JDialog.
+ */
+ public ModalDialog(Dialog parent, String title)
+ {
+ super(parent, title);
+ }
+
+ /**
+ * This method sets the modal property.
+ *
+ * @param modal The modal property.
+ */
+ public void setModal(boolean modal)
+ {
+ this.modal = modal;
+ }
+
+ /**
+ * This method shows the ModalDialog.
+ */
+ public void show()
+ {
+ super.show();
+ if (modal)
+ makeModal(this);
+ }
+
+ /**
+ * This method hides the ModalDialog.
+ */
+ public synchronized void hide()
+ {
+ super.hide();
+ notifyAll();
+ }
+ }
}
diff --git a/javax/swing/JLabel.java b/javax/swing/JLabel.java
index 9cd422712..ee1824e4c 100644
--- a/javax/swing/JLabel.java
+++ b/javax/swing/JLabel.java
@@ -38,8 +38,8 @@ exception statement from your version. */
package javax.swing;
import java.awt.Component;
-import java.awt.Image;
import java.awt.Font;
+import java.awt.Image;
import java.awt.event.KeyEvent;
import javax.accessibility.Accessible;
import javax.accessibility.AccessibleContext;
@@ -49,7 +49,7 @@ import javax.swing.plaf.LabelUI;
/**
* <p>
- * A swing widget that displays a text message and/or an icon.
+ * A swing widget that displays a text message and/or an icon.
* </p>
*/
public class JLabel extends JComponent implements Accessible, SwingConstants
@@ -103,10 +103,11 @@ public class JLabel extends JComponent implements Accessible, SwingConstants
* changes.
*/
public static final String DISPLAYED_MNEMONIC_CHANGED_PROPERTY = "displayedMnemonic";
-
+
/**
- * Fired in a PropertyChangeEvent when the "displayedMnemonicIndex"
- * property changes. */
+ * Fired in a PropertyChangeEvent when the "displayedMnemonicIndex" property
+ * changes.
+ */
public static final String DISPLAYED_MNEMONIC_INDEX_CHANGED_PROPERTY = "displayedMnemonicIndex";
/**
@@ -146,8 +147,8 @@ public class JLabel extends JComponent implements Accessible, SwingConstants
public static final String VERTICAL_TEXT_POSITION_CHANGED_PROPERTY = "verticalTextPosition";
/**
- * Creates a new horizontally and vertically centered JLabel object with no text and no
- * icon.
+ * Creates a new horizontally and vertically centered JLabel object with no
+ * text and no icon.
*/
public JLabel()
{
@@ -155,8 +156,8 @@ public class JLabel extends JComponent implements Accessible, SwingConstants
}
/**
- * Creates a new horizontally and vertically centered JLabel object with no text and the
- * given icon.
+ * Creates a new horizontally and vertically centered JLabel object with no
+ * text and the given icon.
*
* @param image The icon to use with the label.
*/
@@ -166,8 +167,9 @@ public class JLabel extends JComponent implements Accessible, SwingConstants
}
/**
- * Creates a new vertically centered JLabel object with no text and the given icon and
- * horizontal alignment. By default, the text is TRAILING the image.
+ * Creates a new vertically centered JLabel object with no text and the
+ * given icon and horizontal alignment. By default, the text is TRAILING
+ * the image.
*
* @param image The icon to use with the label.
* @param horizontalAlignment The horizontal alignment of the label.
@@ -178,8 +180,8 @@ public class JLabel extends JComponent implements Accessible, SwingConstants
}
/**
- * Creates a new horizontally and vertically centered JLabel object with no icon and the
- * given text.
+ * Creates a new horizontally and vertically centered JLabel object with no
+ * icon and the given text.
*
* @param text The text to use with the label.
*/
@@ -189,8 +191,8 @@ public class JLabel extends JComponent implements Accessible, SwingConstants
}
/**
- * Creates a new vertically centered JLabel object with no icon and the given text and
- * horizontal alignment.
+ * Creates a new vertically centered JLabel object with no icon and the
+ * given text and horizontal alignment.
*
* @param text The text to use with the label.
* @param horizontalAlignment The horizontal alignment of the label.
@@ -201,8 +203,8 @@ public class JLabel extends JComponent implements Accessible, SwingConstants
}
/**
- * Creates a new vertically centered JLabel object with the given text, icon, and horizontal
- * alignment.
+ * Creates a new vertically centered JLabel object with the given text,
+ * icon, and horizontal alignment.
*
* @param text The text to use with the label.
* @param icon The icon to use with the label.
@@ -290,9 +292,8 @@ public class JLabel extends JComponent implements Accessible, SwingConstants
String oldText = text;
text = newText;
firePropertyChange(TEXT_CHANGED_PROPERTY, oldText, newText);
-
- if (text != null
- && text.length() <= displayedMnemonicIndex)
+
+ if (text != null && text.length() <= displayedMnemonicIndex)
setDisplayedMnemonicIndex(text.length() - 1);
}
}
@@ -326,17 +327,18 @@ public class JLabel extends JComponent implements Accessible, SwingConstants
/**
* This method returns the disabled icon. The disabled icon is painted when
- * the label is disabled. If the disabled icon is null and the active icon is
- * an ImageIcon, this method returns a grayed version of the icon. The grayed
- * version of the icon becomes the disabledIcon.
+ * the label is disabled. If the disabled icon is null and the active icon
+ * is an ImageIcon, this method returns a grayed version of the icon. The
+ * grayed version of the icon becomes the disabledIcon.
*
* @return The disabled icon.
*/
public Icon getDisabledIcon()
{
if (disabledIcon == null && icon instanceof ImageIcon)
- disabledIcon = new ImageIcon(GrayFilter.createDisabledImage(((ImageIcon) icon).getImage()));
-
+ disabledIcon = new ImageIcon(GrayFilter.createDisabledImage(((ImageIcon) icon)
+ .getImage()));
+
return disabledIcon;
}
@@ -368,21 +370,20 @@ public class JLabel extends JComponent implements Accessible, SwingConstants
if (displayedMnemonic != mnemonic)
{
firePropertyChange(DISPLAYED_MNEMONIC_CHANGED_PROPERTY,
- displayedMnemonic, mnemonic);
+ displayedMnemonic, mnemonic);
displayedMnemonic = mnemonic;
-
+
if (text != null)
setDisplayedMnemonicIndex(text.indexOf(mnemonic));
}
}
-
/**
* This method sets the character that will be the mnemonic used. If the
* label is used as a label for another component, the label will give
* focus to that component when the mnemonic is activated.
*
- * @param menmonic The character to use for the mnemonic.
+ * @param mnemonic The character to use for the mnemonic.
*/
public void setDisplayedMnemonic(char mnemonic)
{
@@ -499,8 +500,7 @@ public class JLabel extends JComponent implements Accessible, SwingConstants
{
if (iconTextGap != newGap)
{
- firePropertyChange(ICON_TEXT_GAP_CHANGED_PROPERTY, iconTextGap,
- newGap);
+ firePropertyChange(ICON_TEXT_GAP_CHANGED_PROPERTY, iconTextGap, newGap);
iconTextGap = newGap;
}
}
@@ -639,7 +639,7 @@ public class JLabel extends JComponent implements Accessible, SwingConstants
// XXX: Is this the correct way to check for image equality?
if (currIcon != null && currIcon instanceof ImageIcon)
return (((ImageIcon) currIcon).getImage() == img);
-
+
return false;
}
@@ -671,10 +671,10 @@ public class JLabel extends JComponent implements Accessible, SwingConstants
labelFor = c;
}
}
-
+
/**
- * This method overrides setFont so that we can call for a repaint
- * after the font is changed.
+ * This method overrides setFont so that we can call for a repaint after the
+ * font is changed.
*
* @param f The font for this label.
*/
diff --git a/javax/swing/JSpinner.java b/javax/swing/JSpinner.java
index fe094fab9..00b22d5a6 100644
--- a/javax/swing/JSpinner.java
+++ b/javax/swing/JSpinner.java
@@ -48,29 +48,45 @@ import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.text.DecimalFormat;
import java.text.ParseException;
+import java.util.EventListener;
import javax.swing.border.EtchedBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.EventListenerList;
import javax.swing.plaf.SpinnerUI;
-import java.util.EventListener;
+
/**
* A JSpinner is a component which typically contains a numeric value and a
* way to manipulate the value.
*
- * @author Ka-Hing Cheung
- * @version 1.0
+ * @author Ka-Hing Cheung
+ * @version 1.0
*/
-public class JSpinner extends JComponent
+public class JSpinner extends JComponent
{
+ /**
+ * DOCUMENT ME!
+ */
public static class StubEditor extends JLabel implements ChangeListener
{
+ /** DOCUMENT ME! */
private JLabel label;
+
+ /** DOCUMENT ME! */
private JButton up;
+
+ /** DOCUMENT ME! */
private JButton down;
+
+ /** DOCUMENT ME! */
private JSpinner spinner;
-
+
+ /**
+ * Creates a new StubEditor object.
+ *
+ * @param spinner DOCUMENT ME!
+ */
public StubEditor(JSpinner spinner)
{
this.spinner = spinner;
@@ -79,91 +95,161 @@ public class JSpinner extends JComponent
stateChanged(null); /* fill in the label */
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @param evt DOCUMENT ME!
+ */
public void stateChanged(ChangeEvent evt)
{
setText(String.valueOf(spinner.getValue()));
}
}
- public static class DefaultEditor extends JPanel
- implements ChangeListener, PropertyChangeListener, LayoutManager
+ /**
+ * DOCUMENT ME!
+ */
+ public static class DefaultEditor extends JPanel implements ChangeListener,
+ PropertyChangeListener,
+ LayoutManager
{
+ /**
+ * Creates a new DefaultEditor object.
+ *
+ * @param spinner DOCUMENT ME!
+ */
public DefaultEditor(JSpinner spinner)
{
spinner.addChangeListener(this);
} /* TODO */
-
+ /**
+ * DOCUMENT ME!
+ */
public void commitEdit()
{
} /* TODO */
-
+ /**
+ * DOCUMENT ME!
+ *
+ * @param spinner DOCUMENT ME!
+ */
public void dismiss(JSpinner spinner)
{
spinner.removeChangeListener(this);
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
public JFormattedTextField getTextField()
{
return null;
} /* TODO */
-
+ /**
+ * DOCUMENT ME!
+ *
+ * @param parent DOCUMENT ME!
+ */
public void layoutContainer(Container parent)
{
-
} /* TODO */
-
+ /**
+ * DOCUMENT ME!
+ *
+ * @param parent DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
public Dimension minimumLayoutSize(Container parent)
{
return null;
} /* TODO */
-
+ /**
+ * DOCUMENT ME!
+ *
+ * @param parent DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
public Dimension preferredLayoutSize(Container parent)
{
return null;
} /* TODO */
-
+ /**
+ * DOCUMENT ME!
+ *
+ * @param evt DOCUMENT ME!
+ */
public void propertyChange(PropertyChangeEvent evt)
{
-
} /* TODO */
-
+ /**
+ * DOCUMENT ME!
+ *
+ * @param evt DOCUMENT ME!
+ */
public void stateChanged(ChangeEvent evt)
{
-
} /* TODO */
-
/* no-ops */
public void removeLayoutComponent(Component child)
{
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @param name DOCUMENT ME!
+ * @param child DOCUMENT ME!
+ */
public void addLayoutComponent(String name, Component child)
{
}
}
+ /**
+ * DOCUMENT ME!
+ */
public static class NumberEditor extends DefaultEditor
{
+ /**
+ * Creates a new NumberEditor object.
+ *
+ * @param spinner DOCUMENT ME!
+ */
public NumberEditor(JSpinner spinner)
{
super(spinner);
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
public DecimalFormat getFormat()
{
return null;
}
}
+ /** DOCUMENT ME! */
private SpinnerModel model;
+
+ /** DOCUMENT ME! */
private JComponent editor;
+
+ /** DOCUMENT ME! */
private EventListenerList listenerList = new EventListenerList();
-
+
+ /** DOCUMENT ME! */
private ChangeListener listener = new ChangeListener()
{
public void stateChanged(ChangeEvent evt)
{
- fireStateChanged();
+ fireStateChanged();
}
};
@@ -179,6 +265,8 @@ public class JSpinner extends JComponent
/**
* Creates a JSpinner with the specific model and sets the default editor
+ *
+ * @param model DOCUMENT ME!
*/
public JSpinner(SpinnerModel model)
{
@@ -191,17 +279,20 @@ public class JSpinner extends JComponent
/**
* If the editor is <code>JSpinner.DefaultEditor</code>, then forwards the
* call to it, otherwise do nothing.
+ *
+ * @throws ParseException DOCUMENT ME!
*/
public void commitEdit() throws ParseException
{
- if(editor instanceof DefaultEditor)
- ((DefaultEditor)editor).commitEdit();
+ if (editor instanceof DefaultEditor)
+ ((DefaultEditor) editor).commitEdit();
}
/**
* Gets the current editor
*
* @return the current editor
+ *
* @see #setEditor
*/
public JComponent getEditor()
@@ -214,20 +305,23 @@ public class JSpinner extends JComponent
* the old listeners (if any) and adds the new listeners (if any).
*
* @param editor the new editor
+ *
+ * @throws IllegalArgumentException DOCUMENT ME!
+ *
* @see #getEditor
*/
public void setEditor(JComponent editor)
{
- if(editor == null)
+ if (editor == null)
throw new IllegalArgumentException("editor may not be null");
- if(this.editor instanceof DefaultEditor)
- ((DefaultEditor)editor).dismiss(this);
- else if(this.editor instanceof ChangeListener)
- removeChangeListener((ChangeListener)this.editor);
+ if (this.editor instanceof DefaultEditor)
+ ((DefaultEditor) editor).dismiss(this);
+ else if (this.editor instanceof ChangeListener)
+ removeChangeListener((ChangeListener) this.editor);
- if(editor instanceof ChangeListener)
- addChangeListener((ChangeListener)editor);
+ if (editor instanceof ChangeListener)
+ addChangeListener((ChangeListener) editor);
this.editor = editor;
}
@@ -246,6 +340,7 @@ public class JSpinner extends JComponent
* Gets the next value without changing the current value.
*
* @return the next value
+ *
* @see javax.swing.SpinnerModel#getNextValue
*/
public Object getNextValue()
@@ -257,6 +352,7 @@ public class JSpinner extends JComponent
* Gets the previous value without changing the current value.
*
* @return the previous value
+ *
* @see javax.swing.SpinnerModel#getPreviousValue
*/
public Object getPreviousValue()
@@ -271,14 +367,15 @@ public class JSpinner extends JComponent
*/
public SpinnerUI getUI()
{
- return (SpinnerUI)ui;
+ return (SpinnerUI) ui;
}
/**
- * Gets the current value of the spinner, according to the underly model, not
- * the UI.
+ * Gets the current value of the spinner, according to the underly model,
+ * not the UI.
*
* @return the current value
+ *
* @see javax.swing.SpinnerModel#getValue
*/
public Object getValue()
@@ -287,6 +384,16 @@ public class JSpinner extends JComponent
}
/**
+ * DOCUMENT ME!
+ *
+ * @param value DOCUMENT ME!
+ */
+ public void setValue(Object value)
+ {
+ model.setValue(value);
+ }
+
+ /**
* This method returns a name to identify which look and feel class will be
* the UI delegate for this spinner.
*
@@ -317,7 +424,7 @@ public class JSpinner extends JComponent
}
/**
- * Adds a <code>ChangeListener</code>
+ * Adds a <code>ChangeListener</code>
*
* @param listener the listener to add
*/
@@ -355,20 +462,21 @@ public class JSpinner extends JComponent
ChangeEvent evt = new ChangeEvent(this);
ChangeListener[] listeners = getChangeListeners();
- for(int i = 0; i < listeners.length; ++i)
+ for (int i = 0; i < listeners.length; ++i)
listeners[i].stateChanged(evt);
}
/**
* Creates an editor for this <code>JSpinner</code>. Really, it should be a
- * <code>JSpinner.DefaultEditor</code>, but since that should be implemented
- * by a JFormattedTextField, and one is not written, I am just using a dummy
- * one backed by a JLabel.
+ * <code>JSpinner.DefaultEditor</code>, but since that should be
+ * implemented by a JFormattedTextField, and one is not written, I am just
+ * using a dummy one backed by a JLabel.
+ *
+ * @param model DOCUMENT ME!
*
* @return the default editor
*/
protected JComponent createEditor(SpinnerModel model)
{
return new StubEditor(this);
- } /* TODO */
-}
+ } /* TODO */}
diff --git a/javax/swing/JTabbedPane.java b/javax/swing/JTabbedPane.java
index efe1abecc..0f3fbce8b 100644
--- a/javax/swing/JTabbedPane.java
+++ b/javax/swing/JTabbedPane.java
@@ -44,7 +44,6 @@ import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.io.Serializable;
import java.util.Vector;
-
import javax.accessibility.Accessible;
import javax.accessibility.AccessibleContext;
import javax.accessibility.AccessibleRole;
@@ -79,12 +78,11 @@ public class JTabbedPane extends JComponent implements Serializable,
protected class AccessibleJTabbedPane extends JComponent.AccessibleJComponent
implements AccessibleSelection, ChangeListener
{
+ /** DOCUMENT ME! */
private static final long serialVersionUID = 7610530885966830483L;
-
+
/**
* Creates a new AccessibleJTabbedPane object.
- *
- * @param c DOCUMENT ME!
*/
public AccessibleJTabbedPane()
{
@@ -226,12 +224,16 @@ public class JTabbedPane extends JComponent implements Serializable,
*/
protected class ModelListener implements ChangeListener, Serializable
{
+ /** DOCUMENT ME! */
private static final long serialVersionUID = 497359819958114132L;
+ /**
+ * Creates a new ModelListener object.
+ */
protected ModelListener()
{
}
-
+
/**
* This method is called whenever the model is changed.
*
@@ -387,7 +389,8 @@ public class JTabbedPane extends JComponent implements Serializable,
return title;
}
- private static final long serialVersionUID = 1614381073220130939L;
+ /** DOCUMENT ME! */
+ private static final long serialVersionUID = 1614381073220130939L;
/**
* This method sets the title of the tab.
@@ -398,7 +401,7 @@ public class JTabbedPane extends JComponent implements Serializable,
{
title = text;
if (title != null && title.length() <= underlinedChar)
- setDisplayedMnemonicIndex(title.length() - 1);
+ setDisplayedMnemonicIndex(title.length() - 1);
}
/**
@@ -817,16 +820,21 @@ public class JTabbedPane extends JComponent implements Serializable,
* This method checks the index.
*
* @param index The index to check.
+ * @param start DOCUMENT ME!
+ * @param end DOCUMENT ME!
+ *
+ * @throws IndexOutOfBoundsException DOCUMENT ME!
*/
private void checkIndex(int index, int start, int end)
{
if (index < start || index >= end)
- throw new IndexOutOfBoundsException("Index < " + start + " || Index >= " + end);
+ throw new IndexOutOfBoundsException("Index < " + start + " || Index >= "
+ + end);
}
/**
- * This method sets the selected index. This method
- * will hide the old component and show the new component.
+ * This method sets the selected index. This method will hide the old
+ * component and show the new component.
*
* @param index The index to set it at.
*/
@@ -839,7 +847,7 @@ public class JTabbedPane extends JComponent implements Serializable,
getSelectedComponent().hide();
if (index != -1 && getComponentAt(index) != null)
getComponentAt(index).show();
- model.setSelectedIndex(index);
+ model.setSelectedIndex(index);
}
}
@@ -867,8 +875,8 @@ public class JTabbedPane extends JComponent implements Serializable,
}
/**
- * This method inserts tabs into JTabbedPane. This includes
- * adding the component to the JTabbedPane and hiding it.
+ * This method inserts tabs into JTabbedPane. This includes adding the
+ * component to the JTabbedPane and hiding it.
*
* @param title The title of the tab.
* @param icon The tab's icon.
@@ -885,11 +893,11 @@ public class JTabbedPane extends JComponent implements Serializable,
// Hide the component so we don't see it. Do it before we parent it
// so we don't trigger a repaint.
if (component != null)
- {
- component.hide();
- super.add(component);
- }
-
+ {
+ component.hide();
+ super.add(component);
+ }
+
if (getSelectedIndex() == -1)
setSelectedIndex(0);
@@ -934,15 +942,14 @@ public class JTabbedPane extends JComponent implements Serializable,
}
/**
- * This method adds a tab to the JTabbedPane.
- * The title of the tab is the Component's name.
- * If the Component is an instance of UIResource, it doesn't
- * add the tab and instead add the component directly to the
+ * This method adds a tab to the JTabbedPane. The title of the tab is the
+ * Component's name. If the Component is an instance of UIResource, it
+ * doesn't add the tab and instead add the component directly to the
* JTabbedPane.
*
* @param component The associated component.
*
- * @return The Component that was added.
+ * @return The Component that was added.
*/
public Component add(Component component)
{
@@ -954,17 +961,16 @@ public class JTabbedPane extends JComponent implements Serializable,
}
/**
- * This method adds a tab to the JTabbedPane.
- * If the Component is an instance of UIResource, it doesn't
- * add the tab and instead add the component directly to the
- * JTabbedPane.
+ * This method adds a tab to the JTabbedPane. If the Component is an
+ * instance of UIResource, it doesn't add the tab and instead add the
+ * component directly to the JTabbedPane.
*
* @param title The title of the tab.
* @param component The associated component.
*
* @return The Component that was added.
*/
- public Component add(String title, Component component)
+ public Component add(String title, Component component)
{
if (component instanceof UIResource)
super.add(component);
@@ -974,10 +980,9 @@ public class JTabbedPane extends JComponent implements Serializable,
}
/**
- * This method adds a tab to the JTabbedPane.
- * If the Component is an instance of UIResource, it doesn't
- * add the tab and instead add the component directly to the
- * JTabbedPane.
+ * This method adds a tab to the JTabbedPane. If the Component is an
+ * instance of UIResource, it doesn't add the tab and instead add the
+ * component directly to the JTabbedPane.
*
* @param component The associated component.
* @param index The index to insert the tab at.
@@ -994,12 +999,11 @@ public class JTabbedPane extends JComponent implements Serializable,
}
/**
- * This method adds a tab to the JTabbedPane.
- * If the Component is an instance of UIResource, it doesn't
- * add the tab and instead add the component directly to the
- * JTabbedPane. If the constraints object is an icon, it
- * will be used as the tab's icon. If the constraints object
- * is a string, we will use it as the title.
+ * This method adds a tab to the JTabbedPane. If the Component is an
+ * instance of UIResource, it doesn't add the tab and instead add the
+ * component directly to the JTabbedPane. If the constraints object is an
+ * icon, it will be used as the tab's icon. If the constraints object is a
+ * string, we will use it as the title.
*
* @param component The associated component.
* @param constraints The constraints object.
@@ -1010,12 +1014,11 @@ public class JTabbedPane extends JComponent implements Serializable,
}
/**
- * This method adds a tab to the JTabbedPane.
- * If the Component is an instance of UIResource, it doesn't
- * add the tab and instead add the component directly to the
- * JTabbedPane. If the constraints object is an icon, it
- * will be used as the tab's icon. If the constraints object
- * is a string, we will use it as the title.
+ * This method adds a tab to the JTabbedPane. If the Component is an
+ * instance of UIResource, it doesn't add the tab and instead add the
+ * component directly to the JTabbedPane. If the constraints object is an
+ * icon, it will be used as the tab's icon. If the constraints object is a
+ * string, we will use it as the title.
*
* @param component The associated component.
* @param constraints The constraints object.
@@ -1037,27 +1040,25 @@ public class JTabbedPane extends JComponent implements Serializable,
}
/**
- * The tab and it's associated component are removed. After
- * the component has been removed from the JTabbedPane, it's
- * set visible to ensure that it can be seen.
+ * The tab and it's associated component are removed. After the component
+ * has been removed from the JTabbedPane, it's set visible to ensure that
+ * it can be seen.
*
* @param index The index of the tab to remove.
- *
- * @throws IndexOutOfBoundsException If the index is not in range.
*/
public void removeTabAt(int index)
{
checkIndex(index, 0, tabs.size());
Component c = getComponentAt(index);
- super.remove(c);
+ super.remove(index);
c.show();
tabs.remove(index);
}
/**
- * This method removes the component from the JTabbedPane. After
- * the component has been removed from the JTabbedPane, it's
- * set visible to ensure that it can be seen.
+ * This method removes the component from the JTabbedPane. After the
+ * component has been removed from the JTabbedPane, it's set visible to
+ * ensure that it can be seen.
*
* @param component The Component to remove.
*/
@@ -1071,8 +1072,8 @@ public class JTabbedPane extends JComponent implements Serializable,
}
/**
- * This method removes the tab and component from the JTabbedPane.
- * It simply calls removeTabAt(int index).
+ * This method removes the tab and component from the JTabbedPane. It simply
+ * calls removeTabAt(int index).
*
* @param index The index of the tab to remove.
*/
@@ -1082,8 +1083,8 @@ public class JTabbedPane extends JComponent implements Serializable,
}
/**
- * This method removes all tabs and associated components
- * from the JTabbedPane.
+ * This method removes all tabs and associated components from the
+ * JTabbedPane.
*/
public void removeAll()
{
@@ -1102,8 +1103,7 @@ public class JTabbedPane extends JComponent implements Serializable,
}
/**
- * This method returns the number of runs used
- * to paint the JTabbedPane.
+ * This method returns the number of runs used to paint the JTabbedPane.
*
* @return The number of runs.
*/
@@ -1204,8 +1204,8 @@ public class JTabbedPane extends JComponent implements Serializable,
}
/**
- * This method returns whether this tab is enabled.
- * Disabled tabs cannot be selected.
+ * This method returns whether this tab is enabled. Disabled tabs cannot be
+ * selected.
*
* @param index The index of the tab.
*
@@ -1244,8 +1244,7 @@ public class JTabbedPane extends JComponent implements Serializable,
}
/**
- * This method returns the bounds of the tab given
- * the index.
+ * This method returns the bounds of the tab given the index.
*
* @param index The index of the tab.
*
@@ -1441,9 +1440,9 @@ public class JTabbedPane extends JComponent implements Serializable,
}
/**
- * This method returns a tab index given an (x,y) location. The origin
- * of the (x,y) pair will be the JTabbedPane's top left position. The
- * tab returned will be the one that contains the point. This method is
+ * This method returns a tab index given an (x,y) location. The origin of
+ * the (x,y) pair will be the JTabbedPane's top left position. The tab
+ * returned will be the one that contains the point. This method is
* delegated to the UI.
*
* @param x The x coordinate of the point.
@@ -1470,8 +1469,8 @@ public class JTabbedPane extends JComponent implements Serializable,
}
/**
- * This method returns a string representation of this JTabbedPane. It
- * is mainly used for debugging purposes.
+ * This method returns a string representation of this JTabbedPane. It is
+ * mainly used for debugging purposes.
*
* @return A string representation of this JTabbedPane.
*/
diff --git a/javax/swing/SpinnerNumberModel.java b/javax/swing/SpinnerNumberModel.java
index 64b44f2f5..18588b51b 100644
--- a/javax/swing/SpinnerNumberModel.java
+++ b/javax/swing/SpinnerNumberModel.java
@@ -39,14 +39,22 @@ package javax.swing;
/**
* SpinnerNumberModel
- * @author Ka-Hing Cheung
- * @version 1.0
+ *
+ * @author Ka-Hing Cheung
+ * @version 1.0
*/
public class SpinnerNumberModel extends AbstractSpinnerModel
{
+ /** DOCUMENT ME! */
private Number value;
+
+ /** DOCUMENT ME! */
private Comparable minimum;
+
+ /** DOCUMENT ME! */
private Comparable maximum;
+
+ /** DOCUMENT ME! */
private Number stepSize;
/**
@@ -65,8 +73,6 @@ public class SpinnerNumberModel extends AbstractSpinnerModel
* @param minimum the minimum value
* @param maximum the maximum value
* @param stepSize the step size
- * @throws IllegalArgumentException if minimum &lt;= value &lt;= maximum does not
- * hold
*/
public SpinnerNumberModel(double value, double minimum, double maximum,
double stepSize)
@@ -82,8 +88,6 @@ public class SpinnerNumberModel extends AbstractSpinnerModel
* @param minimum the minimum value
* @param maximum the maximum value
* @param stepSize the step size
- * @throws IllegalArgumentException if minimum &lt;= value &lt;= maximum does not
- * hold
*/
public SpinnerNumberModel(int value, int minimum, int maximum, int stepSize)
{
@@ -99,48 +103,47 @@ public class SpinnerNumberModel extends AbstractSpinnerModel
* @param minimum the minimum value, if null there's no minimum
* @param maximum the maximum value, if null there's no maximum
* @param stepSize the step size
- * @throws IllegalArgumentException if minimum &lt;= value &lt;= maximum does not
- * hold
+ *
+ * @throws IllegalArgumentException if minimum &lt;= value &lt;= maximum
+ * does not hold
*/
- public SpinnerNumberModel(Number value, Comparable minimum,
+ public SpinnerNumberModel(Number value, Comparable minimum,
Comparable maximum, Number stepSize)
{
- if(stepSize == null)
+ if (stepSize == null)
throw new IllegalArgumentException("stepSize may not be null");
- if(value == null)
+ if (value == null)
throw new IllegalArgumentException("value may not be null");
- if(minimum != null)
+ if (minimum != null)
{
- if(minimum.compareTo(value) > 0)
- throw new IllegalArgumentException("minimum is not <= value");
+ if (minimum.compareTo(value) > 0)
+ throw new IllegalArgumentException("minimum is not <= value");
}
else
- {
- minimum = new Comparable()
+ minimum = new Comparable()
{
public int compareTo(Object obj)
{
return -1;
}
};
- }
-
- if(maximum != null)
+
+
+ if (maximum != null)
{
- if(maximum.compareTo(value) < 0)
+ if (maximum.compareTo(value) < 0)
throw new IllegalArgumentException("maximum is not >= value");
}
else
- {
- maximum = new Comparable()
+ maximum = new Comparable()
{
public int compareTo(Object obj)
{
return 1;
}
};
- }
-
+
+
this.value = value;
this.stepSize = stepSize;
this.minimum = minimum;
@@ -151,12 +154,13 @@ public class SpinnerNumberModel extends AbstractSpinnerModel
* Sets the new value and fire a change event
*
* @param value the new value
- * @throws IllegalArgumentException if minimum &lt;= value &lt;= maximum does not
- * hold
+ *
+ * @throws IllegalArgumentException if minimum &lt;= value &lt;= maximum
+ * does not hold
*/
public void setValue(Object value)
{
- if(! (value instanceof Number))
+ if (! (value instanceof Number))
throw new IllegalArgumentException("value must be a Number");
this.value = (Number) value;
@@ -183,37 +187,25 @@ public class SpinnerNumberModel extends AbstractSpinnerModel
{
Number num;
- if(value instanceof Double)
- {
- num = new Double(value.doubleValue() + stepSize.doubleValue());
- }
- else if(value instanceof Float)
- {
- num = new Double(value.floatValue() + stepSize.floatValue());
- }
- else if(value instanceof Long)
- {
- num = new Long(value.longValue() + stepSize.longValue());
- }
- else if(value instanceof Integer)
- {
- num = new Integer(value.intValue() + stepSize.intValue());
- }
- else if(value instanceof Short)
- {
- num = new Short((short) (value.shortValue() + stepSize.shortValue()));
- }
+ if (value instanceof Double)
+ num = new Double(value.doubleValue() + stepSize.doubleValue());
+ else if (value instanceof Float)
+ num = new Double(value.floatValue() + stepSize.floatValue());
+ else if (value instanceof Long)
+ num = new Long(value.longValue() + stepSize.longValue());
+ else if (value instanceof Integer)
+ num = new Integer(value.intValue() + stepSize.intValue());
+ else if (value instanceof Short)
+ num = new Short((short) (value.shortValue() + stepSize.shortValue()));
else
- {
- num = new Byte((byte) (value.byteValue() + stepSize.byteValue()));
- }
+ num = new Byte((byte) (value.byteValue() + stepSize.byteValue()));
return maximum.compareTo(num) >= 0 ? num : null;
}
/**
- * Gets the previous value without changing the current value, or null if the
- * current value is minimum.
+ * Gets the previous value without changing the current value, or null if
+ * the current value is minimum.
*
* @return the previous value
*/
@@ -221,34 +213,27 @@ public class SpinnerNumberModel extends AbstractSpinnerModel
{
Number num;
- if(value instanceof Double)
- {
- num = new Double(value.doubleValue() - stepSize.doubleValue());
- }
- else if(value instanceof Float)
- {
- num = new Double(value.floatValue() - stepSize.floatValue());
- }
- else if(value instanceof Long)
- {
- num = new Long(value.longValue() - stepSize.longValue());
- }
- else if(value instanceof Integer)
- {
- num = new Integer(value.intValue() - stepSize.intValue());
- }
- else if(value instanceof Short)
- {
- num = new Short((short) (value.shortValue() - stepSize.shortValue()));
- }
+ if (value instanceof Double)
+ num = new Double(value.doubleValue() - stepSize.doubleValue());
+ else if (value instanceof Float)
+ num = new Double(value.floatValue() - stepSize.floatValue());
+ else if (value instanceof Long)
+ num = new Long(value.longValue() - stepSize.longValue());
+ else if (value instanceof Integer)
+ num = new Integer(value.intValue() - stepSize.intValue());
+ else if (value instanceof Short)
+ num = new Short((short) (value.shortValue() - stepSize.shortValue()));
else
- {
- num = new Byte((byte) (value.byteValue() - stepSize.byteValue()));
- }
+ num = new Byte((byte) (value.byteValue() - stepSize.byteValue()));
- return maximum.compareTo(num) >= 0 ? num : null;
+ return minimum.compareTo(num) <= 0 ? num : null;
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
public Number getNumber()
{
return value;
diff --git a/javax/swing/Timer.java b/javax/swing/Timer.java
index 7b80c7a34..a005346f7 100644
--- a/javax/swing/Timer.java
+++ b/javax/swing/Timer.java
@@ -172,7 +172,7 @@ public class Timer implements Serializable
}
catch (Exception e)
{
- System.out.println("swing.Timer::" + e);
+// System.out.println("swing.Timer::" + e);
}
}
}
@@ -374,7 +374,7 @@ public class Timer implements Serializable
public void start()
{
if (isRunning())
- return;
+ return;
waker = new Waker();
waker.start();
}
diff --git a/javax/swing/ToolTipManager.java b/javax/swing/ToolTipManager.java
index e0a018237..3556ef005 100644
--- a/javax/swing/ToolTipManager.java
+++ b/javax/swing/ToolTipManager.java
@@ -460,6 +460,8 @@ public class ToolTipManager extends MouseAdapter implements MouseMotionListener
public void mouseMoved(MouseEvent event)
{
currentPoint = event.getPoint();
+ if (currentTip != null)
+ currentTip.setTipText(((JComponent) currentComponent).getToolTipText(event));
if (enterTimer.isRunning())
enterTimer.restart();
}
diff --git a/javax/swing/colorchooser/AbstractColorChooserPanel.java b/javax/swing/colorchooser/AbstractColorChooserPanel.java
index 3fa0ad194..37d627698 100644
--- a/javax/swing/colorchooser/AbstractColorChooserPanel.java
+++ b/javax/swing/colorchooser/AbstractColorChooserPanel.java
@@ -35,7 +35,6 @@ this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
-
package javax.swing.colorchooser;
import java.awt.Color;
@@ -44,92 +43,119 @@ import javax.swing.Icon;
import javax.swing.JColorChooser;
import javax.swing.JPanel;
+
/**
* AbstractColorChooserPanel
- * @author Andrew Selkirk
- * @version 1.0
+ *
+ * @author Andrew Selkirk
+ * @version 1.0
*/
public abstract class AbstractColorChooserPanel extends JPanel
{
+ /** DOCUMENT ME! */
private static final long serialVersionUID = -977469671210173863L;
- /**
- * chooser
- */
- private JColorChooser chooser;
-
- /**
- * Constructor AbstractColorChooserPanel
- */
- public AbstractColorChooserPanel() {
- // TODO
- } // AbstractColorChooserPanel()
-
- /**
- * getDisplayName
- * @returns String
- */
- public abstract String getDisplayName();
-
- /**
- * updateChooser
- */
- public abstract void updateChooser();
-
- /**
- * buildChooser
- */
- protected abstract void buildChooser();
-
- /**
- * getSmallDisplayIcon
- * @returns Icon
- */
- public abstract Icon getSmallDisplayIcon();
-
- /**
- * getLargeDisplayIcon
- * @returns Icon
- */
- public abstract Icon getLargeDisplayIcon();
-
- /**
- * installChooserPanel
- * @param chooser TODO
- */
- public void installChooserPanel(JColorChooser chooser) {
- // TODO
- } // installChooserPanel()
-
- /**
- * uninstallChooserPanel
- * @param chooser TODO
- */
- public void uninstallChooserPanel(JColorChooser chooser) {
- // TODO
- } // uninstallChooserPanel()
-
- /**
- * getColorSelectionModel
- * @returns ColorSelectionModel
- */
- public ColorSelectionModel getColorSelectionModel() {
- return null; // TODO
- } // getColorSelectionModel()
-
- /**
- * getColorFromModel
- * @returns Color
- */
- protected Color getColorFromModel() {
- return null; // TODO
- } // getColorFromModel()
-
- /**
- * paint
- * @param graphics TODO
- */
- public void paint(Graphics graphics) {
- // TODO
- } // paint()
+ /** The chooser associated with this panel. */
+ private JColorChooser chooser;
+
+ /**
+ * This is the constructor for the AbstractColorChooserPanel.
+ */
+ public AbstractColorChooserPanel()
+ {
+ } // AbstractColorChooserPanel()
+
+ /**
+ * This method returns the name displayed in the tab for this chooser panel.
+ *
+ * @return The name displayed in the JTabbedPane's tabs.
+ */
+ public abstract String getDisplayName();
+
+ /**
+ * This method updates the chooser panel when the JColorChooser's color has
+ * changed.
+ */
+ public abstract void updateChooser();
+
+ /**
+ * This method constructs and does any initialization necessary for the
+ * chooser panel.
+ */
+ protected abstract void buildChooser();
+
+ /**
+ * This method sets the small icon used in the JTabbedPane for this chooser
+ * panel.
+ *
+ * @return The small icon used in the JTabbedPane.
+ */
+ public abstract Icon getSmallDisplayIcon();
+
+ /**
+ * This method sets the large icon useed in the jTabbedPane for this chooser
+ * panel.
+ *
+ * @return The large icon.
+ */
+ public abstract Icon getLargeDisplayIcon();
+
+ /**
+ * This method installs the chooser panel for the given JColorChooser.
+ *
+ * @param chooser The JColorChooser that will have this panel installed.
+ */
+ public void installChooserPanel(JColorChooser chooser)
+ {
+ this.chooser = chooser;
+ buildChooser();
+ } // installChooserPanel()
+
+ /**
+ * This method removes the chooser panel from the given JColorChooser and
+ * does any necessary clean up for the chooser panel.
+ *
+ * @param chooser The JColorChooser that is having this panel removed.
+ */
+ public void uninstallChooserPanel(JColorChooser chooser)
+ {
+ this.chooser = null;
+ } // uninstallChooserPanel()
+
+ /**
+ * This method returns the ColorSelectionModel for the JColorChooser
+ * associated with this chooser panel.
+ *
+ * @return The ColorSelectionModel for the JColorChooser associated with
+ * this chooser panel.
+ */
+ public ColorSelectionModel getColorSelectionModel()
+ {
+ if (chooser != null)
+ return chooser.getSelectionModel();
+ return null;
+ } // getColorSelectionModel()
+
+ /**
+ * This method returns the current color stored in the model for this
+ * chooser panel.
+ *
+ * @return The current color.
+ */
+ protected Color getColorFromModel()
+ {
+ if (chooser != null)
+ return chooser.getColor();
+ return null;
+ } // getColorFromModel()
+
+ /**
+ * This method paints the chooser panel.
+ *
+ * @param graphics The Graphics object to paint with.
+ */
+ public void paint(Graphics graphics)
+ {
+ super.paint(graphics);
+ } // paint()
} // AbstractColorChooserPanel
diff --git a/javax/swing/colorchooser/ColorChooserComponentFactory.java b/javax/swing/colorchooser/ColorChooserComponentFactory.java
index ffd8718ea..6e7ca33d7 100644
--- a/javax/swing/colorchooser/ColorChooserComponentFactory.java
+++ b/javax/swing/colorchooser/ColorChooserComponentFactory.java
@@ -35,49 +35,51 @@ this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
-
package javax.swing.colorchooser;
import javax.swing.JComponent;
+
/**
* ColorChooserComponentFactory
- * @author Andrew Selkirk
- * @version 1.0
+ *
+ * @author Andrew Selkirk
+ * @version 1.0
*/
-public class ColorChooserComponentFactory {
-
- //-------------------------------------------------------------
- // Initialization ---------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * Constructor ColorChooserComponentFactory
- */
- private ColorChooserComponentFactory() {
- // TODO
- } // ColorChooserComponentFactory()
-
-
- //-------------------------------------------------------------
- // Methods ----------------------------------------------------
- //-------------------------------------------------------------
-
- /**
- * getDefaultChooserPanels
- * @returns AbstractColorChooserPanel[]
- */
- public static AbstractColorChooserPanel[] getDefaultChooserPanels() {
- return null; // TODO
- } // getDefaultChooserPanels()
-
- /**
- * getPreviewPanel
- * @returns JComponent
- */
- public static JComponent getPreviewPanel() {
- return null; // TODO
- } // getPreviewPanel()
-
-
+public class ColorChooserComponentFactory
+{
+ /**
+ * Constructor ColorChooserComponentFactory
+ */
+ private ColorChooserComponentFactory()
+ {
+ } // ColorChooserComponentFactory()
+
+ /**
+ * This method returns the three default chooser panels to be used in
+ * JColorChooser.
+ *
+ * @return The default chooser panels.
+ */
+ public static AbstractColorChooserPanel[] getDefaultChooserPanels()
+ {
+ AbstractColorChooserPanel[] values =
+ {
+ new DefaultSwatchChooserPanel(),
+ new DefaultHSBChooserPanel(),
+ new DefaultRGBChooserPanel()
+ };
+ return values;
+ }
+
+ /**
+ * This method returns the default preview panel to be used with
+ * JColorChoosers.
+ *
+ * @return The default preview panel.
+ */
+ public static JComponent getPreviewPanel()
+ {
+ return new DefaultPreviewPanel();
+ } // getPreviewPanel()
} // ColorChooserComponentFactory
diff --git a/javax/swing/colorchooser/DefaultColorSelectionModel.java b/javax/swing/colorchooser/DefaultColorSelectionModel.java
index 43df7edff..90145edce 100644
--- a/javax/swing/colorchooser/DefaultColorSelectionModel.java
+++ b/javax/swing/colorchooser/DefaultColorSelectionModel.java
@@ -35,7 +35,6 @@ this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
-
package javax.swing.colorchooser;
import java.awt.Color;
@@ -44,43 +43,55 @@ import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.EventListenerList;
+
/**
- * DefaultColorSelectionModel
- * @author Andrew Selkirk
- * @version 1.0
+ * This is the default implementation of the ColorSelectionModel interface
+ * that JColorChoosers use.
+ *
+ * @author Andrew Selkirk
+ * @version 1.0
*/
-public class DefaultColorSelectionModel
- implements ColorSelectionModel, Serializable
+public class DefaultColorSelectionModel implements ColorSelectionModel,
+ Serializable
{
+ /** DOCUMENT ME! */
private static final long serialVersionUID = -8117143602864778804L;
+ /** The currently selected color. */
private Color selectedColor;
- protected transient ChangeEvent changeEvent = new ChangeEvent (this);
- protected EventListenerList listenerList = new EventListenerList ();
+ /** The ChangeEvent fired to all ChangeListeners. */
+ protected transient ChangeEvent changeEvent = new ChangeEvent(this);
+
+ /** The list of listeners. */
+ protected EventListenerList listenerList = new EventListenerList();
/**
- * Creates a new color selection model.
+ * Creates a new color selection model with the default white color.
*/
public DefaultColorSelectionModel()
{
- this (Color.white);
+ this(Color.white);
}
/**
* Creates a new color selection model with a given selected color.
- *
- * @param color The selected color.
+ *
+ * @param color The initial color.
+ *
+ * @throws Error If the color is null.
*/
- public DefaultColorSelectionModel (Color color)
+ public DefaultColorSelectionModel(Color color)
{
super();
+ if (color == null)
+ throw new Error("ColorSelectionModel cannot be set to have null color.");
this.selectedColor = color;
}
/**
* Returns the selected color.
- *
+ *
* @return The selected color.
*/
public Color getSelectedColor()
@@ -89,31 +100,41 @@ public class DefaultColorSelectionModel
}
/**
+ * This method sets the color.
+ *
* @param color The color to set.
+ *
+ * @throws Error If the color is set.
*/
- public void setSelectedColor (Color color)
+ public void setSelectedColor(Color color)
{
- this.selectedColor = color;
+ if (color == null)
+ throw new Error("ColorSelectionModel cannot be set to have null color.");
+ if (color != selectedColor)
+ {
+ this.selectedColor = color;
+ fireStateChanged();
+ }
}
/**
* Adds a listener to this model.
- *
+ *
* @param listener The listener to add.
*/
- public void addChangeListener (ChangeListener listener)
+ public void addChangeListener(ChangeListener listener)
{
- listenerList.add (ChangeListener.class, listener);
+ listenerList.add(ChangeListener.class, listener);
}
/**
* Removes a listener from this model.
- *
+ *
* @param listener The listener to remove.
*/
- public void removeChangeListener (ChangeListener listener)
+ public void removeChangeListener(ChangeListener listener)
{
- listenerList.remove (ChangeListener.class, listener);
+ listenerList.remove(ChangeListener.class, listener);
}
/**
@@ -123,19 +144,19 @@ public class DefaultColorSelectionModel
*/
public ChangeListener[] getChangeListeners()
{
- return (ChangeListener[]) listenerList.getListeners (ChangeListener.class);
+ return (ChangeListener[]) listenerList.getListeners(ChangeListener.class);
}
/**
* Calls all the <code>stateChanged()</code> method of all added
- * <code>ChangeListener</code> objects with <code>changeEvent</code>
- * as argument.
+ * <code>ChangeListener</code> objects with <code>changeEvent</code> as
+ * argument.
*/
protected void fireStateChanged()
{
ChangeListener[] listeners = getChangeListeners();
for (int i = 0; i < listeners.length; i++)
- listeners [i].stateChanged (changeEvent);
+ listeners[i].stateChanged(changeEvent);
}
}
diff --git a/javax/swing/plaf/basic/BasicArrowButton.java b/javax/swing/plaf/basic/BasicArrowButton.java
index 765210725..22f5f45f6 100644
--- a/javax/swing/plaf/basic/BasicArrowButton.java
+++ b/javax/swing/plaf/basic/BasicArrowButton.java
@@ -350,30 +350,30 @@ public class BasicArrowButton extends JButton implements SwingConstants
{
Polygon arrow;
double dsize = (double) size;
-
+
+ int one = (int) (dsize * 1 / 10);
int two = (int) (dsize * 2 / 10);
- int three = (int) (dsize * 3 / 10);
- int five = (int) (dsize * 5 / 10);
- int seven = (int) (dsize * 7 / 10);
+ int five = (int) (dsize * 5 / 10);
int eight = (int) (dsize * 8 / 10);
+
switch (direction)
{
case NORTH:
- arrow = new Polygon(new int[] { two, five, eight },
- new int[] { seven, three, seven }, 3);
+ arrow = new Polygon(new int[] { eight, five, one },
+ new int[] { eight, one, eight }, 3);
break;
case SOUTH:
- arrow = new Polygon(new int[] { two, five, eight },
- new int[] { three, seven, three }, 3);
+ arrow = new Polygon(new int[] { eight, five, two },
+ new int[] { two, eight, two }, 3);
break;
case EAST:
case RIGHT:
- arrow = new Polygon(new int[] { three, seven, three },
+ arrow = new Polygon(new int[] { two, eight, two },
new int[] { two, five, eight }, 3);
break;
case WEST:
case LEFT:
- arrow = new Polygon(new int[] { seven, three, seven },
+ arrow = new Polygon(new int[] { eight, two, eight },
new int[] { two, five, eight }, 3);
break;
default:
diff --git a/javax/swing/plaf/basic/BasicSliderUI.java b/javax/swing/plaf/basic/BasicSliderUI.java
index 196a9f168..60330ea00 100644
--- a/javax/swing/plaf/basic/BasicSliderUI.java
+++ b/javax/swing/plaf/basic/BasicSliderUI.java
@@ -1226,6 +1226,7 @@ public class BasicSliderUI extends SliderUI
if (slider.getLabelTable() == null)
return 0;
+ Dimension pref;
for (Enumeration list = slider.getLabelTable().elements();
list.hasMoreElements();)
{
@@ -1233,8 +1234,9 @@ public class BasicSliderUI extends SliderUI
if (! (comp instanceof Component))
continue;
label = (Component) comp;
- if (label.getWidth() > widest)
- widest = label.getWidth();
+ pref = label.getPreferredSize();
+ if (pref != null && pref.width > widest)
+ widest = pref.width;
}
return widest;
}
@@ -1252,7 +1254,7 @@ public class BasicSliderUI extends SliderUI
if (slider.getLabelTable() == null)
return 0;
-
+ Dimension pref;
for (Enumeration list = slider.getLabelTable().elements();
list.hasMoreElements();)
{
@@ -1260,8 +1262,9 @@ public class BasicSliderUI extends SliderUI
if (! (comp instanceof Component))
continue;
label = (Component) comp;
- if (label.getHeight() > tallest)
- tallest = label.getHeight();
+ pref = label.getPreferredSize();
+ if (pref != null && pref.height > tallest)
+ tallest = pref.height;
}
return tallest;
}
diff --git a/javax/swing/plaf/basic/BasicSpinnerUI.java b/javax/swing/plaf/basic/BasicSpinnerUI.java
index 301f5f049..0f5e761d3 100644
--- a/javax/swing/plaf/basic/BasicSpinnerUI.java
+++ b/javax/swing/plaf/basic/BasicSpinnerUI.java
@@ -44,8 +44,8 @@ import java.awt.Insets;
import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
-import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.JButton;
@@ -54,20 +54,26 @@ import javax.swing.JSpinner;
import javax.swing.Timer;
import javax.swing.UIDefaults;
import javax.swing.UIManager;
-import javax.swing.plaf.SpinnerUI;
import javax.swing.plaf.ComponentUI;
+import javax.swing.plaf.SpinnerUI;
+
/**
- * @since 1.4
- * @see javax.swing.JSpinner
+ * DOCUMENT ME!
+ *
* @author Ka-Hing Cheung
+ *
+ * @see javax.swing.JSpinner
+ * @since 1.4
*/
public class BasicSpinnerUI extends SpinnerUI
{
/**
- * Creates a new <code>ComponentUI</code> for the specified
+ * Creates a new <code>ComponentUI</code> for the specified
* <code>JComponent</code>
*
+ * @param c DOCUMENT ME!
+ *
* @return a ComponentUI
*/
public static ComponentUI createUI(JComponent c)
@@ -76,10 +82,11 @@ public class BasicSpinnerUI extends SpinnerUI
}
/**
- * Creates an editor component. Really, it just returns
+ * Creates an editor component. Really, it just returns
* <code>JSpinner.getEditor()</code>
*
* @return a JComponent as an editor
+ *
* @see javax.swing.JSpinner#getEditor
*/
protected JComponent createEditor()
@@ -88,13 +95,14 @@ public class BasicSpinnerUI extends SpinnerUI
}
/**
- * Creates a <code>LayoutManager</code> that layouts the sub components.
- * The subcomponents are identifies by the constraint "Next", "Previous" and
+ * Creates a <code>LayoutManager</code> that layouts the sub components. The
+ * subcomponents are identifies by the constraint "Next", "Previous" and
* "Editor"
*
* @return a LayoutManager
+ *
* @see java.awt.LayoutManager
- */
+ */
protected LayoutManager createLayout()
{
return new DefaultLayoutManager();
@@ -123,26 +131,27 @@ public class BasicSpinnerUI extends SpinnerUI
}
/**
- * Creates the <code>PropertyChangeListener</code> that will be attached
- * by <code>installListeners</code>. It should watch for the "editor"
+ * Creates the <code>PropertyChangeListener</code> that will be attached by
+ * <code>installListeners</code>. It should watch for the "editor"
* property, when it's changed, replace the old editor with the new one,
* probably by calling <code>replaceEditor</code>
*
* @return a PropertyChangeListener
+ *
* @see #replaceEditor
- */
+ */
protected PropertyChangeListener createPropertyChangeListener()
{
return new PropertyChangeListener()
{
- public void propertyChange(PropertyChangeEvent evt)
- {
- if("editor".equals(evt.getPropertyName()))
- {
- BasicSpinnerUI.this.replaceEditor((JComponent)evt.getOldValue(),
- (JComponent)evt.getNewValue());
- }
- }
+ public void propertyChange(PropertyChangeEvent evt)
+ {
+ // FIXME: Add check for enabled property change. Need to
+ // disable the buttons.
+ if ("editor".equals(evt.getPropertyName()))
+ BasicSpinnerUI.this.replaceEditor((JComponent) evt.getOldValue(),
+ (JComponent) evt.getNewValue());
+ }
};
}
@@ -153,7 +162,7 @@ public class BasicSpinnerUI extends SpinnerUI
*
* @see #javax.swing.UIManager#getLookAndFeelDefaults
* @see #createLayout
- * @see #installUI
+ * @see #installUI
*/
protected void installDefaults()
{
@@ -166,7 +175,7 @@ public class BasicSpinnerUI extends SpinnerUI
spinner.setBackground(defaults.getColor("Spinner.background"));
spinner.setFont(defaults.getFont("Spinner.font"));
spinner.setBorder(defaults.getBorder("Spinner.border"));
- */
+ */
spinner.setLayout(createLayout());
}
@@ -189,37 +198,38 @@ public class BasicSpinnerUI extends SpinnerUI
protected void installNextButtonListeners(Component c)
{
c.addMouseListener(new MouseAdapter()
- {
- public void mousePressed(MouseEvent evt)
- {
- increment();
- timer.setInitialDelay(500);
- timer.start();
- }
-
- public void mouseReleased(MouseEvent evt)
- {
- timer.stop();
- }
-
- void increment()
{
- Object next = BasicSpinnerUI.this.spinner.getNextValue();
- if(next != null)
- {
- BasicSpinnerUI.this.spinner.getModel().setValue(next);
- }
- }
-
- volatile boolean mouseDown = false;
- Timer timer = new Timer(50, new ActionListener()
- {
- public void actionPerformed(ActionEvent event)
- {
- increment();
- }
- });
- });
+ public void mousePressed(MouseEvent evt)
+ {
+ if (! spinner.isEnabled())
+ return;
+ increment();
+ timer.setInitialDelay(500);
+ timer.start();
+ }
+
+ public void mouseReleased(MouseEvent evt)
+ {
+ timer.stop();
+ }
+
+ void increment()
+ {
+ Object next = BasicSpinnerUI.this.spinner.getNextValue();
+ if (next != null)
+ BasicSpinnerUI.this.spinner.getModel().setValue(next);
+ }
+
+ volatile boolean mouseDown = false;
+ Timer timer = new Timer(50,
+ new ActionListener()
+ {
+ public void actionPerformed(ActionEvent event)
+ {
+ increment();
+ }
+ });
+ });
}
/*
@@ -228,44 +238,46 @@ public class BasicSpinnerUI extends SpinnerUI
protected void installPreviousButtonListeners(Component c)
{
c.addMouseListener(new MouseAdapter()
- {
- public void mousePressed(MouseEvent evt)
- {
- decrement();
- timer.setInitialDelay(500);
- timer.start();
- }
-
- public void mouseReleased(MouseEvent evt)
{
- timer.stop();
- }
-
- void decrement()
- {
- Object prev = BasicSpinnerUI.this.spinner.getPreviousValue();
- if(prev != null)
- {
- BasicSpinnerUI.this.spinner.getModel().setValue(prev);
- }
- }
-
- volatile boolean mouseDown = false;
- Timer timer = new Timer(50, new ActionListener()
- {
- public void actionPerformed(ActionEvent event)
- {
- decrement();
- }
- });
- });
+ public void mousePressed(MouseEvent evt)
+ {
+ if (! spinner.isEnabled())
+ return;
+ decrement();
+ timer.setInitialDelay(500);
+ timer.start();
+ }
+
+ public void mouseReleased(MouseEvent evt)
+ {
+ timer.stop();
+ }
+
+ void decrement()
+ {
+ Object prev = BasicSpinnerUI.this.spinner.getPreviousValue();
+ if (prev != null)
+ BasicSpinnerUI.this.spinner.getModel().setValue(prev);
+ }
+
+ volatile boolean mouseDown = false;
+ Timer timer = new Timer(50,
+ new ActionListener()
+ {
+ public void actionPerformed(ActionEvent event)
+ {
+ decrement();
+ }
+ });
+ });
}
/**
- * Install this UI to the <code>JComponent</code>, which in reality,
- * is a <code>JSpinner</code>. Calls <code>installDefaults</code>,
- * <code>installListeners</code>, and also adds the buttons and
- * editor.
+ * Install this UI to the <code>JComponent</code>, which in reality, is a
+ * <code>JSpinner</code>. Calls <code>installDefaults</code>,
+ * <code>installListeners</code>, and also adds the buttons and editor.
+ *
+ * @param c DOCUMENT ME!
*
* @see #installDefaults
* @see #installListeners
@@ -277,13 +289,13 @@ public class BasicSpinnerUI extends SpinnerUI
{
super.installUI(c);
- spinner = (JSpinner)c;
+ spinner = (JSpinner) c;
installDefaults();
installListeners();
- Component next = createNextButton(),
- previous = createPreviousButton();
+ Component next = createNextButton();
+ Component previous = createPreviousButton();
installNextButtonListeners(next);
installPreviousButtonListeners(previous);
@@ -320,13 +332,15 @@ public class BasicSpinnerUI extends SpinnerUI
*/
protected void uninstallListeners()
{
- spinner.removePropertyChangeListener(listener);
+ spinner.removePropertyChangeListener(listener);
}
/**
* Called when the current L&F is replaced with another one, should call
- * <code>uninstallDefaults</code> and <code>uninstallListeners</code> as well
- * as remove the next/previous buttons and the editor
+ * <code>uninstallDefaults</code> and <code>uninstallListeners</code> as
+ * well as remove the next/previous buttons and the editor
+ *
+ * @param c DOCUMENT ME!
*/
public void uninstallUI(JComponent c)
{
@@ -337,172 +351,222 @@ public class BasicSpinnerUI extends SpinnerUI
c.removeAll();
}
- /**
- * The spinner for this UI
- */
+ /** The spinner for this UI */
protected JSpinner spinner;
+
+ /** DOCUMENT ME! */
private PropertyChangeListener listener = createPropertyChangeListener();
+ /**
+ * DOCUMENT ME!
+ */
private class DefaultLayoutManager implements LayoutManager
{
+ /**
+ * DOCUMENT ME!
+ *
+ * @param parent DOCUMENT ME!
+ */
public void layoutContainer(Container parent)
{
-
- synchronized(parent.getTreeLock())
+ synchronized (parent.getTreeLock())
{
- Insets i = parent.getInsets();
- boolean l2r = parent.getComponentOrientation().isLeftToRight();
- /*
- -------------- --------------
- | | n | | n | |
- | e | - | or | - | e |
- | | p | | p | |
- -------------- --------------
- */
-
- Dimension e = minSize(editor);
- Dimension n = minSize(next);
- Dimension p = minSize(previous);
- Dimension s = spinner.getPreferredSize();
-
- int x = l2r ? i.left : i.right, y = i.top;
- int w = Math.max(p.width, n.width);
- int h = Math.max(p.height, n.height);
- h = Math.max(h, e.height / 2);
- int e_width = s.width - w;
-
- if(l2r)
- {
- setBounds(editor, x, y + (s.height - e.height) / 2, e_width,
- e.height);
- x += e_width;
-
- setBounds(next, x, y, w, h);
- y += h;
-
- setBounds(previous, x, y, w, h);
- }
- else
- {
- setBounds(next, x, y + (s.height - e.height) / 2, w, h);
- y += h;
-
- setBounds(previous, x, y, w, h);
- x += w;
- y -= h;
-
- setBounds(editor, x, y, e_width, e.height);
- }
+ Insets i = parent.getInsets();
+ boolean l2r = parent.getComponentOrientation().isLeftToRight();
+ /*
+ -------------- --------------
+ | | n | | n | |
+ | e | - | or | - | e |
+ | | p | | p | |
+ -------------- --------------
+ */
+ Dimension e = minSize(editor);
+ Dimension n = minSize(next);
+ Dimension p = minSize(previous);
+ Dimension s = spinner.getPreferredSize();
+
+ int x = l2r ? i.left : i.right;
+ int y = i.top;
+ int w = Math.max(p.width, n.width);
+ int h = Math.max(p.height, n.height);
+ h = Math.max(h, e.height / 2);
+ int e_width = s.width - w;
+
+ if (l2r)
+ {
+ setBounds(editor, x, y + (s.height - e.height) / 2, e_width,
+ e.height);
+ x += e_width;
+
+ setBounds(next, x, y, w, h);
+ y += h;
+
+ setBounds(previous, x, y, w, h);
+ }
+ else
+ {
+ setBounds(next, x, y + (s.height - e.height) / 2, w, h);
+ y += h;
+
+ setBounds(previous, x, y, w, h);
+ x += w;
+ y -= h;
+
+ setBounds(editor, x, y, e_width, e.height);
+ }
}
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @param parent DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
public Dimension minimumLayoutSize(Container parent)
{
Dimension d = new Dimension();
- if(editor != null)
+ if (editor != null)
{
- Dimension tmp = editor.getMinimumSize();
- d.width += tmp.width;
- d.height = tmp.height;
+ Dimension tmp = editor.getMinimumSize();
+ d.width += tmp.width;
+ d.height = tmp.height;
}
int nextWidth = 0;
int previousWidth = 0;
int otherHeight = 0;
- if(next != null)
+ if (next != null)
{
- Dimension tmp = next.getMinimumSize();
- nextWidth = tmp.width;
- otherHeight += tmp.height;
+ Dimension tmp = next.getMinimumSize();
+ nextWidth = tmp.width;
+ otherHeight += tmp.height;
}
- if(previous != null)
+ if (previous != null)
{
- Dimension tmp = previous.getMinimumSize();
- previousWidth = tmp.width;
- otherHeight += tmp.height;
+ Dimension tmp = previous.getMinimumSize();
+ previousWidth = tmp.width;
+ otherHeight += tmp.height;
}
d.height = Math.max(d.height, otherHeight);
d.width += Math.max(nextWidth, previousWidth);
-
return d;
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @param parent DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
public Dimension preferredLayoutSize(Container parent)
{
Dimension d = new Dimension();
- if(editor != null)
+ if (editor != null)
{
- Dimension tmp = editor.getPreferredSize();
- d.width += Math.max(tmp.width, 40);
- d.height = tmp.height;
+ Dimension tmp = editor.getPreferredSize();
+ d.width += Math.max(tmp.width, 40);
+ d.height = tmp.height;
}
int nextWidth = 0;
int previousWidth = 0;
int otherHeight = 0;
- if(next != null)
+ if (next != null)
{
- Dimension tmp = next.getPreferredSize();
- nextWidth = tmp.width;
- otherHeight += tmp.height;
+ Dimension tmp = next.getPreferredSize();
+ nextWidth = tmp.width;
+ otherHeight += tmp.height;
}
- if(previous != null)
+ if (previous != null)
{
- Dimension tmp = previous.getPreferredSize();
- previousWidth = tmp.width;
- otherHeight += tmp.height;
+ Dimension tmp = previous.getPreferredSize();
+ previousWidth = tmp.width;
+ otherHeight += tmp.height;
}
d.height = Math.max(d.height, otherHeight);
d.width += Math.max(nextWidth, previousWidth);
-
return d;
}
- public void removeLayoutComponent(Component child)
+ /**
+ * DOCUMENT ME!
+ *
+ * @param child DOCUMENT ME!
+ */
+ public void removeLayoutComponent(Component child)
{
- if(child == editor)
- editor = null;
- else if(child == next)
- next = null;
- else if(previous == child)
- previous = null;
+ if (child == editor)
+ editor = null;
+ else if (child == next)
+ next = null;
+ else if (previous == child)
+ previous = null;
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @param name DOCUMENT ME!
+ * @param child DOCUMENT ME!
+ */
public void addLayoutComponent(String name, Component child)
{
- if("Editor".equals(name))
- editor = child;
- else if("Next".equals(name))
- next = child;
- else if("Previous".equals(name))
- previous = child;
+ if ("Editor".equals(name))
+ editor = child;
+ else if ("Next".equals(name))
+ next = child;
+ else if ("Previous".equals(name))
+ previous = child;
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @param c DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
private Dimension minSize(Component c)
{
- if(c == null)
- return new Dimension();
+ if (c == null)
+ return new Dimension();
else
- return c.getMinimumSize();
+ return c.getMinimumSize();
}
+ /**
+ * DOCUMENT ME!
+ *
+ * @param c DOCUMENT ME!
+ * @param x DOCUMENT ME!
+ * @param y DOCUMENT ME!
+ * @param w DOCUMENT ME!
+ * @param h DOCUMENT ME!
+ */
private void setBounds(Component c, int x, int y, int w, int h)
{
- if(c != null)
- c.setBounds(x, y, w, h);
+ if (c != null)
+ c.setBounds(x, y, w, h);
}
+ /** DOCUMENT ME! */
private Component editor;
+
+ /** DOCUMENT ME! */
private Component next;
+
+ /** DOCUMENT ME! */
private Component previous;
}
-
}