\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
\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
\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
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
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