package com.clearlyspam23.GLE.basic.properties; import java.awt.Component; import javax.swing.JSlider; import com.clearlyspam23.GLE.PropertyTemplate; import com.clearlyspam23.GLE.GUI.util.IntegerComponent; public class IntPropertyTemplate extends PropertyTemplate<Component, Number> { private int def; private int min; private int max; private boolean useSlider; public IntPropertyTemplate(){} public IntPropertyTemplate(IntPropertyDefinition def){ super(def); } public IntPropertyTemplate(IntPropertyDefinition def, int defa, int min, int max, boolean useSlider){ super(def); this.setDefault(defa); this.setMin(min); this.setMax(max); this.setUseSlider(useSlider); } @Override public Component getEditorComponent() { if(useSlider){ JSlider slider = new JSlider(min, max); slider.setPaintTicks(true); slider.setPaintLabels(true); int major = (max-min)/5; slider.setMajorTickSpacing(Math.max(major, 1)); int minor = (max-min)/50; slider.setMinorTickSpacing(Math.max(minor, 1)); return slider; } return new IntegerComponent(); } @Override public void setToValue(Component component, Number value) { if(component instanceof JSlider) ((JSlider)component).setValue(value.intValue()); else ((IntegerComponent)component).setValue(value.intValue()); } @Override public Number getValueFrom(Component component) { if(component instanceof JSlider){ return ((JSlider)component).getValue(); } return ((IntegerComponent)component).getValue(); } public int getDefault() { return def; } public void setDefault(int def) { this.def = def; } public int getMin() { return min; } public void setMin(int min) { this.min = min; } public int getMax() { return max; } public void setMax(int max) { this.max = max; } @Override public Number getDefaultValue() { return def; } public boolean isUseSlider() { return useSlider; } public void setUseSlider(boolean useSlider) { this.useSlider = useSlider; } }