Bug 378402: Implementation of ControlFlow view and Resources view for
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.kernel.ui / src / org / eclipse / linuxtools / internal / lttng2 / kernel / ui / views / resources / ResourcesPresentationProvider.java
1 package org.eclipse.linuxtools.internal.lttng2.kernel.ui.views.resources;
2
3 import java.util.HashMap;
4 import java.util.Map;
5
6 import org.eclipse.linuxtools.internal.lttng2.kernel.ui.Messages;
7 import org.eclipse.linuxtools.internal.lttng2.kernel.ui.views.resources.ResourcesEntry.Type;
8 import org.eclipse.linuxtools.lttng2.kernel.core.trace.Attributes;
9 import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.StateItem;
10 import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.TimeGraphPresentationProvider;
11 import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.ITimeEvent;
12 import org.eclipse.swt.graphics.RGB;
13
14 public class ResourcesPresentationProvider extends TimeGraphPresentationProvider {
15
16 private enum State {
17 UNKNOWN (new RGB(100, 100, 100)),
18 IDLE (new RGB(200, 200, 200)),
19 BUSY (new RGB(0, 200, 0)),
20 INTERRUPTED (new RGB(200, 100, 100)),
21 RAISED (new RGB(200, 200, 0)),
22 ACTIVE (new RGB(200, 150, 100));
23
24 public final RGB rgb;
25
26 private State (RGB rgb) {
27 this.rgb = rgb;
28 }
29 }
30
31 @Override
32 public String getStateTypeName() {
33 return Messages.ResourcesView_stateTypeName;
34 }
35
36 @Override
37 public StateItem[] getStateTable() {
38 StateItem[] stateTable = new StateItem[State.values().length];
39 for (int i = 0; i < stateTable.length; i++) {
40 State state = State.values()[i];
41 stateTable[i] = new StateItem(state.rgb, state.toString());
42 }
43 return stateTable;
44 }
45
46 @Override
47 public int getStateTableIndex(ITimeEvent event) {
48 if (event instanceof ResourcesEvent) {
49 ResourcesEvent resourcesEvent = (ResourcesEvent) event;
50 if (resourcesEvent.getType() == Type.CPU) {
51 int status = resourcesEvent.getValue();
52 if (status == Attributes.CPU_STATUS_IDLE) {
53 return State.IDLE.ordinal();
54 } else if (status == Attributes.CPU_STATUS_BUSY) {
55 return State.BUSY.ordinal();
56 } else if (status == Attributes.CPU_STATUS_INTERRUPTED) {
57 return State.INTERRUPTED.ordinal();
58 }
59 } else if (resourcesEvent.getType() == Type.IRQ || resourcesEvent.getType() == Type.SOFT_IRQ) {
60 int cpu = resourcesEvent.getValue();
61 if (cpu == Attributes.SOFT_IRQ_RAISED) {
62 return State.RAISED.ordinal();
63 }
64 return State.ACTIVE.ordinal();
65 } else {
66 return -1; // NULL
67 }
68 }
69 return State.UNKNOWN.ordinal();
70 }
71
72 @Override
73 public String getEventName(ITimeEvent event) {
74 if (event instanceof ResourcesEvent) {
75 ResourcesEvent resourcesEvent = (ResourcesEvent) event;
76 if (resourcesEvent.getType() == Type.CPU) {
77 int status = resourcesEvent.getValue();
78 if (status == Attributes.CPU_STATUS_IDLE) {
79 return State.IDLE.toString();
80 } else if (status == Attributes.CPU_STATUS_BUSY) {
81 return State.BUSY.toString();
82 } else if (status == Attributes.CPU_STATUS_INTERRUPTED) {
83 return State.INTERRUPTED.toString();
84 }
85 } else if (resourcesEvent.getType() == Type.IRQ || resourcesEvent.getType() == Type.SOFT_IRQ) {
86 int cpu = resourcesEvent.getValue();
87 if (cpu == Attributes.SOFT_IRQ_RAISED) {
88 return State.RAISED.toString();
89 }
90 return State.ACTIVE.toString();
91 } else {
92 return null;
93 }
94 }
95 return State.UNKNOWN.toString();
96 }
97
98 @Override
99 public Map<String, String> getEventHoverToolTipInfo(ITimeEvent event) {
100
101 Map<String, String> retMap = new HashMap<String, String>();
102 if (event instanceof ResourcesEvent) {
103
104 ResourcesEvent resourcesEvent = (ResourcesEvent) event;
105
106 if (resourcesEvent.getType().equals(Type.IRQ) || resourcesEvent.getType().equals(Type.SOFT_IRQ)) {
107 int cpu = resourcesEvent.getValue();
108 if (cpu >= 0) {
109 retMap.put(Messages.ResourcesView_attributeCpuName, String.valueOf(cpu));
110 }
111 }
112 }
113
114 return retMap;
115 }
116
117 }
This page took 0.03359 seconds and 5 git commands to generate.