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.simple.swing;
21
22 import java.awt.BorderLayout;
23 import java.util.ArrayList;
24 import java.util.Iterator;
25 import java.util.List;
26
27 import javax.swing.JFrame;
28
29 import de.jaret.util.date.Interval;
30 import de.jaret.util.date.IntervalImpl;
31 import de.jaret.util.date.JaretDate;
32 import de.jaret.util.ui.timebars.model.DefaultRowHeader;
33 import de.jaret.util.ui.timebars.model.DefaultTimeBarModel;
34 import de.jaret.util.ui.timebars.model.DefaultTimeBarRowModel;
35 import de.jaret.util.ui.timebars.model.TimeBarModel;
36 import de.jaret.util.ui.timebars.model.TimeBarRow;
37 import de.jaret.util.ui.timebars.swing.TimeBarViewer;
38
39 /***
40 * Swing: Very simple test: timebar viewer with lots of intervals and a second
41 * thread modifying the intervals.
42 *
43 * @author Peter Kliem
44 * @version $Id: SwingTimeBarExample.java 425 2007-05-13 13:08:03Z olk $
45 */
46 public class SwingTimeBarExample {
47 public static final List _headerList = new ArrayList();
48
49 public static void main(String[] args) {
50 JFrame f = new JFrame(SwingTimeBarExample.class.getName());
51 f.setSize(300, 330);
52 f.getContentPane().setLayout(new BorderLayout());
53 f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
54
55 TimeBarModel model = createRandomModel(10, 120, 50);
56 TimeBarViewer tbv = new TimeBarViewer(model);
57
58 f.getContentPane().add(tbv, BorderLayout.CENTER);
59
60 f.setVisible(true);
61
62
63 startChanging(model);
64
65 }
66
67 /***
68 * @param model
69 */
70 private static void startChanging(TimeBarModel model) {
71 long delay = 800;
72 for (int r = 0; r < model.getRowCount(); r++) {
73 TimeBarRow row = model.getRow(r);
74 double sum = getIntervalSum(row);
75 DefaultRowHeader header = (DefaultRowHeader) _headerList.get(r);
76 header.setLabel("R" + r + "(" + sum + ")");
77 System.out.println("Changed header " + r);
78 try {
79 Thread.sleep(delay);
80 } catch (InterruptedException e) {
81 e.printStackTrace();
82 }
83 }
84 for (int r = 0; r < model.getRowCount(); r++) {
85 TimeBarRow row = model.getRow(r);
86 Iterator it = row.getIntervals().iterator();
87 while (it.hasNext()) {
88 Interval interval = (Interval) it.next();
89 double minutes = interval.getEnd().diffMinutes(interval.getBegin());
90 JaretDate date = interval.getEnd().copy();
91 date.backMinutes(minutes / 4);
92 interval.setEnd(date);
93 double sum = getIntervalSum(row);
94 DefaultRowHeader header = (DefaultRowHeader) _headerList.get(r);
95 header.setLabel("R" + r + "(" + sum + ")");
96 System.out.println("Changed interval " + interval);
97 try {
98 Thread.sleep(delay / 2);
99 } catch (InterruptedException e) {
100 e.printStackTrace();
101 }
102 }
103 }
104
105 }
106
107 private static double getIntervalSum(TimeBarRow row) {
108 double result = 0;
109 Iterator it = row.getIntervals().iterator();
110 while (it.hasNext()) {
111 Interval interval = (Interval) it.next();
112 result += interval.getEnd().diffMinutes(interval.getBegin());
113 }
114
115 return result;
116 }
117
118 public static TimeBarModel createRandomModel(int rows, int averageLengthInMinutes, int countPerRow) {
119 DefaultTimeBarModel model = new DefaultTimeBarModel();
120
121 for (int row = 0; row < rows; row++) {
122 DefaultRowHeader header = new DefaultRowHeader("r" + row);
123 _headerList.add(header);
124 DefaultTimeBarRowModel tbr = new DefaultTimeBarRowModel(header);
125 JaretDate date = new JaretDate();
126 for (int i = 0; i < countPerRow; i++) {
127 IntervalImpl interval = new IntervalImpl();
128 int length = averageLengthInMinutes / 2 + (int) (Math.random() * (double) averageLengthInMinutes);
129 interval.setBegin(date.copy());
130 date.advanceMinutes(length);
131 interval.setEnd(date.copy());
132
133 tbr.addInterval(interval);
134
135 int pause = (int) (Math.random() * (double) averageLengthInMinutes / 5);
136 date.advanceMinutes(pause);
137 }
138 model.addRow(tbr);
139 }
140
141 System.out.println("Created " + (rows * countPerRow) + " Intervals");
142
143 return model;
144 }
145 }