Add a "Clear Tracing Views" command
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / views / environment / TmfEnvironmentView.java
index f713a38ccc32dde5010398e21d79ebbf61743a8d..6b87620708a425b645f6584054ec011b5ffc3f1a 100644 (file)
@@ -14,6 +14,7 @@ package org.eclipse.linuxtools.tmf.ui.views.environment;
 import java.util.ArrayList;
 
 import org.eclipse.linuxtools.tmf.core.ctfadaptor.CtfTmfTrace;
+import org.eclipse.linuxtools.tmf.core.signal.TmfExperimentDisposedSignal;
 import org.eclipse.linuxtools.tmf.core.signal.TmfExperimentSelectedSignal;
 import org.eclipse.linuxtools.tmf.core.signal.TmfSignalHandler;
 import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
@@ -65,26 +66,29 @@ public class TmfEnvironmentView extends TmfView {
     public void createPartControl(Composite parent) {
         fParent = parent;
         TableItem ti[];
-        // If an experiment is already selected, update the table
-        TmfExperiment experiment = TmfExperiment.getCurrentExperiment();
-        if (experiment == null) {
-            return;
-        }
-        fTable = new Table(parent, SWT.BORDER|SWT.FILL);
-
 
+        // Always create the table anyway otherwise we have an NPE when
+        // setFocus() is called by platform. Besides it's nice to have
+        // at least the column headers.
+        fTable = new Table(parent, SWT.BORDER|SWT.FILL);
         ArrayList<Pair> tableData = new ArrayList<Pair>();
-        for (ITmfTrace trace : experiment.getTraces()) {
-            Pair traceEntry = new Pair(trace.getName());
-            tableData.add(traceEntry);
-            if (trace instanceof CtfTmfTrace) {
-                CtfTmfTrace ctfTrace = (CtfTmfTrace) trace;
-                for (String varName : ctfTrace
-                        .getEnvNames()) {
-                    tableData.add(new Pair( varName, ctfTrace.getEnvValue(varName)));
+
+        // If an experiment is already selected, update the table
+        TmfExperiment experiment = TmfExperiment.getCurrentExperiment();
+        if (experiment != null) {
+            for (ITmfTrace trace : experiment.getTraces()) {
+                Pair traceEntry = new Pair(trace.getName());
+                tableData.add(traceEntry);
+                if (trace instanceof CtfTmfTrace) {
+                    CtfTmfTrace ctfTrace = (CtfTmfTrace) trace;
+                    for (String varName : ctfTrace
+                            .getEnvNames()) {
+                        tableData.add(new Pair( varName, ctfTrace.getEnvValue(varName)));
+                    }
                 }
             }
         }
+
         TableColumn nameCol = new TableColumn(fTable, SWT.NONE, 0);
         TableColumn valueCol = new TableColumn(fTable, SWT.NONE, 1);
         nameCol.setText("Environment Variable"); //$NON-NLS-1$
@@ -106,7 +110,6 @@ public class TmfEnvironmentView extends TmfView {
         fTable.pack();
 
         parent.layout();
-
     }
 
     /* (non-Javadoc)
@@ -145,5 +148,14 @@ public class TmfEnvironmentView extends TmfView {
         }
     }
 
+    /**
+     * @param signal the incoming signal
+     * @since 2.0
+     */
+    @TmfSignalHandler
+    public void experimentDisposed(TmfExperimentDisposedSignal signal) {
+        fExperiment = null;
+        fTable.clearAll();
+    }
 
 }
This page took 0.024039 seconds and 5 git commands to generate.