Bug 378402: Implementation of ControlFlow view and Resources view for
authorPatrick Tasse <patrick.tasse@gmail.com>
Fri, 25 May 2012 15:40:49 +0000 (11:40 -0400)
committerPatrick Tasse <patrick.tasse@gmail.com>
Fri, 25 May 2012 15:40:49 +0000 (11:40 -0400)
LTTng 2.0.

org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowPresentationProvider.java [new file with mode: 0644]
org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowView.java
org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesPresentationProvider.java [new file with mode: 0644]
org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesView.java

diff --git a/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowPresentationProvider.java b/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowPresentationProvider.java
new file mode 100644 (file)
index 0000000..c161eec
--- /dev/null
@@ -0,0 +1,122 @@
+/*******************************************************************************\r
+ * Copyright (c) 2012 Ericsson\r
+ * \r
+ * All rights reserved. This program and the accompanying materials are\r
+ * made available under the terms of the Eclipse Public License v1.0 which\r
+ * accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ * \r
+ * Contributors:\r
+ *   Patrick Tasse - Initial API and implementation\r
+ *******************************************************************************/\r
+\r
+package org.eclipse.linuxtools.internal.lttng2.kernel.ui.views.controlflow;\r
+\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+\r
+import org.eclipse.linuxtools.internal.lttng2.kernel.ui.Messages;\r
+import org.eclipse.linuxtools.lttng2.kernel.core.trace.Attributes;\r
+import org.eclipse.linuxtools.tmf.core.exceptions.AttributeNotFoundException;\r
+import org.eclipse.linuxtools.tmf.core.exceptions.TimeRangeException;\r
+import org.eclipse.linuxtools.tmf.core.interval.ITmfStateInterval;\r
+import org.eclipse.linuxtools.tmf.core.statesystem.IStateSystemQuerier;\r
+import org.eclipse.linuxtools.tmf.core.statevalue.ITmfStateValue;\r
+import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.StateItem;\r
+import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.TimeGraphPresentationProvider;\r
+import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.ITimeEvent;\r
+import org.eclipse.swt.graphics.RGB;\r
+\r
+public class ControlFlowPresentationProvider extends TimeGraphPresentationProvider {\r
+\r
+    private enum State {\r
+        UNKNOWN     (new RGB(100, 100, 100)),\r
+        WAIT        (new RGB(200, 200, 0)),\r
+        USERMODE    (new RGB(0, 200, 0)),\r
+        SYSCALL     (new RGB(0, 0, 200)),\r
+        INTERRUPTED (new RGB(200, 100, 100));\r
+\r
+        public final RGB rgb;\r
+\r
+        private State (RGB rgb) {\r
+            this.rgb = rgb;\r
+        }\r
+    }\r
+\r
+    @Override \r
+    public String getStateTypeName() {\r
+        return Messages.ControlFlowView_stateTypeName;\r
+    }\r
+\r
+    @Override\r
+    public StateItem[] getStateTable() {\r
+        StateItem[] stateTable = new StateItem[State.values().length];\r
+        for (int i = 0; i < stateTable.length; i++) {\r
+            State state = State.values()[i];\r
+            stateTable[i] = new StateItem(state.rgb, state.toString());\r
+        }\r
+        return stateTable;\r
+    }\r
+\r
+    @Override\r
+    public int getStateTableIndex(ITimeEvent event) {\r
+        if (event instanceof ControlFlowEvent) {\r
+            int status = ((ControlFlowEvent) event).getStatus();\r
+            if (status == Attributes.STATUS_WAIT) {\r
+                return State.WAIT.ordinal();\r
+            } else if (status == Attributes.STATUS_RUN_USERMODE) {\r
+                return State.USERMODE.ordinal();\r
+            } else if (status == Attributes.STATUS_RUN_SYSCALL) {\r
+                return State.SYSCALL.ordinal();\r
+            } else if (status == Attributes.STATUS_INTERRUPTED) {\r
+                return State.INTERRUPTED.ordinal();\r
+            }\r
+        }\r
+        return State.UNKNOWN.ordinal();\r
+    }\r
+\r
+    @Override\r
+    public String getEventName(ITimeEvent event) {\r
+        if (event instanceof ControlFlowEvent) {\r
+            int status = ((ControlFlowEvent) event).getStatus();\r
+            if (status == Attributes.STATUS_WAIT) {\r
+                return State.WAIT.toString();\r
+            } else if (status == Attributes.STATUS_RUN_USERMODE) {\r
+                return State.USERMODE.toString();\r
+            } else if (status == Attributes.STATUS_RUN_SYSCALL) {\r
+                return State.SYSCALL.toString();\r
+            } else if (status == Attributes.STATUS_INTERRUPTED) {\r
+                return State.INTERRUPTED.toString();\r
+            }\r
+        }\r
+        return State.UNKNOWN.toString();\r
+    }\r
+\r
+    @Override\r
+    public Map<String, String> getEventHoverToolTipInfo(ITimeEvent event) {\r
+        Map<String, String> retMap = new HashMap<String, String>();\r
+        if (event instanceof ControlFlowEvent) {\r
+            int status = ((ControlFlowEvent) event).getStatus();\r
+            if (status == Attributes.STATUS_RUN_SYSCALL) {\r
+                ControlFlowEntry entry = (ControlFlowEntry) event.getEntry();\r
+                IStateSystemQuerier ssq = entry.getTrace().getStateSystem();\r
+                try {\r
+                    int syscallQuark = ssq.getQuarkRelative(entry.getThreadQuark(), Attributes.SYSTEM_CALL);\r
+                    ITmfStateInterval value = ssq.querySingleState(event.getTime(), syscallQuark);\r
+                    if (!value.getStateValue().isNull()) {\r
+                        ITmfStateValue state = value.getStateValue();\r
+                        retMap.put(Messages.ControlFlowView_attributeSyscallName, state.toString());\r
+                    }\r
+\r
+                } catch (AttributeNotFoundException e) {\r
+                    e.printStackTrace();\r
+                } catch (TimeRangeException e) {\r
+                    e.printStackTrace();\r
+                }\r
+            } \r
+        }\r
+\r
+        return retMap;\r
+    }\r
+\r
+}\r
index 6ab36ebc3db188f812afb5332b85034e3411db63..9b6e9fa93b98086a65da822352f6c84ebdb24400 100644 (file)
@@ -14,9 +14,7 @@ package org.eclipse.linuxtools.internal.lttng2.kernel.ui.views.controlflow;
 \r
 import java.util.ArrayList;\r
 import java.util.Arrays;\r
