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

"Restore Defaults" in properties and preferences

This commit is contained in:
Andrew Gvozdev 2012-01-24 13:41:09 -05:00
parent 2e2d1f833e
commit ede43fdd0a
4 changed files with 218 additions and 86 deletions

View file

@ -259,8 +259,10 @@ public class LanguageSettingsExtensionManager {
* *
* @param className - class name to instantiate. * @param className - class name to instantiate.
* @return new instance of language settings provider. * @return new instance of language settings provider.
*
* @throws CoreException if not able to create a new instance.
*/ */
/*package*/ static ILanguageSettingsProvider instantiateProviderClass(String className) { /*package*/ static ILanguageSettingsProvider instantiateProviderClass(String className) throws CoreException {
if (className==null || className.equals(LanguageSettingsSerializableProvider.class.getName())) { if (className==null || className.equals(LanguageSettingsSerializableProvider.class.getName())) {
return new LanguageSettingsSerializableProvider(); return new LanguageSettingsSerializableProvider();
} }
@ -272,7 +274,7 @@ public class LanguageSettingsExtensionManager {
ILanguageSettingsProvider provider = loadProviderFromRegistry(ATTR_CLASS, className, Platform.getExtensionRegistry(), false); ILanguageSettingsProvider provider = loadProviderFromRegistry(ATTR_CLASS, className, Platform.getExtensionRegistry(), false);
if (provider == null) { if (provider == null) {
String msg = "Not able to load provider class=" + className; //$NON-NLS-1$ String msg = "Not able to load provider class=" + className; //$NON-NLS-1$
CCorePlugin.log(new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, msg, new Exception(msg))); throw new CoreException(new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, msg));
} }
return provider; return provider;
} }

View file

