1 /*******************************************************************************
2 * Copyright (c) 2014, 2015 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 * Matthew Khouzam - Initial API and implementation
11 * Patrick Tasse - Update properties
12 *******************************************************************************/
14 package org
.eclipse
.tracecompass
.btf
.ui
;
16 import java
.util
.Arrays
;
18 import org
.eclipse
.tracecompass
.btf
.core
.event
.BTFPayload
;
19 import org
.eclipse
.tracecompass
.btf
.core
.event
.BtfEvent
;
20 import org
.eclipse
.tracecompass
.btf
.core
.trace
.BtfColumnNames
;
21 import org
.eclipse
.tracecompass
.tmf
.core
.event
.ITmfEventField
;
22 import org
.eclipse
.tracecompass
.tmf
.ui
.properties
.ReadOnlyTextPropertyDescriptor
;
23 import org
.eclipse
.tracecompass
.tmf
.ui
.viewers
.events
.TmfEventPropertySource
;
24 import org
.eclipse
.ui
.views
.properties
.IPropertyDescriptor
;
25 import org
.eclipse
.ui
.views
.properties
.IPropertySource
;
28 * Btf event property source
30 * @author Matthew Khouzam
32 public class BtfEventPropertySource
extends TmfEventPropertySource
{
34 private static final String ID_EVENT_EVENT
= "event_event"; //$NON-NLS-1$
35 private static final String ID_EVENT_TIMESTAMP
= "event_timestamp"; //$NON-NLS-1$
36 private static final String ID_EVENT_SOURCE
= "event_source"; //$NON-NLS-1$
37 private static final String ID_EVENT_TYPE
= "event_type"; //$NON-NLS-1$
38 private static final String ID_EVENT_TARGET
= "event_target"; //$NON-NLS-1$
39 private static final String ID_EVENT_NOTES
= "event_notes"; //$NON-NLS-1$
40 private static final IPropertyDescriptor
[] DESCRIPTORS
= new IPropertyDescriptor
[] {
41 new ReadOnlyTextPropertyDescriptor(ID_EVENT_TIMESTAMP
, "Timestamp"), //$NON-NLS-1$
42 new ReadOnlyTextPropertyDescriptor(ID_EVENT_SOURCE
, "Source"), //$NON-NLS-1$
43 new ReadOnlyTextPropertyDescriptor(ID_EVENT_TYPE
, "Type"), //$NON-NLS-1$
44 new ReadOnlyTextPropertyDescriptor(ID_EVENT_TARGET
, "Target"), //$NON-NLS-1$
45 new ReadOnlyTextPropertyDescriptor(ID_EVENT_EVENT
, "Event"), //$NON-NLS-1$
46 new ReadOnlyTextPropertyDescriptor(ID_EVENT_NOTES
, "Notes") //$NON-NLS-1$
48 private static final IPropertyDescriptor
[] DESCRIPTORS_WITHOUT_NOTES
= Arrays
.copyOf(DESCRIPTORS
, DESCRIPTORS
.length
- 1);
49 private static final String DESCRIPTION
= "Description"; //$NON-NLS-1$
50 private static final String INSTANCE
= "Instance"; //$NON-NLS-1$
52 private final BtfEvent fEvent
;
55 * Btf Event property source
60 public BtfEventPropertySource(BtfEvent event
) {
67 public IPropertyDescriptor
[] getPropertyDescriptors() {
68 if (fEvent
.getContent().getField(BtfColumnNames
.NOTES
.toString()) == null) {
69 return DESCRIPTORS_WITHOUT_NOTES
;
74 private class EntityPropertySource
implements IPropertySource
{
75 private final String fName
;
76 private final String fInstance
;
78 public EntityPropertySource(String name
, String instance
) {
84 public Object
getEditableValue() {
89 public IPropertyDescriptor
[] getPropertyDescriptors() {
90 return new IPropertyDescriptor
[] {
91 new ReadOnlyTextPropertyDescriptor(INSTANCE
, INSTANCE
)
96 public Object
getPropertyValue(Object id
) {
97 if (INSTANCE
.equals(id
)) {
104 public boolean isPropertySet(Object id
) {
109 public void resetPropertyValue(Object id
) {
113 public void setPropertyValue(Object id
, Object value
) {
118 private class TypePropertySource
implements IPropertySource
{
119 private final String fType
;
120 private final String fDescr
;
122 public TypePropertySource(String type
, String descr
) {
128 public Object
getEditableValue() {
133 public IPropertyDescriptor
[] getPropertyDescriptors() {
134 IPropertyDescriptor
[] descriptors
= new IPropertyDescriptor
[1];
135 descriptors
[0] = new ReadOnlyTextPropertyDescriptor(DESCRIPTION
, DESCRIPTION
);
140 public Object
getPropertyValue(Object id
) {
141 if (DESCRIPTION
.equals(id
)) {
148 public boolean isPropertySet(Object id
) {
153 public void resetPropertyValue(Object id
) {
157 public void setPropertyValue(Object id
, Object value
) {
161 private class EventPropertySource
implements IPropertySource
{
162 private final ITmfEventField fEventField
;
164 public EventPropertySource(ITmfEventField eventField
) {
165 fEventField
= eventField
;
169 public Object
getEditableValue() {
170 return fEventField
.getValue();
174 public IPropertyDescriptor
[] getPropertyDescriptors() {
175 return new IPropertyDescriptor
[] {
176 new ReadOnlyTextPropertyDescriptor(DESCRIPTION
, DESCRIPTION
)
181 public Object
getPropertyValue(Object id
) {
182 if (DESCRIPTION
.equals(id
)) {
183 ITmfEventField description
= fEventField
.getField(BTFPayload
.DESCRIPTION
);
184 return description
== null ?
null : description
.getValue();
190 public boolean isPropertySet(Object id
) {
195 public void resetPropertyValue(Object id
) {
199 public void setPropertyValue(Object id
, Object value
) {
205 public Object
getPropertyValue(Object id
) {
206 if (id
instanceof String
) {
207 String id2
= (String
) id
;
208 final ITmfEventField content
= fEvent
.getContent();
210 case ID_EVENT_SOURCE
:
211 String source
= fEvent
.getSource();
212 ITmfEventField sourceInstance
= content
.getField(BtfColumnNames
.SOURCE_INSTANCE
.toString());
213 return new EntityPropertySource(source
, sourceInstance
.getValue().toString());
215 return new TypePropertySource(fEvent
.getType().getName(), fEvent
.getEventDescription());
216 case ID_EVENT_TARGET
:
217 String target
= fEvent
.getTarget();
218 ITmfEventField targetInstance
= content
.getField(BtfColumnNames
.TARGET_INSTANCE
.toString());
219 return new EntityPropertySource(target
, targetInstance
.getValue().toString());
221 ITmfEventField event
= content
.getField(BtfColumnNames
.EVENT
.toString());
222 return event
== null ?
null : new EventPropertySource(event
);
224 ITmfEventField notes
= content
.getField(BtfColumnNames
.NOTES
.toString());
225 return notes
== null ?
null : notes
.getValue();
230 return super.getPropertyValue(id
);