Initial revision
From-SVN: r102074
This commit is contained in:
parent
6f4434b39b
commit
f911ba985a
4557 changed files with 1000262 additions and 0 deletions
647
libjava/classpath/javax/swing/JScrollBar.java
Normal file
647
libjava/classpath/javax/swing/JScrollBar.java
Normal file
|
@ -0,0 +1,647 @@
|
|||
/* JScrollBar.java --
|
||||
Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
02110-1301 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
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.Adjustable;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.event.AdjustmentEvent;
|
||||
import java.awt.event.AdjustmentListener;
|
||||
|
||||
import javax.accessibility.Accessible;
|
||||
import javax.accessibility.AccessibleContext;
|
||||
import javax.accessibility.AccessibleRole;
|
||||
import javax.accessibility.AccessibleStateSet;
|
||||
import javax.accessibility.AccessibleValue;
|
||||
import javax.swing.plaf.ScrollBarUI;
|
||||
|
||||
/**
|
||||
* The JScrollBar. Two buttons control how the values that the
|
||||
* scroll bar can take. You can also drag the thumb or click the track
|
||||
* to move the scroll bar. Typically, the JScrollBar is used with
|
||||
* other components to translate the value of the bar to the viewable
|
||||
* contents of the other components.
|
||||
*/
|
||||
public class JScrollBar extends JComponent implements Adjustable, Accessible
|
||||
{
|
||||
/**
|
||||
* DOCUMENT ME!
|
||||
*/
|
||||
protected class AccessibleJScrollBar extends JComponent.AccessibleJComponent
|
||||
implements AccessibleValue
|
||||
{
|
||||
private static final long serialVersionUID = -7758162392045586663L;
|
||||
|
||||
/**
|
||||
* Creates a new AccessibleJSlider object.
|
||||
*
|
||||
* @param value0 DOCUMENT ME!
|
||||
*/
|
||||
protected AccessibleJScrollBar()
|
||||
{
|
||||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* DOCUMENT ME!
|
||||
*
|
||||
* @return DOCUMENT ME!
|
||||
*/
|
||||
public AccessibleStateSet getAccessibleStateSet()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* DOCUMENT ME!
|
||||
*
|
||||
* @return DOCUMENT ME!
|
||||
*/
|
||||
public AccessibleRole getAccessibleRole()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* DOCUMENT ME!
|
||||
*
|
||||
* @return DOCUMENT ME!
|
||||
*/
|
||||
public AccessibleValue getAccessibleValue()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* DOCUMENT ME!
|
||||
*
|
||||
* @return DOCUMENT ME!
|
||||
*/
|
||||
public Number getCurrentAccessibleValue()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* setCurrentAccessibleValue
|
||||
*
|
||||
* @param value0 TODO
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public boolean setCurrentAccessibleValue(Number value0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* getMinimumAccessibleValue
|
||||
*
|
||||
* @return Number
|
||||
*/
|
||||
public Number getMinimumAccessibleValue()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* getMaximumAccessibleValue
|
||||
*
|
||||
* @return Number
|
||||
*/
|
||||
public Number getMaximumAccessibleValue()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private static final long serialVersionUID = -8195169869225066566L;
|
||||
|
||||
/** How much the thumb moves when moving in a block. */
|
||||
protected int blockIncrement = 10;
|
||||
|
||||
/** The model that holds the scroll bar's data. */
|
||||
protected BoundedRangeModel model;
|
||||
|
||||
/** The orientation of the scroll bar. */
|
||||
protected int orientation = SwingConstants.VERTICAL;
|
||||
|
||||
/** How much the thumb moves when moving in a unit. */
|
||||
protected int unitIncrement = 1;
|
||||
|
||||
/**
|
||||
* Creates a new horizontal JScrollBar object with a minimum
|
||||
* of 0, a maxmium of 100, a value of 0 and an extent of 10.
|
||||
*/
|
||||
public JScrollBar()
|
||||
{
|
||||
this(SwingConstants.VERTICAL, 0, 10, 0, 100);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new JScrollBar object with a minimum of 0, a
|
||||
* maximum of 100, a value of 0, an extent of 10 and the given
|
||||
* orientation.
|
||||
*
|
||||
* @param orientation The orientation of the JScrollBar.
|
||||
*/
|
||||
public JScrollBar(int orientation)
|
||||
{
|
||||
this(orientation, 0, 10, 0, 100);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new JScrollBar object with the given orientation,
|
||||
* value, min, max, and extent.
|
||||
*
|
||||
* @param orientation The orientation to use.
|
||||
* @param value The value to use.
|
||||
* @param extent The extent to use.
|
||||
* @param min The minimum value of the scrollbar.
|
||||
* @param max The maximum value of the scrollbar.
|
||||
*/
|
||||
public JScrollBar(int orientation, int value, int extent, int min, int max)
|
||||
{
|
||||
model = new DefaultBoundedRangeModel(value, extent, min, max);
|
||||
if (orientation != SwingConstants.HORIZONTAL
|
||||
&& orientation != SwingConstants.VERTICAL)
|
||||
throw new IllegalArgumentException(orientation
|
||||
+ " is not a legal orientation");
|
||||
this.orientation = orientation;
|
||||
updateUI();
|
||||
}
|
||||
|
||||
/**
|
||||
* This method sets the UI of this scrollbar to
|
||||
* the given UI.
|
||||
*
|
||||
* @param ui The UI to use with this scrollbar.
|
||||
*/
|
||||
public void setUI(ScrollBarUI ui)
|
||||
{
|
||||
super.setUI(ui);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns the UI that is being used
|
||||
* with this scrollbar.
|
||||
*
|
||||
* @return The scrollbar's current UI.
|
||||
*/
|
||||
public ScrollBarUI getUI()
|
||||
{
|
||||
return (ScrollBarUI) ui;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method changes the UI to be the
|
||||
* default for the current look and feel.
|
||||
*/
|
||||
public void updateUI()
|
||||
{
|
||||
setUI((ScrollBarUI) UIManager.getUI(this));
|
||||
invalidate();
|
||||
repaint();
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns an identifier to
|
||||
* choose the correct UI delegate for the
|
||||
* scrollbar.
|
||||
*
|
||||
* @return The identifer to choose the UI delegate; "ScrollBarUI"
|
||||
*/
|
||||
public String getUIClassID()
|
||||
{
|
||||
return "ScrollBarUI";
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns the orientation of the scrollbar.
|
||||
*
|
||||
* @return The orientation of the scrollbar.
|
||||
*/
|
||||
public int getOrientation()
|
||||
{
|
||||
return orientation;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method sets the orientation of the scrollbar.
|
||||
*
|
||||
* @param orientation The orientation of the scrollbar.
|
||||
*/
|
||||
public void setOrientation(int orientation)
|
||||
{
|
||||
if (orientation != SwingConstants.HORIZONTAL
|
||||
&& orientation != SwingConstants.VERTICAL)
|
||||
throw new IllegalArgumentException("orientation must be one of HORIZONTAL or VERTICAL");
|
||||
if (orientation != this.orientation)
|
||||
{
|
||||
int oldOrientation = this.orientation;
|
||||
this.orientation = orientation;
|
||||
firePropertyChange("orientation", oldOrientation,
|
||||
this.orientation);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns the model being used with
|
||||
* the scrollbar.
|
||||
*
|
||||
* @return The scrollbar's model.
|
||||
*/
|
||||
public BoundedRangeModel getModel()
|
||||
{
|
||||
return model;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method sets the model to use with
|
||||
* the scrollbar.
|
||||
*
|
||||
* @param newModel The new model to use with the scrollbar.
|
||||
*/
|
||||
public void setModel(BoundedRangeModel newModel)
|
||||
{
|
||||
if (model != newModel)
|
||||
{
|
||||
BoundedRangeModel oldModel = model;
|
||||
model = newModel;
|
||||
firePropertyChange("model", oldModel, model);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns how much the scrollbar's value
|
||||
* should change for a unit increment depending on the
|
||||
* given direction.
|
||||
*
|
||||
* @param direction The direction to scroll in.
|
||||
*
|
||||
* @return The amount the scrollbar's value will change given the direction.
|
||||
*/
|
||||
public int getUnitIncrement(int direction)
|
||||
{
|
||||
return direction * unitIncrement;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method sets the unitIncrement property.
|
||||
*
|
||||
* @param unitIncrement The new unitIncrement.
|
||||
*/
|
||||
public void setUnitIncrement(int unitIncrement)
|
||||
{
|
||||
if (unitIncrement != this.unitIncrement)
|
||||
{
|
||||
int oldInc = this.unitIncrement;
|
||||
this.unitIncrement = unitIncrement;
|
||||
firePropertyChange("unitIncrement", oldInc,
|
||||
this.unitIncrement);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The method returns how much the scrollbar's value
|
||||
* should change for a block increment depending on
|
||||
* the given direction.
|
||||
*
|
||||
* @param direction The direction to scroll in.
|
||||
*
|
||||
* @return The amount the scrollbar's value will change given the direction.
|
||||
*/
|
||||
public int getBlockIncrement(int direction)
|
||||
{
|
||||
return direction * blockIncrement;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method sets the blockIncrement property.
|
||||
*
|
||||
* @param blockIncrement The new blockIncrement.
|
||||
*/
|
||||
public void setBlockIncrement(int blockIncrement)
|
||||
{
|
||||
if (blockIncrement != this.blockIncrement)
|
||||
{
|
||||
int oldInc = this.blockIncrement;
|
||||
this.blockIncrement = blockIncrement;
|
||||
firePropertyChange("blockIncrement", oldInc,
|
||||
this.blockIncrement);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns the unitIncrement.
|
||||
*
|
||||
* @return The unitIncrement.
|
||||
*/
|
||||
public int getUnitIncrement()
|
||||
{
|
||||
return unitIncrement;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns the blockIncrement.
|
||||
*
|
||||
* @return The blockIncrement.
|
||||
*/
|
||||
public int getBlockIncrement()
|
||||
{
|
||||
return blockIncrement;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns the value of the scrollbar.
|
||||
*
|
||||
* @return The value of the scrollbar.
|
||||
*/
|
||||
public int getValue()
|
||||
{
|
||||
return model.getValue();
|
||||
}
|
||||
|
||||
/**
|
||||
* This method changes the value of the scrollbar.
|
||||
*
|
||||
* @param value The new value of the scrollbar.
|
||||
*/
|
||||
public void setValue(int value)
|
||||
{
|
||||
if (isEnabled() && value != getValue())
|
||||
{
|
||||
model.setValue(value);
|
||||
fireAdjustmentValueChanged(AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED,
|
||||
AdjustmentEvent.TRACK, value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns the visible amount (AKA extent).
|
||||
* The visible amount can be used by UI delegates to
|
||||
* determine the size of the thumb.
|
||||
*
|
||||
* @return The visible amount (AKA extent).
|
||||
*/
|
||||
public int getVisibleAmount()
|
||||
{
|
||||
return model.getExtent();
|
||||
}
|
||||
|
||||
/**
|
||||
* This method sets the visible amount (AKA extent).
|
||||
*
|
||||
* @param extent The visible amount (AKA extent).
|
||||
*/
|
||||
public void setVisibleAmount(int extent)
|
||||
{
|
||||
if (extent != getVisibleAmount())
|
||||
{
|
||||
model.setExtent(extent);
|
||||
fireAdjustmentValueChanged(AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED,
|
||||
AdjustmentEvent.TRACK, extent);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns the minimum value of the scrollbar.
|
||||
*
|
||||
* @return The minimum value of the scrollbar.
|
||||
*/
|
||||
public int getMinimum()
|
||||
{
|
||||
return model.getMinimum();
|
||||
}
|
||||
|
||||
/**
|
||||
* This method sets the minimum value of the scrollbar.
|
||||
*
|
||||
* @param minimum The minimum value of the scrollbar.
|
||||
*/
|
||||
public void setMinimum(int minimum)
|
||||
{
|
||||
if (minimum != getMinimum())
|
||||
{
|
||||
model.setMinimum(minimum);
|
||||
fireAdjustmentValueChanged(AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED,
|
||||
AdjustmentEvent.TRACK, minimum);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns the maximum value of the scrollbar.
|
||||
*
|
||||
* @return The maximum value of the scrollbar.
|
||||
*/
|
||||
public int getMaximum()
|
||||
{
|
||||
return model.getMaximum();
|
||||
}
|
||||
|
||||
/**
|
||||
* This method sets the maximum value of the scrollbar.
|
||||
*
|
||||
* @param maximum The maximum value of the scrollbar.
|
||||
*/
|
||||
public void setMaximum(int maximum)
|
||||
{
|
||||
if (maximum != getMaximum())
|
||||
{
|
||||
model.setMaximum(maximum);
|
||||
fireAdjustmentValueChanged(AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED,
|
||||
AdjustmentEvent.TRACK, maximum);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns the model's isAjusting value.
|
||||
*
|
||||
* @return The model's isAdjusting value.
|
||||
*/
|
||||
public boolean getValueIsAdjusting()
|
||||
{
|
||||
return model.getValueIsAdjusting();
|
||||
}
|
||||
|
||||
/**
|
||||
* This method sets the model's isAdjusting value.
|
||||
*
|
||||
* @param b The new isAdjusting value.
|
||||
*/
|
||||
public void setValueIsAdjusting(boolean b)
|
||||
{
|
||||
model.setValueIsAdjusting(b);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method sets the value, extent, minimum and
|
||||
* maximum.
|
||||
*
|
||||
* @param newValue The new value.
|
||||
* @param newExtent The new extent.
|
||||
* @param newMin The new minimum.
|
||||
* @param newMax The new maximum.
|
||||
*/
|
||||
public void setValues(int newValue, int newExtent, int newMin, int newMax)
|
||||
{
|
||||
if (!isEnabled())
|
||||
newValue = model.getValue();
|
||||
// It seems to be that on any change the value is fired.
|
||||
if (newValue != getValue() || newExtent != getVisibleAmount() ||
|
||||
newMin != getMinimum() || newMax != getMaximum())
|
||||
{
|
||||
model.setRangeProperties(newValue, newExtent, newMin, newMax,
|
||||
model.getValueIsAdjusting());
|
||||
fireAdjustmentValueChanged(AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED,
|
||||
AdjustmentEvent.TRACK, newValue);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method adds an AdjustmentListener to the scroll bar.
|
||||
*
|
||||
* @param listener The listener to add.
|
||||
*/
|
||||
public void addAdjustmentListener(AdjustmentListener listener)
|
||||
{
|
||||
listenerList.add(AdjustmentListener.class, listener);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method removes an AdjustmentListener from the scroll bar.
|
||||
*
|
||||
* @param listener The listener to remove.
|
||||
*/
|
||||
public void removeAdjustmentListener(AdjustmentListener listener)
|
||||
{
|
||||
listenerList.remove(AdjustmentListener.class, listener);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns an arry of all AdjustmentListeners listening to
|
||||
* this scroll bar.
|
||||
*
|
||||
* @return An array of AdjustmentListeners listening to this scroll bar.
|
||||
*/
|
||||
public AdjustmentListener[] getAdjustmentListeners()
|
||||
{
|
||||
return (AdjustmentListener[]) listenerList.getListeners(AdjustmentListener.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called to fired AdjustmentEvents to the listeners
|
||||
* of this scroll bar. All AdjustmentEvents that are fired
|
||||
* will have an ID of ADJUSTMENT_VALUE_CHANGED and a type of
|
||||
* TRACK.
|
||||
*
|
||||
* @param id The ID of the adjustment event.
|
||||
* @param type The Type of change.
|
||||
* @param value The new value for the property that was changed..
|
||||
*/
|
||||
protected void fireAdjustmentValueChanged(int id, int type, int value)
|
||||
{
|
||||
Object[] adjustmentListeners = listenerList.getListenerList();
|
||||
AdjustmentEvent adjustmentEvent = new AdjustmentEvent(this,
|
||||
AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED,
|
||||
AdjustmentEvent.TRACK,
|
||||
value);
|
||||
for (int i = adjustmentListeners.length - 2; i >= 0; i -= 2)
|
||||
{
|
||||
if (adjustmentListeners[i] == AdjustmentListener.class)
|
||||
((AdjustmentListener) adjustmentListeners[i + 1]).adjustmentValueChanged(adjustmentEvent);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns the minimum size for this scroll bar.
|
||||
*
|
||||
* @return The minimum size.
|
||||
*/
|
||||
public Dimension getMinimumSize()
|
||||
{
|
||||
return ui.getMinimumSize(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns the maximum size for this scroll bar.
|
||||
*
|
||||
* @return The maximum size.
|
||||
*/
|
||||
public Dimension getMaximumSize()
|
||||
{
|
||||
return ui.getMaximumSize(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method overrides the setEnabled in JComponent.
|
||||
* When the scroll bar is disabled, the knob cannot
|
||||
* be moved.
|
||||
*
|
||||
* @param x Whether the scrollbar is enabled.
|
||||
*/
|
||||
public void setEnabled(boolean x)
|
||||
{
|
||||
// nothing special needs to be done here since we
|
||||
// just check the enabled setting before changing the value.
|
||||
super.setEnabled(x);
|
||||
}
|
||||
|
||||
/**
|
||||
* A string that describes this JScrollBar. Normally only used
|
||||
* for debugging.
|
||||
*
|
||||
* @return A string describing this JScrollBar.
|
||||
*/
|
||||
protected String paramString()
|
||||
{
|
||||
return "JScrollBar";
|
||||
}
|
||||
|
||||
/**
|
||||
* DOCUMENT ME!
|
||||
*
|
||||
* @return DOCUMENT ME!
|
||||
*/
|
||||
public AccessibleContext getAccessibleContext()
|
||||
{
|
||||
if (accessibleContext == null)
|
||||
accessibleContext = new AccessibleJScrollBar();
|
||||
return accessibleContext;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue