package gui.bsvComponents;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;
import javax.swing.JSpinner;
import javax.swing.SpinnerModel;
/**
* Special JSpinner with more features.
*/
public class BSVSpinner extends JSpinner {
private static final long serialVersionUID = -7533339446697563441L;
/**
* Creates a new BSVSpinner.
*/
public BSVSpinner() {
super();
this.init();
}
/**
* Creates a new BSVSpinner.
*
* @param model
* the spinner model
*/
public BSVSpinner(SpinnerModel model) {
super(model);
this.init();
}
/**
* Set up some features.
*/
private void init() {
this.addMouseWheelListener(new BSVSpinnerMouseWheelListener());
}
/**
* Mouse wheel listener that changes the value.
*/
private class BSVSpinnerMouseWheelListener implements MouseWheelListener {
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
SpinnerModel model = getModel();
final int steps = e.getWheelRotation();
try {
if (steps < 0) {
for (int i = 0; i > steps; i--) {
model.setValue(model.getNextValue());
}
} else {
for (int i = 0; i < steps; i++) {
model.setValue(model.getPreviousValue());
}
}
} catch (IllegalArgumentException ex) {
// ignore
}
}
}
}