1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

clean up disablement of LSP

This commit is contained in:
Andrew Gvozdev 2012-04-30 18:01:06 -04:00
parent a650dd13d8
commit fd19e740de
8 changed files with 128 additions and 109 deletions

View file

@ -15,13 +15,10 @@ import java.util.Arrays;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; 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.CModelException;
import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.ICProject; import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.model.IPathEntry; 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.MakeCorePlugin;
import org.eclipse.cdt.make.core.MakeProjectNature; import org.eclipse.cdt.make.core.MakeProjectNature;
import org.eclipse.cdt.make.core.scannerconfig.IScannerConfigBuilderInfo2; 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()).horizontalSpan = numColumns;
((GridData)scEnabledButton.getLayoutData()).grabExcessHorizontalSpace = true; ((GridData)scEnabledButton.getLayoutData()).grabExcessHorizontalSpace = true;
// VMIR* old projects will have discovery disabled by default // VMIR* old projects will have discovery disabled by default
boolean autodiscoveryEnabled2 = getBuildInfo().isAutoDiscoveryEnabled() && scEnabledButton.setSelection(needsSCNature ? false
ScannerDiscoveryLegacySupport.isLegacyScannerDiscoveryOn(getProject()); : (getBuildInfo().isAutoDiscoveryEnabled()
scEnabledButton.setSelection(needsSCNature ? false
: (autodiscoveryEnabled2
&& !getBuildInfo().getSelectedProfileId().equals(ScannerConfigProfileManager.NULL_PROFILE_ID))); && !getBuildInfo().getSelectedProfileId().equals(ScannerConfigProfileManager.NULL_PROFILE_ID)));
scEnabledButton.addSelectionListener(new SelectionAdapter() { scEnabledButton.addSelectionListener(new SelectionAdapter() {
@Override @Override

View file

@ -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_8=Always show names + profile IDs
PropertyPageDefsTab_9=Always show profile IDs only PropertyPageDefsTab_9=Always show profile IDs only
PropertyPageDefsTab_showIncludeFileTab=Display "Include Files" tab 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 ProjectConvert_convertersList=Converters List
AbstractPrefPage_0=\ Preference settings will be applied to new projects \n only when there were no toolchains selected. AbstractPrefPage_0=\ Preference settings will be applied to new projects \n only when there were no toolchains selected.

View file

@ -25,14 +25,14 @@ import org.eclipse.swt.widgets.Group;
/** /**
* @since 5.1 * @since 5.1
* *
* @noextend This class is not intended to be subclassed by clients. * @noextend This class is not intended to be subclassed by clients.
* @noinstantiate This class is not intended to be instantiated by clients. * @noinstantiate This class is not intended to be instantiated by clients.
*/ */
public class PropertyPageDefsTab extends AbstractCPropertyTab { public class PropertyPageDefsTab extends AbstractCPropertyTab {
private static final int SPACING = 5; // for radio buttons layout private static final int SPACING = 5; // for radio buttons layout
private Button show_tree; private Button show_tree;
private Button show_inc_files; private Button show_inc_files;
private Button show_mng; private Button show_mng;
@ -49,75 +49,74 @@ public class PropertyPageDefsTab extends AbstractCPropertyTab {
private Button s_0; private Button s_0;
private Button s_1; private Button s_1;
private Button s_2; private Button s_2;
@Override @Override
public void createControls(Composite parent) { public void createControls(Composite parent) {
super.createControls(parent); super.createControls(parent);
usercomp.setLayout(new GridLayout(1, false)); usercomp.setLayout(new GridLayout(1, false));
show_mng = new Button(usercomp, SWT.CHECK); 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_mng.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
show_inc_files = new Button(usercomp, SWT.CHECK); 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_inc_files.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
show_tree = new Button(usercomp, SWT.CHECK); 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_tree.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
show_tool = new Button(usercomp, SWT.CHECK); 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_tool.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
show_exp = new Button(usercomp, SWT.CHECK); 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_exp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
show_providers_tab = new Button(usercomp, SWT.CHECK); show_providers_tab = new Button(usercomp, SWT.CHECK);
show_providers_tab.setText(Messages.PropertyPageDefsTab_showProvidersTab + ", " //$NON-NLS-1$ show_providers_tab.setText(Messages.PropertyPageDefsTab_showProvidersTab);
+ org.eclipse.cdt.internal.ui.newui.Messages.CDTMainWizardPage_TrySD90);
show_providers_tab.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); show_providers_tab.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
show_tipbox = new Button(usercomp, SWT.CHECK); 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)); show_tipbox.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Group saveGrp = new Group(usercomp, SWT.NONE); Group saveGrp = new Group(usercomp, SWT.NONE);
saveGrp.setText(Messages.PropertyPageDefsTab_11); saveGrp.setText(Messages.PropertyPageDefsTab_11);
saveGrp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); saveGrp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
FillLayout fl = new FillLayout(SWT.VERTICAL); FillLayout fl = new FillLayout(SWT.VERTICAL);
fl.spacing = SPACING; fl.spacing = SPACING;
fl.marginHeight = SPACING; fl.marginHeight = SPACING;
fl.marginWidth = SPACING; fl.marginWidth = SPACING;
saveGrp.setLayout(fl); saveGrp.setLayout(fl);
s_0 = new Button(saveGrp, SWT.RADIO); 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 = 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 = new Button(saveGrp, SWT.RADIO);
s_2.setText(Messages.PropertyPageDefsTab_14); s_2.setText(Messages.PropertyPageDefsTab_14);
Group discGrp = new Group(usercomp, SWT.NONE); Group discGrp = new Group(usercomp, SWT.NONE);
discGrp.setText(Messages.PropertyPageDefsTab_5); discGrp.setText(Messages.PropertyPageDefsTab_5);
discGrp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); discGrp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
fl = new FillLayout(SWT.VERTICAL); fl = new FillLayout(SWT.VERTICAL);
fl.spacing = SPACING; fl.spacing = SPACING;
fl.marginHeight = SPACING; fl.marginHeight = SPACING;
fl.marginWidth = SPACING; fl.marginWidth = SPACING;
discGrp.setLayout(fl); discGrp.setLayout(fl);
b_0 = new Button(discGrp, SWT.RADIO); 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 = 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 = 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 = 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_inc_files.setSelection(CDTPrefUtil.getBool(CDTPrefUtil.KEY_SHOW_INC_FILES));
show_tree.setSelection(CDTPrefUtil.getBool(CDTPrefUtil.KEY_DTREE)); show_tree.setSelection(CDTPrefUtil.getBool(CDTPrefUtil.KEY_DTREE));
show_mng.setSelection(!CDTPrefUtil.getBool(CDTPrefUtil.KEY_NOMNG)); 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_exp.setSelection(CDTPrefUtil.getBool(CDTPrefUtil.KEY_EXPORT));
show_providers_tab.setSelection(!CDTPrefUtil.getBool(CDTPrefUtil.KEY_NO_SHOW_PROVIDERS)); show_providers_tab.setSelection(!CDTPrefUtil.getBool(CDTPrefUtil.KEY_NO_SHOW_PROVIDERS));
show_tipbox.setSelection(CDTPrefUtil.getBool(CDTPrefUtil.KEY_TIPBOX)); show_tipbox.setSelection(CDTPrefUtil.getBool(CDTPrefUtil.KEY_TIPBOX));
switch (CDTPrefUtil.getInt(CDTPrefUtil.KEY_DISC_NAMES)) { 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_BOTH: b_0.setSelection(true); break;
case CDTPrefUtil.DISC_NAMING_UNIQUE_OR_IDS: b_1.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; else if (s_2.getSelection()) x = CDTPrefUtil.POSITION_SAVE_NONE;
CDTPrefUtil.setInt(CDTPrefUtil.KEY_POSSAVE, x); CDTPrefUtil.setInt(CDTPrefUtil.KEY_POSSAVE, x);
} }
@Override @Override
protected void performDefaults() { protected void performDefaults() {
show_tree.setSelection(false); show_tree.setSelection(false);

View file

@ -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.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICResourceDescription; import org.eclipse.cdt.core.settings.model.ICResourceDescription;
import org.eclipse.cdt.core.settings.model.util.CDataUtil; 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.internal.ui.newui.StatusMessageLine;
import org.eclipse.cdt.make.core.MakeCorePlugin; import org.eclipse.cdt.make.core.MakeCorePlugin;
import org.eclipse.cdt.make.core.scannerconfig.IScannerConfigBuilderInfo2; 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); Label clearLabel = ControlFactory.createLabel(autoDiscoveryGroup, Messages.DiscoveryTab_ClearDisoveredEntries);
// "Clear" button // "Clear" button
clearButton = ControlFactory.createPushButton(autoDiscoveryGroup, Messages.DiscoveryTab_Clear); clearButton = ControlFactory.createPushButton(autoDiscoveryGroup, Messages.DiscoveryTab_Clear);
GridData gd = (GridData) clearButton.getLayoutData(); GridData gd = (GridData) clearButton.getLayoutData();
gd.grabExcessHorizontalSpace = true; gd.grabExcessHorizontalSpace = true;
//Bug 331783 - NLS: "Clear" button label in Makefile Project preferences truncated //Bug 331783 - NLS: "Clear" button label in Makefile Project preferences truncated
@ -344,18 +345,18 @@ public class DiscoveryTab extends AbstractCBuildPropertyTab implements IBuildInf
} else { } else {
setVisibility(Messages.DiscoveryTab_6); setVisibility(Messages.DiscoveryTab_6);
} }
setEnablement(); setEnablement();
} }
private void setEnablement() { private void setEnablement() {
IStatus status = null; IStatus status = null;
ICConfigurationDescription cfgDescription = page.getResDesc().getConfiguration(); ICConfigurationDescription cfgDescription = page.getResDesc().getConfiguration();
boolean isEnabled = ScannerDiscoveryLegacySupport.isLegacyScannerDiscoveryOn(cfgDescription); boolean isEnabled = !LanguageSettingsProvidersPage.isLanguageSettingsProvidersEnabled(getProject()) || ScannerDiscoveryLegacySupport.isMbsLanguageSettingsProviderOn(cfgDescription);
if (!isEnabled) { if (!isEnabled) {
status = new Status(IStatus.INFO, CUIPlugin.PLUGIN_ID, "Managed Build language settings provider is not enabled."); status = new Status(IStatus.INFO, CUIPlugin.PLUGIN_ID, "Managed Build language settings provider is not enabled.");
} }
scopeComboBox.setEnabled(isEnabled); scopeComboBox.setEnabled(isEnabled);
resTable.setEnabled(isEnabled); resTable.setEnabled(isEnabled);
boolean isSCDEnabled = autoDiscoveryCheckBox.getSelection(); boolean isSCDEnabled = autoDiscoveryCheckBox.getSelection();
@ -363,7 +364,7 @@ public class DiscoveryTab extends AbstractCBuildPropertyTab implements IBuildInf
autoDiscoveryCheckBox.setEnabled(isEnabled); autoDiscoveryCheckBox.setEnabled(isEnabled);
autoDiscoveryGroup.setEnabled(isEnabled); autoDiscoveryGroup.setEnabled(isEnabled);
clearButton.setEnabled(isEnabled); clearButton.setEnabled(isEnabled);
fStatusLine.setErrorStatus(status); fStatusLine.setErrorStatus(status);
} }

