X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=tmf%2Forg.eclipse.tracecompass.tmf.ui%2Fsrc%2Forg%2Feclipse%2Ftracecompass%2Ftmf%2Fui%2Fviewers%2Ftree%2FAbstractTmfTreeViewer.java;h=77002a3cf622a8ff74a909b5dee57d0258df219e;hb=7d65c2b56db8f9e2b0913873b8c71ea40328daf6;hp=ee950de10905ee8d023705bcbafbf822b36cbbab;hpb=3cbca18617a8489db72af8b46d90b7af167c5f0f;p=deliverable%2Ftracecompass.git diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/tree/AbstractTmfTreeViewer.java b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/tree/AbstractTmfTreeViewer.java index ee950de109..77002a3cf6 100644 --- a/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/tree/AbstractTmfTreeViewer.java +++ b/tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/tree/AbstractTmfTreeViewer.java @@ -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 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 { * false 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); } }