Fix for bug 381096 (fix for ClassCastException)
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.kernel.ui / src / org / eclipse / linuxtools / internal / lttng2 / kernel / ui / views / controlflow / ControlFlowView.java
index b87e8860eb3c4032b0286c19eb90aced0a1c14cb..717aa3af72c82db6863e0e086c8f76adcf5dcb5f 100644 (file)
@@ -14,6 +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.Comparator;\r
 import java.util.List;\r
 \r
 import org.eclipse.core.runtime.IProgressMonitor;\r
@@ -124,6 +125,9 @@ public class ControlFlowView extends TmfView {
 \r
     // The previous resource action\r
     private Action fPreviousResourceAction;\r
+    \r
+    // A comparator class\r
+    private ControlFlowEntryComparator fControlFlowEntryComparator = new ControlFlowEntryComparator();\r
 \r
     // ------------------------------------------------------------------------\r
     // Classes\r
@@ -209,6 +213,30 @@ public class ControlFlowView extends TmfView {
 \r
     }\r
 \r
+    private static class ControlFlowEntryComparator implements Comparator<ITimeGraphEntry> {\r
+\r
+        @Override\r
+        public int compare(ITimeGraphEntry o1, ITimeGraphEntry o2) {\r
+            int result = 0;\r
+\r
+            if ((o1 instanceof ControlFlowEntry) && (o2 instanceof ControlFlowEntry)) {\r
+                ControlFlowEntry entry1 = (ControlFlowEntry) o1;\r
+                ControlFlowEntry entry2 = (ControlFlowEntry) o2;\r
+                result = entry1.getTrace().getStartTime().compareTo(entry2.getTrace().getStartTime());\r
+                if (result == 0) {\r
+                    result = entry1.getThreadId() < entry2.getThreadId() ? -1 : entry1.getThreadId() > entry2.getThreadId() ? 1 : 0;\r
+                }\r
+            }\r
+\r
+            if (result == 0) {\r
+                result = o1.getStartTime() < o2.getStartTime() ? -1 : o1.getStartTime() > o2.getStartTime() ? 1 : 0;\r
+            }\r
+\r
+            return result;\r
+        }\r
+    }\r
+\r
+    \r
     private class ZoomThread extends Thread {\r
         private long fZoomStartTime;\r
         private long fZoomEndTime;\r
@@ -517,7 +545,7 @@ public class ControlFlowView extends TmfView {
             buildTree(entryList);\r
             refresh(INITIAL_WINDOW_OFFSET);\r
             ControlFlowEntry[] entries = fEntryList.toArray(new ControlFlowEntry[0]);\r
-            Arrays.sort(entries);\r
+            Arrays.sort(entries, fControlFlowEntryComparator);\r
             for (ControlFlowEntry entry : entries) {\r
                 buildStatusEvents(entry);\r
             }\r
@@ -606,7 +634,7 @@ public class ControlFlowView extends TmfView {
                     return;\r
                 }\r
                 ITimeGraphEntry[] entries = fEntryList.toArray(new ITimeGraphEntry[0]);\r
-                Arrays.sort(entries);\r
+                Arrays.sort(entries, fControlFlowEntryComparator);\r
                 fTimeGraphCombo.setInput(entries);\r
                 fTimeGraphCombo.getTimeGraphViewer().setTimeBounds(fStartTime, fEndTime);\r
 \r
This page took 0.025306 seconds and 5 git commands to generate.