1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 package org.dishevelled.eventlist.view.examples;
25
26 import ca.odell.glazedlists.EventList;
27 import ca.odell.glazedlists.GlazedLists;
28
29 import java.awt.GridLayout;
30
31 import java.awt.event.ActionEvent;
32 import java.awt.event.ActionListener;
33
34 import java.util.ArrayList;
35 import java.util.HashMap;
36 import java.util.List;
37 import java.util.Map;
38
39 import javax.swing.JComponent;
40 import javax.swing.JFrame;
41 import javax.swing.JLabel;
42 import javax.swing.JPanel;
43 import javax.swing.Timer;
44 import javax.swing.SwingUtilities;
45
46 import javax.swing.border.EmptyBorder;
47
48 import ca.odell.glazedlists.gui.TableFormat;
49
50 import org.dishevelled.functor.UnaryFunction;
51
52 import org.dishevelled.eventlist.view.CountLabel;
53 import org.dishevelled.eventlist.view.ElementsLabel;
54 import org.dishevelled.eventlist.view.ElementsList;
55 import org.dishevelled.eventlist.view.ElementsTable;
56 import org.dishevelled.eventlist.view.ElementsSummary;
57 import org.dishevelled.eventlist.view.IdElementsList;
58 import org.dishevelled.eventlist.view.IdElementsSummary;
59
60 import org.dishevelled.layout.LabelFieldPanel;
61
62
63
64
65
66
67 public final class EventListViewExample
68 extends LabelFieldPanel
69 implements Runnable
70 {
71
72 private final EventList<String> eventList;
73
74
75
76
77
78 public EventListViewExample()
79 {
80 super();
81 setBorder(new EmptyBorder(12, 12, 12, 12));
82
83 List<String> strings = new ArrayList<String>();
84 for (int i = 0; i < 100; i++)
85 {
86 strings.add("Value " + i);
87 }
88 eventList = GlazedLists.eventList(strings);
89
90 addField("Count label:", new CountLabel<String>(eventList));
91 addField("Elements label:", new ElementsLabel<String>(eventList));
92 addLabel("Elements summary:");
93
94 UnaryFunction<String, JComponent> modelToLabel = new UnaryFunction<String, JComponent>()
95 {
96
97 private final Map<String, JComponent> cache = new HashMap<String, JComponent>();
98
99 @Override
100 public JComponent evaluate(final String element)
101 {
102 if (!cache.containsKey(element))
103 {
104 cache.put(element, new JLabel(element));
105 }
106 return cache.get(element);
107 }
108 };
109
110 addField(new ElementsSummary<String>(eventList, modelToLabel));
111 addSpacing(12);
112 addLabel("Identifiable elements summary:");
113 addField(new IdElementsSummary<String>(eventList));
114 addSpacing(12);
115 addFinalField(createLowerPanel());
116
117 Timer t = new Timer(5000, new ActionListener()
118 {
119 @Override
120 public void actionPerformed(final ActionEvent e)
121 {
122 if (!eventList.isEmpty())
123 {
124 eventList.remove(0);
125 }
126 }
127 });
128 t.setRepeats(true);
129 t.start();
130 }
131
132
133
134
135
136
137
138 private JPanel createLowerPanel()
139 {
140 JPanel panel = new JPanel();
141 panel.setLayout(new GridLayout(1, 3, 12, 12));
142
143 LabelFieldPanel left = new LabelFieldPanel();
144 left.addLabel("Elements list:");
145 left.addFinalField(new ElementsList<String>("Elements:", eventList));
146
147 LabelFieldPanel center = new LabelFieldPanel();
148 center.addLabel("Identifiable elements list:");
149 center.addFinalField(new IdElementsList<String>("Identifiable elements:", eventList));
150
151 LabelFieldPanel right = new LabelFieldPanel();
152 right.addLabel("Elements table:");
153 TableFormat<String> tableFormat = new TableFormat<String>()
154 {
155 @Override
156 public int getColumnCount()
157 {
158 return 2;
159 }
160
161 @Override
162 public String getColumnName(final int column)
163 {
164 if (column == 0)
165 {
166 return "Value";
167 }
168 else
169 {
170 return "Length";
171 }
172 }
173
174 @Override
175 public Object getColumnValue(final String value, final int column)
176 {
177 if (column == 0)
178 {
179 return value;
180 }
181 else
182 {
183 return value.length();
184 }
185 }
186 };
187 right.addFinalField(new ElementsTable<String>("Elements:", eventList, tableFormat));
188
189 panel.add(left);
190 panel.add(center);
191 panel.add(right);
192 return panel;
193 }
194
195
196 @Override
197 public void run()
198 {
199 JFrame f = new JFrame("Event list view example");
200 f.setContentPane(this);
201 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
202 f.setBounds(100, 100, 1080, 606);
203 f.setVisible(true);
204 }
205
206
207
208
209
210
211
212 public static void main(final String[] args)
213 {
214 SwingUtilities.invokeLater(new EventListViewExample());
215 }
216 }