/*
@(#) $Id: Slider.java,v 1.7 2000-04-19 18:37:20 billh Exp $
VisAD Utility Library: Widgets for use in building applications with
the VisAD interactive analysis and visualization library
Copyright (C) 2017 Nick Rasmussen
VisAD is Copyright (C) 1996 - 2017 Bill Hibbard, Curtis Rueden, Tom
Rink and Dave Glowacki.
This program 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 1, or (at your option)
any later version.
This program 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 in file NOTICE for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package visad.util;
import java.util.Vector;
import javax.swing.JPanel;
/**
* An abstract class which is very similar to java.awt.ScrollBar, except using
* all floating point values and having an internal name.
*
* Although the interface has nothing to do with orientation, a horizontal
* orientation will be assumed by several other classes
*
* @author Nick Rasmussen nick@cae.wisc.edu
* @version $Revision: 1.7 $, $Date: 2000-04-19 18:37:20 $
* @since Visad Utility Library v0.7.1
*/
public abstract class Slider extends JPanel {
/**
* The internal name of the slider, accessed through getName()
* @see #getName
*/
protected String name;
/** Get the internal name for this slider */
public String getName() {
return name;
}
/** Return the minimum value of this slider */
public abstract float getMinimum();
/** Sets the minimum value for this slider */
public abstract void setMinimum(float value);
/** Return the maximum value of this slider */
public abstract float getMaximum();
/** Sets the maximum value of this scrolbar */
public abstract void setMaximum(float value);
/** Returns the current value of the slider */
public abstract float getValue();
/** Sets the current value of the slider */
public abstract void setValue(float value);
/** The vector containing the SliderChangeListeners */
protected Vector listeners = new Vector();
private Object listeners_lock = new Object();
/** Add a SliderChangeListener to the listeners list */
// public synchronized void addSliderChangeListener(SliderChangeListener s) {
public void addSliderChangeListener(SliderChangeListener s) {
synchronized (listeners_lock) {
if (!listeners.contains(s)) {
listeners.addElement(s);
}
}
}
/** Remove a SliderChangeListener from the listeners list */
// public synchronized void removeSliderChangeListener(SliderChangeListener s) {
public void removeSliderChangeListener(SliderChangeListener s) {
synchronized (listeners_lock) {
if (listeners.contains(s)) {
listeners.removeElement(s);
}
}
}
/** Notify the ColorChangeListerers that the color widget has changed */
// protected synchronized void notifyListeners(SliderChangeEvent e) {
protected void notifyListeners(SliderChangeEvent e) {
Vector listeners_clone = null;
synchronized (listeners_lock) {
listeners_clone = (Vector) listeners.clone();
}
for (int i = 0; i < listeners_clone.size(); i++) {
SliderChangeListener s =
(SliderChangeListener) listeners_clone.elementAt(i);
s.sliderChanged(e);
}
}
}