tmf: Update event properties to use aspects
[deliverable/tracecompass.git] / btf / org.eclipse.tracecompass.btf.ui / src / org / eclipse / tracecompass / btf / ui / BtfEventPropertySource.java
CommitLineData
ff71e543 1/*******************************************************************************
df854ddb 2 * Copyright (c) 2014, 2015 Ericsson
ff71e543
MK
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 * Matthew Khouzam - Initial API and implementation
df854ddb 11 * Patrick Tasse - Update properties
ff71e543
MK
12 *******************************************************************************/
13
7ce90559 14package org.eclipse.tracecompass.btf.ui;
ff71e543 15
df854ddb 16import java.util.Arrays;
ff71e543 17
459a0736 18import org.eclipse.jdt.annotation.NonNull;
df854ddb 19import org.eclipse.tracecompass.btf.core.event.BTFPayload;
7ce90559 20import org.eclipse.tracecompass.btf.core.event.BtfEvent;
df854ddb 21import org.eclipse.tracecompass.btf.core.trace.BtfColumnNames;
2bdf0193
AM
22import org.eclipse.tracecompass.tmf.core.event.ITmfEventField;
23import org.eclipse.tracecompass.tmf.ui.properties.ReadOnlyTextPropertyDescriptor;
24import org.eclipse.tracecompass.tmf.ui.viewers.events.TmfEventPropertySource;
ff71e543
MK
25import org.eclipse.ui.views.properties.IPropertyDescriptor;
26import org.eclipse.ui.views.properties.IPropertySource;
27
28/**
29 * Btf event property source
30 *
31 * @author Matthew Khouzam
32 */
33public class BtfEventPropertySource extends TmfEventPropertySource {
34
35 private static final String ID_EVENT_EVENT = "event_event"; //$NON-NLS-1$
36 private static final String ID_EVENT_TIMESTAMP = "event_timestamp"; //$NON-NLS-1$
37 private static final String ID_EVENT_SOURCE = "event_source"; //$NON-NLS-1$
38 private static final String ID_EVENT_TYPE = "event_type"; //$NON-NLS-1$
39 private static final String ID_EVENT_TARGET = "event_target"; //$NON-NLS-1$
df854ddb
PT
40 private static final String ID_EVENT_NOTES = "event_notes"; //$NON-NLS-1$
41 private static final IPropertyDescriptor[] DESCRIPTORS = new IPropertyDescriptor[] {
42 new ReadOnlyTextPropertyDescriptor(ID_EVENT_TIMESTAMP, "Timestamp"), //$NON-NLS-1$
43 new ReadOnlyTextPropertyDescriptor(ID_EVENT_SOURCE, "Source"), //$NON-NLS-1$
44 new ReadOnlyTextPropertyDescriptor(ID_EVENT_TYPE, "Type"), //$NON-NLS-1$
45 new ReadOnlyTextPropertyDescriptor(ID_EVENT_TARGET, "Target"), //$NON-NLS-1$
46 new ReadOnlyTextPropertyDescriptor(ID_EVENT_EVENT, "Event"), //$NON-NLS-1$
47 new ReadOnlyTextPropertyDescriptor(ID_EVENT_NOTES, "Notes") //$NON-NLS-1$
48 };
49 private static final IPropertyDescriptor[] DESCRIPTORS_WITHOUT_NOTES = Arrays.copyOf(DESCRIPTORS, DESCRIPTORS.length - 1);
50 private static final String DESCRIPTION = "Description"; //$NON-NLS-1$
51 private static final String INSTANCE = "Instance"; //$NON-NLS-1$
52
ff71e543
MK
53 private final BtfEvent fEvent;
54
55 /**
56 * Btf Event property source
57 *
58 * @param event
59 * the event
60 */
459a0736 61 public BtfEventPropertySource(@NonNull BtfEvent event) {
ff71e543
MK
62 super(event);
63 fEvent = event;
64
65 }
66
67 @Override
68 public IPropertyDescriptor[] getPropertyDescriptors() {
df854ddb
PT
69 if (fEvent.getContent().getField(BtfColumnNames.NOTES.toString()) == null) {
70 return DESCRIPTORS_WITHOUT_NOTES;
71 }
72 return DESCRIPTORS;
ff71e543
MK
73 }
74
658e0268 75 private static class EntityPropertySource implements IPropertySource {
df854ddb 76 private final String fName;
ff71e543
MK
77 private final String fInstance;
78
df854ddb
PT
79 public EntityPropertySource(String name, String instance) {
80 fName = name;
ff71e543
MK
81 fInstance = instance;
82 }
83
84 @Override
85 public Object getEditableValue() {
df854ddb 86 return fName;
ff71e543
MK
87 }
88
89 @Override
90 public IPropertyDescriptor[] getPropertyDescriptors() {
91 return new IPropertyDescriptor[] {
92 new ReadOnlyTextPropertyDescriptor(INSTANCE, INSTANCE)
93 };
94 }
95
96 @Override
97 public Object getPropertyValue(Object id) {
98 if (INSTANCE.equals(id)) {
99 return fInstance;
100 }
101 return null;
102 }
103
104 @Override
105 public boolean isPropertySet(Object id) {
df854ddb 106 return false;
ff71e543
MK
107 }
108
109 @Override
110 public void resetPropertyValue(Object id) {
111 }
112
113 @Override
114 public void setPropertyValue(Object id, Object value) {
115 }
116
117 }
118
658e0268 119 private static class TypePropertySource implements IPropertySource {
ff71e543
MK
120 private final String fType;
121 private final String fDescr;
122
123 public TypePropertySource(String type, String descr) {
124 fType = type;
125 fDescr = descr;
126 }
127
128 @Override
129 public Object getEditableValue() {
130 return fType;
131 }
132
133 @Override
134 public IPropertyDescriptor[] getPropertyDescriptors() {
135 IPropertyDescriptor[] descriptors = new IPropertyDescriptor[1];
136 descriptors[0] = new ReadOnlyTextPropertyDescriptor(DESCRIPTION, DESCRIPTION);
137 return descriptors;
138 }
139
140 @Override
141 public Object getPropertyValue(Object id) {
142 if (DESCRIPTION.equals(id)) {
143 return fDescr;
144 }
145 return null;
146 }
147
148 @Override
149 public boolean isPropertySet(Object id) {
df854ddb 150 return false;
ff71e543
MK
151 }
152
153 @Override
154 public void resetPropertyValue(Object id) {
155 }
156
157 @Override
158 public void setPropertyValue(Object id, Object value) {
159 }
160 }
161
658e0268 162 private static class EventPropertySource implements IPropertySource {
df854ddb 163 private final ITmfEventField fEventField;
ff71e543 164
df854ddb
PT
165 public EventPropertySource(ITmfEventField eventField) {
166 fEventField = eventField;
ff71e543
MK
167 }
168
169 @Override
170 public Object getEditableValue() {
df854ddb 171 return fEventField.getValue();
ff71e543
MK
172 }
173
174 @Override
175 public IPropertyDescriptor[] getPropertyDescriptors() {
ff71e543 176 return new IPropertyDescriptor[] {
df854ddb 177 new ReadOnlyTextPropertyDescriptor(DESCRIPTION, DESCRIPTION)
ff71e543
MK
178 };
179 }
180
181 @Override
182 public Object getPropertyValue(Object id) {
df854ddb
PT
183 if (DESCRIPTION.equals(id)) {
184 ITmfEventField description = fEventField.getField(BTFPayload.DESCRIPTION);
185 return description == null ? null : description.getValue();
ff71e543
MK
186 }
187 return null;
188 }
189
190 @Override
191 public boolean isPropertySet(Object id) {
192 return false;
193 }
194
195 @Override
196 public void resetPropertyValue(Object id) {
197 }
198
199 @Override
200 public void setPropertyValue(Object id, Object value) {
201 }
202
203 }
204
205 @Override
206 public Object getPropertyValue(Object id) {
207 if (id instanceof String) {
208 String id2 = (String) id;
209 final ITmfEventField content = fEvent.getContent();
ff71e543 210 switch (id2) {
ff71e543 211 case ID_EVENT_SOURCE:
df854ddb
PT
212 String source = fEvent.getSource();
213 ITmfEventField sourceInstance = content.getField(BtfColumnNames.SOURCE_INSTANCE.toString());
214 return new EntityPropertySource(source, sourceInstance.getValue().toString());
ff71e543
MK
215 case ID_EVENT_TYPE:
216 return new TypePropertySource(fEvent.getType().getName(), fEvent.getEventDescription());
df854ddb
PT
217 case ID_EVENT_TARGET:
218 String target = fEvent.getTarget();
219 ITmfEventField targetInstance = content.getField(BtfColumnNames.TARGET_INSTANCE.toString());
220 return new EntityPropertySource(target, targetInstance.getValue().toString());
ff71e543 221 case ID_EVENT_EVENT:
df854ddb
PT
222 ITmfEventField event = content.getField(BtfColumnNames.EVENT.toString());
223 return event == null ? null : new EventPropertySource(event);
224 case ID_EVENT_NOTES:
225 ITmfEventField notes = content.getField(BtfColumnNames.NOTES.toString());
226 return notes == null ? null : notes.getValue();
ff71e543
MK
227 default:
228 break;
229 }
230 }
231 return super.getPropertyValue(id);
232 }
233}
This page took 0.064976 seconds and 5 git commands to generate.