package edu.byu.cs.roots.opg.gui.tools;
import java.util.HashSet;
import javax.swing.SpinnerModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class IntSpinnerModel implements SpinnerModel {
Integer value = 255;
int maxvalue = 255;
int minvalue = 0;
int stepsize = 1;
HashSet<ChangeListener> listenerset = new HashSet<ChangeListener>();
public void addChangeListener(ChangeListener arg0) {
listenerset.add(arg0);
}
public Object getNextValue() {
Integer value = this.value;
if(value > maxvalue - stepsize)
value = null;
else{
value -= value % stepsize;
value += stepsize;
}
// System.out.println("getting next value " + value);
return value;
}
public Object getPreviousValue(){
Integer value = this.value;
if(value < minvalue + stepsize)
value = null;
else{
int tempval = value % stepsize;
if(tempval == 0)value -=stepsize;
else value -= tempval;
}
// System.out.println("getting previous value " + value );
return value;
}
public Object getValue() {
return value;
}
public void removeChangeListener(ChangeListener arg0) {
listenerset.remove(arg0);
}
public void setValue(Object arg0) {
// System.out.println("setting value to " + arg0);
Integer val = (Integer) arg0;
if(value == val) return;
if(val < minvalue) val = minvalue;
else if(val > maxvalue) val = maxvalue;
value = val;
headsUp();
}
private void headsUp(){
ChangeEvent e = new ChangeEvent(value);
for(ChangeListener listener : listenerset){
listener.stateChanged(e);
}
}
/**
* @return the maxvalue
*/
public int getMaxvalue() {
return maxvalue;
}
/**
* @param maxvalue the maxvalue to set
*/
public void setMaxvalue(int maxvalue) {
this.maxvalue = maxvalue;
}
/**
* @return the minvalue
*/
public int getMinvalue() {
return minvalue;
}
/**
* @param minvalue the minvalue to set
*/
public void setMinvalue(int minvalue) {
this.minvalue = minvalue;
}
/**
* @return the stepsize
*/
public int getStepsize() {
return stepsize;
}
/**
* @param stepsize the stepsize to set
*/
public void setStepsize(int stepsize) {
this.stepsize = stepsize;
}
}