1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package de.jaret.examples.timebars.touren;
21
22 import java.awt.Dimension;
23 import java.awt.FlowLayout;
24 import java.awt.event.ActionEvent;
25 import java.awt.event.ActionListener;
26
27 import javax.swing.JButton;
28 import javax.swing.JCheckBox;
29 import javax.swing.JComboBox;
30 import javax.swing.JPanel;
31 import javax.swing.JSlider;
32 import javax.swing.event.ChangeEvent;
33 import javax.swing.event.ChangeListener;
34
35 import de.jaret.util.misc.PropertyObservableBase;
36 import de.jaret.util.ui.timebars.TimeBarMarkerImpl;
37 import de.jaret.util.ui.timebars.TimeBarRowFilter;
38 import de.jaret.util.ui.timebars.TimeBarRowSorter;
39 import de.jaret.util.ui.timebars.model.TimeBarRow;
40 import de.jaret.util.ui.timebars.swing.TimeBarViewer;
41
42 /***
43 * @author Peter Kliem
44 * @version $Id: ControlPanel.java 234 2007-02-10 00:22:45Z olk $
45 */
46 public class ControlPanel extends JPanel implements ChangeListener, ActionListener {
47 TimeBarViewer _viewer;
48 JSlider _timeScaleSlider;
49 JSlider _rowHeigthSlider;
50 JComboBox _sorterCombo;
51 JComboBox _filterCombo;
52 JComboBox _intervalFilterCombo;
53 TimeBarMarkerImpl _marker;
54 JCheckBox _gapCheck;
55 JButton _freisetzenButton;
56
57 public ControlPanel(TimeBarViewer viewer, TimeBarMarkerImpl marker) {
58 _viewer = viewer;
59 _marker = marker;
60 setLayout(new FlowLayout());
61 createControls();
62 }
63
64 /***
65 *
66 */
67 private void createControls() {
68 _timeScaleSlider = new JSlider(50, 5000);
69 _timeScaleSlider.addChangeListener(this);
70 _timeScaleSlider.setValue((int) (_viewer.getPixelPerSecond() * 60.0 * 60.0 * 24));
71 _timeScaleSlider.setPreferredSize(new Dimension(300, 50));
72 add(_timeScaleSlider);
73 _rowHeigthSlider = new JSlider(10, 300);
74 _rowHeigthSlider.addChangeListener(this);
75 _rowHeigthSlider.setValue(_viewer.getRowHeight());
76 add(_rowHeigthSlider);
77
78 _sorterCombo = new JComboBox();
79 _sorterCombo.addItem("No sorter");
80 _sorterCombo.addItem(new ElementCountSorter());
81 _sorterCombo.addActionListener(this);
82 add(_sorterCombo);
83
84 _filterCombo = new JComboBox();
85 _filterCombo.addItem("No Filter");
86 _filterCombo.addItem(new ElementGT20Filter());
87 _filterCombo.addActionListener(this);
88 add(_filterCombo);
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103 }
104
105
106
107
108
109
110 public void stateChanged(ChangeEvent e) {
111 if (e.getSource() == _timeScaleSlider) {
112 double pixPerSecond = (double) _timeScaleSlider.getValue() / (24.0 * 60 * 60);
113 _viewer.setPixelPerSecond(pixPerSecond);
114 } else if (e.getSource() == _rowHeigthSlider) {
115 _viewer.setRowHeight(_rowHeigthSlider.getValue());
116 }
117 }
118
119 class ElementCountSorter extends PropertyObservableBase implements TimeBarRowSorter {
120
121
122
123
124
125 public int compare(TimeBarRow o1, TimeBarRow o2) {
126 Tour t1 = (Tour) o1;
127 Tour t2 = (Tour) o2;
128 return t2.getIntervals().size() - t1.getIntervals().size();
129 }
130
131 public String toString() {
132 return "ElementCountSorter";
133 }
134 }
135
136 class ElementGT20Filter extends PropertyObservableBase implements TimeBarRowFilter {
137 public boolean isInResult(TimeBarRow row) {
138 Tour t = (Tour) row;
139 return t.getIntervals().size() > 15;
140 }
141
142 public String toString() {
143 return "#Elements > 15";
144 }
145 }
146
147 public void actionPerformed(ActionEvent e) {
148 if (e.getSource() == _sorterCombo) {
149 Object sel = _sorterCombo.getSelectedItem();
150 if (sel instanceof TimeBarRowSorter) {
151 _viewer.setRowSorter((TimeBarRowSorter) sel);
152 } else {
153 _viewer.setRowSorter(null);
154 }
155 } else if (e.getSource() == _filterCombo) {
156 Object sel = _filterCombo.getSelectedItem();
157 if (sel instanceof TimeBarRowFilter) {
158 _viewer.setRowFilter((TimeBarRowFilter) sel);
159 } else {
160 _viewer.setRowFilter(null);
161 }
162 }
163 }
164
165 }