-import java.util.HashMap;\r
 import java.util.List;\r
-import java.util.Map;\r
 \r
 import org.eclipse.core.runtime.IProgressMonitor;\r
 import org.eclipse.core.runtime.NullProgressMonitor;\r
@@ -43,16 +41,13 @@ import org.eclipse.linuxtools.tmf.core.signal.TmfRangeSynchSignal;
 import org.eclipse.linuxtools.tmf.core.signal.TmfSignalHandler;\r
 import org.eclipse.linuxtools.tmf.core.signal.TmfTimeSynchSignal;\r
 import org.eclipse.linuxtools.tmf.core.statesystem.IStateSystemQuerier;\r
-import org.eclipse.linuxtools.tmf.core.statevalue.ITmfStateValue;\r
 import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;\r
 import org.eclipse.linuxtools.tmf.core.trace.TmfExperiment;\r
 import org.eclipse.linuxtools.tmf.ui.views.TmfView;\r
 import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.ITimeGraphRangeListener;\r
 import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.ITimeGraphSelectionListener;\r
 import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.ITimeGraphTimeListener;\r
-import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.StateItem;\r
 import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.TimeGraphCombo;\r
-import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.TimeGraphPresentationProvider;\r
 import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.TimeGraphRangeUpdateEvent;\r
 import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.TimeGraphSelectionEvent;\r
 import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.TimeGraphTimeEvent;\r
