Various fixes following code review
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / views / filter / FilterViewer.java
CommitLineData
90e2b925
FC
1/*******************************************************************************\r
2 * Copyright (c) 2010 Ericsson\r
3 * \r
4 * All rights reserved. This program and the accompanying materials are\r
5 * made available under the terms of the Eclipse Public License v1.0 which\r
6 * accompanies this distribution, and is available at\r
7 * http://www.eclipse.org/legal/epl-v10.html\r
8 * \r
9 * Contributors:\r
10 * Patrick Tasse - Initial API and implementation\r
11 *******************************************************************************/\r
12\r
13package org.eclipse.linuxtools.tmf.ui.views.filter;\r
14\r
15import java.util.ArrayList;\r
16import java.util.LinkedHashMap;\r
17import java.util.Map;\r
18import java.util.Map.Entry;\r
19\r
4bf17f4a 20import org.eclipse.core.runtime.CoreException;\r
21import org.eclipse.core.runtime.IConfigurationElement;\r
90e2b925
FC
22import org.eclipse.jface.action.Action;\r
23import org.eclipse.jface.action.IMenuListener;\r
24import org.eclipse.jface.action.IMenuManager;\r
25import org.eclipse.jface.action.MenuManager;\r
26import org.eclipse.jface.action.Separator;\r
27import org.eclipse.jface.viewers.ISelection;\r
28import org.eclipse.jface.viewers.ISelectionChangedListener;\r
29import org.eclipse.jface.viewers.IStructuredSelection;\r
30import org.eclipse.jface.viewers.SelectionChangedEvent;\r
31import org.eclipse.jface.viewers.StructuredSelection;\r
32import org.eclipse.jface.viewers.TreeViewer;\r
d7dbf09a 33import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;\r
5d3e8747 34import org.eclipse.linuxtools.tmf.core.event.ITmfEventType;\r
6c13869b 35import org.eclipse.linuxtools.tmf.core.event.TmfEvent;\r
6c13869b
FC
36import org.eclipse.linuxtools.tmf.core.filter.model.ITmfFilterTreeNode;\r
37import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterAndNode;\r
38import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterCompareNode;\r
cbbcc354 39import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterCompareNode.Type;\r
6c13869b
FC
40import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterContainsNode;\r
41import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterEqualsNode;\r
42import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterEventTypeNode;\r
43import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterMatchesNode;\r
44import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterNode;\r
45import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterOrNode;\r
46import org.eclipse.linuxtools.tmf.core.filter.model.TmfFilterRootNode;\r
6c13869b 47import org.eclipse.linuxtools.tmf.core.util.TmfTraceType;\r
90e2b925 48import org.eclipse.linuxtools.tmf.ui.internal.Messages;\r
4bf17f4a 49import org.eclipse.linuxtools.tmf.ui.parsers.custom.CustomTraceDefinition.OutputColumn;\r
50import org.eclipse.linuxtools.tmf.ui.parsers.custom.CustomTxtEvent;\r
4bf17f4a 51import org.eclipse.linuxtools.tmf.ui.parsers.custom.CustomTxtTraceDefinition;\r
52import org.eclipse.linuxtools.tmf.ui.parsers.custom.CustomXmlEvent;\r
4bf17f4a 53import org.eclipse.linuxtools.tmf.ui.parsers.custom.CustomXmlTraceDefinition;\r
90e2b925
FC
54import org.eclipse.swt.SWT;\r
55import org.eclipse.swt.custom.SashForm;\r
56import org.eclipse.swt.events.FocusEvent;\r
57import org.eclipse.swt.events.FocusListener;\r
58import org.eclipse.swt.events.ModifyEvent;\r
59import org.eclipse.swt.events.ModifyListener;\r
60import org.eclipse.swt.events.SelectionAdapter;\r
61import org.eclipse.swt.events.SelectionEvent;\r
62import org.eclipse.swt.layout.FillLayout;\r
63import org.eclipse.swt.layout.GridData;\r
64import org.eclipse.swt.layout.GridLayout;\r
65import org.eclipse.swt.widgets.Button;\r
66import org.eclipse.swt.widgets.Combo;\r
67import org.eclipse.swt.widgets.Composite;\r
68import org.eclipse.swt.widgets.Control;\r
69import org.eclipse.swt.widgets.Display;\r
70import org.eclipse.swt.widgets.Label;\r
71import org.eclipse.swt.widgets.Menu;\r
72import org.eclipse.swt.widgets.Text;\r
73import org.eclipse.swt.widgets.TreeItem;\r
74\r
75class FilterViewer extends Composite {\r
76\r
4bf17f4a 77 private static final String CUSTOM_TXT_CATEGORY = "Custom Text"; //$NON-NLS-1$\r
78 private static final String CUSTOM_XML_CATEGORY = "Custom XML"; //$NON-NLS-1$\r
79\r
90e2b925
FC
80 private TreeViewer fViewer;\r
81 private Composite fComposite;\r
82 \r
4bf17f4a 83 public FilterViewer(Composite parent, int style) {\r
84 super(parent, style);\r
90e2b925 85\r
4bf17f4a 86 setLayout(new FillLayout());\r
87 GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);\r
88 setLayoutData(gd);\r
89 \r
90e2b925
FC
90 final SashForm sash = new SashForm(this, SWT.HORIZONTAL);\r
91\r
4bf17f4a 92 // Create the tree viewer to display the filter tree\r
93 fViewer = new TreeViewer(sash, SWT.NONE);\r
94 fViewer.setContentProvider(new FilterTreeContentProvider());\r
95 fViewer.setLabelProvider(new FilterTreeLabelProvider());\r
96 fViewer.setInput(new TmfFilterRootNode());\r
97 \r
98 // Create the empty filter node properties panel\r
99 fComposite = new Composite(sash, SWT.NONE);\r
100 GridLayout gl = new GridLayout();\r
101 gl.marginHeight = 0;\r
102 gl.marginWidth = 0;\r
103 fComposite.setLayout(gl);\r
90e2b925 104\r
4bf17f4a 105 createContextMenu();\r
106 \r
107 fViewer.addSelectionChangedListener(new ISelectionChangedListener() {\r
108 @Override\r
90e2b925 109 public void selectionChanged(SelectionChangedEvent event) {\r
4bf17f4a 110 if (!(event.getSelection().isEmpty()) && event.getSelection() instanceof IStructuredSelection) {\r
111 // Update the filter node properties panel to the selection\r
112 IStructuredSelection selection = (IStructuredSelection) event.getSelection();\r
113 ITmfFilterTreeNode node = (ITmfFilterTreeNode) selection.getFirstElement();\r
114 updateFilterNodeComposite(node);\r
115 // Highlight the selection's children\r
116 highlightTreeItems(fViewer.getTree().getSelection()[0].getItems());\r
117 } else {\r
118 updateFilterNodeComposite(null);\r
119 }\r
120 }\r
121 });\r
122 }\r
123 \r
124 /**\r
125 * Create the context menu for the tree viewer\r
126 */\r
127 private void createContextMenu() {\r
128 // Adds root context menu\r
129 MenuManager menuManager = new MenuManager();\r
130 menuManager.setRemoveAllWhenShown(true);\r
131 menuManager.addMenuListener(new IMenuListener() {\r
132 @Override\r
90e2b925 133 public void menuAboutToShow(IMenuManager manager) {\r
4bf17f4a 134 fillContextMenu(manager);\r
135 }\r
136 });\r
90e2b925 137\r
4bf17f4a 138 // Context\r
139 Menu contextMenu = menuManager.createContextMenu(fViewer.getTree());\r
90e2b925 140\r
4bf17f4a 141 // Publish it\r
142 fViewer.getTree().setMenu(contextMenu);\r
143 }\r
144 \r
145 /**\r
146 * Fill the context menu for the tree viewer\r
147 */\r
148 protected void fillContextMenu(IMenuManager manager) {\r
149 final ISelection selection = fViewer.getSelection();\r
150 ITmfFilterTreeNode filterTreeNode = null;\r
151 if (selection instanceof StructuredSelection) {\r
152 Object element = ((StructuredSelection) selection).getFirstElement();\r
153 if (element instanceof ITmfFilterTreeNode) {\r
154 filterTreeNode = (ITmfFilterTreeNode) element;\r
155 }\r
156 }\r
90e2b925 157\r
4bf17f4a 158 final ITmfFilterTreeNode selectedNode = filterTreeNode;\r
159 \r
160 if (selectedNode != null) {\r
161 \r
162 fillContextMenuForNode(selectedNode, manager);\r
163 \r
164 if (selectedNode.getValidChildren().size() > 0) {\r
165 manager.add(new Separator());\r
166 }\r
90e2b925 167\r
4bf17f4a 168 Action deleteAction = new Action() {\r
169 @Override\r
170 public void run() {\r
171 selectedNode.remove();\r
172 fViewer.refresh();\r
173 }\r
174 };\r
175 deleteAction.setText(Messages.FilterViewer_DeleteActionText);\r
176 manager.add(deleteAction);\r
177 \r
178 manager.add(new Separator());\r
179 }\r
90e2b925 180\r
4bf17f4a 181 if (fViewer.getInput() instanceof TmfFilterRootNode || selectedNode == null) {\r
182 final ITmfFilterTreeNode root = (ITmfFilterTreeNode) fViewer.getInput();\r
183 \r
184 fillContextMenuForNode(root, manager);\r
185 }\r
186 }\r
187 \r
188 /**\r
189 * Fill the context menu with the valid children of the provided node\r
190 */\r
191 protected void fillContextMenuForNode(final ITmfFilterTreeNode node, IMenuManager manager) {\r
192 for (final String child : node.getValidChildren()) {\r
193 final Action action = new Action() {\r
194 @Override\r
195 public void run() {\r
196 ITmfFilterTreeNode newNode = null;\r
197 if (TmfFilterNode.NODE_NAME.equals(child)) {\r
198 newNode = new TmfFilterNode(node, ""); //$NON-NLS-1$\r
199 } else if (TmfFilterEventTypeNode.NODE_NAME.equals(child)) {\r
200 newNode = new TmfFilterEventTypeNode(node);\r
201 } else if (TmfFilterAndNode.NODE_NAME.equals(child)) {\r
202 newNode = new TmfFilterAndNode(node);\r
203 } else if (TmfFilterOrNode.NODE_NAME.equals(child)) {\r
204 newNode = new TmfFilterOrNode(node);\r
205 } else if (TmfFilterContainsNode.NODE_NAME.equals(child)) {\r
206 newNode = new TmfFilterContainsNode(node);\r
207 } else if (TmfFilterEqualsNode.NODE_NAME.equals(child)) {\r
208 newNode = new TmfFilterEqualsNode(node);\r
209 } else if (TmfFilterMatchesNode.NODE_NAME.equals(child)) {\r
210 newNode = new TmfFilterMatchesNode(node);\r
211 } else if (TmfFilterCompareNode.NODE_NAME.equals(child)) {\r
212 newNode = new TmfFilterCompareNode(node);\r
213 }\r
214 if (newNode != null) {\r
215 fViewer.refresh();\r
216 fViewer.setSelection(new StructuredSelection(newNode), true);\r
217 }\r
218 }\r
219 };\r
220 if (TmfFilterNode.NODE_NAME.equals(child)) {\r
221 action.setText(Messages.FilterViewer_NewPrefix + " " + child); //$NON-NLS-1$\r
222 } else {\r
223 action.setText(child);\r
224 }\r
225 manager.add(action);\r
226 }\r
227 }\r
228 \r
229 /**\r
230 * Create the appropriate filter node properties composite\r
231 */\r
232 private void updateFilterNodeComposite(ITmfFilterTreeNode node) {\r
233 for (Control control : fComposite.getChildren()) {\r
234 control.dispose();\r
235 }\r
236 \r
237 if (node instanceof TmfFilterNode) {\r
238 new FilterNodeComposite(fComposite, (TmfFilterNode) node);\r
239 } else if (node instanceof TmfFilterEventTypeNode) {\r
240 new FilterEventTypeNodeComposite(fComposite, (TmfFilterEventTypeNode) node);\r
241 } else if (node instanceof TmfFilterAndNode) {\r
242 new FilterAndNodeComposite(fComposite, (TmfFilterAndNode) node);\r
243 } else if (node instanceof TmfFilterOrNode) {\r
244 new FilterOrNodeComposite(fComposite, (TmfFilterOrNode) node);\r
245 } else if (node instanceof TmfFilterContainsNode) {\r
246 new FilterContainsNodeComposite(fComposite, (TmfFilterContainsNode) node);\r
247 } else if (node instanceof TmfFilterEqualsNode) {\r
248 new FilterEqualsNodeComposite(fComposite, (TmfFilterEqualsNode) node);\r
249 } else if (node instanceof TmfFilterMatchesNode) {\r
250 new FilterMatchesNodeComposite(fComposite, (TmfFilterMatchesNode) node);\r
251 } else if (node instanceof TmfFilterCompareNode) {\r
252 new FilterCompareNodeComposite(fComposite, (TmfFilterCompareNode) node);\r
253 } else {\r
254 new FilterBaseNodeComposite(fComposite);\r
255 }\r
256 fComposite.layout();\r
257 }\r
258 \r
259 /**\r
260 * Highlight the provided tree items\r
261 */\r
262 private void highlightTreeItems(TreeItem[] items) {\r
263 resetTreeItems(fViewer.getTree().getItems());\r
264 for (TreeItem item : items) {\r
265 item.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLUE));\r
266 }\r
90e2b925 267\r
4bf17f4a 268 }\r
269 \r
270 /**\r
271 * Reset the provided tree items (remove highlight)\r
272 */\r
273 private void resetTreeItems(TreeItem[] items) {\r
274 for (TreeItem item : items) {\r
275 item.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));\r
276 resetTreeItems(item.getItems());\r
277 }\r
278 }\r
279 \r
280 public void setInput(ITmfFilterTreeNode root) {\r
281 fViewer.setInput(root);\r
282 fViewer.expandAll();\r
283 \r
284 updateFilterNodeComposite(null);\r
285 }\r
286 \r
287 public ITmfFilterTreeNode getInput() {\r
288 return (ITmfFilterTreeNode) fViewer.getInput();\r
289 }\r
290 \r
291 public void refresh() {\r
292 fViewer.refresh();\r
293 }\r
90e2b925 294\r
4bf17f4a 295 public void setSelection(ITmfFilterTreeNode node, boolean reveal) {\r
296 fViewer.setSelection(new StructuredSelection(node), reveal);\r
297 }\r
90e2b925 298\r
4bf17f4a 299 public void setSelection(ITmfFilterTreeNode node) {\r
300 fViewer.setSelection(new StructuredSelection(node));\r
301 }\r
302 \r
303 public ITmfFilterTreeNode getSelection() {\r
304 final ISelection selection = fViewer.getSelection();\r
305 ITmfFilterTreeNode filterTreeNode = null;\r
306 if (selection instanceof StructuredSelection) {\r
307 Object element = ((StructuredSelection) selection).getFirstElement();\r
308 if (element instanceof ITmfFilterTreeNode) {\r
309 filterTreeNode = (ITmfFilterTreeNode) element;\r
310 }\r
311 }\r
90e2b925 312\r
4bf17f4a 313 final ITmfFilterTreeNode selectedNode = filterTreeNode;\r
314 return selectedNode;\r
315 }\r
316 \r
317 public void addSelectionChangedListener(ISelectionChangedListener listener) {\r
318 fViewer.addSelectionChangedListener(listener);\r
319 }\r
320 \r
321 public void removeSelectionChangedListener(ISelectionChangedListener listener) {\r
322 fViewer.removeSelectionChangedListener(listener);\r
323 }\r
324 \r
325 private class FilterBaseNodeComposite extends Composite {\r
326 \r
327 FilterBaseNodeComposite(Composite parent) {\r
328 super(parent, SWT.NONE);\r
329 setLayout(new GridLayout(2, false));\r
330 setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));\r
331 setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
332 }\r
333 \r
334 protected String[] getFieldsList(ITmfFilterTreeNode node) {\r
335 ArrayList<String> fieldsList = new ArrayList<String>();\r
336 while (node != null) {\r
337 if (node instanceof TmfFilterEventTypeNode) {\r
338 TmfFilterEventTypeNode eventTypeNode = (TmfFilterEventTypeNode) node;\r
339 for (IConfigurationElement ce : TmfTraceType.getTypeElements()) {\r
340 if (ce.getAttribute(TmfTraceType.EVENT_TYPE_ATTR).equals(eventTypeNode.getEventType())) {\r
341 try {\r
d7dbf09a 342 ITmfEvent event = (TmfEvent) ce.createExecutableExtension(TmfTraceType.EVENT_TYPE_ATTR);\r
5d3e8747 343 ITmfEventType eventType = event.getType();\r
4bf17f4a 344 if (eventType != null) {\r
4c564a2d 345 for (String field : eventType.getRootField().getFieldNames()) {\r
4bf17f4a 346 fieldsList.add(field);\r
347 }\r
348 }\r
349 } catch (CoreException e) {\r
350 }\r
351 return fieldsList.toArray(new String[0]);\r
352 }\r
353 }\r
354 if (eventTypeNode.getEventType().startsWith(CustomTxtEvent.class.getCanonicalName())) {\r
355 for (CustomTxtTraceDefinition def : CustomTxtTraceDefinition.loadAll()) {\r
356 if (eventTypeNode.getEventType().equals(CustomTxtEvent.class.getCanonicalName() + ":" + def.definitionName)) { //$NON-NLS-1$\r
357 for (OutputColumn output : def.outputs) {\r
358 fieldsList.add(output.name);\r
359 }\r
360 return fieldsList.toArray(new String[0]);\r
361 }\r
362 }\r
363 }\r
364 if (eventTypeNode.getEventType().startsWith(CustomXmlEvent.class.getCanonicalName())) {\r
365 for (CustomXmlTraceDefinition def : CustomXmlTraceDefinition.loadAll()) {\r
366 if (eventTypeNode.getEventType().equals(CustomXmlEvent.class.getCanonicalName() + ":" + def.definitionName)) { //$NON-NLS-1$\r
367 for (OutputColumn output : def.outputs) {\r
368 fieldsList.add(output.name);\r
369 }\r
370 return fieldsList.toArray(new String[0]);\r
371 }\r
372 }\r
373 }\r
374 }\r
375 node = node.getParent();\r
376 }\r
377 for (IConfigurationElement ce : TmfTraceType.getTypeElements()) {\r
378 try {\r
379 TmfEvent event = (TmfEvent) ce.createExecutableExtension(TmfTraceType.EVENT_TYPE_ATTR);\r
5d3e8747 380 ITmfEventType eventType = event.getType();\r
4bf17f4a 381 if (eventType != null) {\r
382 fieldsList.add("[" + TmfTraceType.getCategoryName(ce.getAttribute(TmfTraceType.CATEGORY_ATTR)) + //$NON-NLS-1$\r
383 " : " + ce.getAttribute(TmfTraceType.NAME_ATTR) + "]"); //$NON-NLS-1$ //$NON-NLS-2$\r
4c564a2d 384 for (String field : eventType.getFieldNames()) {\r
4bf17f4a 385 fieldsList.add(field);\r
386 }\r
387 fieldsList.add(""); //$NON-NLS-1$\r
388 }\r
389 } catch (CoreException e) {\r
390 }\r
391 }\r
392 for (CustomTxtTraceDefinition def : CustomTxtTraceDefinition.loadAll()) {\r
393 fieldsList.add("[" + CUSTOM_TXT_CATEGORY + //$NON-NLS-1$\r
394 " : " + def.definitionName + "]"); //$NON-NLS-1$ //$NON-NLS-2$\r
395 for (OutputColumn output : def.outputs) {\r
396 fieldsList.add(output.name);\r
397 }\r
398 fieldsList.add(""); //$NON-NLS-1$\r
399 }\r
400 for (CustomXmlTraceDefinition def : CustomXmlTraceDefinition.loadAll()) {\r
401 fieldsList.add("[" + CUSTOM_XML_CATEGORY + //$NON-NLS-1$\r
402 " : " + def.definitionName + "]"); //$NON-NLS-1$ //$NON-NLS-2$\r
403 for (OutputColumn output : def.outputs) {\r
404 fieldsList.add(output.name);\r
405 }\r
406 fieldsList.add(""); //$NON-NLS-1$\r
407 }\r
408 return fieldsList.toArray(new String[0]);\r
409 }\r
410 }\r
90e2b925 411\r
4bf17f4a 412 private class FilterNodeComposite extends FilterBaseNodeComposite {\r
413 TmfFilterNode fNode;\r
414 Text fNameText;\r
415 \r
416 FilterNodeComposite(Composite parent, TmfFilterNode node) {\r
417 super(parent);\r
418 fNode = node;\r
419 \r
420 Label label = new Label(this, SWT.NONE);\r
421 label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
422 label.setText(Messages.FilterViewer_NameLabel);\r
423 \r
424 fNameText = new Text(this, SWT.BORDER);\r
425 fNameText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
426 if (node.getFilterName() != null && node.getFilterName().length() > 0) {\r
427 fNameText.setText(node.getFilterName());\r
428 } else {\r
429 fNameText.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY));\r
430 fNameText.setText(Messages.FilterViewer_FilterNameHint);\r
431 }\r
432 fNameText.addFocusListener(new FocusListener() {\r
433 @Override\r
90e2b925 434 public void focusLost(FocusEvent e) {\r
4bf17f4a 435 if (fNode.getFilterName() == null || fNode.getFilterName().length() == 0) {\r
436 fNameText.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY));\r
437 fNameText.setText(Messages.FilterViewer_FilterNameHint);\r
438 }\r
439 }\r
440 @Override\r
90e2b925 441 public void focusGained(FocusEvent e) {\r
4bf17f4a 442 if (fNameText.getForeground().equals(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY))) {\r
443 fNameText.setText(""); //$NON-NLS-1$\r
444 }\r
445 fNameText.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));\r
446 }\r
447 });\r
448 fNameText.addModifyListener(new ModifyListener() {\r
449 @Override\r
90e2b925 450 public void modifyText(ModifyEvent e) {\r
4bf17f4a 451 if (! fNameText.getForeground().equals(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY))) {\r
452 fNode.setFilterName(fNameText.getText());\r
453 fViewer.refresh(fNode);\r
454 }\r
455 }\r
456 });\r
457 }\r
458 }\r
90e2b925 459\r
4bf17f4a 460 private class FilterEventTypeNodeComposite extends FilterBaseNodeComposite {\r
461 TmfFilterEventTypeNode fNode;\r
462 Combo fTypeCombo;\r
463 Map<String, Object> fEventsTypeMap;\r
464 \r
465 FilterEventTypeNodeComposite(Composite parent, TmfFilterEventTypeNode node) {\r
466 super(parent);\r
467 fNode = node;\r
468 fEventsTypeMap = getEventsTypeMap();\r
90e2b925 469\r
4bf17f4a 470 Label label = new Label(this, SWT.NONE);\r
471 label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
472 label.setText(Messages.FilterViewer_TypeLabel);\r
473 \r
474 fTypeCombo = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY);\r
475 fTypeCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
476 fTypeCombo.setItems(fEventsTypeMap.keySet().toArray(new String[0]));\r
477 if (fNode.getEventType() != null) {\r
478 for (Entry <String, Object> eventTypeEntry : fEventsTypeMap.entrySet()) {\r
479 Object value = eventTypeEntry.getValue();\r
480 if (value instanceof IConfigurationElement) {\r
481 IConfigurationElement ce = (IConfigurationElement) value;\r
482 if (ce.getAttribute(TmfTraceType.EVENT_TYPE_ATTR).equals(fNode.getEventType())) {\r
483 fTypeCombo.setText(eventTypeEntry.getKey());\r
484 }\r
485 } else if (value instanceof CustomTxtTraceDefinition) {\r
486 CustomTxtTraceDefinition def = (CustomTxtTraceDefinition) value;\r
487 String eventType = CustomTxtEvent.class.getCanonicalName() + ":" + def.definitionName; //$NON-NLS-1$\r
488 if (eventType.equals(fNode.getEventType())) {\r
489 fTypeCombo.setText(eventTypeEntry.getKey());\r
490 }\r
491 } else if (value instanceof CustomXmlTraceDefinition) {\r
492 CustomXmlTraceDefinition def = (CustomXmlTraceDefinition) value;\r
493 String eventType = CustomXmlEvent.class.getCanonicalName() + ":" + def.definitionName; //$NON-NLS-1$\r
494 if (eventType.equals(fNode.getEventType())) {\r
495 fTypeCombo.setText(eventTypeEntry.getKey());\r
496 }\r
497 }\r
498 }\r
499 }\r
500 fTypeCombo.addModifyListener(new ModifyListener() {\r
501 @Override\r
90e2b925 502 public void modifyText(ModifyEvent e) {\r
4bf17f4a 503 for (Entry <String, Object> eventTypeEntry : fEventsTypeMap.entrySet()) {\r
504 if (eventTypeEntry.getKey().equals(fTypeCombo.getText())) {\r
505 Object value = eventTypeEntry.getValue();\r
506 if (value instanceof IConfigurationElement) {\r
507 IConfigurationElement ce = (IConfigurationElement) value;\r
508 fNode.setEventType(ce.getAttribute(TmfTraceType.EVENT_TYPE_ATTR));\r
509 fNode.setName(ce.getAttribute(TmfTraceType.NAME_ATTR));\r
510 } else if (value instanceof CustomTxtTraceDefinition) {\r
511 CustomTxtTraceDefinition def = (CustomTxtTraceDefinition) value;\r
512 fNode.setEventType(CustomTxtEvent.class.getCanonicalName() + ":" + def.definitionName); //$NON-NLS-1$\r
513 fNode.setName(def.definitionName);\r
514 } else if (value instanceof CustomXmlTraceDefinition) {\r
515 CustomXmlTraceDefinition def = (CustomXmlTraceDefinition) value;\r
516 fNode.setEventType(CustomXmlEvent.class.getCanonicalName() + ":" + def.definitionName); //$NON-NLS-1$\r
517 fNode.setName(def.definitionName);\r
518 }\r
519 fViewer.refresh(fNode);\r
520 break;\r
521 }\r
522 }\r
523 }\r
524 });\r
525 }\r
526\r
527 protected Map<String, Object> getEventsTypeMap() {\r
528 Map<String, Object> eventsTypeMap = new LinkedHashMap<String, Object>();\r
529 for (IConfigurationElement ce : TmfTraceType.getTypeElements()) {\r
530 String categoryName = TmfTraceType.getCategoryName(ce.getAttribute(TmfTraceType.CATEGORY_ATTR));\r
531 String text = categoryName + " : " + ce.getAttribute(TmfTraceType.NAME_ATTR); //$NON-NLS-1$\r
532 eventsTypeMap.put(text, ce);\r
533 }\r
534 for (CustomTxtTraceDefinition def : CustomTxtTraceDefinition.loadAll()) {\r
535 String text = CUSTOM_TXT_CATEGORY + " : " + def.definitionName; //$NON-NLS-1$\r
536 eventsTypeMap.put(text, def);\r
537 }\r
538 for (CustomXmlTraceDefinition def : CustomXmlTraceDefinition.loadAll()) {\r
539 String text = CUSTOM_XML_CATEGORY + " : " + def.definitionName; //$NON-NLS-1$\r
540 eventsTypeMap.put(text, def);\r
541 }\r
542 return eventsTypeMap;\r
543 }\r
544 }\r
545 \r
546 private class FilterAndNodeComposite extends FilterBaseNodeComposite {\r
547 TmfFilterAndNode fNode;\r
548 Button fNotButton;\r
549 \r
550 FilterAndNodeComposite(Composite parent, TmfFilterAndNode node) {\r
551 super(parent);\r
552 fNode = node;\r
553 \r
554 Label label = new Label(this, SWT.NONE);\r
555 label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
556 label.setText(Messages.FilterViewer_NotLabel);\r
557 \r
558 fNotButton = new Button(this, SWT.CHECK);\r
559 fNotButton.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
560 fNotButton.setSelection(fNode.isNot());\r
561 fNotButton.addSelectionListener(new SelectionAdapter() {\r
562 @Override\r
563 public void widgetSelected(SelectionEvent e) {\r
564 fNode.setNot(fNotButton.getSelection());\r
565 fViewer.refresh(fNode);\r
566 }\r
567 });\r
568 }\r
569 }\r
90e2b925 570\r
4bf17f4a 571 private class FilterOrNodeComposite extends FilterBaseNodeComposite {\r
572 TmfFilterOrNode fNode;\r
573 Button fNotButton;\r
574 \r
575 FilterOrNodeComposite(Composite parent, TmfFilterOrNode node) {\r
576 super(parent);\r
577 fNode = node;\r
578 \r
579 Label label = new Label(this, SWT.NONE);\r
580 label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
581 label.setText(Messages.FilterViewer_NotLabel);\r
582 \r
583 fNotButton = new Button(this, SWT.CHECK);\r
584 fNotButton.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
585 fNotButton.setSelection(fNode.isNot());\r
586 fNotButton.addSelectionListener(new SelectionAdapter() {\r
587 @Override\r
588 public void widgetSelected(SelectionEvent e) {\r
589 fNode.setNot(fNotButton.getSelection());\r
590 fViewer.refresh(fNode);\r
591 }\r
592 });\r
593 }\r
594 }\r
595 \r
596 private class FilterContainsNodeComposite extends FilterBaseNodeComposite {\r
597 TmfFilterContainsNode fNode;\r
598 Button fNotButton;\r
599 Combo fFieldCombo;\r
600 Text fValueText;\r
601 Button fIgnoreCaseButton;\r
602 \r
603 FilterContainsNodeComposite(Composite parent, TmfFilterContainsNode node) {\r
604 super(parent);\r
605 fNode = node;\r
606 \r
607 Label label = new Label(this, SWT.NONE);\r
608 label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
609 label.setText(Messages.FilterViewer_NotLabel);\r
610 \r
611 fNotButton = new Button(this, SWT.CHECK);\r
612 fNotButton.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
613 fNotButton.setSelection(fNode.isNot());\r
614 fNotButton.addSelectionListener(new SelectionAdapter() {\r
615 @Override\r
616 public void widgetSelected(SelectionEvent e) {\r
617 fNode.setNot(fNotButton.getSelection());\r
618 fViewer.refresh(fNode);\r
619 }\r
620 });\r
621 \r
622 label = new Label(this, SWT.NONE);\r
623 label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
624 label.setText(Messages.FilterViewer_FieldLabel);\r
625 \r
626 fFieldCombo = new Combo(this, SWT.DROP_DOWN);\r
627 fFieldCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
628 fFieldCombo.setItems(getFieldsList(fNode));\r
629 if (fNode.getField() != null) {\r
630 fFieldCombo.setText(fNode.getField());\r
631 }\r
632 fFieldCombo.addModifyListener(new ModifyListener() {\r
633 @Override\r
90e2b925 634 public void modifyText(ModifyEvent e) {\r
4bf17f4a 635 fNode.setField(fFieldCombo.getText());\r
636 fViewer.refresh(fNode);\r
637 }\r
638 });\r
639 \r
640 label = new Label(this, SWT.NONE);\r
641 label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
642 label.setText(Messages.FilterViewer_ValueLabel);\r
643 \r
644 fValueText = new Text(this, SWT.BORDER);\r
645 fValueText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
646 if (node.getValue() != null && node.getValue().length() > 0) {\r
647 fValueText.setText(node.getValue());\r
648 } else {\r
649 fValueText.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY));\r
650 fValueText.setText(Messages.FilterViewer_ValueHint);\r
651 }\r
652 fValueText.addFocusListener(new FocusListener() {\r
653 @Override\r
90e2b925 654 public void focusLost(FocusEvent e) {\r
4bf17f4a 655 if (fNode.getValue() == null || fNode.getValue().length() == 0) {\r
656 fValueText.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY));\r
657 fValueText.setText(Messages.FilterViewer_ValueHint);\r
658 }\r
659 }\r
660 @Override\r
90e2b925 661 public void focusGained(FocusEvent e) {\r
4bf17f4a 662 if (fValueText.getForeground().equals(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY))) {\r
663 fValueText.setText(""); //$NON-NLS-1$\r
664 }\r
665 fValueText.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));\r
666 }\r
667 });\r
668 fValueText.addModifyListener(new ModifyListener() {\r
669 @Override\r
90e2b925 670 public void modifyText(ModifyEvent e) {\r
4bf17f4a 671 if (! fValueText.getForeground().equals(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY))) {\r
672 fNode.setValue(fValueText.getText());\r
673 fViewer.refresh(fNode);\r
674 }\r
675 }\r
676 });\r
677 \r
678 label = new Label(this, SWT.NONE);\r
679 label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
680 \r
681 fIgnoreCaseButton = new Button(this, SWT.CHECK);\r
682 fIgnoreCaseButton.setSelection(fNode.isIgnoreCase());\r
683 fIgnoreCaseButton.setText(Messages.FilterViewer_IgnoreCaseButtonText);\r
684 fIgnoreCaseButton.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
685 fIgnoreCaseButton.addSelectionListener(new SelectionAdapter() {\r
686 @Override\r
687 public void widgetSelected(SelectionEvent e) {\r
688 fNode.setIgnoreCase(fIgnoreCaseButton.getSelection());\r
689 fViewer.refresh(fNode);\r
690 }\r
691 });\r
692 }\r
693 }\r
90e2b925 694\r
4bf17f4a 695 private class FilterEqualsNodeComposite extends FilterBaseNodeComposite {\r
696 TmfFilterEqualsNode fNode;\r
697 Button fNotButton;\r
698 Combo fFieldCombo;\r
699 Text fValueText;\r
700 Button fIgnoreCaseButton;\r
701 \r
702 FilterEqualsNodeComposite(Composite parent, TmfFilterEqualsNode node) {\r
703 super(parent);\r
704 fNode = node;\r
705 \r
706 Label label = new Label(this, SWT.NONE);\r
707 label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
708 label.setText(Messages.FilterViewer_NotLabel);\r
709 \r
710 fNotButton = new Button(this, SWT.CHECK);\r
711 fNotButton.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
712 fNotButton.setSelection(fNode.isNot());\r
713 fNotButton.addSelectionListener(new SelectionAdapter() {\r
714 @Override\r
715 public void widgetSelected(SelectionEvent e) {\r
716 fNode.setNot(fNotButton.getSelection());\r
717 fViewer.refresh(fNode);\r
718 }\r
719 });\r
720 \r
721 label = new Label(this, SWT.NONE);\r
722 label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
723 label.setText(Messages.FilterViewer_FieldLabel);\r
724 \r
725 fFieldCombo = new Combo(this, SWT.DROP_DOWN);\r
726 fFieldCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
727 fFieldCombo.setItems(getFieldsList(fNode));\r
728 if (fNode.getField() != null) {\r
729 fFieldCombo.setText(fNode.getField());\r
730 }\r
731 fFieldCombo.addModifyListener(new ModifyListener() {\r
732 @Override\r
90e2b925 733 public void modifyText(ModifyEvent e) {\r
4bf17f4a 734 fNode.setField(fFieldCombo.getText());\r
735 fViewer.refresh(fNode);\r
736 }\r
737 });\r
738 \r
739 label = new Label(this, SWT.NONE);\r
740 label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
741 label.setText(Messages.FilterViewer_ValueLabel);\r
742 \r
743 fValueText = new Text(this, SWT.BORDER);\r
744 fValueText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
745 if (node.getValue() != null && node.getValue().length() > 0) {\r
746 fValueText.setText(node.getValue());\r
747 } else {\r
748 fValueText.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY));\r
749 fValueText.setText(Messages.FilterViewer_ValueHint);\r
750 }\r
751 fValueText.addFocusListener(new FocusListener() {\r
752 @Override\r
90e2b925 753 public void focusLost(FocusEvent e) {\r
4bf17f4a 754 if (fNode.getValue() == null || fNode.getValue().length() == 0) {\r
755 fValueText.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY));\r
756 fValueText.setText(Messages.FilterViewer_ValueHint);\r
757 }\r
758 }\r
759 @Override\r
90e2b925 760 public void focusGained(FocusEvent e) {\r
4bf17f4a 761 if (fValueText.getForeground().equals(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY))) {\r
762 fValueText.setText(""); //$NON-NLS-1$\r
763 }\r
764 fValueText.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));\r
765 }\r
766 });\r
767 fValueText.addModifyListener(new ModifyListener() {\r
768 @Override\r
90e2b925 769 public void modifyText(ModifyEvent e) {\r
4bf17f4a 770 if (! fValueText.getForeground().equals(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY))) {\r
771 fNode.setValue(fValueText.getText());\r
772 fViewer.refresh(fNode);\r
773 }\r
774 }\r
775 });\r
776 \r
777 label = new Label(this, SWT.NONE);\r
778 label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
779 \r
780 fIgnoreCaseButton = new Button(this, SWT.CHECK);\r
781 fIgnoreCaseButton.setSelection(fNode.isIgnoreCase());\r
782 fIgnoreCaseButton.setText(Messages.FilterViewer_IgnoreCaseButtonText);\r
783 fIgnoreCaseButton.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
784 fIgnoreCaseButton.addSelectionListener(new SelectionAdapter() {\r
785 @Override\r
786 public void widgetSelected(SelectionEvent e) {\r
787 fNode.setIgnoreCase(fIgnoreCaseButton.getSelection());\r
788 fViewer.refresh(fNode);\r
789 }\r
790 });\r
791 }\r
792 }\r
90e2b925 793\r
4bf17f4a 794 private class FilterMatchesNodeComposite extends FilterBaseNodeComposite {\r
795 TmfFilterMatchesNode fNode;\r
796 Button fNotButton;\r
797 Combo fFieldCombo;\r
798 Text fRegexText;\r
799 \r
800 FilterMatchesNodeComposite(Composite parent, TmfFilterMatchesNode node) {\r
801 super(parent);\r
802 fNode = node;\r
803 \r
804 Label label = new Label(this, SWT.NONE);\r
805 label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
806 label.setText(Messages.FilterViewer_NotLabel);\r
807 \r
808 fNotButton = new Button(this, SWT.CHECK);\r
809 fNotButton.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
810 fNotButton.setSelection(fNode.isNot());\r
811 fNotButton.addSelectionListener(new SelectionAdapter() {\r
812 @Override\r
813 public void widgetSelected(SelectionEvent e) {\r
814 fNode.setNot(fNotButton.getSelection());\r
815 fViewer.refresh(fNode);\r
816 }\r
817 });\r
818 \r
819 label = new Label(this, SWT.NONE);\r
820 label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
821 label.setText(Messages.FilterViewer_FieldLabel);\r
822 \r
823 fFieldCombo = new Combo(this, SWT.DROP_DOWN);\r
824 fFieldCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
825 fFieldCombo.setItems(getFieldsList(fNode));\r
826 if (fNode.getField() != null) {\r
827 fFieldCombo.setText(fNode.getField());\r
828 }\r
829 fFieldCombo.addModifyListener(new ModifyListener() {\r
830 @Override\r
90e2b925 831 public void modifyText(ModifyEvent e) {\r
4bf17f4a 832 fNode.setField(fFieldCombo.getText());\r
833 fViewer.refresh(fNode);\r
834 }\r
835 });\r
836 \r
837 label = new Label(this, SWT.NONE);\r
838 label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
839 label.setText(Messages.FilterViewer_RegexLabel);\r
840 \r
841 fRegexText = new Text(this, SWT.BORDER);\r
842 fRegexText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
843 if (node.getRegex() != null && node.getRegex().length() > 0) {\r
844 fRegexText.setText(node.getRegex());\r
845 } else {\r
846 fRegexText.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY));\r
847 fRegexText.setText(Messages.FilterViewer_RegexHint);\r
848 }\r
849 fRegexText.addFocusListener(new FocusListener() {\r
850 @Override\r
90e2b925 851 public void focusLost(FocusEvent e) {\r
4bf17f4a 852 if (fNode.getRegex() == null || fNode.getRegex().length() == 0) {\r
853 fRegexText.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY));\r
854 fRegexText.setText(Messages.FilterViewer_RegexHint);\r
855 }\r
856 }\r
857 @Override\r
90e2b925 858 public void focusGained(FocusEvent e) {\r
4bf17f4a 859 if (fRegexText.getForeground().equals(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY))) {\r
860 fRegexText.setText(""); //$NON-NLS-1$\r
861 }\r
862 fRegexText.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));\r
863 }\r
864 });\r
865 fRegexText.addModifyListener(new ModifyListener() {\r
866 @Override\r
90e2b925 867 public void modifyText(ModifyEvent e) {\r
4bf17f4a 868 if (! fRegexText.getForeground().equals(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY))) {\r
869 fNode.setRegex(fRegexText.getText());\r
870 fViewer.refresh(fNode);\r
871 }\r
872 }\r
873 });\r
874 }\r
875 }\r
90e2b925 876\r
4bf17f4a 877 private class FilterCompareNodeComposite extends FilterBaseNodeComposite {\r
878 TmfFilterCompareNode fNode;\r
879 Button fNotButton;\r
880 Combo fFieldCombo;\r
881 Text fValueText;\r
882 Button fLTButton;\r
883 Button fEQButton;\r
884 Button fGTButton;\r
885 Button fNumButton;\r
886 Button fAlphaButton;\r
887 Button fTimestampButton;\r
888 \r
889 FilterCompareNodeComposite(Composite parent, TmfFilterCompareNode node) {\r
890 super(parent);\r
891 fNode = node;\r
892 \r
893 Label label = new Label(this, SWT.NONE);\r
894 label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
895 label.setText(Messages.FilterViewer_NotLabel);\r
896 \r
897 fNotButton = new Button(this, SWT.CHECK);\r
898 fNotButton.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
899 fNotButton.setSelection(fNode.isNot());\r
900 fNotButton.addSelectionListener(new SelectionAdapter() {\r
901 @Override\r
902 public void widgetSelected(SelectionEvent e) {\r
903 fNode.setNot(fNotButton.getSelection());\r
904 fViewer.refresh(fNode);\r
905 }\r
906 });\r
907 \r
908 label = new Label(this, SWT.NONE);\r
909 label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
910 label.setText(Messages.FilterViewer_FieldLabel);\r
911 \r
912 fFieldCombo = new Combo(this, SWT.DROP_DOWN);\r
913 fFieldCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
914 fFieldCombo.setItems(getFieldsList(fNode));\r
915 if (fNode.getField() != null) {\r
916 fFieldCombo.setText(fNode.getField());\r
917 }\r
918 fFieldCombo.addModifyListener(new ModifyListener() {\r
919 @Override\r
90e2b925 920 public void modifyText(ModifyEvent e) {\r
4bf17f4a 921 fNode.setField(fFieldCombo.getText());\r
922 fViewer.refresh(fNode);\r
923 }\r
924 });\r
925 \r
926 label = new Label(this, SWT.NONE);\r
927 label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
928 label.setText(Messages.FilterViewer_ResultLabel);\r
929 \r
930 Composite resultGroup = new Composite(this, SWT.NONE);\r
931 GridLayout rggl = new GridLayout(3, true);\r
932 rggl.marginHeight = 0;\r
933 rggl.marginWidth = 0;\r
934 resultGroup.setLayout(rggl);\r
935 resultGroup.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
936 \r
937 fLTButton = new Button(resultGroup, SWT.RADIO);\r
938 fLTButton.setSelection(fNode.getResult() < 0);\r
939 fLTButton.setText("<"); //$NON-NLS-1$\r
940 fLTButton.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
941 fLTButton.addSelectionListener(new SelectionAdapter() {\r
942 @Override\r
943 public void widgetSelected(SelectionEvent e) {\r
944 if (fLTButton.getSelection()) {\r
945 fNode.setResult(-1);\r
946 }\r
947 fViewer.refresh(fNode);\r
948 }\r
949 });\r
950 \r
951 fEQButton = new Button(resultGroup, SWT.RADIO);\r
952 fEQButton.setSelection(fNode.getResult() == 0);\r
953 fEQButton.setText("="); //$NON-NLS-1$\r
954 fEQButton.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
955 fEQButton.addSelectionListener(new SelectionAdapter() {\r
956 @Override\r
957 public void widgetSelected(SelectionEvent e) {\r
958 if (fEQButton.getSelection()) {\r
959 fNode.setResult(0);\r
960 }\r
961 fViewer.refresh(fNode);\r
962 }\r
963 });\r
964 \r
965 fGTButton = new Button(resultGroup, SWT.RADIO);\r
966 fGTButton.setSelection(fNode.getResult() > 0);\r
967 fGTButton.setText(">"); //$NON-NLS-1$\r
968 fGTButton.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
969 fGTButton.addSelectionListener(new SelectionAdapter() {\r
970 @Override\r
971 public void widgetSelected(SelectionEvent e) {\r
972 if (fGTButton.getSelection()) {\r
973 fNode.setResult(1);\r
974 }\r
975 fViewer.refresh(fNode);\r
976 }\r
977 });\r
978 \r
979 label = new Label(this, SWT.NONE);\r
980 label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
981 label.setText(Messages.FilterViewer_TypeLabel);\r
982 \r
983 Composite typeGroup = new Composite(this, SWT.NONE);\r
984 GridLayout tggl = new GridLayout(3, false);\r
985 tggl.marginHeight = 0;\r
986 tggl.marginWidth = 0;\r
987 typeGroup.setLayout(tggl);\r
988 typeGroup.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
989 \r
990 fNumButton = new Button(typeGroup, SWT.RADIO);\r
991 fNumButton.setSelection(fNode.getType() == Type.NUM);\r
992 fNumButton.setText(Messages.FilterViewer_NumButtonText);\r
993 fNumButton.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
994 fNumButton.addSelectionListener(new SelectionAdapter() {\r
995 @Override\r
996 public void widgetSelected(SelectionEvent e) {\r
997 if (fNumButton.getSelection()) {\r
998 fNode.setType(Type.NUM);\r
999 }\r
1000 fViewer.refresh(fNode);\r
1001 }\r
1002 });\r
1003 \r
1004 fAlphaButton = new Button(typeGroup, SWT.RADIO);\r
1005 fAlphaButton.setSelection(fNode.getType() == Type.ALPHA);\r
1006 fAlphaButton.setText(Messages.FilterViewer_AlphaButtonText);\r
1007 fAlphaButton.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
1008 fAlphaButton.addSelectionListener(new SelectionAdapter() {\r
1009 @Override\r
1010 public void widgetSelected(SelectionEvent e) {\r
1011 if (fAlphaButton.getSelection()) {\r
1012 fNode.setType(Type.ALPHA);\r
1013 }\r
1014 fViewer.refresh(fNode);\r
1015 }\r
1016 });\r
1017 \r
1018 fTimestampButton = new Button(typeGroup, SWT.RADIO);\r
1019 fTimestampButton.setSelection(fNode.getType() == Type.TIMESTAMP);\r
1020 fTimestampButton.setText(Messages.FilterViewer_TimestampButtonText);\r
1021 fTimestampButton.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
1022 fTimestampButton.addSelectionListener(new SelectionAdapter() {\r
1023 @Override\r
1024 public void widgetSelected(SelectionEvent e) {\r
1025 if (fTimestampButton.getSelection()) {\r
1026 fNode.setType(Type.TIMESTAMP);\r
1027 }\r
1028 fViewer.refresh(fNode);\r
1029 }\r
1030 });\r
1031 \r
1032 label = new Label(this, SWT.NONE);\r
1033 label.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));\r
1034 label.setText(Messages.FilterViewer_ValueLabel);\r
1035 \r
1036 fValueText = new Text(this, SWT.BORDER);\r
1037 fValueText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));\r
1038 if (node.getValue() != null && node.getValue().length() > 0) {\r
1039 fValueText.setText(node.getValue());\r
1040 } else {\r
1041 fValueText.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY));\r
1042 fValueText.setText(Messages.FilterViewer_ValueHint);\r
1043 }\r
1044 fValueText.addFocusListener(new FocusListener() {\r
1045 @Override\r
90e2b925 1046 public void focusLost(FocusEvent e) {\r
4bf17f4a 1047 if (fNode.getValue() == null || fNode.getValue().length() == 0) {\r
1048 fValueText.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY));\r
1049 fValueText.setText(Messages.FilterViewer_ValueHint);\r
1050 }\r
1051 }\r
1052 @Override\r
90e2b925 1053 public void focusGained(FocusEvent e) {\r
4bf17f4a 1054 if (fValueText.getForeground().equals(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY))) {\r
1055 fValueText.setText(""); //$NON-NLS-1$\r
1056 }\r
1057 fValueText.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLACK));\r
1058 }\r
1059 });\r
1060 fValueText.addModifyListener(new ModifyListener() {\r
1061 @Override\r
90e2b925 1062 public void modifyText(ModifyEvent e) {\r
4bf17f4a 1063 if (! fValueText.getForeground().equals(Display.getCurrent().getSystemColor(SWT.COLOR_GRAY))) {\r
1064 fNode.setValue(fValueText.getText());\r
1065 fViewer.refresh(fNode);\r
1066 }\r
1067 }\r
1068 });\r
1069 }\r
1070 }\r
90e2b925
FC
1071\r
1072}\r
This page took 0.076495 seconds and 5 git commands to generate.