Skip to main content
aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorAndrew Gvozdev2012-05-23 11:16:17 +0000
committerAndrew Gvozdev2012-05-24 12:31:16 +0000
commitf2bb8b1f6fb4c6e2c61997cc8279e683cfb47321 (patch)
tree586d184c88995e9540740612a14f34d1a1de6bb2 /core
parentd1e2d46fad69791059303e3338e8f013afb8a3b9 (diff)
downloadorg.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')
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java43
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/language/settings/providers/AbstractLanguageSettingProviderOptionPage.java5
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.

Back to the top