View file

@ -92,8 +92,10 @@ public class ScannerDiscoveryLegacySupport {
/** /**
* Check if legacy Scanner Discovery in MBS should be active. * 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) { if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
List<ILanguageSettingsProvider> lsProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders(); List<ILanguageSettingsProvider> lsProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
for (ILanguageSettingsProvider lsp : lsProviders) { for (ILanguageSettingsProvider lsp : lsProviders) {

View file

@ -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.ILanguageSettingsProvidersKeeper;
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsBaseProvider; 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.LanguageSettingsManager;
import org.eclipse.cdt.core.language.settings.providers.ScannerDiscoveryLegacySupport;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.model.LanguageManager; import org.eclipse.cdt.core.model.LanguageManager;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; 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. * Create check-box to allow disable/enable language settings providers functionality.
*/ */
private void createEnableProvidersCheckBox() { private void createEnableProvidersCheckBox() {
enableProvidersCheckBox = setupCheck(usercomp, Messages.CDTMainWizardPage_TrySD90, 2, GridData.FILL_HORIZONTAL); // take the flag from master page if available (normally for resource properties)
enableProvidersCheckBox.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
boolean enabled = enableProvidersCheckBox.getSelection();
if (masterPropertyPage != null) {
masterPropertyPage.setLanguageSettingsProvidersEnabled(enabled);
}
enableTabControls(enabled);
updateStatusLine();
}
});
if (masterPropertyPage != null) { 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()); 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 @Override
@ -1105,7 +1100,7 @@ providers: for (ILanguageSettingsProvider provider : oldProviders) {
} }
} }
setLanguageSettingsProvidersFunctionalityEnablement(); performOK();
trackInitialSettings(); trackInitialSettings();
updateData(getResDesc()); updateData(getResDesc());
@ -1113,20 +1108,8 @@ providers: for (ILanguageSettingsProvider provider : oldProviders) {
@Override @Override
protected void performOK() { protected void performOK() {
setLanguageSettingsProvidersFunctionalityEnablement(); if (masterPropertyPage != null && enableProvidersCheckBox.getEnabled()) {
} masterPropertyPage.applyLanguageSettingsProvidersEnabled();
/**
* 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);
} }
} }

View file

@ -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.ILanguageSettingsProvidersKeeper;
import org.eclipse.cdt.core.language.settings.providers.LanguageSettingsManager; 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.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.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICResourceDescription; import org.eclipse.cdt.core.settings.model.ICResourceDescription;
import org.eclipse.cdt.ui.CDTSharedImages; 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. * Create check-box to allow disable/enable language settings providers functionality.
*/ */
private void createEnableProvidersCheckBox() { private void createEnableProvidersCheckBox() {
enableProvidersCheckBox = setupCheck(usercomp, Messages.CDTMainWizardPage_TrySD90, 2, GridData.FILL_HORIZONTAL); // take the flag from master page if available (normally for resource properties)
enableProvidersCheckBox.addSelectionListener(new SelectionAdapter() { if (masterPropertyPage != null) {
@Override enableProvidersCheckBox = setupCheck(usercomp, Messages.CDTMainWizardPage_TrySD90, 2, GridData.FILL_HORIZONTAL);
public void widgetSelected(SelectionEvent e) { enableProvidersCheckBox.addSelectionListener(new SelectionAdapter() {
boolean enabled = enableProvidersCheckBox.getSelection(); @Override
if (masterPropertyPage != null) { public void widgetSelected(SelectionEvent e) {
boolean enabled = enableProvidersCheckBox.getSelection();
masterPropertyPage.setLanguageSettingsProvidersEnabled(enabled); masterPropertyPage.setLanguageSettingsProvidersEnabled(enabled);
enableTabControls(enabled);
} }
});
enableTabControls(enabled);
}
});
if (masterPropertyPage!=null) {
enableProvidersCheckBox.setSelection(masterPropertyPage.isLanguageSettingsProvidersEnabled()); 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 @Override
@ -1037,6 +1033,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
} }
} }
} }
tableProvidersViewer.refresh();
optionsPageMap.clear(); optionsPageMap.clear();
for (ILanguageSettingsProvider provider : presentedProviders) { for (ILanguageSettingsProvider provider : presentedProviders) {
@ -1062,7 +1059,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
setAllVisible(true, null); setAllVisible(true, null);
} }
if (enableProvidersCheckBox != null && masterPropertyPage != null) { if (masterPropertyPage != null) {
boolean enabled = masterPropertyPage.isLanguageSettingsProvidersEnabled(); boolean enabled = masterPropertyPage.isLanguageSettingsProvidersEnabled();
enableProvidersCheckBox.setSelection(enabled); enableProvidersCheckBox.setSelection(enabled);
enableTabControls(enabled); enableTabControls(enabled);
@ -1164,13 +1161,8 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
initializeProviders(); initializeProviders();
} }
if (page.isForProject() && enableProvidersCheckBox != null) { if (masterPropertyPage != null && enableProvidersCheckBox.getEnabled()) {
boolean enabled = enableProvidersCheckBox.getSelection(); masterPropertyPage.applyLanguageSettingsProvidersEnabled();
if (masterPropertyPage != null) {
enabled = masterPropertyPage.isLanguageSettingsProvidersEnabled();
}
ScannerDiscoveryLegacySupport.setLanguageSettingsProvidersFunctionalityEnabled(page.getProject(), enabled);
enableProvidersCheckBox.setSelection(enabled);
} }
Collection<ICOptionPage> optionPages = optionsPageMap.values(); Collection<ICOptionPage> optionPages = optionsPageMap.values();

View file

@ -10,18 +10,22 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.ui.language.settings.providers; 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.core.language.settings.providers.ScannerDiscoveryLegacySupport;
import org.eclipse.cdt.ui.newui.AbstractPage; import org.eclipse.cdt.ui.newui.AbstractPage;
import org.eclipse.cdt.ui.newui.ICPropertyTab; import org.eclipse.cdt.ui.newui.ICPropertyTab;
/** /**
* Property page for language settings providers tabs. * 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. * @noextend This class is not intended to be subclassed by clients.
* @noinstantiate This class is not intended to be instantiated by clients. * @noinstantiate This class is not intended to be instantiated by clients.
*/ */
public class LanguageSettingsProvidersPage extends AbstractPage { public class LanguageSettingsProvidersPage extends AbstractPage {
private Boolean isLanguageSettingsProvidersEnabled = null; private static boolean isLanguageSettingsProvidersEnabled = false;
private static IProject project = null;
@Override @Override
protected boolean isSingle() { 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. * @noreference This method is temporary and not intended to be referenced by clients.
*/ */
public boolean isLanguageSettingsProvidersEnabled() { public boolean isLanguageSettingsProvidersEnabled() {
if (isLanguageSettingsProvidersEnabled == null) { IProject prj = getProject();
isLanguageSettingsProvidersEnabled = ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(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. * @noreference This method is temporary and not intended to be referenced by clients.
*/ */
public void setLanguageSettingsProvidersEnabled(boolean enable) { public void setLanguageSettingsProvidersEnabled(boolean enable) {
isLanguageSettingsProvidersEnabled = enable; isLanguageSettingsProvidersEnabled = enable;
project = getProject();
forEach(ICPropertyTab.UPDATE,getResDesc()); 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();
}
} }