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:
parent
2e2d1f833e
commit
ede43fdd0a
4 changed files with 218 additions and 86 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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());
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Reference in a new issue