From 52f7290c19b3d7e17a936c1c975ca5ba0c017cab Mon Sep 17 00:00:00 2001 From: David Inglis Date: Thu, 15 Jul 2004 02:38:03 +0000 Subject: [PATCH] show error when failure to create debugger page --- .../src/org/eclipse/cdt/debug/ui/CDebugUIPlugin.java | 9 ++------- .../cdt/launch/internal/ui/AbstractCDebuggerTab.java | 8 +++++++- .../internal/ui/LaunchUIPluginResources.properties | 1 + .../src/org/eclipse/cdt/launch/ui/CDebuggerTab.java | 10 ++++++++-- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/CDebugUIPlugin.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/CDebugUIPlugin.java index 86f5d4f337a..0928a10c79c 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/CDebugUIPlugin.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/CDebugUIPlugin.java @@ -143,19 +143,14 @@ public class CDebugUIPlugin extends AbstractUIPlugin implements ISelectionListen log( new Status( IStatus.ERROR, getUniqueIdentifier(), ICDebugUIConstants.INTERNAL_ERROR, message, null ) ); } - public ILaunchConfigurationTab getDebuggerPage( String debuggerID ) { + public ILaunchConfigurationTab getDebuggerPage( String debuggerID ) throws CoreException { if ( fDebuggerPageMap == null ) { initializeDebuggerPageMap(); } IConfigurationElement configElement = (IConfigurationElement)fDebuggerPageMap.get( debuggerID ); ILaunchConfigurationTab tab = null; if ( configElement != null ) { - try { - tab = (ILaunchConfigurationTab)configElement.createExecutableExtension( "class" ); //$NON-NLS-1$ - } - catch( CoreException ce ) { - log( new Status( IStatus.ERROR, getUniqueIdentifier(), 100, "An error occurred retrieving a C Debugger page", ce ) ); //$NON-NLS-1$ - } + tab = (ILaunchConfigurationTab)configElement.createExecutableExtension( "class" ); //$NON-NLS-1$ } return tab; } diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/AbstractCDebuggerTab.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/AbstractCDebuggerTab.java index 81d8e5c8e50..bbd07e3642d 100644 --- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/AbstractCDebuggerTab.java +++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/AbstractCDebuggerTab.java @@ -145,7 +145,13 @@ public abstract class AbstractCDebuggerTab extends CLaunchConfigurationTab { if (debugConfig == null) { setDynamicTab(null); } else { - setDynamicTab(CDebugUIPlugin.getDefault().getDebuggerPage(debugConfig.getID())); + ILaunchConfigurationTab tab = null; + try { + tab = CDebugUIPlugin.getDefault().getDebuggerPage(debugConfig.getID()); + } catch (CoreException e) { + LaunchUIPlugin.errorDialog(LaunchUIPlugin.getResourceString("AbstractCDebuggerTab.ErrorLoadingDebuggerPage"), e.getStatus()); //$NON-NLS-1$ + } + setDynamicTab(tab); ICDebugConfiguration oldConfig = getDebugConfig(); if ( oldConfig != null && oldConfig != debugConfig ) { setInitializeDefault(true); diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/LaunchUIPluginResources.properties b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/LaunchUIPluginResources.properties index e5358b15e55..93846210882 100644 --- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/LaunchUIPluginResources.properties +++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/LaunchUIPluginResources.properties @@ -58,6 +58,7 @@ CApplicationLaunchShortcut.Launch_failed_no_project_selected=Launch failed no pr AbstractCDebuggerTab.No_debugger_available=No debugger available AbstractCDebuggerTab.Debugger=Debugger +AbstractCDebuggerTab.ErrorLoadingDebuggerPage=Error Loading Debugger UI Component. LaunchUIPlugin.Error=Error diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CDebuggerTab.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CDebuggerTab.java index 72d72815afb..4017ec4a55b 100644 --- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CDebuggerTab.java +++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CDebuggerTab.java @@ -46,6 +46,7 @@ public class CDebuggerTab extends AbstractCDebuggerTab { protected Button fVarBookKeeping; private final boolean DEFAULT_STOP_AT_MAIN = true; + private boolean pageUpdated; public void createControl(Composite parent) { GridData gd; @@ -177,14 +178,19 @@ public class CDebuggerTab extends AbstractCDebuggerTab { // if no selection meaning nothing in config the force initdefault on tab setInitializeDefault(selection.equals("") ? true : false); //$NON-NLS-1$ + pageUpdated = false; fDCombo.select(selndx == -1 ? 0 : selndx); //The behaviour is undefined for if the callbacks should be triggered for this, - //so to avoid unnecessary confusion, we force an update. - updateComboFromSelection(); + //so force page update if needed. + if (!pageUpdated) { + updateComboFromSelection(); + } + pageUpdated = false; getControl().getParent().layout(true); } protected void updateComboFromSelection() { + pageUpdated = true; handleDebuggerChanged(); ICDebugConfiguration debugConfig = getConfigForCurrentDebugger(); if (debugConfig != null) {