From f28d404e72949038d723c8280a3030695d4764f5 Mon Sep 17 00:00:00 2001 From: Alexandre Montplaisir Date: Tue, 20 Nov 2012 13:05:28 -0500 Subject: [PATCH] tmf: Handle 'null' active pages in views There is a possible race condition when launching the program, between the platform's window and the views' active page. Use getSite() in views where possible instead of PlatformUI, and add null checks where this is not possible. Change-Id: I2f94a9eb44817ac9ea906ac93efcf6863511a6d8 Signed-off-by: Alexandre Montplaisir Reviewed-on: https://git.eclipse.org/r/8772 Reviewed-by: Patrick Tasse IP-Clean: Patrick Tasse --- .../ui/views/controlflow/ControlFlowView.java | 3 +-- .../ui/views/resources/ResourcesView.java | 3 +-- .../ui/project/model/TmfProjectElement.java | 18 +++++++++++------- .../views/environment/TmfEnvironmentView.java | 3 +-- .../tmf/ui/views/histogram/HistogramView.java | 3 +-- .../ui/views/statistics/TmfStatisticsView.java | 3 +-- .../uml2sd/loader/TmfUml2SDSyncLoader.java | 2 +- 7 files changed, 17 insertions(+), 18 deletions(-) diff --git a/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowView.java b/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowView.java index 6e8534a4d8..e1b8c25a05 100644 --- a/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowView.java +++ b/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/controlflow/ControlFlowView.java @@ -70,7 +70,6 @@ import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.TreeColumn; import org.eclipse.ui.IActionBars; import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.PlatformUI; /** * The Control Flow view main object @@ -410,7 +409,7 @@ public class ControlFlowView extends TmfView { makeActions(); contributeToActionBars(); - IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); + IEditorPart editor = getSite().getPage().getActiveEditor(); if (editor instanceof ITmfTraceEditor) { ITmfTrace trace = ((ITmfTraceEditor) editor).getTrace(); if (trace != null) { diff --git a/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesView.java b/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesView.java index 0ed49350a8..ac6fd5932d 100644 --- a/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesView.java +++ b/org.eclipse.linuxtools.lttng2.kernel.ui/src/org/eclipse/linuxtools/internal/lttng2/kernel/ui/views/resources/ResourcesView.java @@ -60,7 +60,6 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.IActionBars; import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.PlatformUI; /** * Main implementation for the LTTng 2.0 kernel Resource view @@ -349,7 +348,7 @@ public class ResourcesView extends TmfView { makeActions(); contributeToActionBars(); - IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); + IEditorPart editor = getSite().getPage().getActiveEditor(); if (editor instanceof ITmfTraceEditor) { ITmfTrace trace = ((ITmfTraceEditor) editor).getTrace(); if (trace != null) { diff --git a/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/project/model/TmfProjectElement.java b/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/project/model/TmfProjectElement.java index 652fab786e..3410b80de7 100644 --- a/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/project/model/TmfProjectElement.java +++ b/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/project/model/TmfProjectElement.java @@ -1,11 +1,11 @@ /******************************************************************************* * Copyright (c) 2011, 2012 Ericsson - * + * * All rights reserved. This program and the accompanying materials are * made available under the terms of the Eclipse Public License v1.0 which * accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html - * + * * Contributors: * Francois Chouinard - Initial API and implementation *******************************************************************************/ @@ -25,8 +25,8 @@ import org.eclipse.ui.navigator.CommonNavigator; import org.eclipse.ui.navigator.CommonViewer; /** - * The implementation of TMF project model element. - * + * The implementation of TMF project model element. + * * @version 1.0 * @author Francois Chouinard */ @@ -44,8 +44,8 @@ public class TmfProjectElement extends TmfProjectModelElement { // ------------------------------------------------------------------------ /** * Constructor. - * - * Creates the TMF project model element. + * + * Creates the TMF project model element. * @param name The name of the project. * @param project The project reference. * @param parent The parent element @@ -88,7 +88,7 @@ public class TmfProjectElement extends TmfProjectModelElement { // Accessors // ------------------------------------------------------------------------ /** - * Returns the containing trace folder element. + * Returns the containing trace folder element. * @return the TMF trace folder element. */ public TmfTraceFolder getTracesFolder() { @@ -122,6 +122,10 @@ public class TmfProjectElement extends TmfProjectModelElement { return; } IWorkbenchPage activePage = wbWindow.getActivePage(); + if (activePage == null) { + return; + } + for (IViewReference viewReference : activePage.getViewReferences()) { IViewPart viewPart = viewReference.getView(false); if (viewPart instanceof CommonNavigator) { diff --git a/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/environment/TmfEnvironmentView.java b/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/environment/TmfEnvironmentView.java index d392756dbc..921662ddfd 100644 --- a/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/environment/TmfEnvironmentView.java +++ b/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/environment/TmfEnvironmentView.java @@ -27,7 +27,6 @@ import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.eclipse.swt.widgets.TableItem; import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.PlatformUI; /** * Displays the CTF trace properties. @@ -77,7 +76,7 @@ public class TmfEnvironmentView extends TmfView { nameCol.pack(); valueCol.pack(); - IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); + IEditorPart editor = getSite().getPage().getActiveEditor(); if (editor instanceof ITmfTraceEditor) { ITmfTrace trace = ((ITmfTraceEditor) editor).getTrace(); if (trace != null) { diff --git a/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramView.java b/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramView.java index 0e54bad32e..f0cf9f98a4 100644 --- a/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramView.java +++ b/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramView.java @@ -40,7 +40,6 @@ import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.PlatformUI; /** * The purpose of this view is to provide graphical time distribution statistics about the trace events. @@ -247,7 +246,7 @@ public class HistogramView extends TmfView { // Histogram fFullTraceHistogram = new FullTraceHistogram(this, fullRangeComposite); - IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); + IEditorPart editor = getSite().getPage().getActiveEditor(); if (editor instanceof ITmfTraceEditor) { ITmfTrace trace = ((ITmfTraceEditor) editor).getTrace(); if (trace != null) { diff --git a/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/statistics/TmfStatisticsView.java b/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/statistics/TmfStatisticsView.java index b9420dc180..122bdac1ed 100755 --- a/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/statistics/TmfStatisticsView.java +++ b/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/statistics/TmfStatisticsView.java @@ -37,7 +37,6 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.PlatformUI; /** * The generic Statistics View displays statistics for any kind of traces. @@ -107,7 +106,7 @@ public class TmfStatisticsView extends TmfView { fStatsViewers.setParent(parent); createStatisticsViewers(); - IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); + IEditorPart editor = getSite().getPage().getActiveEditor(); if (editor instanceof ITmfTraceEditor) { ITmfTrace trace = ((ITmfTraceEditor) editor).getTrace(); if (trace != null) { diff --git a/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/uml2sd/loader/TmfUml2SDSyncLoader.java b/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/uml2sd/loader/TmfUml2SDSyncLoader.java index 85c32be609..ca3dd3a55e 100644 --- a/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/uml2sd/loader/TmfUml2SDSyncLoader.java +++ b/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/uml2sd/loader/TmfUml2SDSyncLoader.java @@ -499,7 +499,7 @@ public class TmfUml2SDSyncLoader extends TmfComponent implements IUml2SDLoader, resetLoader(); - IEditorPart editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); + IEditorPart editor = fView.getSite().getPage().getActiveEditor(); if (editor instanceof ITmfTraceEditor) { ITmfTrace trace = ((ITmfTraceEditor) editor).getTrace(); if (trace != null) { -- 2.34.1