1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-09 10:46:02 +02:00

Revert "Removed "Shared provider" checkbox from UI."

This commit is contained in:
Andrew Gvozdev 2011-12-23 12:48:40 -05:00
parent 00e199b8e7
commit ae99178c47

View file

@ -117,6 +117,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
private Button enableProvidersCheckBox; private Button enableProvidersCheckBox;
private StatusMessageLine fStatusLine; private StatusMessageLine fStatusLine;
private Button globalProviderCheckBox = null;
private Link linkWorkspacePreferences = null; private Link linkWorkspacePreferences = null;
private Button projectStorageCheckBox = null; private Button projectStorageCheckBox = null;
@ -356,6 +357,37 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
return link; return link;
} }
// Called from globalProviderCheckBox listener
private ILanguageSettingsProvider toggleGlobalProvider(ILanguageSettingsProvider oldProvider, boolean toGlobal) {
ILanguageSettingsProvider newProvider = null;
String id = oldProvider.getId();
if (toGlobal) {
newProvider = LanguageSettingsManager.getWorkspaceProvider(id);
} else {
// Local provider instance chosen
try {
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(oldProvider);
if (rawProvider instanceof ILanguageSettingsEditableProvider) {
newProvider = ((ILanguageSettingsEditableProvider) rawProvider).cloneShallow();
}
} catch (CloneNotSupportedException e) {
CUIPlugin.log("Error cloning provider " + oldProvider.getId(), e);
}
}
if (newProvider!=null) {
replaceSelectedProvider(newProvider);
ICConfigurationDescription cfgDescription = getConfigurationDescription();
initializeOptionsPage(newProvider, cfgDescription);
displaySelectedOptionPage();
} else {
newProvider = oldProvider;
}
return newProvider;
}
private void replaceSelectedProvider(ILanguageSettingsProvider newProvider) { private void replaceSelectedProvider(ILanguageSettingsProvider newProvider) {
int pos = tableProviders.getSelectionIndex(); int pos = tableProviders.getSelectionIndex();
presentedProviders.set(pos, newProvider); presentedProviders.set(pos, newProvider);
@ -388,6 +420,29 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
groupOptionsPage.setLayout(new GridLayout(2, false)); groupOptionsPage.setLayout(new GridLayout(2, false));
if (!page.isForPrefs()) { if (!page.isForPrefs()) {
if (globalProviderCheckBox==null) {
globalProviderCheckBox = new Button(groupOptionsPage, SWT.CHECK);
globalProviderCheckBox.setText("Share setting entries between projects (global provider)");
globalProviderCheckBox.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
boolean isGlobal = globalProviderCheckBox.getSelection();
ILanguageSettingsProvider provider = getSelectedProvider();
if (isGlobal != LanguageSettingsManager.isWorkspaceProvider(provider)) {
provider = toggleGlobalProvider(provider, isGlobal);
}
projectStorageCheckBox.setSelection(provider instanceof LanguageSettingsSerializableProvider
&& LanguageSettingsManager.isStoringEntriesInProjectArea((LanguageSettingsSerializableProvider) provider));
}
@Override
public void widgetDefaultSelected(SelectionEvent e) {
widgetSelected(e);
}
});
}
if (projectStorageCheckBox == null) { if (projectStorageCheckBox == null) {
projectStorageCheckBox = new Button(groupOptionsPage, SWT.CHECK); projectStorageCheckBox = new Button(groupOptionsPage, SWT.CHECK);
projectStorageCheckBox.setText("Store entries in project settings folder (easing project miration)"); projectStorageCheckBox.setText("Store entries in project settings folder (easing project miration)");
@ -576,6 +631,11 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
boolean isChecked = tableProvidersViewer.getChecked(provider); boolean isChecked = tableProvidersViewer.getChecked(provider);
if (!page.isForPrefs()) { if (!page.isForPrefs()) {
boolean isRawProviderEditable = rawProvider instanceof ILanguageSettingsEditableProvider;
globalProviderCheckBox.setSelection(isGlobal);
globalProviderCheckBox.setEnabled(isChecked && isRawProviderEditable);
globalProviderCheckBox.setVisible(provider!=null);
projectStorageCheckBox.setEnabled(!isGlobal); projectStorageCheckBox.setEnabled(!isGlobal);
projectStorageCheckBox.setVisible(rawProvider instanceof LanguageSettingsSerializableProvider); projectStorageCheckBox.setVisible(rawProvider instanceof LanguageSettingsSerializableProvider);
projectStorageCheckBox.setSelection(provider instanceof LanguageSettingsSerializableProvider projectStorageCheckBox.setSelection(provider instanceof LanguageSettingsSerializableProvider
@ -583,7 +643,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
boolean needPreferencesLink=isGlobal && currentOptionsPage!=null; boolean needPreferencesLink=isGlobal && currentOptionsPage!=null;
// TODO: message // TODO: message
final String linkMsg = needPreferencesLink ? "Options of shared providers below can be changed in <a href=\"workspace\">Workspace Settings</a>, Discovery Tab." : ""; final String linkMsg = needPreferencesLink ? "Options of global providers below can be changed in <a href=\"workspace\">Workspace Settings</a>, Discovery Tab." : "";
linkWorkspacePreferences.setText(linkMsg); linkWorkspacePreferences.setText(linkMsg);
linkWorkspacePreferences.pack(); linkWorkspacePreferences.pack();
linkWorkspacePreferences.setEnabled(isChecked); linkWorkspacePreferences.setEnabled(isChecked);