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.eventmonitoring.swing;
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.ui.timebars.TimeBarMarkerImpl;
36 import de.jaret.util.ui.timebars.swing.TimeBarViewer;
37 import de.jaret.util.ui.timebars.swing.renderer.BoxTimeScaleRenderer;
38 import de.jaret.util.ui.timebars.swing.renderer.DefaultGridRenderer;
39 import de.jaret.util.ui.timebars.swing.renderer.DefaultTimeScaleRenderer;
40
41 /***
42 * Control panel for the event monitoring example.
43 *
44 * @author Peter Kliem
45 * @version $Id: EventMonitoringControlPanel.java 974 2009-12-22 22:15:29Z kliem $
46 */
47 public class EventMonitoringControlPanel extends JPanel {
48 TimeBarViewer _viewer;
49 JSlider _timeScaleSlider;
50 JSlider _rowHeigthSlider;
51 JComboBox _sorterCombo;
52 JComboBox _filterCombo;
53 JComboBox _intervalFilterCombo;
54 TimeBarMarkerImpl _marker;
55 JButton _freisetzenButton;
56
57 public EventMonitoringControlPanel(TimeBarViewer viewer, TimeBarMarkerImpl marker, int initalSecondsDisplayed) {
58 _viewer = viewer;
59 _marker = marker;
60 this.setPreferredSize(new Dimension(1000, 100));
61 setLayout(new FlowLayout());
62 createControls(initalSecondsDisplayed);
63 }
64
65 /***
66 *
67 */
68 private void createControls(int initialSeconds) {
69 final double min = 1;
70 final double max = 3 * 365 * 24 * 60 * 60;
71 final double slidermax = 1000;
72 _timeScaleSlider = new JSlider(0, (int) slidermax);
73
74 _timeScaleSlider.setPreferredSize(new Dimension(_timeScaleSlider.getPreferredSize().width * 4, _timeScaleSlider
75 .getPreferredSize().height));
76 add(_timeScaleSlider);
77
78 final double b = 1.0 / 100.0;
79 final double faktor = (min - max) / (1 - Math.pow(2, slidermax * b));
80 final double c = (min - faktor);
81
82 int initialSliderVal = calcInitialSliderVal(c, b, faktor, initialSeconds);
83 _timeScaleSlider.setValue((int) (slidermax- initialSliderVal));
84
85 final JCheckBox centeredZoomCheck = new JCheckBox("Zoom around center (when no marker is not visible");
86 add(centeredZoomCheck);
87
88 _timeScaleSlider.addChangeListener(new ChangeListener() {
89 public void stateChanged(ChangeEvent e) {
90 final double x = slidermax - (double) _timeScaleSlider.getValue();
91 double seconds = c + faktor * Math.pow(2, x * b);
92 if (_viewer.isDisplayed(_marker.getDate())) {
93 _viewer.setSecondsDisplayed((int) seconds, _marker.getDate());
94 } else {
95 _viewer.setSecondsDisplayed((int) seconds, centeredZoomCheck.isSelected());
96 }
97 }
98 });
99
100 _rowHeigthSlider = new JSlider(10, 300);
101 _rowHeigthSlider.setValue(_viewer.getRowHeight());
102 _rowHeigthSlider.addChangeListener(new ChangeListener() {
103 public void stateChanged(ChangeEvent e) {
104 _viewer.setRowHeight(_rowHeigthSlider.getValue());
105 }
106 });
107 add(_rowHeigthSlider);
108
109 final JCheckBox optScrollingCheck = new JCheckBox("Optimize scrolling");
110 optScrollingCheck.setSelected(_viewer.getOptimizeScrolling());
111 optScrollingCheck.addActionListener(new ActionListener() {
112 public void actionPerformed(ActionEvent e) {
113 _viewer.setOptimizeScrolling(optScrollingCheck.isSelected());
114 }
115 });
116 add(optScrollingCheck);
117
118 final JCheckBox markerInDiagramAreaCheck = new JCheckBox("Allow Marker drag in DiagramArea");
119 markerInDiagramAreaCheck.setSelected(_viewer.getMarkerDraggingInDiagramArea());
120 markerInDiagramAreaCheck.addActionListener(new ActionListener() {
121 public void actionPerformed(ActionEvent e) {
122 _viewer.setMarkerDraggingInDiagramArea(markerInDiagramAreaCheck.isSelected());
123 }
124 });
125 add(markerInDiagramAreaCheck);
126
127 final JCheckBox boxTSRCheck = new JCheckBox("BoxTimeScaleRenderer");
128 boxTSRCheck.setSelected(_viewer.getTimeScaleRenderer() instanceof BoxTimeScaleRenderer);
129 boxTSRCheck.addActionListener(new ActionListener() {
130 public void actionPerformed(ActionEvent e) {
131 if (boxTSRCheck.isSelected()) {
132 BoxTimeScaleRenderer btscr = new BoxTimeScaleRenderer();
133 _viewer.setTimeScaleRenderer(btscr);
134 if (_viewer.getGridRenderer() instanceof DefaultGridRenderer) {
135 ((DefaultGridRenderer) _viewer.getGridRenderer()).setTickProvider(btscr);
136 }
137 } else {
138 DefaultTimeScaleRenderer dtscr = new DefaultTimeScaleRenderer();
139 _viewer.setTimeScaleRenderer(dtscr);
140 }
141 }
142 });
143 add(boxTSRCheck);
144
145 final JCheckBox regionCheck = new JCheckBox("Enable region select");
146 regionCheck.setSelected(_viewer.getRegionRectEnable());
147 regionCheck.addActionListener(new ActionListener() {
148 public void actionPerformed(ActionEvent e) {
149 _viewer.setRegionRectEnable(regionCheck.isSelected());
150 }
151 });
152 add(regionCheck);
153
154 final JCheckBox uniformHeightCheck = new JCheckBox("Use uniform height");
155 uniformHeightCheck.setSelected(_viewer.getUseUniformHeight());
156 uniformHeightCheck.addActionListener(new ActionListener() {
157 public void actionPerformed(ActionEvent e) {
158 _viewer.setUseUniformHeight(uniformHeightCheck.isSelected());
159 }
160 });
161 add(uniformHeightCheck);
162 }
163
164 private int calcInitialSliderVal(double c, double b, double faktor, int seconds) {
165
166 double x = 1 / b * log2((seconds - c) / faktor);
167
168 return (int) x;
169 }
170
171 private double log2(double a) {
172 return Math.log(a) / Math.log(2);
173 }
174
175 }