/* * 1.1+Swing version. */ import javax.swing.*; import javax.swing.event.*; public class FollowerRangeModel extends ConverterRangeModel implements ChangeListener { ConverterRangeModel dataModel; public FollowerRangeModel(ConverterRangeModel dataModel) { this.dataModel = dataModel; dataModel.addChangeListener(this); } public void stateChanged(ChangeEvent e) { fireStateChanged(); } public int getMaximum() { int modelMax = dataModel.getMaximum(); double multiplyBy = dataModel.getMultiplier()/multiplier; if (DEBUG) { System.out.println("In FollowerRangeModel getMaximum"); System.out.println(" dataModel.getMaximum = " + modelMax + "; multiply by " + multiplyBy + "; result: " + modelMax*multiplyBy); } return (int)(modelMax * multiplyBy); } public void setMaximum(int newMaximum) { dataModel.setMaximum((int)(newMaximum * (multiplier/dataModel.getMultiplier()))); } public int getValue() { return (int)getDoubleValue(); } public void setValue(int newValue) { setDoubleValue((double)newValue); } public double getDoubleValue() { return dataModel.getDoubleValue() * dataModel.getMultiplier() / multiplier; } public void setDoubleValue(double newValue) { dataModel.setDoubleValue( newValue * multiplier / dataModel.getMultiplier()); } public int getExtent() { return super.getExtent(); } public void setExtent(int newExtent) { super.setExtent(newExtent); } public void setRangeProperties(int value, int extent, int min, int max, boolean adjusting) { double multiplyBy = multiplier/dataModel.getMultiplier(); dataModel.setRangeProperties(value*multiplyBy, extent, min, (int)(max*multiplyBy), adjusting); } }