lttng: Javadoc udpate for the lttng2.kernel.ui package
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.kernel.ui / src / org / eclipse / linuxtools / internal / lttng2 / kernel / ui / views / resources / ResourcesView.java
index 6b8e11e9cf8f13cca50afd36b334273b33fd5f9b..8645913d4ec8a853a09886d3717df8b0fe178230 100644 (file)
@@ -1,11 +1,11 @@
 /*******************************************************************************\r
  * Copyright (c) 2012 Ericsson\r
- * \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
+ *\r
  * Contributors:\r
  *   Patrick Tasse - Initial API and implementation\r
  *******************************************************************************/\r
@@ -58,20 +58,21 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;\r
 import org.eclipse.ui.IActionBars;\r
 \r
+/**\r
+ * Main implementation for the LTTng 2.0 kernel Resource view\r
+ *\r
+ * @author Patrick Tasse\r
+ */\r
 public class ResourcesView extends TmfView {\r
 \r
     // ------------------------------------------------------------------------\r
     // Constants\r
     // ------------------------------------------------------------------------\r
 \r
-    /**\r
-     * View ID.\r
-     */\r
+    /** View ID. */\r
     public static final String ID = "org.eclipse.linuxtools.lttng2.kernel.ui.views.resources"; //$NON-NLS-1$\r
 \r
-    /**\r
-     * Initial time range\r
-     */\r
+    /** Initial time range */\r
     private static final long INITIAL_WINDOW_OFFSET = (1L * 100  * 1000 * 1000); // .1sec\r
 \r
     // ------------------------------------------------------------------------\r
@@ -87,6 +88,9 @@ public class ResourcesView extends TmfView {
     // The time graph entry list\r
     private ArrayList<TraceEntry> fEntryList;\r
 \r
+    // The time graph entry list synchronization object\r
+    final private Object fEntryListSyncObj = new Object();\r
+\r
     // The start time\r
     private long fStartTime;\r
 \r
@@ -94,7 +98,7 @@ public class ResourcesView extends TmfView {
     private long fEndTime;\r
 \r
     // The display width\r
-    private int fDisplayWidth;\r
+    private final int fDisplayWidth;\r
 \r
     // The next resource action\r
     private Action fNextResourceAction;\r
@@ -111,15 +115,15 @@ public class ResourcesView extends TmfView {
 \r
     private class TraceEntry implements ITimeGraphEntry {\r
         // The Trace\r
-        private CtfKernelTrace fTrace;\r
+        private final CtfKernelTrace fTrace;\r
         // The start time\r
-        private long fTraceStartTime;\r
+        private final long fTraceStartTime;\r
         // The end time\r
-        private long fTraceEndTime;        \r
+        private final long fTraceEndTime;\r
         // The children of the entry\r
-        private ArrayList<ResourcesEntry> fChildren;\r
+        private final ArrayList<ResourcesEntry> fChildren;\r
         // The name of entry\r
-        private String fName;\r
+        private final String fName;\r
 \r
         public TraceEntry(CtfKernelTrace trace, String name, long startTime, long endTime) {\r
             fTrace = trace;\r
@@ -194,7 +198,7 @@ public class ResourcesView extends TmfView {
             fChildren.add(index, entry);\r
         }\r
     }\r
-    \r
+\r
     private static class TraceEntryComparator implements Comparator<ITimeGraphEntry> {\r
         @Override\r
         public int compare(ITimeGraphEntry o1, ITimeGraphEntry o2) {\r
@@ -207,9 +211,9 @@ public class ResourcesView extends TmfView {
     }\r
 \r
     private class ZoomThread extends Thread {\r
-        private long fZoomStartTime;\r
-        private long fZoomEndTime;\r
-        private IProgressMonitor fMonitor;\r
+        private final long fZoomStartTime;\r
+        private final long fZoomEndTime;\r
+        private final IProgressMonitor fMonitor;\r
 \r
         public ZoomThread(long startTime, long endTime) {\r
             super("ResourcesView zoom"); //$NON-NLS-1$\r
@@ -220,7 +224,10 @@ public class ResourcesView extends TmfView {
 \r
         @Override\r
         public void run() {\r
-            ArrayList<TraceEntry> entryList = fEntryList;\r
+            ArrayList<TraceEntry> entryList = null;\r
+            synchronized (fEntryListSyncObj) {\r
+                entryList = fEntryList;\r
+            }\r
             if (entryList == null) {\r
                 return;\r
             }\r
@@ -235,7 +242,7 @@ public class ResourcesView extends TmfView {
                         entry.setZoomedEventList(null);\r
                     } else {\r
                         List<ITimeEvent> zoomedEventList = getEventList(entry, fZoomStartTime, fZoomEndTime, resolution, true, fMonitor);\r
-                        if (zoomedEventList != null) { \r
+                        if (zoomedEventList != null) {\r
                             entry.setZoomedEventList(zoomedEventList);\r
                         }\r
                     }\r
@@ -253,6 +260,9 @@ public class ResourcesView extends TmfView {
     // Constructors\r
     // ------------------------------------------------------------------------\r
 \r
+    /**\r
+     * Default constructor\r
+     */\r
     public ResourcesView() {\r
         super(ID);\r
         fDisplayWidth = Display.getDefault().getBounds().width;\r
@@ -320,6 +330,12 @@ public class ResourcesView extends TmfView {
     // Signal handlers\r
     // ------------------------------------------------------------------------\r
 \r
+    /**\r
+     * Handler for the ExperimentSelected signal\r
+     *\r
+     * @param signal\r
+     *            The incoming signal\r
+     */\r
     @TmfSignalHandler\r
     public void experimentSelected(final TmfExperimentSelectedSignal<? extends TmfEvent> signal) {\r
         if (signal.getExperiment().equals(fSelectedExperiment)) {\r
@@ -335,9 +351,15 @@ public class ResourcesView extends TmfView {
         thread.start();\r
     }\r
 \r
+    /**\r
+     * Handler for the TimeSynch signal\r
+     *\r
+     * @param signal\r
+     *            The incoming signal\r
+     */\r
     @TmfSignalHandler\r
     public void synchToTime(final TmfTimeSynchSignal signal) {\r
-        if (signal.getSource() == this) {\r
+        if (signal.getSource() == this || fSelectedExperiment == null) {\r
             return;\r
         }\r
         final long time = signal.getCurrentTime().normalize(0, -9).getValue();\r
@@ -353,9 +375,15 @@ public class ResourcesView extends TmfView {
         });\r
     }\r
 \r
+    /**\r
+     * Handler for the RangeSynch signal\r
+     *\r
+     * @param signal\r
+     *            The incoming signal\r
+     */\r
     @TmfSignalHandler\r
     public void synchToRange(final TmfRangeSynchSignal signal) {\r
-        if (signal.getSource() == this) {\r
+        if (signal.getSource() == this || fSelectedExperiment == null) {\r
             return;\r
         }\r
         final long startTime = signal.getCurrentRange().getStartTime().normalize(0, -9).getValue();\r
@@ -374,6 +402,12 @@ public class ResourcesView extends TmfView {
         });\r
     }\r
 \r
+    /**\r
+     * Handler for the StatesystemBuildCompleted signal\r
+     *\r
+     * @param signal\r
+     *            The incoming signal\r
+     */\r
     @TmfSignalHandler\r
     public void stateSystemBuildCompleted (final TmfStateSystemBuildCompleted signal) {\r
         final TmfExperiment<?> selectedExperiment = fSelectedExperiment;\r
@@ -443,9 +477,11 @@ public class ResourcesView extends TmfView {
                 }\r
             }\r
         }\r
-        fEntryList = entryList;\r
+        synchronized (fEntryListSyncObj) {\r
+            fEntryList = (ArrayList<TraceEntry>) entryList.clone();\r
+        }\r
         refresh(INITIAL_WINDOW_OFFSET);\r
-        for (TraceEntry traceEntry : fEntryList) {\r
+        for (TraceEntry traceEntry : entryList) {\r
             CtfKernelTrace ctfKernelTrace = ((TraceEntry) traceEntry).getTrace();\r
             IStateSystemQuerier ssq = ctfKernelTrace.getStateSystem();\r
             long startTime = ssq.getStartTime();\r
@@ -562,7 +598,10 @@ public class ResourcesView extends TmfView {
                 if (fTimeGraphViewer.getControl().isDisposed()) {\r
                     return;\r
                 }\r
-                ITimeGraphEntry[] entries = fEntryList.toArray(new ITimeGraphEntry[0]);\r
+                ITimeGraphEntry[] entries = null;\r
+                synchronized (fEntryListSyncObj) {\r
+                    entries = fEntryList.toArray(new ITimeGraphEntry[0]);\r
+                }\r
                 Arrays.sort(entries, new TraceEntryComparator());\r
                 fTimeGraphViewer.setInput(entries);\r
                 fTimeGraphViewer.setTimeBounds(fStartTime, fEndTime);\r
This page took 0.026811 seconds and 5 git commands to generate.