@@ -64,7 +59,6 @@ import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.widgets.Utils.Resolution;
 import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.widgets.Utils.TimeFormat;\r
 import org.eclipse.swt.SWT;\r
 import org.eclipse.swt.graphics.Image;\r
-import org.eclipse.swt.graphics.RGB;\r
 import org.eclipse.swt.widgets.Composite;\r
 import org.eclipse.swt.widgets.Display;\r
 import org.eclipse.swt.widgets.TreeColumn;\r
@@ -286,90 +280,7 @@ public class ControlFlowView extends TmfView {
 \r
         fTimeGraphCombo.setTreeLabelProvider(new TreeLabelProvider());\r
 \r
-        fTimeGraphCombo.setTimeGraphProvider(new TimeGraphPresentationProvider() {\r
-            private static final String UNKNOWN = "UNKNOWN"; //$NON-NLS-1$\r
-            private static final String WAIT = "WAIT"; //$NON-NLS-1$\r
-            private static final String USERMODE = "USERMODE"; //$NON-NLS-1$\r
-            private static final String SYSCALL = "SYSCALL"; //$NON-NLS-1$\r
-            private static final String INTERRUPTED = "INTERRUPTED"; //$NON-NLS-1$\r
-\r
-            @Override \r
-            public String getStateTypeName() {\r
-                return Messages.ControlFlowView_stateTypeName;\r
-            }\r
-\r
-            @Override\r
-            public StateItem[] getStateTable() {\r
-                return new StateItem[] {\r
-                        new StateItem(new RGB(100, 100, 100), UNKNOWN),\r
-                        new StateItem(new RGB(200, 200, 0), WAIT),\r
-                        new StateItem(new RGB(0, 200, 0), USERMODE),\r
-                        new StateItem(new RGB(0, 0, 200), SYSCALL),\r
-                        new StateItem(new RGB(200, 100, 100), INTERRUPTED)\r
-                };\r
-            }\r
-\r
-            @Override\r
-            public int getStateTableIndex(ITimeEvent event) {\r
-                if (event instanceof ControlFlowEvent) {\r
-                    int status = ((ControlFlowEvent) event).getStatus();\r
-                    if (status == Attributes.STATUS_WAIT) {\r
-                        return 1;\r
-                    } else if (status == Attributes.STATUS_RUN_USERMODE) {\r
-                        return 2;\r
-                    } else if (status == Attributes.STATUS_RUN_SYSCALL) {\r
-                        return 3;\r
-                    } else if (status == Attributes.STATUS_INTERRUPTED) {\r
-                        return 4;\r
-                    }\r
-                }\r
-                return 0;\r
-            }\r
-\r
-            @Override\r
-            public String getEventName(ITimeEvent event) {\r
-                if (event instanceof ControlFlowEvent) {\r
-                    int status = ((ControlFlowEvent) event).getStatus();\r
-                    if (status == Attributes.STATUS_WAIT) {\r
-                        return WAIT;\r
-                    } else if (status == Attributes.STATUS_RUN_USERMODE) {\r
-                        return USERMODE;\r
-                    } else if (status == Attributes.STATUS_RUN_SYSCALL) {\r
-                        return SYSCALL;\r
-                    } else if (status == Attributes.STATUS_INTERRUPTED) {\r
-                        return INTERRUPTED;\r
-                    }\r
-                }\r
-                return UNKNOWN;\r
-            }\r
-\r
-            @Override\r
-            public Map<String, String> getEventHoverToolTipInfo(ITimeEvent event) {\r
-                Map<String, String> retMap = new HashMap<String, String>();\r
-                if (event instanceof ControlFlowEvent) {\r
-                    int status = ((ControlFlowEvent) event).getStatus();\r
-                    if (status == Attributes.STATUS_RUN_SYSCALL) {\r
-                        ControlFlowEntry entry = (ControlFlowEntry) event.getEntry();\r
-                        IStateSystemQuerier ssq = entry.getTrace().getStateSystem();\r
-                        try {\r
-                            int syscallQuark = ssq.getQuarkRelative(entry.getThreadQuark(), Attributes.SYSTEM_CALL);\r
-                            ITmfStateInterval value = ssq.querySingleState(event.getTime(), syscallQuark);\r
-                            if (!value.getStateValue().isNull()) {\r
-                                ITmfStateValue state = value.getStateValue();\r
-                                retMap.put(Messages.ControlFlowView_attributeSyscallName, state.toString());\r
-                            }\r
-\r
-                        } catch (AttributeNotFoundException e) {\r
-                            e.printStackTrace();\r
-                        } catch (TimeRangeException e) {\r
-                            e.printStackTrace();\r
-                        }\r
-                    } \r
-                }\r
-\r
-                return retMap;\r
-            }\r
-        });\r
+        fTimeGraphCombo.setTimeGraphProvider(new ControlFlowPresentationProvider());\r
 \r
         fTimeGraphCombo.setTreeColumns(COLUMN_NAMES);\r
 \r
diff --git a/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesPresentationProvider.java b/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesPresentationProvider.java
new file mode 100644 (file)
index 0000000..2e7d078
--- /dev/null
@@ -0,0 +1,117 @@
+package org.eclipse.linuxtools.internal.lttng2.kernel.ui.views.resources;\r
+\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+\r
+import org.eclipse.linuxtools.internal.lttng2.kernel.ui.Messages;\r
+import org.eclipse.linuxtools.internal.lttng2.kernel.ui.views.resources.ResourcesEntry.Type;\r
+import org.eclipse.linuxtools.lttng2.kernel.core.trace.Attributes;\r
+import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.StateItem;\r
+import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.TimeGraphPresentationProvider;\r
+import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.ITimeEvent;\r
+import org.eclipse.swt.graphics.RGB;\r
+\r
+public class ResourcesPresentationProvider extends TimeGraphPresentationProvider {\r
+\r
+    private enum State {\r
+        UNKNOWN     (new RGB(100, 100, 100)),\r
+        IDLE        (new RGB(200, 200, 200)),\r
+        BUSY        (new RGB(0, 200, 0)),\r
+        INTERRUPTED (new RGB(200, 100, 100)),\r
+        RAISED      (new RGB(200, 200, 0)),\r
+        ACTIVE      (new RGB(200, 150, 100));\r
+\r
+        public final RGB rgb;\r
+\r
+        private State (RGB rgb) {\r
+            this.rgb = rgb;\r
+        }\r
+    }\r
+\r
+    @Override \r
+    public String getStateTypeName() {\r
+        return Messages.ResourcesView_stateTypeName;\r
+    }\r
+\r
+    @Override\r
+    public StateItem[] getStateTable() {\r
+        StateItem[] stateTable = new StateItem[State.values().length];\r
+        for (int i = 0; i < stateTable.length; i++) {\r
+            State state = State.values()[i];\r
+            stateTable[i] = new StateItem(state.rgb, state.toString());\r
+        }\r
+        return stateTable;\r
+    }\r
+\r
+    @Override\r
+    public int getStateTableIndex(ITimeEvent event) {\r
+        if (event instanceof ResourcesEvent) {\r
+            ResourcesEvent resourcesEvent = (ResourcesEvent) event;\r
+            if (resourcesEvent.getType() == Type.CPU) {\r
+                int status = resourcesEvent.getValue();\r
+                if (status == Attributes.CPU_STATUS_IDLE) {\r
+                    return State.IDLE.ordinal();\r
+                } else if (status == Attributes.CPU_STATUS_BUSY) {\r
+                    return State.BUSY.ordinal();\r
+                } else if (status == Attributes.CPU_STATUS_INTERRUPTED) {\r
+                    return State.INTERRUPTED.ordinal();\r
+                }\r
+            } else if (resourcesEvent.getType() == Type.IRQ || resourcesEvent.getType() == Type.SOFT_IRQ) {\r
+                int cpu = resourcesEvent.getValue();\r
+                if (cpu == Attributes.SOFT_IRQ_RAISED) {\r
+                    return State.RAISED.ordinal();\r
+                }\r
+                return State.ACTIVE.ordinal();\r
+            } else {\r
+                return -1; // NULL\r
+            }\r
+        }\r
+        return State.UNKNOWN.ordinal();\r
+    }\r
+\r
+    @Override\r
+    public String getEventName(ITimeEvent event) {\r
+        if (event instanceof ResourcesEvent) {\r
+            ResourcesEvent resourcesEvent = (ResourcesEvent) event;\r
+            if (resourcesEvent.getType() == Type.CPU) {\r
+                int status = resourcesEvent.getValue();\r
+                if (status == Attributes.CPU_STATUS_IDLE) {\r
+                    return State.IDLE.toString();\r
+                } else if (status == Attributes.CPU_STATUS_BUSY) {\r
+                    return State.BUSY.toString();\r
+                } else if (status == Attributes.CPU_STATUS_INTERRUPTED) {\r
+                    return State.INTERRUPTED.toString();\r
+                }\r
+            } else if (resourcesEvent.getType() == Type.IRQ || resourcesEvent.getType() == Type.SOFT_IRQ) {\r
+                int cpu = resourcesEvent.getValue();\r
+                if (cpu == Attributes.SOFT_IRQ_RAISED) {\r
+                    return State.RAISED.toString();\r
+                }\r
+                return State.ACTIVE.toString();\r
+            } else {\r
+                return null;\r
+            }\r
+        }\r
+        return State.UNKNOWN.toString();\r
+    }\r
+\r
+    @Override\r
+    public Map<String, String> getEventHoverToolTipInfo(ITimeEvent event) {\r
+        \r
+        Map<String, String> retMap = new HashMap<String, String>();\r
+        if (event instanceof ResourcesEvent) {\r
+\r
+            ResourcesEvent resourcesEvent = (ResourcesEvent) event;\r
+\r
+            if (resourcesEvent.getType().equals(Type.IRQ) || resourcesEvent.getType().equals(Type.SOFT_IRQ)) {\r
+                int cpu = resourcesEvent.getValue();\r
+                if (cpu >= 0) {\r
+                    retMap.put(Messages.ResourcesView_attributeCpuName, String.valueOf(cpu));\r
+                }\r
+            }\r
+        }\r
+\r
+        return retMap;\r
+    }\r
+\r
+}\r
index d16826f65a99cdd82ca7a29283c0471d72b80006..ca0cf604d1d0bcd79a114204a299d03a655754a5 100644 (file)
@@ -14,10 +14,8 @@ package org.eclipse.linuxtools.internal.lttng2.kernel.ui.views.resources;
 \r
 import java.util.ArrayList;\r
 import java.util.Arrays;\r
-import java.util.HashMap;\r
 import java.util.Iterator;\r
 import java.util.List;\r
-import java.util.Map;\r
 \r
 import org.eclipse.core.runtime.IProgressMonitor;\r
 import org.eclipse.core.runtime.NullProgressMonitor;\r
@@ -47,8 +45,6 @@ import org.eclipse.linuxtools.tmf.core.trace.TmfExperiment;
 import org.eclipse.linuxtools.tmf.ui.views.TmfView;\r
 import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.ITimeGraphRangeListener;\r
 import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.ITimeGraphTimeListener;\r
-import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.StateItem;\r
-import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.TimeGraphPresentationProvider;\r
 import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.TimeGraphRangeUpdateEvent;\r
 import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.TimeGraphTimeEvent;\r
 import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.TimeGraphViewer;\r
@@ -56,7 +52,6 @@ import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.ITimeEvent;
 import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.ITimeGraphEntry;\r
 import org.eclipse.linuxtools.tmf.ui.widgets.timegraph.model.TimeEvent;\r
 import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.graphics.RGB;\r
 import org.eclipse.swt.widgets.Composite;\r
 import org.eclipse.swt.widgets.Display;\r
 import org.eclipse.ui.IActionBars;\r
@@ -243,98 +238,7 @@ public class ResourcesView extends TmfView {
     public void createPartControl(Composite parent) {\r
         fTimeGraphViewer = new TimeGraphViewer(parent, SWT.NONE);\r
 \r
-        fTimeGraphViewer.setTimeGraphProvider(new TimeGraphPresentationProvider() {\r
-            private static final String UNKNOWN = "UNKNOWN"; //$NON-NLS-1$\r
-            private static final String IDLE = "IDLE"; //$NON-NLS-1$\r
-            private static final String BUSY = "BUSY"; //$NON-NLS-1$\r
-            private static final String INTERRUPTED = "INTERRUPTED"; //$NON-NLS-1$\r
-            private static final String RAISED = "RAISED"; //$NON-NLS-1$\r
-            private static final String ACTIVE = "ACTIVE"; //$NON-NLS-1$\r
-\r
-            @Override \r
-            public String getStateTypeName() {\r
-                return Messages.ResourcesView_stateTypeName;\r
-            }\r
-\r
-            @Override\r
-            public String getEventName(ITimeEvent event) {\r
-                if (event instanceof ResourcesEvent) {\r
-                    ResourcesEvent resourcesEvent = (ResourcesEvent) event;\r
-                    if (resourcesEvent.getType() == Type.CPU) {\r
-                        int currentThread = resourcesEvent.getValue();\r
-                        if (currentThread == 0) {\r
-                            return IDLE;\r
-                        } else {\r
-                            return BUSY;\r
-                        }\r
-                    } else if (resourcesEvent.getType() == Type.IRQ || resourcesEvent.getType() == Type.SOFT_IRQ) {\r
-                        int cpu = resourcesEvent.getValue();\r
-                        if (cpu == Attributes.SOFT_IRQ_RAISED) {\r
-                            return RAISED;\r
-                        }\r
-                        return ACTIVE;\r
-                    } else {\r
-                        return null;\r
-                    }\r
-                }\r
-                return UNKNOWN;\r
-            }\r
-\r
-            @Override\r
-            public Map<String, String> getEventHoverToolTipInfo(ITimeEvent event) {\r
-                \r
-                Map<String, String> retMap = new HashMap<String, String>();\r
-                if (event instanceof ResourcesEvent) {\r
-\r
-                    ResourcesEvent resourcesEvent = (ResourcesEvent) event;\r
-\r
-                    if (resourcesEvent.getType().equals(Type.IRQ) || resourcesEvent.getType().equals(Type.SOFT_IRQ)) {\r
-                        int cpu = resourcesEvent.getValue();\r
-                        if (cpu >= 0) {\r
-                            retMap.put(Messages.ResourcesView_attributeCpuName, String.valueOf(cpu));\r
-                        }\r
-                    }\r
-                }\r
-\r
-                return retMap;\r
-            }\r
-\r
-            @Override\r
-            public StateItem[] getStateTable() {\r
-                return new StateItem[] {\r
-                        new StateItem(new RGB(100, 100, 100), UNKNOWN),\r
-                        new StateItem(new RGB(200, 200, 200), IDLE),\r
-                        new StateItem(new RGB(0, 200, 0), BUSY),\r
-                        new StateItem(new RGB(200, 100, 100), INTERRUPTED),\r
-                        new StateItem(new RGB(200, 200, 0), RAISED),\r
-                        new StateItem(new RGB(200, 150, 100), ACTIVE)\r
-                };\r
-            }\r
-\r
-            @Override\r
-            public int getStateTableIndex(ITimeEvent event) {\r
-                if (event instanceof ResourcesEvent) {\r
-                    ResourcesEvent resourcesEvent = (ResourcesEvent) event;\r
-                    if (resourcesEvent.getType() == Type.CPU) {\r
-                        int currentThread = resourcesEvent.getValue();\r
-                        if (currentThread == 0) {\r
-                            return 1; // IDLE\r
-                        } else {\r
-                            return 2; // BUSY\r
-                        }\r
-                    } else if (resourcesEvent.getType() == Type.IRQ || resourcesEvent.getType() == Type.SOFT_IRQ) {\r
-                        int cpu = resourcesEvent.getValue();\r
-                        if (cpu == Attributes.SOFT_IRQ_RAISED) {\r
-                            return 4; // RAISED\r
-                        }\r
-                        return 5; // ACTIVE\r
-                    } else {\r
-                        return -1; // NULL\r
-                    }\r
-                }\r
-                return 0; // UNKNOWN\r
-            }\r
-        });\r
+        fTimeGraphViewer.setTimeGraphProvider(new ResourcesPresentationProvider());\r
 \r
         fTimeGraphViewer.setTimeCalendarFormat(true);\r
 \r
@@ -511,23 +415,27 @@ public class ResourcesView extends TmfView {
         int quark = entry.getQuark();\r
         try {\r
             if (entry.getType().equals(Type.CPU)) {\r
-                int currentThreadQuark = ssq.getQuarkRelative(quark, Attributes.CURRENT_THREAD);\r
-                List<ITmfStateInterval> currentThreadIntervals = ssq.queryHistoryRange(currentThreadQuark, startTime, endTime - 1, resolution);\r
-                eventList = new ArrayList<ITimeEvent>(currentThreadIntervals.size());\r
+                int statusQuark = ssq.getQuarkRelative(quark, Attributes.STATUS);\r
+                List<ITmfStateInterval> statusIntervals = ssq.queryHistoryRange(statusQuark, startTime, endTime - 1, resolution);\r
+                eventList = new ArrayList<ITimeEvent>(statusIntervals.size());\r
                 long lastEndTime = -1;\r
-                for (ITmfStateInterval currentThreadInterval : currentThreadIntervals) {\r
+                for (ITmfStateInterval statusInterval : statusIntervals) {\r
                     if (monitor.isCanceled()) {\r
                         return null;\r
                     }\r
-                    if (!currentThreadInterval.getStateValue().isNull()) {\r
-                        int currentThread = currentThreadInterval.getStateValue().unboxInt();\r
-                        long time = currentThreadInterval.getStartTime();\r
-                        long duration = currentThreadInterval.getEndTime() - time + 1;\r
+                    int status = statusInterval.getStateValue().unboxInt();\r
+                    long time = statusInterval.getStartTime();\r
+                    long duration = statusInterval.getEndTime() - time + 1;\r
+                    if (!statusInterval.getStateValue().isNull()) {\r
                         if (lastEndTime != time && lastEndTime != -1) {\r
                             eventList.add(new TimeEvent(entry, lastEndTime, time - lastEndTime));\r
                         }\r
-                        eventList.add(new ResourcesEvent(entry, time, duration, currentThread));\r
+                        eventList.add(new ResourcesEvent(entry, time, duration, status));\r
                         lastEndTime = time + duration;\r
+                    } else {\r
+                        if (includeNull) {\r
+                            eventList.add(new ResourcesEvent(entry, time, duration));\r
+                        }\r
                     }\r
                 }\r
             } else if (entry.getType().equals(Type.IRQ)) {\r
This page took 0.031725 seconds and 5 git commands to generate.