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.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

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_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.

View file

@ -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);

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.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);
}

View file

@ -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<ILanguageSettingsProvider> lsProviders = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
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.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();
}
}

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.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<ICOptionPage> optionPages = optionsPageMap.values();

View file

@ -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();
}
}