package qls.gui.widget.input; import java.awt.Dimension; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.event.ChangeListener; import net.miginfocom.swing.MigLayout; import ql.Value; import ql.gui.DefaultComponent; import ql.value.IntegerValue; import qls.gui.widget.InputWidget; import qls.gui.widget.WidgetStylizer; public abstract class Slider<T extends Value> extends DefaultComponent implements InputWidget<T>, ChangeListener { protected JPanel container; protected JSlider slider; protected JLabel label; protected WidgetStylizer stylizer; public Slider(IntegerValue minValue, IntegerValue maxValue) { stylizer = new WidgetStylizer(); slider = new JSlider(JSlider.HORIZONTAL, minValue.getPrimitive(), maxValue.getPrimitive(), minValue.getPrimitive()); slider.setMaximumSize(new Dimension(slider.getPreferredSize().width, slider.getPreferredSize().height * 2)); slider.addChangeListener(this); label = new JLabel(); label.setFont(new java.awt.Font("Serif", java.awt.Font.BOLD, 20)); label.setVisible(true); label.setText(String.valueOf(slider.getValue())); container = new JPanel(new MigLayout()); container.add(slider); container.add(label); } @Override public void disable() { slider.setEnabled(false); } @Override public void updateComponent() { container.repaint(); } @Override public JComponent getComponent() { return container; } }