From fd3e1ebcc01fbd5df7fa294d93d0a4af3565c01a Mon Sep 17 00:00:00 2001 From: David Inglis Date: Mon, 21 Apr 2003 16:19:44 +0000 Subject: [PATCH] run the init of completion contributor in a ISafeRunnable --- .../ui/CCompletionContributorManager.java | 95 ++++++++++--------- 1 file changed, 50 insertions(+), 45 deletions(-) diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CCompletionContributorManager.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CCompletionContributorManager.java index 556fb3d3760..2c1eaaee17a 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CCompletionContributorManager.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CCompletionContributorManager.java @@ -5,18 +5,18 @@ package org.eclipse.cdt.internal.ui; * All Rights Reserved. */ - -import org.eclipse.cdt.ui.*; -import org.eclipse.cdt.ui.ICCompletionContributor; -import org.eclipse.cdt.ui.IFunctionSummary; import java.util.ArrayList; import java.util.List; + +import org.eclipse.cdt.ui.CUIPlugin; +import org.eclipse.cdt.ui.ICCompletionContributor; +import org.eclipse.cdt.ui.IFunctionSummary; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtensionPoint; +import org.eclipse.core.runtime.ISafeRunnable; import org.eclipse.core.runtime.Platform; - /** * Manages external plugins that contribute completion and function * info through the CCompletionContributor extension point @@ -28,86 +28,91 @@ public class CCompletionContributorManager { static boolean fContributorsLoaded = false; public static final String CONTRIBUTION_EXTENSION = "CCompletionContributor"; static private CCompletionContributorManager fInstance; - - + private CCompletionContributorManager() { // Initialize and scan the extension points } - + public static CCompletionContributorManager getDefault() { - if(fInstance == null) { + if (fInstance == null) { fInstance = new CCompletionContributorManager(); } return fInstance; } - + public IFunctionSummary getFunctionInfo(String name) { - if(!fContributorsLoaded) + if (!fContributorsLoaded) loadExtensions(); - - for (int i= 0; i < fCompletionContributors.size(); i++) { - ICCompletionContributor c = (ICCompletionContributor)fCompletionContributors.get(i); + + for (int i = 0; i < fCompletionContributors.size(); i++) { + ICCompletionContributor c = (ICCompletionContributor) fCompletionContributors.get(i); IFunctionSummary f = c.getFunctionInfo(name); - - if(f != null) + + if (f != null) return f; } return null; } - + public IFunctionSummary[] getMatchingFunctions(String frag) { - if(!fContributorsLoaded) + if (!fContributorsLoaded) loadExtensions(); IFunctionSummary[] fs = null; - - for (int i= 0; i < fCompletionContributors.size(); i++) { - ICCompletionContributor c = (ICCompletionContributor)fCompletionContributors.get(i); + + for (int i = 0; i < fCompletionContributors.size(); i++) { + ICCompletionContributor c = (ICCompletionContributor) fCompletionContributors.get(i); IFunctionSummary[] f = c.getMatchingFunctions(frag); - if(f != null) { - if(fs != null) { + if (f != null) { + if (fs != null) { int length = f.length + fs.length; IFunctionSummary[] ft = new IFunctionSummary[length]; int j; - for(j = 0; j < fs.length; j++) ft[j] = fs[j]; - for(j = 0; j < f.length; j++) ft[j + fs.length] = f[j]; + for (j = 0; j < fs.length; j++) + ft[j] = fs[j]; + for (j = 0; j < f.length; j++) + ft[j + fs.length] = f[j]; fs = ft; } else { fs = f; } } - + //if(f != null) - //return f; + //return f; } - + return fs; } - + private void loadExtensions() { fContributorsLoaded = true; - fCompletionContributors= new ArrayList(2); - + fCompletionContributors = new ArrayList(2); + // populate list - IExtensionPoint extensionPoint= Platform.getPluginRegistry().getExtensionPoint(CUIPlugin.PLUGIN_ID, "CCompletionContributor"); //$NON-NLS-1$ + IExtensionPoint extensionPoint = Platform.getPluginRegistry().getExtensionPoint(CUIPlugin.PLUGIN_ID, "CCompletionContributor"); //$NON-NLS-1$ if (extensionPoint != null) { - IConfigurationElement[] elements= extensionPoint.getConfigurationElements(); - for (int i= 0; i < elements.length; i++) { - if(elements[i].getName().equals("provider")) { - ICCompletionContributor c; - + IConfigurationElement[] elements = extensionPoint.getConfigurationElements(); + for (int i = 0; i < elements.length; i++) { + if (elements[i].getName().equals("provider")) { try { + final ICCompletionContributor c; // Instantiate the classe - c = (ICCompletionContributor)elements[i].createExecutableExtension("class"); - // Initialize - c.initialize(); - // Add to contributor list - fCompletionContributors.add(c); + c = (ICCompletionContributor) elements[i].createExecutableExtension("class"); + ISafeRunnable runnable = new ISafeRunnable() { + public void run() throws Exception { + // Initialize + c.initialize(); + // Add to contributor list + fCompletionContributors.add(c); + } + public void handleException(Throwable exception) { + } + }; + Platform.run(runnable); } catch (CoreException e) { - System.out.println("Unable to instantiate ContributionManager extension"); } } } } } -} - +} \ No newline at end of file