TMF: Export trace to text
[deliverable/tracecompass.git] / org.eclipse.linuxtools.gdbtrace.ui / src / org / eclipse / linuxtools / internal / gdbtrace / ui / views / events / GdbEventsTable.java
1 /*******************************************************************************
2 * Copyright (c) 2013 Ericsson
3 *
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *
9 * Contributors:
10 * Patrick Tasse - Initial API and implementation
11 *******************************************************************************/
12
13 package org.eclipse.linuxtools.internal.gdbtrace.ui.views.events;
14
15 import org.eclipse.jface.viewers.ISelectionChangedListener;
16 import org.eclipse.jface.viewers.SelectionChangedEvent;
17 import org.eclipse.linuxtools.internal.gdbtrace.core.event.GdbTraceEvent;
18 import org.eclipse.linuxtools.internal.gdbtrace.core.event.GdbTraceEventContent;
19 import org.eclipse.linuxtools.internal.gdbtrace.core.trace.GdbTrace;
20 import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
21 import org.eclipse.linuxtools.tmf.core.event.ITmfEventField;
22 import org.eclipse.linuxtools.tmf.core.event.TmfEventField;
23 import org.eclipse.linuxtools.tmf.core.signal.TmfSignalHandler;
24 import org.eclipse.linuxtools.tmf.core.signal.TmfTimeSynchSignal;
25 import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
26 import org.eclipse.linuxtools.tmf.core.trace.TmfExperiment;
27 import org.eclipse.linuxtools.tmf.ui.viewers.events.TmfEventsTable;
28 import org.eclipse.linuxtools.tmf.ui.widgets.virtualtable.ColumnData;
29 import org.eclipse.swt.SWT;
30 import org.eclipse.swt.widgets.Composite;
31 import org.eclipse.swt.widgets.TableItem;
32
33 /**
34 * GDB Events Table
35 * @author Patrick Tasse
36 *
37 */
38 public class GdbEventsTable extends TmfEventsTable {
39
40 private static final String TRACE_FRAME_COLUMN = GdbTraceEventContent.TRACE_FRAME;
41 private static final String TRACEPOINT_COLUMN = GdbTraceEventContent.TRACEPOINT;
42 private static final String FILE_COLUMN = "File"; //$NON-NLS-1$
43 private static final String CONTENT_COLUMN = "Content"; //$NON-NLS-1$
44 private static final ColumnData[] COLUMN_DATA = new ColumnData[] {
45 new ColumnData(TRACE_FRAME_COLUMN, 100, SWT.RIGHT),
46 new ColumnData(TRACEPOINT_COLUMN, 100, SWT.RIGHT),
47 new ColumnData(FILE_COLUMN, 100, SWT.LEFT),
48 new ColumnData(CONTENT_COLUMN, 100, SWT.LEFT)
49 };
50
51 private GdbTrace fSelectedTrace = null;
52 private long fSelectedFrame = 0;
53
54 /**
55 * Constructor
56 * @param parent the parent
57 * @param cacheSize the cache size
58 */
59 public GdbEventsTable(Composite parent, int cacheSize) {
60 super(parent, cacheSize, COLUMN_DATA);
61 // Set search field ids for event filter
62 fTable.getColumns()[2].setData(Key.FIELD_ID, ITmfEvent.EVENT_FIELD_REFERENCE);
63 fTable.getColumns()[3].setData(Key.FIELD_ID, ITmfEvent.EVENT_FIELD_CONTENT);
64
65 // Synchronize currently selected frame in GDB with table selection
66 addSelectionChangedListener(new ISelectionChangedListener() {
67 @Override
68 public void selectionChanged(SelectionChangedEvent e) {
69 TableItem[] selection = fTable.getSelection();
70 if (selection.length > 0) {
71 TableItem selectedTableItem = selection[0];
72 if (selectedTableItem != null) {
73 Object data = selectedTableItem.getData();
74 if (data instanceof GdbTraceEvent) {
75 GdbTraceEvent event = (GdbTraceEvent) data;
76 GdbTrace gdbTrace = (GdbTrace) event.getTrace();
77 GdbTraceEventContent content = (GdbTraceEventContent) event.getContent();
78 gdbTrace.selectFrame(content.getFrameNumber());
79 fSelectedTrace = gdbTrace;
80 fSelectedFrame = content.getFrameNumber();
81 return;
82 }
83 }
84 }
85 fSelectedTrace = null;
86 }
87 });
88 }
89
90 @Override
91 public void setTrace(ITmfTrace trace, boolean disposeOnClose) {
92 super.setTrace(trace, disposeOnClose);
93 if (trace instanceof GdbTrace) {
94 fSelectedTrace = (GdbTrace) trace;
95 fSelectedFrame = 0;
96 } else if (trace instanceof TmfExperiment) {
97 TmfExperiment experiment = (TmfExperiment) trace;
98 if (experiment.getTraces().length > 0) {
99 fSelectedTrace = (GdbTrace) experiment.getTraces()[0];
100 fSelectedFrame = 0;
101 }
102 }
103 }
104
105 @Override
106 protected void populateCompleted() {
107 if (fSelectedTrace != null) {
108 fSelectedTrace.selectFrame(fSelectedFrame);
109 }
110 }
111
112 @Override
113 protected ITmfEventField[] extractItemFields(ITmfEvent event) {
114 ITmfEventField[] fields = EMPTY_FIELD_ARRAY;
115 if (event != null) {
116 GdbTraceEventContent content = (GdbTraceEventContent) event.getContent();
117 fields = new TmfEventField[] {
118 new TmfEventField(TRACE_FRAME_COLUMN, content.getFrameNumber(), null),
119 new TmfEventField(TRACEPOINT_COLUMN, content.getTracepointNumber(), null),
120 new TmfEventField(FILE_COLUMN, event.getReference(), null),
121 new TmfEventField(CONTENT_COLUMN, content.toString(), null)
122 };
123 }
124 return fields;
125 }
126
127 @Override
128 @TmfSignalHandler
129 public void currentTimeUpdated(final TmfTimeSynchSignal signal) {
130 // do not synchronize on time
131 }
132 }
This page took 0.039561 seconds and 6 git commands to generate.