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.linechart.swt;
21
22 import org.eclipse.jface.window.ApplicationWindow;
23 import org.eclipse.swt.SWT;
24 import org.eclipse.swt.graphics.Point;
25 import org.eclipse.swt.layout.GridData;
26 import org.eclipse.swt.layout.GridLayout;
27 import org.eclipse.swt.widgets.Composite;
28 import org.eclipse.swt.widgets.Control;
29 import org.eclipse.swt.widgets.Shell;
30
31 import de.jaret.examples.timebars.linechart.model.LineChartInterval;
32 import de.jaret.examples.timebars.linechart.model.ModelCreator;
33 import de.jaret.examples.timebars.linechart.swt.renderer.LineChartHeaderRenderer;
34 import de.jaret.examples.timebars.linechart.swt.renderer.LineChartRenderer;
35 import de.jaret.util.ui.timebars.TimeBarViewerDelegate;
36 import de.jaret.util.ui.timebars.model.IRowHeightStrategy;
37 import de.jaret.util.ui.timebars.model.ITimeBarViewState;
38 import de.jaret.util.ui.timebars.model.TimeBarModel;
39 import de.jaret.util.ui.timebars.model.TimeBarRow;
40 import de.jaret.util.ui.timebars.swt.TimeBarViewer;
41 import de.jaret.util.ui.timebars.swt.renderer.BoxTimeScaleRenderer;
42 import de.jaret.util.ui.timebars.swt.util.TimeScaleDragSupport;
43
44 /***
45 * Example showing how to draw a simple line chart with the time bars. This is showing one line chart only, but mixing
46 * intervals and line chart intervals is possible.
47 *
48 * @author Peter Kliem
49 * @version $Id: LineChartExample.java 801 2008-12-27 22:44:54Z kliem $
50 */
51 public class LineChartExample extends ApplicationWindow {
52 /*** timebar viewer. */
53 private static TimeBarViewer _tbv;
54
55 public LineChartExample() {
56 super(null);
57 }
58
59 protected Control createContents(Composite parent) {
60 GridLayout gridLayout = new GridLayout();
61 gridLayout.numColumns = 1;
62 gridLayout.verticalSpacing = 0;
63 parent.setLayout(gridLayout);
64
65 TimeBarModel model = ModelCreator.createModel();
66
67 GridData gd = new GridData(GridData.FILL_BOTH);
68
69
70
71
72 _tbv = new TimeBarViewer(parent, SWT.H_SCROLL);
73 _tbv.setLayoutData(gd);
74
75 _tbv.setTimeScalePosition(TimeBarViewer.TIMESCALE_POSITION_TOP);
76 _tbv.setModel(model);
77
78
79 _tbv.setPixelPerSecond(0.0065);
80
81
82
83
84 _tbv.getSelectionModel().setRowSelectionAllowed(false);
85 _tbv.getSelectionModel().setIntervalSelectionAllowed(false);
86 _tbv.getSelectionModel().setMultipleSelectionAllowed(false);
87
88
89 _tbv.setYAxisWidth(20);
90 _tbv.setHeaderRenderer(new LineChartHeaderRenderer());
91
92
93 _tbv.setGridRenderer(null);
94
95
96 TimeScaleDragSupport tsds = new TimeScaleDragSupport(_tbv, true);
97
98
99 _tbv.setTimeScaleRenderer(new BoxTimeScaleRenderer());
100
101
102
103 _tbv.getTimeBarViewState().setUseVariableRowHeights(true);
104 _tbv.getTimeBarViewState().setRowHeightStrategy(new IRowHeightStrategy() {
105
106 public int calculateRowHeight(TimeBarViewerDelegate delegate, ITimeBarViewState timeBarViewState,
107 TimeBarRow row) {
108 return delegate.getDiagramRect().height;
109 }
110
111 public boolean overrideDefault() {
112 return true;
113 }
114
115 });
116
117
118
119 _tbv.registerTimeBarRenderer(LineChartInterval.class, new LineChartRenderer());
120
121
122 LineChartControlPanel ctrlPanel = new LineChartControlPanel(parent, SWT.NULL, _tbv);
123
124 return _tbv;
125 }
126
127 protected void configureShell(Shell shell) {
128 super.configureShell(shell);
129 shell.setText(getClass().getName());
130 shell.setSize(new Point(1000, 600));
131 }
132
133 public static void main(String[] args) {
134 LineChartExample test = new LineChartExample();
135 test.setBlockOnOpen(true);
136 test.open();
137 }
138
139 }