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