Add a "Clear Tracing Views" command
[deliverable/tracecompass.git] / org.eclipse.linuxtools.lttng2.kernel.ui / src / org / eclipse / linuxtools / internal / lttng2 / kernel / ui / views / resources / ResourcesView.java
index 66bc22c1cbceed38f35bc4f6727f3326d2ba23ba..9062f49e01366cb7787981e88ac5feb67fea9fde 100644 (file)
@@ -34,6 +34,7 @@ import org.eclipse.linuxtools.tmf.core.exceptions.AttributeNotFoundException;
 import org.eclipse.linuxtools.tmf.core.exceptions.StateValueTypeException;\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.signal.TmfExperimentDisposedSignal;\r
 import org.eclipse.linuxtools.tmf.core.signal.TmfExperimentSelectedSignal;\r
 import org.eclipse.linuxtools.tmf.core.signal.TmfRangeSynchSignal;\r
 import org.eclipse.linuxtools.tmf.core.signal.TmfSignalHandler;\r
@@ -235,7 +236,7 @@ public class ResourcesView extends TmfView {
         public void run() {\r
             ArrayList<TraceEntry> entryList = null;\r
             synchronized (fEntryListSyncObj) {\r
-                entryList = fEntryList;\r
+                entryList = (ArrayList<TraceEntry>) fEntryList.clone();\r
             }\r
             if (entryList == null) {\r
                 return;\r
@@ -332,6 +333,7 @@ public class ResourcesView extends TmfView {
      */\r
     @Override\r
     public void setFocus() {\r
+        refresh(INITIAL_WINDOW_OFFSET);\r
         fTimeGraphViewer.setFocus();\r
     }\r
 \r
@@ -360,6 +362,25 @@ public class ResourcesView extends TmfView {
         thread.start();\r
     }\r
 \r
+    /**\r
+     * Experiment is disposed: clear the data structures and the view\r
+     *\r
+     * @param signal the signal received\r
+     */\r
+    @TmfSignalHandler\r
+    public void experimentDisposed(final TmfExperimentDisposedSignal signal) {\r
+        if (signal.getExperiment().equals(fSelectedExperiment)) {\r
+            fSelectedExperiment = null;\r
+            fStartTime = 0;\r
+            fEndTime = 0;\r
+            fZoomThread.cancel();\r
+            synchronized(fEntryListSyncObj) {\r
+                fEntryList.clear();\r
+            }\r
+            refresh(INITIAL_WINDOW_OFFSET);\r
+        }\r
+    }\r
+\r
     /**\r
      * Handler for the TimeSynch signal\r
      *\r
@@ -610,25 +631,28 @@ public class ResourcesView extends TmfView {
                 }\r
                 ITimeGraphEntry[] entries = null;\r
                 synchronized (fEntryListSyncObj) {\r
-                    entries = fEntryList.toArray(new ITimeGraphEntry[0]);\r
+                    if (fEntryList != null) {\r
+                        entries = fEntryList.toArray(new ITimeGraphEntry[0]);\r
+                    }\r
                 }\r
-                Arrays.sort(entries, new TraceEntryComparator());\r
-                fTimeGraphViewer.setInput(entries);\r
-                fTimeGraphViewer.setTimeBounds(fStartTime, fEndTime);\r
+                if (entries != null) {\r
+                    Arrays.sort(entries, new TraceEntryComparator());\r
+                    fTimeGraphViewer.setInput(entries);\r
+                    fTimeGraphViewer.setTimeBounds(fStartTime, fEndTime);\r
 \r
-                long endTime = fStartTime + windowRange;\r
+                    long endTime = fStartTime + windowRange;\r
 \r
-                if (fEndTime < endTime) {\r
-                    endTime = fEndTime;\r
-                }\r
-                fTimeGraphViewer.setStartFinishTime(fStartTime, endTime);\r
+                    if (fEndTime < endTime) {\r
+                        endTime = fEndTime;\r
+                    }\r
+                    fTimeGraphViewer.setStartFinishTime(fStartTime, endTime);\r
 \r
-                startZoomThread(fStartTime, endTime);\r
+                    startZoomThread(fStartTime, endTime);\r
+                }\r
             }\r
         });\r
     }\r
 \r
-\r
     private void redraw() {\r
         synchronized (fSyncObj) {\r
             if (fRedrawState == State.IDLE) {\r
This page took 0.024961 seconds and 5 git commands to generate.