From fd19e740de669abe85e503814b249485021552ea Mon Sep 17 00:00:00 2001 From: Andrew Gvozdev Date: Mon, 30 Apr 2012 18:01:06 -0400 Subject: [PATCH] clean up disablement of LSP --- .../ui/dialogs/DiscoveryOptionsBlock.java | 9 +-- .../internal/ui/Messages.properties | 2 +- .../ui/preferences/PropertyPageDefsTab.java | 55 +++++++++-------- .../ui/properties/DiscoveryTab.java | 11 ++-- .../ScannerDiscoveryLegacySupport.java | 4 +- .../providers/LanguageSettingsEntriesTab.java | 55 ++++++----------- .../LanguageSettingsProviderTab.java | 42 ++++++------- .../LanguageSettingsProvidersPage.java | 59 +++++++++++++++++-- 8 files changed, 128 insertions(+), 109 deletions(-) diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/DiscoveryOptionsBlock.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/DiscoveryOptionsBlock.java index aaf7cafbf57..56e44b3efec 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/DiscoveryOptionsBlock.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/DiscoveryOptionsBlock.java @@ -15,13 +15,10 @@ import java.util.Arrays; import java.util.Iterator; import java.util.List; -import org.eclipse.cdt.core.language.settings.providers.ScannerDiscoveryLegacySupport; import org.eclipse.cdt.core.model.CModelException; import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.ICProject; import org.eclipse.cdt.core.model.IPathEntry; -import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; -import org.eclipse.cdt.core.settings.model.ICProjectDescription; import org.eclipse.cdt.make.core.MakeCorePlugin; import org.eclipse.cdt.make.core.MakeProjectNature; import org.eclipse.cdt.make.core.scannerconfig.IScannerConfigBuilderInfo2; @@ -183,10 +180,8 @@ public class DiscoveryOptionsBlock extends AbstractDiscoveryOptionsBlock { ((GridData)scEnabledButton.getLayoutData()).horizontalSpan = numColumns; ((GridData)scEnabledButton.getLayoutData()).grabExcessHorizontalSpace = true; // VMIR* old projects will have discovery disabled by default - boolean autodiscoveryEnabled2 = getBuildInfo().isAutoDiscoveryEnabled() && - ScannerDiscoveryLegacySupport.isLegacyScannerDiscoveryOn(getProject()); - scEnabledButton.setSelection(needsSCNature ? false - : (autodiscoveryEnabled2 + scEnabledButton.setSelection(needsSCNature ? false + : (getBuildInfo().isAutoDiscoveryEnabled() && !getBuildInfo().getSelectedProfileId().equals(ScannerConfigProfileManager.NULL_PROFILE_ID))); scEnabledButton.addSelectionListener(new SelectionAdapter() { @Override diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/Messages.properties b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/Messages.properties index eb60758820b..91a97a36895 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/Messages.properties +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/Messages.properties @@ -274,7 +274,7 @@ PropertyPageDefsTab_7=Show disc. page names if they are unique. Else show profil PropertyPageDefsTab_8=Always show names + profile IDs PropertyPageDefsTab_9=Always show profile IDs only PropertyPageDefsTab_showIncludeFileTab=Display "Include Files" tab -PropertyPageDefsTab_showProvidersTab=Display new experimental Scanner Discovery Providers tabs +PropertyPageDefsTab_showProvidersTab=Display "Preprocessor Include Paths" tabs ProjectConvert_convertersList=Converters List AbstractPrefPage_0=\ Preference settings will be applied to new projects \n only when there were no toolchains selected. diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/preferences/PropertyPageDefsTab.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/preferences/PropertyPageDefsTab.java index 245dde59395..b0e700b810e 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/preferences/PropertyPageDefsTab.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/preferences/PropertyPageDefsTab.java @@ -25,14 +25,14 @@ import org.eclipse.swt.widgets.Group; /** * @since 5.1 - * + * * @noextend This class is not intended to be subclassed by clients. * @noinstantiate This class is not intended to be instantiated by clients. */ public class PropertyPageDefsTab extends AbstractCPropertyTab { private static final int SPACING = 5; // for radio buttons layout - + private Button show_tree; private Button show_inc_files; private Button show_mng; @@ -49,75 +49,74 @@ public class PropertyPageDefsTab extends AbstractCPropertyTab { private Button s_0; private Button s_1; private Button s_2; - + @Override public void createControls(Composite parent) { super.createControls(parent); usercomp.setLayout(new GridLayout(1, false)); show_mng = new Button(usercomp, SWT.CHECK); - show_mng.setText(Messages.PropertyPageDefsTab_0); + show_mng.setText(Messages.PropertyPageDefsTab_0); show_mng.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); show_inc_files = new Button(usercomp, SWT.CHECK); - show_inc_files.setText(Messages.PropertyPageDefsTab_showIncludeFileTab); + show_inc_files.setText(Messages.PropertyPageDefsTab_showIncludeFileTab); show_inc_files.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); show_tree = new Button(usercomp, SWT.CHECK); - show_tree.setText(Messages.PropertyPageDefsTab_1); + show_tree.setText(Messages.PropertyPageDefsTab_1); show_tree.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); show_tool = new Button(usercomp, SWT.CHECK); - show_tool.setText(Messages.PropertyPageDefsTab_4); + show_tool.setText(Messages.PropertyPageDefsTab_4); show_tool.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); show_exp = new Button(usercomp, SWT.CHECK); - show_exp.setText(Messages.PropertyPageDefsTab_10); + show_exp.setText(Messages.PropertyPageDefsTab_10); show_exp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - + show_providers_tab = new Button(usercomp, SWT.CHECK); - show_providers_tab.setText(Messages.PropertyPageDefsTab_showProvidersTab + ", " //$NON-NLS-1$ - + org.eclipse.cdt.internal.ui.newui.Messages.CDTMainWizardPage_TrySD90); + show_providers_tab.setText(Messages.PropertyPageDefsTab_showProvidersTab); show_providers_tab.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - + show_tipbox = new Button(usercomp, SWT.CHECK); - show_tipbox.setText(Messages.PropertyPageDefsTab_16); + show_tipbox.setText(Messages.PropertyPageDefsTab_16); show_tipbox.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); Group saveGrp = new Group(usercomp, SWT.NONE); - saveGrp.setText(Messages.PropertyPageDefsTab_11); + saveGrp.setText(Messages.PropertyPageDefsTab_11); saveGrp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); FillLayout fl = new FillLayout(SWT.VERTICAL); fl.spacing = SPACING; fl.marginHeight = SPACING; fl.marginWidth = SPACING; saveGrp.setLayout(fl); - + s_0 = new Button(saveGrp, SWT.RADIO); - s_0.setText(Messages.PropertyPageDefsTab_13); + s_0.setText(Messages.PropertyPageDefsTab_13); s_1 = new Button(saveGrp, SWT.RADIO); - s_1.setText(Messages.PropertyPageDefsTab_12); + s_1.setText(Messages.PropertyPageDefsTab_12); s_2 = new Button(saveGrp, SWT.RADIO); - s_2.setText(Messages.PropertyPageDefsTab_14); - + s_2.setText(Messages.PropertyPageDefsTab_14); + Group discGrp = new Group(usercomp, SWT.NONE); - discGrp.setText(Messages.PropertyPageDefsTab_5); + discGrp.setText(Messages.PropertyPageDefsTab_5); discGrp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); fl = new FillLayout(SWT.VERTICAL); fl.spacing = SPACING; fl.marginHeight = SPACING; fl.marginWidth = SPACING; discGrp.setLayout(fl); - + b_0 = new Button(discGrp, SWT.RADIO); - b_0.setText(Messages.PropertyPageDefsTab_6); + b_0.setText(Messages.PropertyPageDefsTab_6); b_1 = new Button(discGrp, SWT.RADIO); - b_1.setText(Messages.PropertyPageDefsTab_7); + b_1.setText(Messages.PropertyPageDefsTab_7); b_2 = new Button(discGrp, SWT.RADIO); - b_2.setText(Messages.PropertyPageDefsTab_8); + b_2.setText(Messages.PropertyPageDefsTab_8); b_3 = new Button(discGrp, SWT.RADIO); - b_3.setText(Messages.PropertyPageDefsTab_9); - + b_3.setText(Messages.PropertyPageDefsTab_9); + show_inc_files.setSelection(CDTPrefUtil.getBool(CDTPrefUtil.KEY_SHOW_INC_FILES)); show_tree.setSelection(CDTPrefUtil.getBool(CDTPrefUtil.KEY_DTREE)); show_mng.setSelection(!CDTPrefUtil.getBool(CDTPrefUtil.KEY_NOMNG)); @@ -125,7 +124,7 @@ public class PropertyPageDefsTab extends AbstractCPropertyTab { show_exp.setSelection(CDTPrefUtil.getBool(CDTPrefUtil.KEY_EXPORT)); show_providers_tab.setSelection(!CDTPrefUtil.getBool(CDTPrefUtil.KEY_NO_SHOW_PROVIDERS)); show_tipbox.setSelection(CDTPrefUtil.getBool(CDTPrefUtil.KEY_TIPBOX)); - + switch (CDTPrefUtil.getInt(CDTPrefUtil.KEY_DISC_NAMES)) { case CDTPrefUtil.DISC_NAMING_UNIQUE_OR_BOTH: b_0.setSelection(true); break; case CDTPrefUtil.DISC_NAMING_UNIQUE_OR_IDS: b_1.setSelection(true); break; @@ -160,7 +159,7 @@ public class PropertyPageDefsTab extends AbstractCPropertyTab { else if (s_2.getSelection()) x = CDTPrefUtil.POSITION_SAVE_NONE; CDTPrefUtil.setInt(CDTPrefUtil.KEY_POSSAVE, x); } - + @Override protected void performDefaults() { show_tree.setSelection(false); diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/DiscoveryTab.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/DiscoveryTab.java index d5b8655080a..27a75b7433a 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/DiscoveryTab.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/DiscoveryTab.java @@ -29,6 +29,7 @@ import org.eclipse.cdt.core.model.util.CDTListComparator; import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; import org.eclipse.cdt.core.settings.model.ICResourceDescription; import org.eclipse.cdt.core.settings.model.util.CDataUtil; +import org.eclipse.cdt.internal.ui.language.settings.providers.LanguageSettingsProvidersPage; import org.eclipse.cdt.internal.ui.newui.StatusMessageLine; import org.eclipse.cdt.make.core.MakeCorePlugin; import org.eclipse.cdt.make.core.scannerconfig.IScannerConfigBuilderInfo2; @@ -246,7 +247,7 @@ public class DiscoveryTab extends AbstractCBuildPropertyTab implements IBuildInf Label clearLabel = ControlFactory.createLabel(autoDiscoveryGroup, Messages.DiscoveryTab_ClearDisoveredEntries); // "Clear" button - clearButton = ControlFactory.createPushButton(autoDiscoveryGroup, Messages.DiscoveryTab_Clear); + clearButton = ControlFactory.createPushButton(autoDiscoveryGroup, Messages.DiscoveryTab_Clear); GridData gd = (GridData) clearButton.getLayoutData(); gd.grabExcessHorizontalSpace = true; //Bug 331783 - NLS: "Clear" button label in Makefile Project preferences truncated @@ -344,18 +345,18 @@ public class DiscoveryTab extends AbstractCBuildPropertyTab implements IBuildInf } else { setVisibility(Messages.DiscoveryTab_6); } - + setEnablement(); } private void setEnablement() { IStatus status = null; ICConfigurationDescription cfgDescription = page.getResDesc().getConfiguration(); - boolean isEnabled = ScannerDiscoveryLegacySupport.isLegacyScannerDiscoveryOn(cfgDescription); + boolean isEnabled = !LanguageSettingsProvidersPage.isLanguageSettingsProvidersEnabled(getProject()) || ScannerDiscoveryLegacySupport.isMbsLanguageSettingsProviderOn(cfgDescription); if (!isEnabled) { status = new Status(IStatus.INFO, CUIPlugin.PLUGIN_ID, "Managed Build language settings provider is not enabled."); } - + scopeComboBox.setEnabled(isEnabled); resTable.setEnabled(isEnabled); boolean isSCDEnabled = autoDiscoveryCheckBox.getSelection(); @@ -363,7 +364,7 @@ public class DiscoveryTab extends AbstractCBuildPropertyTab implements IBuildInf autoDiscoveryCheckBox.setEnabled(isEnabled); autoDiscoveryGroup.setEnabled(isEnabled); clearButton.setEnabled(isEnabled); - + fStatusLine.setErrorStatus(status); } diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/ScannerDiscoveryLegacySupport.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/ScannerDiscoveryLegacySupport.java index 58b813b9bea..7570a96eb87 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/ScannerDiscoveryLegacySupport.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/ScannerDiscoveryLegacySupport.java @@ -92,8 +92,10 @@ public class ScannerDiscoveryLegacySupport { /** * Check if legacy Scanner Discovery in MBS should be active. + * @noreference This is internal helper method to support compatibility with previous versions + * which is not intended to be referenced by clients. */ - private static boolean isMbsLanguageSettingsProviderOn(ICConfigurationDescription cfgDescription) { + public static boolean isMbsLanguageSettingsProviderOn(ICConfigurationDescription cfgDescription) { if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) { List lsProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders(); for (ILanguageSettingsProvider lsp : lsProviders) { diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsEntriesTab.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsEntriesTab.java index c910e679c62..51d6095a970 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsEntriesTab.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsEntriesTab.java @@ -47,7 +47,6 @@ import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvide import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvidersKeeper; import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsBaseProvider; import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager; -import org.eclipse.cdt.core.language.settings.providers.ScannerDiscoveryLegacySupport; import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.LanguageManager; import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; @@ -453,29 +452,25 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab { * Create check-box to allow disable/enable language settings providers functionality. */ private void createEnableProvidersCheckBox() { - enableProvidersCheckBox = setupCheck(usercomp, Messages.CDTMainWizardPage_TrySD90, 2, GridData.FILL_HORIZONTAL); - enableProvidersCheckBox.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - boolean enabled = enableProvidersCheckBox.getSelection(); - if (masterPropertyPage != null) { - masterPropertyPage.setLanguageSettingsProvidersEnabled(enabled); - } - - enableTabControls(enabled); - updateStatusLine(); - } - }); - + // take the flag from master page if available (normally for resource properties) if (masterPropertyPage != null) { - // take the flag from master page if available (normally for resource properties) + enableProvidersCheckBox = setupCheck(usercomp, Messages.CDTMainWizardPage_TrySD90, 2, GridData.FILL_HORIZONTAL); + enableProvidersCheckBox.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + boolean enabled = enableProvidersCheckBox.getSelection(); + masterPropertyPage.setLanguageSettingsProvidersEnabled(enabled); + enableTabControls(enabled); + updateStatusLine(); + } + }); + enableProvidersCheckBox.setSelection(masterPropertyPage.isLanguageSettingsProvidersEnabled()); - } else { - enableProvidersCheckBox.setSelection(ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(page.getProject())); + + // display but disable the checkbox for file/folder resource + enableProvidersCheckBox.setEnabled(page.isForProject()); + enableTabControls(enableProvidersCheckBox.getSelection()); } - // display but disable the checkbox for file/folder resource - enableProvidersCheckBox.setEnabled(page.isForProject()); - enableTabControls(enableProvidersCheckBox.getSelection()); } @Override @@ -1105,7 +1100,7 @@ providers: for (ILanguageSettingsProvider provider : oldProviders) { } } - setLanguageSettingsProvidersFunctionalityEnablement(); + performOK(); trackInitialSettings(); updateData(getResDesc()); @@ -1113,20 +1108,8 @@ providers: for (ILanguageSettingsProvider provider : oldProviders) { @Override protected void performOK() { - setLanguageSettingsProvidersFunctionalityEnablement(); - } - - /** - * TODO - */ - private void setLanguageSettingsProvidersFunctionalityEnablement() { - if (page.isForProject() && enableProvidersCheckBox != null) { - boolean enabled = enableProvidersCheckBox.getSelection(); - if (masterPropertyPage != null) { - enabled = masterPropertyPage.isLanguageSettingsProvidersEnabled(); - } - ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(page.getProject(), enabled); - enableProvidersCheckBox.setSelection(enabled); + if (masterPropertyPage != null && enableProvidersCheckBox.getEnabled()) { + masterPropertyPage.applyLanguageSettingsProvidersEnabled(); } } 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 d0dcb689f9d..c4f87f729a5 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 @@ -51,7 +51,6 @@ import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvide import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsProvidersKeeper; import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager; import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsSerializableProvider; -import org.eclipse.cdt.core.language.settings.providers.ScannerDiscoveryLegacySupport; import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; import org.eclipse.cdt.core.settings.model.ICResourceDescription; import org.eclipse.cdt.ui.CDTSharedImages; @@ -630,27 +629,24 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab { * Create check-box to allow disable/enable language settings providers functionality. */ private void createEnableProvidersCheckBox() { - enableProvidersCheckBox = setupCheck(usercomp, Messages.CDTMainWizardPage_TrySD90, 2, GridData.FILL_HORIZONTAL); - enableProvidersCheckBox.addSelectionListener(new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - boolean enabled = enableProvidersCheckBox.getSelection(); - if (masterPropertyPage != null) { + // take the flag from master page if available (normally for resource properties) + if (masterPropertyPage != null) { + enableProvidersCheckBox = setupCheck(usercomp, Messages.CDTMainWizardPage_TrySD90, 2, GridData.FILL_HORIZONTAL); + enableProvidersCheckBox.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + boolean enabled = enableProvidersCheckBox.getSelection(); masterPropertyPage.setLanguageSettingsProvidersEnabled(enabled); + enableTabControls(enabled); } + }); - enableTabControls(enabled); - } - }); - - if (masterPropertyPage!=null) { enableProvidersCheckBox.setSelection(masterPropertyPage.isLanguageSettingsProvidersEnabled()); - } else { - enableProvidersCheckBox.setSelection(ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(page.getProject())); + + // display but disable the checkbox for file/folder resource + enableProvidersCheckBox.setEnabled(page.isForProject()); + enableTabControls(enableProvidersCheckBox.getSelection()); } - // display but disable the checkbox for file/folder resource - enableProvidersCheckBox.setEnabled(page.isForProject()); - enableTabControls(enableProvidersCheckBox.getSelection()); } @Override @@ -1037,6 +1033,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab { } } } + tableProvidersViewer.refresh(); optionsPageMap.clear(); for (ILanguageSettingsProvider provider : presentedProviders) { @@ -1062,7 +1059,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab { setAllVisible(true, null); } - if (enableProvidersCheckBox != null && masterPropertyPage != null) { + if (masterPropertyPage != null) { boolean enabled = masterPropertyPage.isLanguageSettingsProvidersEnabled(); enableProvidersCheckBox.setSelection(enabled); enableTabControls(enabled); @@ -1164,13 +1161,8 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab { initializeProviders(); } - if (page.isForProject() && enableProvidersCheckBox != null) { - boolean enabled = enableProvidersCheckBox.getSelection(); - if (masterPropertyPage != null) { - enabled = masterPropertyPage.isLanguageSettingsProvidersEnabled(); - } - ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(page.getProject(), enabled); - enableProvidersCheckBox.setSelection(enabled); + if (masterPropertyPage != null && enableProvidersCheckBox.getEnabled()) { + masterPropertyPage.applyLanguageSettingsProvidersEnabled(); } Collection optionPages = optionsPageMap.values(); diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProvidersPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProvidersPage.java index 02883e43e5d..4c3c33cc268 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProvidersPage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProvidersPage.java @@ -10,18 +10,22 @@ *******************************************************************************/ package org.eclipse.cdt.internal.ui.language.settings.providers; +import org.eclipse.core.resources.IProject; + import org.eclipse.cdt.core.language.settings.providers.ScannerDiscoveryLegacySupport; import org.eclipse.cdt.ui.newui.AbstractPage; import org.eclipse.cdt.ui.newui.ICPropertyTab; /** * Property page for language settings providers tabs. + * The handling of isLanguageSettingsProvidersEnabled is temporary, this control is to be removed. * * @noextend This class is not intended to be subclassed by clients. * @noinstantiate This class is not intended to be instantiated by clients. */ public class LanguageSettingsProvidersPage extends AbstractPage { - private Boolean isLanguageSettingsProvidersEnabled = null; + private static boolean isLanguageSettingsProvidersEnabled = false; + private static IProject project = null; @Override protected boolean isSingle() { @@ -29,24 +33,67 @@ public class LanguageSettingsProvidersPage extends AbstractPage { } /** - * Check if language settings providers functionality is enabled for a current project. + * Check if language settings providers functionality is enabled for the project. + * Need this method as another page could be inquiring before this page gets initialized. + * + * @noreference This method is temporary and not intended to be referenced by clients. + */ + public static boolean isLanguageSettingsProvidersEnabled(IProject prj) { + if (prj != null) { + if (prj.equals(project)) { + return isLanguageSettingsProvidersEnabled; + } else { + return ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(project); + } + } + return false; + } + + /** + * Check if language settings providers functionality is enabled for the current project. * * @noreference This method is temporary and not intended to be referenced by clients. */ public boolean isLanguageSettingsProvidersEnabled() { - if (isLanguageSettingsProvidersEnabled == null) { - isLanguageSettingsProvidersEnabled = ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(getProject()); + IProject prj = getProject(); + if (prj != null) { + if (!prj.equals(project)) { + project = prj; + isLanguageSettingsProvidersEnabled = ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(project); + } + return isLanguageSettingsProvidersEnabled; } - return isLanguageSettingsProvidersEnabled; + return false; } /** - * Enable or disable language settings providers functionality for a current project. + * Enable or disable language settings providers functionality for the current project. + * Triggers update of all the property pages. + * + * Note that this method only sets property for the current editing session. + * Use {@link #applyLanguageSettingsProvidersEnabled()} to apply to the project. * * @noreference This method is temporary and not intended to be referenced by clients. */ public void setLanguageSettingsProvidersEnabled(boolean enable) { isLanguageSettingsProvidersEnabled = enable; + project = getProject(); forEach(ICPropertyTab.UPDATE,getResDesc()); } + + /** + * Apply enablement of language settings providers functionality to the current project. + * + * @noreference This method is temporary and not intended to be referenced by clients. + */ + public void applyLanguageSettingsProvidersEnabled() { + ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(getProject(), isLanguageSettingsProvidersEnabled); + } + + @Override + public void dispose() { + isLanguageSettingsProvidersEnabled = false; + project = null; + super.dispose(); + } }