tmf.ui: Make TmfTimeViewer handlers parameters nullable
[deliverable/tracecompass.git] / tmf / org.eclipse.tracecompass.tmf.ui / src / org / eclipse / tracecompass / tmf / ui / viewers / tree / AbstractTmfTreeViewer.java
index ee950de10905ee8d023705bcbafbf822b36cbbab..77002a3cf622a8ff74a909b5dee57d0258df219e 100644 (file)
@@ -14,6 +14,10 @@ package org.eclipse.tracecompass.tmf.ui.viewers.tree;
 
 import java.util.List;
 
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jface.viewers.AbstractTreeViewer;
 import org.eclipse.jface.viewers.IBaseLabelProvider;
@@ -38,9 +42,9 @@ import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Tree;
 import org.eclipse.swt.widgets.TreeColumn;
-import org.eclipse.tracecompass.tmf.core.signal.TmfWindowRangeUpdatedSignal;
-import org.eclipse.tracecompass.tmf.core.signal.TmfSignalHandler;
 import org.eclipse.tracecompass.tmf.core.signal.TmfSelectionRangeUpdatedSignal;
+import org.eclipse.tracecompass.tmf.core.signal.TmfSignalHandler;
+import org.eclipse.tracecompass.tmf.core.signal.TmfWindowRangeUpdatedSignal;
 import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
 import org.eclipse.tracecompass.tmf.ui.viewers.TmfTimeViewer;
 
@@ -188,6 +192,7 @@ public abstract class AbstractTmfTreeViewer extends TmfTimeViewer {
         fTreeViewer.setLabelProvider(new TreeLabelProvider());
         List<TmfTreeColumnData> columns = getColumnDataProvider().getColumnData();
         this.setTreeColumns(columns);
+
     }
 
     /**
@@ -273,8 +278,9 @@ public abstract class AbstractTmfTreeViewer extends TmfTimeViewer {
      * Get the tree viewer object
      *
      * @return The tree viewer object displayed by this viewer
+     * @since 2.2
      */
-    protected TreeViewer getTreeViewer() {
+    public TreeViewer getTreeViewer() {
         return fTreeViewer;
     }
 
@@ -399,15 +405,19 @@ public abstract class AbstractTmfTreeViewer extends TmfTimeViewer {
      *            <code>false</code> for the visible time range
      */
     protected void updateContent(final long start, final long end, final boolean isSelection) {
-        Thread thread = new Thread() {
+        Job thread = new Job("") { //$NON-NLS-1$
             @Override
-            public void run() {
+            public IStatus run(IProgressMonitor monitor) {
                 final ITmfTreeViewerEntry rootEntry = updateElements(start, end, isSelection);
                 /* Set the input in main thread only if it didn't change */
                 if (rootEntry != null) {
                     Display.getDefault().asyncExec(new Runnable() {
                         @Override
                         public void run() {
+                            if (fTreeViewer.getControl().isDisposed()) {
+                                return;
+                            }
+
                             if (rootEntry != fTreeViewer.getInput()) {
                                 fTreeViewer.setInput(rootEntry);
                                 contentChanged(rootEntry);
@@ -422,9 +432,11 @@ public abstract class AbstractTmfTreeViewer extends TmfTimeViewer {
                         }
                     });
                 }
+                return Status.OK_STATUS;
             }
         };
-        thread.start();
+        thread.setSystem(true);
+        thread.schedule();
     }
 
     /**
@@ -477,7 +489,7 @@ public abstract class AbstractTmfTreeViewer extends TmfTimeViewer {
     @TmfSignalHandler
     public void selectionRangeUpdated(TmfSelectionRangeUpdatedSignal signal) {
         super.selectionRangeUpdated(signal);
-        if ((signal.getSource() != this) && (getTrace() != null)) {
+        if (signal != null && (signal.getSource() != this) && (getTrace() != null)) {
             updateContent(this.getSelectionBeginTime(), this.getSelectionEndTime(), true);
         }
     }
This page took 0.027788 seconds and 5 git commands to generate.