(no commit message)
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng.ui / src / org / eclipse / linuxtools / lttng / ui / model / trange / TimeRangeViewerProvider.java
CommitLineData
6e512b93
ASL
1/*******************************************************************************\r
2 * Copyright (c) 2009 Ericsson\r
3 * \r
4 * All rights reserved. This program and the accompanying materials are\r
5 * made available under the terms of the Eclipse Public License v1.0 which\r
6 * accompanies this distribution, and is available at\r
7 * http://www.eclipse.org/legal/epl-v10.html\r
8 * \r
9 * Contributors:\r
10 * Alvaro Sanchez-Leon (alvsan09@gmail.com) - Initial API and implementation\r
11 *******************************************************************************/\r
12package org.eclipse.linuxtools.lttng.ui.model.trange;\r
13\r
14import java.util.HashMap;\r
15import java.util.Map;\r
16\r
17import org.eclipse.linuxtools.lttng.state.StateStrings.BdevMode;\r
18import org.eclipse.linuxtools.lttng.state.StateStrings.CpuMode;\r
19import org.eclipse.linuxtools.lttng.state.StateStrings.ExecutionMode;\r
20import org.eclipse.linuxtools.lttng.state.StateStrings.IRQMode;\r
21import org.eclipse.linuxtools.lttng.state.StateStrings.ProcessStatus;\r
22import org.eclipse.linuxtools.lttng.state.StateStrings.SoftIRQMode;\r
23import org.eclipse.linuxtools.lttng.state.StateStrings.TrapMode;\r
24import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.TmfTimeAnalysisProvider;\r
25import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.model.ITimeEvent;\r
26import org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.model.ITmfTimeAnalysisEntry;\r
27\r
28public class TimeRangeViewerProvider extends TmfTimeAnalysisProvider {\r
29 // ========================================================================\r
30 // Data\r
31 // =======================================================================\r
32 Map<String, StateColor> procStateToColor = new HashMap<String, StateColor>(\r
33 16);\r
34 Map<String, StateColor> bdevStateToColor = new HashMap<String, StateColor>(\r
35 4);\r
36 Map<String, StateColor> softIrqStateToColor = new HashMap<String, StateColor>(\r
37 4);\r
38 Map<String, StateColor> trapStateToColor = new HashMap<String, StateColor>(\r
39 4);\r
40 Map<String, StateColor> irqStateToColor = new HashMap<String, StateColor>(4);\r
41 Map<String, StateColor> cpuStateToColor = new HashMap<String, StateColor>(8);\r
42\r
43 // ========================================================================\r
44 // Constructors\r
45 // =======================================================================\r
46 public TimeRangeViewerProvider() {\r
47 // Fill the statemode to color maps\r
48 fillProcessStateToColor();\r
49 fillBdevStateToColor();\r
50 fillSoftIRQStateToColor();\r
51 fillTrapStateToColor();\r
52 fillIrqStateToColor();\r
53 fillCpuStateToColor();\r
54 }\r
55\r
56 // ========================================================================\r
57 // Methods\r
58 // =======================================================================\r
59 @Override\r
60 public StateColor getEventColor(ITimeEvent event) {\r
61 StateColor retColor = null;\r
62 \r
63 if (event instanceof TimeRangeEvent) {\r
64 TimeRangeEvent devent = (TimeRangeEvent) event;\r
65 String stateMode = devent.getStateMode();\r
66 switch (devent.getEventType()) {\r
67 case PROCESS_MODE:\r
68 retColor = procStateToColor.get(stateMode);\r
69 break;\r
70 case BDEV_MODE:\r
71 retColor = bdevStateToColor.get(stateMode);\r
72 break;\r
73 case IRQ_MODE:\r
74 retColor = irqStateToColor.get(stateMode);\r
75 break;\r
76 case SOFT_IRQ_MODE:\r
77 retColor = softIrqStateToColor.get(stateMode);\r
78 break;\r
79 case CPU_MODE:\r
80 retColor = cpuStateToColor.get(stateMode);\r
81 break;\r
82 case TRAP_MODE:\r
83 retColor = trapStateToColor.get(stateMode);\r
84 break;\r
85 }\r
86 }\r
87 \r
88 if (retColor == null) {\r
89 return StateColor.MAGENTA3;\r
90 }\r
91 return retColor;\r
92 }\r
93\r
94 /* (non-Javadoc)\r
95 * @see org.eclipse.linuxtools.tmf.ui.widgets.timeAnalysis.api.TsfTmAbstractImplProvider#getStateName(org.eclipse.linuxtools.tmf.ui.widgets.timeAnalysis.api.TsfTmAbstractImplProvider.StateColor)\r
96 */\r
97 @Override\r
98 public String getStateName(StateColor color) {\r
99 //Override to multiple instances of the widget, the same color can have multiple meanings\r
100 return "Not mapped";\r
101 }\r
102\r
103 @Override\r
104 public Map<String, String> getEventHoverToolTipInfo(ITimeEvent revent) {\r
105 Map<String, String> toolTipEventMsgs = new HashMap<String, String>();\r
106 //if the selected resource is a Process, add the Process type to the tool tip\r
107 if (revent instanceof TimeRangeComponent) {\r
108 ITimeRangeComponent parent = ((TimeRangeComponent) revent)\r
109 .getEventParent();\r
110 if (parent != null && parent instanceof TimeRangeEventProcess) {\r
111 TimeRangeEventProcess localProcess = (TimeRangeEventProcess) parent;\r
112 toolTipEventMsgs.put("Process Type", localProcess\r
113 .getProcessType());\r
114 }\r
115 }\r
116\r
117 return toolTipEventMsgs;\r
118 }\r
119\r
120 @Override\r
121 public String getEventName(ITimeEvent event, boolean upper, boolean extInfo) {\r
122 String name = null;\r
123 //The relevant event name for the time range is the actual state mode\r
124 if (event instanceof TimeRangeEvent) {\r
125 TimeRangeEvent devent = (TimeRangeEvent) event;\r
126 StringBuilder sb = new StringBuilder(devent.getStateMode());\r
127 name = sb.toString();\r
128 }\r
129 \r
130 if (name == null) {\r
131 return "Unknown";\r
132 }\r
133 return name;\r
134 }\r
135\r
136 @Override\r
137 public String getTraceClassName(ITmfTimeAnalysisEntry trace) {\r
138 String name = "";\r
139 if (trace instanceof TimeRangeComposite) {\r
140 TimeRangeComposite dTrace = (TimeRangeComposite) trace;\r
141 name = dTrace.getClassName();\r
142 }\r
143 return name;\r
144 }\r
145\r
146 private void fillCpuStateToColor() {\r
147 cpuStateToColor.put(CpuMode.LTTV_CPU_UNKNOWN.getInName(),\r
148 StateColor.BLACK);\r
149 cpuStateToColor.put(CpuMode.LTTV_CPU_IDLE.getInName(), StateColor.GRAY);\r
150 cpuStateToColor.put(CpuMode.LTTV_CPU_BUSY.getInName(),\r
151 StateColor.LIGHT_BLUE);\r
152 cpuStateToColor\r
153 .put(CpuMode.LTTV_CPU_IRQ.getInName(), StateColor.ORANGE);\r
154 cpuStateToColor.put(CpuMode.LTTV_CPU_SOFT_IRQ.getInName(),\r
155 StateColor.PURPLE1);\r
156 cpuStateToColor.put(CpuMode.LTTV_CPU_TRAP.getInName(), StateColor.GOLD);\r
157 }\r
158\r
159 private void fillIrqStateToColor() {\r
160 irqStateToColor.put(IRQMode.LTTV_IRQ_UNKNOWN.getInName(),\r
161 StateColor.BLACK);\r
162 irqStateToColor.put(IRQMode.LTTV_IRQ_IDLE.getInName(), StateColor.GRAY);\r
163 irqStateToColor.put(IRQMode.LTTV_IRQ_BUSY.getInName(),\r
164 StateColor.ORANGE);\r
165 }\r
166\r
167 private void fillTrapStateToColor() {\r
168 trapStateToColor.put(TrapMode.LTTV_TRAP_UNKNOWN.getInName(),\r
169 StateColor.BLACK);\r
170 trapStateToColor.put(TrapMode.LTTV_TRAP_IDLE.getInName(),\r
171 StateColor.BLACK);\r
172 trapStateToColor.put(TrapMode.LTTV_TRAP_BUSY.getInName(),\r
173 StateColor.GOLD);\r
174 }\r
175\r
176 private void fillSoftIRQStateToColor() {\r
177 softIrqStateToColor.put(SoftIRQMode.LTTV_SOFT_IRQ_UNKNOWN.getInName(),\r
178 StateColor.BLACK);\r
179 softIrqStateToColor.put(SoftIRQMode.LTTV_SOFT_IRQ_IDLE.getInName(),\r
180 StateColor.BLACK);\r
181 softIrqStateToColor.put(SoftIRQMode.LTTV_SOFT_IRQ_PENDING.getInName(),\r
182 StateColor.PINK1);\r
183 softIrqStateToColor.put(SoftIRQMode.LTTV_SOFT_IRQ_BUSY.getInName(),\r
184 StateColor.PURPLE1);\r
185 }\r
186\r
187 private void fillBdevStateToColor() {\r
188 softIrqStateToColor.put(BdevMode.LTTV_BDEV_UNKNOWN.getInName(),\r
189 StateColor.BLACK);\r
190 softIrqStateToColor.put(BdevMode.LTTV_BDEV_IDLE.getInName(),\r
191 StateColor.BLACK);\r
192 softIrqStateToColor.put(BdevMode.LTTV_BDEV_BUSY_READING.getInName(),\r
193 StateColor.DARK_BLUE);\r
194 softIrqStateToColor.put(BdevMode.LTTV_BDEV_BUSY_WRITING.getInName(),\r
195 StateColor.RED);\r
196 }\r
197\r
198 private void fillProcessStateToColor() {\r
199 // Process Status\r
200 procStateToColor.put(ProcessStatus.LTTV_STATE_UNNAMED.getInName(),\r
201 StateColor.GRAY);\r
202 procStateToColor.put(ProcessStatus.LTTV_STATE_DEAD.getInName(),\r
203 StateColor.BLACK);\r
204 procStateToColor.put(ProcessStatus.LTTV_STATE_WAIT_FORK.getInName(),\r
205 StateColor.DARK_GREEN);\r
206 procStateToColor.put(ProcessStatus.LTTV_STATE_WAIT_CPU.getInName(),\r
207 StateColor.DARK_YELLOW);\r
208 procStateToColor.put(ProcessStatus.LTTV_STATE_EXIT.getInName(),\r
209 StateColor.MAGENTA3);\r
210 procStateToColor.put(ProcessStatus.LTTV_STATE_ZOMBIE.getInName(),\r
211 StateColor.PURPLE1);\r
212 procStateToColor.put(ProcessStatus.LTTV_STATE_WAIT.getInName(),\r
213 StateColor.RED);\r
214\r
215 // Execution Mode\r
216 procStateToColor.put(ExecutionMode.LTTV_STATE_MODE_UNKNOWN.getInName(),\r
217 StateColor.BLACK);\r
218 procStateToColor.put(ExecutionMode.LTTV_STATE_USER_MODE.getInName(),\r
219 StateColor.GREEN);\r
220 procStateToColor.put(ExecutionMode.LTTV_STATE_SYSCALL.getInName(),\r
221 StateColor.DARK_BLUE);\r
222 procStateToColor.put(ExecutionMode.LTTV_STATE_TRAP.getInName(),\r
223 StateColor.GOLD);\r
224 procStateToColor.put(ExecutionMode.LTTV_STATE_IRQ.getInName(),\r
225 StateColor.ORANGE);\r
226 procStateToColor.put(ExecutionMode.LTTV_STATE_SOFT_IRQ.getInName(),\r
227 StateColor.PINK1);\r
228 }\r
229}\r
This page took 0.034761 seconds and 5 git commands to generate.