source: src/main/java/genius/gui/panels/SliderPanel.java@ 93

Last change on this file since 93 was 93, checked in by Wouter Pasman, 7 years ago

#28 fixed listener structures. Added Lockable interface, boolean model and integer model are now lockable. Slider now reflects state of lockable. Added test for that.

File size: 1.4 KB
Line 
1package genius.gui.panels;
2
3import java.awt.BorderLayout;
4import java.awt.Dimension;
5
6import javax.swing.JLabel;
7import javax.swing.JPanel;
8import javax.swing.JSlider;
9import javax.swing.JSpinner;
10
11import genius.core.listener.Listener;
12
13/**
14 * Shows slider plus spinner with optional ticks, optionally logarithmic, and
15 * optionally with percentages
16 *
17 */
18@SuppressWarnings("serial")
19public class SliderPanel extends JPanel {
20 private JSlider slider;
21
22 public SliderPanel(String name, IntegerModel model) {
23 setLayout(new BorderLayout());
24 JLabel label = new JLabel(name);
25 add(label, BorderLayout.WEST);
26
27 slider = new JSlider(new IntegerToBoundeRangeAdapter(model));
28 add(slider, BorderLayout.CENTER);
29 JSpinner spinner = new JSpinner(model.getSpinnerModel());
30 spinner.setMaximumSize(new Dimension(300, 30));
31 add(spinner, BorderLayout.EAST);
32
33 // connect model->enabled to GUI appearance.
34 model.addListener(new Listener<Integer>() {
35 @Override
36 public void notifyChange(Integer data) {
37 boolean enabled = !model.isLocked();
38 setEnabled(enabled);
39 label.setEnabled(enabled);
40 slider.setEnabled(enabled);
41 spinner.setEnabled(enabled);
42 }
43 });
44 }
45
46 /**
47 *
48 * @return the slider part. Used for testing, you should not need this and
49 * communicate through the model you provided.
50 */
51 public JSlider getSlider() {
52 return slider;
53 }
54
55}
Note: See TracBrowser for help on using the repository browser.