1 /*******************************************************************************
2 * Copyright (c) 2013 Ericsson
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
10 * Patrick Tasse - Initial API and implementation
11 *******************************************************************************/
13 package org
.eclipse
.linuxtools
.internal
.gdbtrace
.ui
.views
.events
;
15 import org
.eclipse
.jface
.viewers
.ISelectionChangedListener
;
16 import org
.eclipse
.jface
.viewers
.SelectionChangedEvent
;
17 import org
.eclipse
.linuxtools
.internal
.gdbtrace
.event
.GdbTraceEvent
;
18 import org
.eclipse
.linuxtools
.internal
.gdbtrace
.event
.GdbTraceEventContent
;
19 import org
.eclipse
.linuxtools
.internal
.gdbtrace
.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
;
35 * @author Patrick Tasse
38 public class GdbEventsTable
extends TmfEventsTable
{
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
)
51 private GdbTrace fSelectedTrace
= null;
52 private long fSelectedFrame
= 0;
56 * @param parent the parent
57 * @param cacheSize the cache size
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
);
65 // Synchronize currently selected frame in GDB with table selection
66 addSelectionChangedListener(new ISelectionChangedListener() {
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();
85 fSelectedTrace
= null;
91 public void setTrace(ITmfTrace trace
, boolean disposeOnClose
) {
92 super.setTrace(trace
, disposeOnClose
);
93 if (trace
instanceof GdbTrace
) {
94 fSelectedTrace
= (GdbTrace
) trace
;
96 } else if (trace
instanceof TmfExperiment
) {
97 TmfExperiment experiment
= (TmfExperiment
) trace
;
98 if (experiment
.getTraces().length
> 0) {
99 fSelectedTrace
= (GdbTrace
) experiment
.getTraces()[0];
106 protected void populateCompleted() {
107 if (fSelectedTrace
!= null) {
108 fSelectedTrace
.selectFrame(fSelectedFrame
);
113 protected ITmfEventField
[] extractItemFields(ITmfEvent event
) {
114 ITmfEventField
[] fields
= new TmfEventField
[0];
116 GdbTraceEventContent content
= (GdbTraceEventContent
) event
.getContent();
117 fields
= new TmfEventField
[] {
118 new TmfEventField(TRACE_FRAME_COLUMN
, content
.getFrameNumber()),
119 new TmfEventField(TRACEPOINT_COLUMN
, content
.getTracepointNumber()),
120 new TmfEventField(FILE_COLUMN
, event
.getReference()),
121 new TmfEventField(CONTENT_COLUMN
, content
.toString())
129 public void currentTimeUpdated(final TmfTimeSynchSignal signal
) {
130 // do not synchronize on time