diff options
author | Andrew Gvozdev | 2012-05-23 11:16:17 +0000 |
---|---|---|
committer | Andrew Gvozdev | 2012-05-24 12:31:16 +0000 |
commit | f2bb8b1f6fb4c6e2c61997cc8279e683cfb47321 (patch) | |
tree | 586d184c88995e9540740612a14f34d1a1de6bb2 /core | |
parent | d1e2d46fad69791059303e3338e8f013afb8a3b9 (diff) | |
download | org.eclipse.cdt-f2bb8b1f6fb4c6e2c61997cc8279e683cfb47321.tar.gz org.eclipse.cdt-f2bb8b1f6fb4c6e2c61997cc8279e683cfb47321.tar.xz org.eclipse.cdt-f2bb8b1f6fb4c6e2c61997cc8279e683cfb47321.zip |
bug 379480: changing "command to get compiler specs" does not take
effect
Diffstat (limited to 'core')
2 files changed, 35 insertions, 13 deletions
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java index 1e235892470..2a710b22794 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java @@ -107,7 +107,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab { */ private List<ILanguageSettingsProvider> presentedProviders = null; private final Map<String, ICOptionPage> optionsPageMap = new HashMap<String, ICOptionPage>(); - private Map<String, List<ILanguageSettingsProvider>> initialProvidersByCfg = new HashMap<String, List<ILanguageSettingsProvider>>(); + private Map<String/*cfgId*/, List<ILanguageSettingsProvider>> initialProvidersByCfg = new HashMap<String, List<ILanguageSettingsProvider>>(); /** * Label provider for language settings providers displayed by this tab. @@ -170,6 +170,27 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab { } /** + * Returns the provider equal to provider at the point from which editing started. + * Used by option pages when there is a need. + * @param id - id of the provider. + * + * @return the initial provider. + */ + public ILanguageSettingsProvider getInitialProvider(String id) { + ILanguageSettingsProvider initialProvider = null; + if (page.isForPrefs()) { + initialProvider = LanguageSettingsManager.getWorkspaceProvider(id); + } else { + ICConfigurationDescription cfgDescription = getConfigurationDescription(); + List<ILanguageSettingsProvider> initialProviders = initialProvidersByCfg.get(cfgDescription.getId()); + if (initialProviders != null) { + initialProvider = findProvider(id, initialProviders); + } + } + return initialProvider; + } + + /** * Check if the provider is a working copy and can be modified. */ private boolean isWorkingCopy(ILanguageSettingsProvider provider) { @@ -1136,7 +1157,16 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab { @Override protected void performOK() { - // Build Settings page + // give option pages a chance for provider-specific pre-apply actions + Collection<ICOptionPage> optionPages = optionsPageMap.values(); + for (ICOptionPage op : optionPages) { + try { + op.performApply(null); + } catch (CoreException e) { + CUIPlugin.log("Error applying options page", e); //$NON-NLS-1$ + } + } + if (page.isForPrefs()) { try { LanguageSettingsManager.setWorkspaceProviders(presentedProviders); @@ -1149,15 +1179,6 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab { if (masterPropertyPage != null && enableProvidersCheckBox.getEnabled()) { masterPropertyPage.applyLanguageSettingsProvidersEnabled(); } - - Collection<ICOptionPage> optionPages = optionsPageMap.values(); - for (ICOptionPage op : optionPages) { - try { - op.performApply(null); - } catch (CoreException e) { - CUIPlugin.log("Error applying options page", e); //$NON-NLS-1$ - } - } } @Override diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/language/settings/providers/AbstractLanguageSettingProviderOptionPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/language/settings/providers/AbstractLanguageSettingProviderOptionPage.java index 13871ccfa8c..504b18a318a 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/language/settings/providers/AbstractLanguageSettingProviderOptionPage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/language/settings/providers/AbstractLanguageSettingProviderOptionPage.java @@ -22,12 +22,13 @@ import org.eclipse.cdt.internal.ui.language.settings.providers.LanguageSettingsP /**
* Abstract class to implement language settings providers Options page.
+ * @noextend This class is not intended to be subclassed by clients, only internally by CDT.
*
* @since 5.4
*/
public abstract class AbstractLanguageSettingProviderOptionPage extends AbstractCOptionPage {
- private LanguageSettingsProviderTab providerTab;
- private String providerId;
+ protected LanguageSettingsProviderTab providerTab;
+ protected String providerId;
/**
* Initialize the options page with the owning tab and provider ID.
|