@ -844,7 +844,14 @@ public class LanguageSettingsProvidersSerializer {
provider = LanguageSettingsManager.getWorkspaceProvider(providerId); provider = LanguageSettingsManager.getWorkspaceProvider(providerId);
} }
} else { } else {
try {
provider = loadProvider(providerNode); provider = loadProvider(providerNode);
} catch (CoreException e) {
@SuppressWarnings("nls")
String msg = "Error loading provider class=[" + providerClass + "] "
+ "in project=" + prjDescription.getProject().getName() + ", cfg=[" + cfgId + "]";
CCorePlugin.log(msg, e);
}
if (provider instanceof LanguageSettingsSerializableProvider) { if (provider instanceof LanguageSettingsSerializableProvider) {
LanguageSettingsSerializableProvider lss = (LanguageSettingsSerializableProvider) provider; LanguageSettingsSerializableProvider lss = (LanguageSettingsSerializableProvider) provider;
if (!isStoringEntriesInProjectArea(lss) && projectElementWsp != null) { if (!isStoringEntriesInProjectArea(lss) && projectElementWsp != null) {
@ -941,7 +948,7 @@ public class LanguageSettingsProvidersSerializer {
/** /**
* Load provider from provider node. * Load provider from provider node.
*/ */
private static ILanguageSettingsProvider loadProvider(Node providerNode) { private static ILanguageSettingsProvider loadProvider(Node providerNode) throws CoreException {
String attrClass = XmlUtil.determineAttributeValue(providerNode, ATTR_CLASS); String attrClass = XmlUtil.determineAttributeValue(providerNode, ATTR_CLASS);
ILanguageSettingsProvider provider = LanguageSettingsExtensionManager.instantiateProviderClass(attrClass); ILanguageSettingsProvider provider = LanguageSettingsExtensionManager.instantiateProviderClass(attrClass);

View file

@ -12,6 +12,7 @@
package org.eclipse.cdt.internal.ui.language.settings.providers; package org.eclipse.cdt.internal.ui.language.settings.providers;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
@ -117,7 +118,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
private Button enableProvidersCheckBox; private Button enableProvidersCheckBox;
private StatusMessageLine fStatusLine; private StatusMessageLine fStatusLine;
private Button globalProviderCheckBox = null; private Button sharedProviderCheckBox = null;
private Link linkWorkspacePreferences = null; private Link linkWorkspacePreferences = null;
private Button projectStorageCheckBox = null; private Button projectStorageCheckBox = null;
@ -158,10 +159,49 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
return newProvider; return newProvider;
} }
private static boolean isReconfigured(ILanguageSettingsProvider provider) { private boolean isReconfiguredForProject(ILanguageSettingsProvider provider) {
if (provider instanceof ILanguageSettingsEditableProvider) { String id = provider.getId();
return (LanguageSettingsManager.getExtensionProviderIds().contains(provider.getId()) &&
! LanguageSettingsManager.isEqualExtensionProvider(provider, false)); // check for the provider mismatch in configuration list vs. default list from the tool-chain
ICConfigurationDescription cfgDescription = getConfigurationDescription();
String[] defaultIds = ((ILanguageSettingsProvidersKeeper) cfgDescription).getDefaultLanguageSettingsProvidersIds();
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
if (Arrays.asList(defaultIds).contains(id) != providers.contains(provider)) {
return true;
}
// check if "shared" flag matches default shared preference from extension point definition
if (providers.contains(provider) && LanguageSettingsManager.isPreferShared(id) != LanguageSettingsManager.isWorkspaceProvider(provider)) {
return true;
}
// check if configuration provider equals to the default one from extension point
if (!LanguageSettingsManager.isWorkspaceProvider(provider) && !LanguageSettingsManager.isEqualExtensionProvider(provider, false)) {
return true;
}
return false;
}
private boolean isEditedForProject(ILanguageSettingsProvider provider) {
String id = provider.getId();
// check for the provider mismatch in configuration list vs. initial list
ICConfigurationDescription cfgDescription = getConfigurationDescription();
List<ILanguageSettingsProvider> initialProviders = initialProvidersByCfg.get(cfgDescription.getId());
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
ILanguageSettingsProvider initialProvider = findProvider(id, initialProviders);
if ((initialProvider != null) != providers.contains(provider)) {
return true;
}
// check if "shared" flag matches that of initial provider
if (providers.contains(provider) && LanguageSettingsManager.isWorkspaceProvider(initialProvider) != LanguageSettingsManager.isWorkspaceProvider(provider)) {
return true;
}
// check if configuration provider equals to the initial one
if (!LanguageSettingsManager.isWorkspaceProvider(provider) && !provider.equals(initialProvider)) {
return true;
} }
return false; return false;
} }
@ -171,16 +211,48 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
protected String[] getOverlayKeys(ILanguageSettingsProvider provider) { protected String[] getOverlayKeys(ILanguageSettingsProvider provider) {
String[] overlayKeys = super.getOverlayKeys(provider); String[] overlayKeys = super.getOverlayKeys(provider);
ILanguageSettingsProvider rawProvider = page.isForPrefs() ? LanguageSettingsManager.getRawProvider(provider) : provider; if (page.isForProject()) {
if (isReconfigured(rawProvider)) { if (isReconfiguredForProject(provider)) {
overlayKeys[IDecoration.TOP_RIGHT] = CDTSharedImages.IMG_OVR_SETTING; overlayKeys[IDecoration.TOP_RIGHT] = CDTSharedImages.IMG_OVR_SETTING;
} }
if (isEditedForProject(provider)) {
if (isWorkingCopy(provider)) {
overlayKeys[IDecoration.TOP_RIGHT] = CDTSharedImages.IMG_OVR_EDITED; overlayKeys[IDecoration.TOP_RIGHT] = CDTSharedImages.IMG_OVR_EDITED;
} }
} else if (page.isForPrefs()) {
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
if (rawProvider instanceof ILanguageSettingsEditableProvider && !LanguageSettingsManager.isEqualExtensionProvider(rawProvider, false)) {
overlayKeys[IDecoration.TOP_RIGHT] = CDTSharedImages.IMG_OVR_SETTING;
}
if (isWorkingCopy(provider)) {
ILanguageSettingsProvider rawInitialProvider = LanguageSettingsManager.getRawProvider(LanguageSettingsManager.getWorkspaceProvider(provider.getId()));
if (!provider.equals(rawInitialProvider)) {
overlayKeys[IDecoration.TOP_RIGHT] = CDTSharedImages.IMG_OVR_EDITED;
}
}
}
return overlayKeys; return overlayKeys;
} }
@Override
public String getText(Object element) {
// AG TODO - address duplication with super.getText()
if (element instanceof ILanguageSettingsProvider) {
ILanguageSettingsProvider provider = (ILanguageSettingsProvider) element;
String name = provider.getName();
if (name != null) {
if (page.isForPrefs() || isPresentedAsShared(provider)) {
name = name + " [ Shared ]";
}
return name;
}
String id = provider.getId();
return "[ Not accessible id="+id+" ]";
}
return super.getText(element);
}
} }
/** /**
@ -314,7 +386,8 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
int pos = presentedProviders.indexOf(provider); int pos = presentedProviders.indexOf(provider);
tableProviders.setSelection(pos); tableProviders.setSelection(pos);
if (event.getChecked() && LanguageSettingsManager.isWorkspaceProvider(provider)) { if (event.getChecked()) {
if (LanguageSettingsManager.isWorkspaceProvider(provider)) {
if (!LanguageSettingsManager.isPreferShared(provider.getId())) { if (!LanguageSettingsManager.isPreferShared(provider.getId())) {
// Switch to non-shared provider instance // Switch to non-shared provider instance
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider); ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
@ -325,13 +398,22 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
replaceSelectedProvider(provider); replaceSelectedProvider(provider);
ICConfigurationDescription cfgDescription = getConfigurationDescription(); ICConfigurationDescription cfgDescription = getConfigurationDescription();
initializeOptionsPage(provider, cfgDescription); initializeOptionsPage(provider, cfgDescription);
displaySelectedOptionPage();
} }
} }
} }
} }
} else {
if (!LanguageSettingsManager.isWorkspaceProvider(provider)) {
provider = LanguageSettingsManager.getWorkspaceProvider(provider.getId());
replaceSelectedProvider(provider);
ICConfigurationDescription cfgDescription = getConfigurationDescription();
initializeOptionsPage(provider, cfgDescription);
}
}
displaySelectedOptionPage();
tableProvidersViewer.update(provider, null); tableProvidersViewer.update(provider, null);
updateButtons();
}}); }});
createOptionsControl(); createOptionsControl();
@ -401,11 +483,13 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) { if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
List<ILanguageSettingsProvider> cfgProviders = new ArrayList<ILanguageSettingsProvider>(((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders()); List<ILanguageSettingsProvider> cfgProviders = new ArrayList<ILanguageSettingsProvider>(((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders());
pos = getProviderIndex(newProvider.getId(), cfgProviders); pos = getProviderIndex(newProvider.getId(), cfgProviders);
if (pos >= 0) {
cfgProviders.set(pos, newProvider); cfgProviders.set(pos, newProvider);
((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(cfgProviders); ((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(cfgProviders);
tableProvidersViewer.setCheckedElements(cfgProviders.toArray(new ILanguageSettingsProvider[0])); tableProvidersViewer.setCheckedElements(cfgProviders.toArray(new ILanguageSettingsProvider[0]));
} }
} }
}
refreshItem(newProvider); refreshItem(newProvider);
} }
@ -420,13 +504,13 @@ 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) { if (sharedProviderCheckBox==null) {
globalProviderCheckBox = new Button(groupOptionsPage, SWT.CHECK); sharedProviderCheckBox = new Button(groupOptionsPage, SWT.CHECK);
globalProviderCheckBox.setText("Share setting entries between projects (global provider)"); sharedProviderCheckBox.setText("Share setting entries between projects (global provider)");
globalProviderCheckBox.addSelectionListener(new SelectionAdapter() { sharedProviderCheckBox.addSelectionListener(new SelectionAdapter() {
@Override @Override
public void widgetSelected(SelectionEvent e) { public void widgetSelected(SelectionEvent e) {
boolean isGlobal = globalProviderCheckBox.getSelection(); boolean isGlobal = sharedProviderCheckBox.getSelection();
ILanguageSettingsProvider provider = getSelectedProvider(); ILanguageSettingsProvider provider = getSelectedProvider();
if (isGlobal != LanguageSettingsManager.isWorkspaceProvider(provider)) { if (isGlobal != LanguageSettingsManager.isWorkspaceProvider(provider)) {
provider = toggleGlobalProvider(provider, isGlobal); provider = toggleGlobalProvider(provider, isGlobal);
@ -632,9 +716,10 @@ 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; boolean isRawProviderEditable = rawProvider instanceof ILanguageSettingsEditableProvider;
globalProviderCheckBox.setSelection(isGlobal);
globalProviderCheckBox.setEnabled(isChecked && isRawProviderEditable); sharedProviderCheckBox.setSelection(isPresentedAsShared(provider));
globalProviderCheckBox.setVisible(provider!=null); sharedProviderCheckBox.setEnabled(isChecked && isRawProviderEditable);
sharedProviderCheckBox.setVisible(provider!=null);
projectStorageCheckBox.setEnabled(!isGlobal); projectStorageCheckBox.setEnabled(!isGlobal);
projectStorageCheckBox.setVisible(rawProvider instanceof LanguageSettingsSerializableProvider); projectStorageCheckBox.setVisible(rawProvider instanceof LanguageSettingsSerializableProvider);
@ -661,6 +746,18 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
} }
} }
/**
* Checks if the provider should be presented as shared. Unchecked providers are shown as non-shared
* if they are defined as non-shared in extension point even if in fact shared instance is used to display
* the options page.
*/
private boolean isPresentedAsShared(ILanguageSettingsProvider provider) {
ICConfigurationDescription cfgDescription = getConfigurationDescription();
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
return LanguageSettingsManager.isWorkspaceProvider(provider) &&
( providers.contains(provider) || LanguageSettingsManager.isPreferShared(provider.getId()) );
}
private void saveCheckedProviders(Object selectedElement) { private void saveCheckedProviders(Object selectedElement) {
if (page.isForProject()) { if (page.isForProject()) {
@ -702,9 +799,9 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
@Override @Override
protected void updateButtons() { protected void updateButtons() {
ILanguageSettingsProvider provider = getSelectedProvider(); ILanguageSettingsProvider provider = getSelectedProvider();
boolean isProviderSelected =provider!=null; boolean isProviderSelected = provider != null;
boolean canForWorkspace = isProviderSelected && page.isForPrefs(); boolean canForWorkspace = isProviderSelected && page.isForPrefs();
boolean canForProject = isProviderSelected && page.isForProject() && !LanguageSettingsManager.isWorkspaceProvider(provider); boolean canForProject = isProviderSelected && page.isForProject();
int pos = tableProviders.getSelectionIndex(); int pos = tableProviders.getSelectionIndex();
int count = tableProviders.getItemCount(); int count = tableProviders.getItemCount();
@ -715,15 +812,13 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
boolean isAllowedClearing = rawProvider instanceof ILanguageSettingsEditableProvider boolean isAllowedClearing = rawProvider instanceof ILanguageSettingsEditableProvider
&& LanguageSettingsProviderAssociationManager.isToClear(rawProvider); && LanguageSettingsProviderAssociationManager.isToClear(rawProvider);
boolean canClear = isAllowedClearing && (canForWorkspace || canForProject); boolean canClear = isAllowedClearing && (canForWorkspace || (canForProject && !LanguageSettingsManager.isWorkspaceProvider(provider)));
boolean canReset = false; boolean canReset = (canForProject && isReconfiguredForProject(provider)) ||
if (rawProvider!=null && (canForWorkspace || canForProject)) { (canForWorkspace && (rawProvider instanceof ILanguageSettingsEditableProvider && !LanguageSettingsManager.isEqualExtensionProvider(rawProvider, false)));
canReset = ! LanguageSettingsManager.isEqualExtensionProvider(rawProvider, true);
}
boolean canMoveUp = page.isForProject() && isProviderSelected && isRangeOk && pos!=0; boolean canMoveUp = canForProject && isRangeOk && pos!=0;
boolean canMoveDown = page.isForProject() && isProviderSelected && isRangeOk && pos!=last; boolean canMoveDown = canForProject && isRangeOk && pos!=last;
// buttonSetEnabled(BUTTON_RENAME, false); // buttonSetEnabled(BUTTON_RENAME, false);
// buttonSetEnabled(BUTTON_RUN, false); // buttonSetEnabled(BUTTON_RUN, false);
@ -795,13 +890,51 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
private void performReset(ILanguageSettingsProvider selectedProvider) { private void performReset(ILanguageSettingsProvider selectedProvider) {
String id = selectedProvider.getId(); String id = selectedProvider.getId();
ILanguageSettingsProvider newProvider = LanguageSettingsManager.getExtensionProviderCopy(id, true); ILanguageSettingsProvider newProvider = null;
ICConfigurationDescription cfgDescription = getConfigurationDescription();
if (page.isForPrefs()) {
newProvider = LanguageSettingsManager.getExtensionProviderCopy(id, true);
if (newProvider == null) { if (newProvider == null) {
newProvider = LanguageSettingsManager.getWorkspaceProvider(id); newProvider = LanguageSettingsManager.getWorkspaceProvider(id);
} }
replaceSelectedProvider(newProvider); replaceSelectedProvider(newProvider);
} else {
List<ILanguageSettingsProvider> providers = ((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders();
String[] defaultIds = ((ILanguageSettingsProvidersKeeper) cfgDescription).getDefaultLanguageSettingsProvidersIds();
boolean isDefault = Arrays.asList(defaultIds).contains(id);
if (isDefault) {
if (!LanguageSettingsManager.isPreferShared(id)) {
newProvider = LanguageSettingsManager.getExtensionProviderCopy(id, true);
}
if (newProvider == null) {
newProvider = LanguageSettingsManager.getWorkspaceProvider(id);
}
if (providers.contains(selectedProvider)) {
// replace provider in the cfg list
replaceSelectedProvider(newProvider);
} else {
// add provider to the cfg list
replaceSelectedProvider(newProvider);
tableProvidersViewer.setChecked(newProvider, true);
saveCheckedProviders(newProvider);
updateProvidersTable();
refreshItem(newProvider);
}
} else {
if (providers.contains(selectedProvider)) {
// remove provider from the cfg list
newProvider = LanguageSettingsManager.getWorkspaceProvider(id);
replaceSelectedProvider(newProvider);
tableProvidersViewer.setChecked(newProvider, false);
saveCheckedProviders(newProvider);
updateProvidersTable();
refreshItem(newProvider);
}
}
}
ICConfigurationDescription cfgDescription = getConfigurationDescription();
initializeOptionsPage(newProvider, cfgDescription); initializeOptionsPage(newProvider, cfgDescription);
displaySelectedOptionPage(); displaySelectedOptionPage();
updateButtons(); updateButtons();
@ -881,7 +1014,7 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
@Override @Override
protected void performDefaults() { protected void performDefaults() {
if (enableProvidersCheckBox==null || enableProvidersCheckBox.getSelection()==false) if (page.isForProject() && (enableProvidersCheckBox==null || enableProvidersCheckBox.getSelection() == false))
return; return;
if (page.isForPrefs() || page.isForProject()) { if (page.isForPrefs() || page.isForProject()) {
@ -893,49 +1026,39 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
ICConfigurationDescription cfgDescription = getConfigurationDescription(); ICConfigurationDescription cfgDescription = getConfigurationDescription();
if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) { if (cfgDescription instanceof ILanguageSettingsProvidersKeeper) {
List<ILanguageSettingsProvider> cfgProviders = new ArrayList<ILanguageSettingsProvider>(((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders()); List<ILanguageSettingsProvider> cfgProviders = new ArrayList<ILanguageSettingsProvider>(((ILanguageSettingsProvidersKeeper) cfgDescription).getLanguageSettingProviders());
boolean atLeastOneChanged = false; String[] defaultIds = ((ILanguageSettingsProvidersKeeper) cfgDescription).getDefaultLanguageSettingsProvidersIds();
for (int i=0;i<cfgProviders.size();i++) {
ILanguageSettingsProvider provider = cfgProviders.get(i); List<ILanguageSettingsProvider> newProviders = new ArrayList<ILanguageSettingsProvider>(defaultIds.length);
if (!LanguageSettingsManager.isWorkspaceProvider(provider) && !LanguageSettingsManager.isEqualExtensionProvider(provider, true)) { for (String id : defaultIds) {
ILanguageSettingsProvider extProvider = LanguageSettingsManager.getExtensionProviderCopy(provider.getId(), true); boolean preferShared = LanguageSettingsManager.isPreferShared(id);
if (extProvider == null) { ILanguageSettingsProvider newProvider = null;
extProvider = LanguageSettingsManager.getWorkspaceProvider(provider.getId()); if (!preferShared) {
newProvider = LanguageSettingsManager.getExtensionProviderCopy(id, true);
} }
cfgProviders.set(i, extProvider); if (newProvider == null) {
atLeastOneChanged = true; newProvider = LanguageSettingsManager.getWorkspaceProvider(id);
} }
newProviders.add(newProvider);
} }
if (atLeastOneChanged) {
((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(cfgProviders); if (!cfgProviders.equals(newProviders)) {
((ILanguageSettingsProvidersKeeper) cfgDescription).setLanguageSettingProviders(newProviders);
} }
} }
} else if (page.isForPrefs()) { } else if (page.isForPrefs()) {
List<ILanguageSettingsProvider> providers = new ArrayList<ILanguageSettingsProvider>(presentedProviders); try {
for (int i=0;i<providers.size();i++) { LanguageSettingsManager.setWorkspaceProviders(null);
ILanguageSettingsProvider provider = providers.get(i); } catch (CoreException e) {
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider); CUIPlugin.log("Error serializing workspace language settings providers", e);
if (!LanguageSettingsManager.isEqualExtensionProvider(rawProvider, true)) {
String id = provider.getId();
ILanguageSettingsProvider extProvider = LanguageSettingsManager.getExtensionProviderCopy(id, true);
if (extProvider == null) {
extProvider = LanguageSettingsManager.getWorkspaceProvider(id);
} }
providers.set(i, extProvider);
}
}
// seems to render better when temporary is used
presentedProviders = providers;
int pos = tableProviders.getSelectionIndex(); presentedProviders = null;
tableProvidersViewer.setInput(presentedProviders);
tableProviders.setSelection(pos);
updateButtons();
} }
} }
updateData(getResDesc()); updateData(getResDesc());
} }
} }

View file

@ -169,7 +169,7 @@ IncludeDialog_3=Add to all languages
LanguageSettingsImages_FileDoesNotExist=The selected file does not exist or not accessible. LanguageSettingsImages_FileDoesNotExist=The selected file does not exist or not accessible.
LanguageSettingsImages_FolderDoesNotExist=The selected folder does not exist or not accessible. LanguageSettingsImages_FolderDoesNotExist=The selected folder does not exist or not accessible.
LanguageSettingsImages_UsingRelativePathsNotRecommended=Using relative paths is ambiguous and not recommended. It can cause unexpected effects. LanguageSettingsImages_UsingRelativePathsNotRecommended=Using relative paths is ambiguous and not recommended. It can cause unexpected effects.
LanguageSettingsProviderTab_AreYouSureToResetProviders=Are you sure you want to reset all customized language settings providers? LanguageSettingsProviderTab_AreYouSureToResetProviders=Are you sure you want to reset all customized language settings providers?\nPlease note that providers may regain entries on their own schedule.
LanguageSettingsProviderTab_Clear=Clear Entries LanguageSettingsProviderTab_Clear=Clear Entries
LanguageSettingsProviderTab_Configure=Configure LanguageSettingsProviderTab_Configure=Configure
LanguageSettingsProviderTab_ErrorPerformingDefaults=Error restoring defaults for language settings providers LanguageSettingsProviderTab_ErrorPerformingDefaults=Error restoring defaults for language settings providers