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 com.mindtree.techworks.insight.gui.preferences;
25
26 import java.awt.event.ActionEvent;
27 import java.awt.event.ActionListener;
28 import java.util.ArrayList;
29 import java.util.Iterator;
30
31 import javax.swing.AbstractListModel;
32 import javax.swing.JButton;
33 import javax.swing.JLabel;
34 import javax.swing.JList;
35 import javax.swing.JScrollPane;
36
37 import com.mindtree.techworks.insight.InsightConstants;
38 import com.mindtree.techworks.insight.ResourceManager;
39 import com.mindtree.techworks.insight.model.LogEventTableModel;
40 import com.mindtree.techworks.insight.preferences.model.PreferenceAttribute;
41 import com.mindtree.techworks.insight.preferences.model.PreferenceAttributeType;
42 import com.mindtree.techworks.insight.preferences.util.PreferenceInterpreter;
43
44
45
46
47
48
49
50
51
52
53
54
55 public class EventColumnPreferencePanel extends AbstractPreferencesUIPanel implements ActionListener {
56
57
58
59
60 private static final long serialVersionUID = 6585162564228536132L;
61
62
63
64
65 private static final String ATTRIBUTE_PREFIX = "column";
66
67
68
69
70 private JList availableColumns;
71 private JList selectedColumns;
72 private JButton leftButton;
73 private JButton rightButton;
74 private JButton upButton;
75 private JButton downButton;
76
77
78
79
80 public EventColumnPreferencePanel() {
81 }
82
83
84
85
86
87 public void actionPerformed(ActionEvent event) {
88 Object source = event.getSource();
89 if (source == this.leftButton) {
90 if (this.selectedColumns.getSelectedIndex() > -1) {
91 Object object = ((ColumnListModel)this.selectedColumns.getModel()).remove(
92 this.selectedColumns.getSelectedIndex());
93 ((ColumnListModel)this.availableColumns.getModel()).insert(
94 ((Integer)object).intValue(), this.availableColumns.getModel().getSize());
95 }
96 } else if (source == this.rightButton) {
97 if (this.availableColumns.getSelectedIndex() > -1) {
98 Object object = ((ColumnListModel)this.availableColumns.getModel()).remove(
99 this.availableColumns.getSelectedIndex());
100 ((ColumnListModel)this.selectedColumns.getModel()).insert(
101 ((Integer)object).intValue(), this.selectedColumns.getModel().getSize());
102 }
103 } else {
104 if (this.selectedColumns.getSelectedIndex() > -1) {
105 int toIndex = (source == this.upButton ?
106 this.selectedColumns.getSelectedIndex() - 1 :
107 this.selectedColumns.getSelectedIndex() + 1 );
108 if (((ColumnListModel)this.selectedColumns.getModel()).swap(
109 this.selectedColumns.getSelectedIndex(), toIndex)) {
110 this.selectedColumns.setSelectedIndex(toIndex);
111 }
112 }
113 }
114 }
115
116
117
118
119
120
121 protected void initializeDisplay() {
122 ResourceManager rm = ResourceManager.getInstance();
123 addComponent(new JLabel(InsightConstants.getLiteral("AVAILABLE_COLUMNS")),0,0,1,0,1,1);
124 addComponent(new JLabel(InsightConstants.getLiteral("SELECTED_COLUMNS")),2,0,1,0,1,1);
125 int[] configuredCols = PreferenceInterpreter.getConfiguredColumnsForDisplay();
126 this.availableColumns = new JList(new ColumnListModel(configuredCols, true));
127 this.selectedColumns = new JList(new ColumnListModel(configuredCols, false));
128 addComponent(new JScrollPane(availableColumns),0,1,1,1,1,3);
129 addComponent(new JScrollPane(selectedColumns),2,1,1,1,1,3);
130 this.leftButton = new JButton(rm.loadImageIcon("MOVE_LEFT_ICON"));
131 this.rightButton = new JButton(rm.loadImageIcon("MOVE_RIGHT_ICON"));
132 addComponent(leftButton,1,1,0,0,1,1);
133 addComponent(rightButton,1,2,0,0,1,1);
134 this.upButton = new JButton(rm.loadImageIcon("MOVE_UP_ICON"));
135 this.downButton = new JButton(rm.loadImageIcon("MOVE_DOWN_ICON"));
136 addComponent(upButton,3,1,0,0,1,1);
137 addComponent(downButton,3,2,0,0,1,1);
138
139 addComponent(new JLabel(),0,4,1,1,4,1);
140
141 this.leftButton.addActionListener(this);
142 this.rightButton.addActionListener(this);
143 this.upButton.addActionListener(this);
144 this.downButton.addActionListener(this);
145 }
146
147
148
149
150
151 protected void setPreferenceValues() {
152 ArrayList oldValues = new ArrayList();
153 Iterator iterator = this.preference.iteratePreferenceAttributeIds();
154 while(iterator.hasNext()) {
155 String id = (String)iterator.next();
156 if (id.startsWith(ATTRIBUTE_PREFIX)) {
157 oldValues.add(id);
158 }
159 }
160 iterator = oldValues.iterator();
161 while(iterator.hasNext()) {
162 this.preference.removePreferenceAttribute(
163 this.preference.getPreferenceAttributeById(
164 (String)iterator.next()));
165 }
166 for (int i = 0; i < this.selectedColumns.getModel().getSize(); i++) {
167 String identifier = String.valueOf(((ColumnListModel)this.selectedColumns.getModel()).getValue(i));
168 PreferenceAttribute newAttribute = new PreferenceAttribute(PreferenceAttributeType.TEXT,
169 ATTRIBUTE_PREFIX + i, identifier, false,
170 true, true, this.preference);
171 newAttribute.setName(ATTRIBUTE_PREFIX + i);
172 this.preference.addPreferenceAttribute(newAttribute);
173 }
174 }
175
176
177
178
179 private class ColumnListModel extends AbstractListModel {
180
181
182
183
184 private static final long serialVersionUID = 4056148701534021294L;
185
186
187
188
189
190
191
192
193
194 private ArrayList columnList = new ArrayList();
195
196
197
198
199
200
201 public ColumnListModel(int[] cols, boolean isComplementary) {
202 if (isComplementary) {
203 for (int i = LogEventTableModel.FIRST_INDEX; i <= LogEventTableModel.LAST_INDEX; i++) {
204 boolean found = false;
205 for (int j = 0; j < cols.length; j++) {
206 if (i == cols[j]) {
207 found = true;
208 break;
209 }
210 }
211 if (!found) {
212 columnList.add(new Integer(i));
213 }
214 }
215 } else {
216 for (int i = 0; i < cols.length; i++) {
217 columnList.add(new Integer(cols[i]));
218 }
219 }
220 }
221
222
223
224
225
226
227 public void insert(int value, int index) {
228 if (index < 0 || index > columnList.size()) {
229 return;
230 }
231 columnList.add(index, new Integer(value));
232 super.fireIntervalAdded(this, index, index);
233 }
234
235
236
237
238
239
240 public Object remove(int index) {
241 if (index < 0 || index >= columnList.size()) {
242 return null;
243 }
244 Object objectToBeRemoved = columnList.get(index);
245 columnList.remove(index);
246 super.fireIntervalRemoved(this, index, index);
247 return objectToBeRemoved;
248 }
249
250
251
252
253
254
255
256 public boolean swap(int from, int to) {
257 if (from >= columnList.size() || from < 0 ||
258 to >= columnList.size() || to < 0) {
259 return false;
260 }
261 Object fromValue = columnList.get(from);
262 Object toValue = columnList.get(to);
263 columnList.set(to, fromValue);
264 columnList.set(from, toValue);
265 super.fireContentsChanged(this, from, to);
266 return true;
267 }
268
269
270
271
272
273 public int getSize() {
274 return columnList.size();
275 }
276
277
278
279
280
281
282 public int getValue(int index) {
283 return ((Integer)columnList.get(index)).intValue();
284 }
285
286
287
288
289
290 public Object getElementAt(int index) {
291 return LogEventTableModel.COL_NAMES.get(columnList.get(index));
292 }
293
294 }
295
296 }