diff --git a/build/org.eclipse.cdt.make.ui/plugin.xml b/build/org.eclipse.cdt.make.ui/plugin.xml
index e836c0d0e41..198ae158db7 100644
--- a/build/org.eclipse.cdt.make.ui/plugin.xml
+++ b/build/org.eclipse.cdt.make.ui/plugin.xml
@@ -546,13 +546,17 @@
class="org.eclipse.cdt.make.core.scannerconfig.AbstractBuildCommandParser"
icon="icons/obj16/log_obj.gif"
page="org.eclipse.cdt.make.internal.ui.preferences.GCCBuildCommandParserOptionPage"
- shared="false">
+ shared="false"
+ ui-clear-entries="true"
+ ui-edit-entries="false">
+ shared="true"
+ ui-clear-entries="true"
+ ui-edit-entries="false">
+ shared="true"
+ ui-clear-entries="false"
+ ui-edit-entries="false">
diff --git a/core/org.eclipse.cdt.ui/plugin.xml b/core/org.eclipse.cdt.ui/plugin.xml
index 82eb6ddbfff..c5edfdb366e 100644
--- a/core/org.eclipse.cdt.ui/plugin.xml
+++ b/core/org.eclipse.cdt.ui/plugin.xml
@@ -3806,7 +3806,9 @@
+ shared="false"
+ ui-clear-entries="true"
+ ui-edit-entries="true">
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsEntriesTab.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsEntriesTab.java
index 183a6df53db..323117a39b1 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsEntriesTab.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsEntriesTab.java
@@ -511,17 +511,20 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
boolean isEntrySelected = entry!=null;
boolean isProviderSelected = !isEntrySelected && (provider!=null);
- boolean isProviderEditable = provider instanceof ILanguageSettingsEditableProvider;
-// boolean isUserProvider = provider instanceof UserLanguageSettingsProvider;
+ boolean isAllowedEditing = provider instanceof ILanguageSettingsEditableProvider
+ && LanguageSettingsProviderAssociationManager.isToEditEntries(provider);
- boolean canAdd = isProviderEditable;
- boolean canEdit = isProviderEditable && isEntrySelected;
- boolean canDelete = isProviderEditable && isEntrySelected;
- boolean canClear = isProviderEditable && isProviderSelected && entries!=null && entries.size()>0;
+ boolean isAllowedClearing = provider instanceof ILanguageSettingsEditableProvider
+ && LanguageSettingsProviderAssociationManager.isToClear(provider);
+
+ boolean canAdd = isAllowedEditing;
+ boolean canEdit = isAllowedEditing && isEntrySelected;
+ boolean canDelete = isAllowedEditing && isEntrySelected;
+ boolean canClear = isAllowedClearing && isProviderSelected && entries!=null && entries.size()>0;
boolean canMoveUp = false;
boolean canMoveDown = false;
- if (isProviderEditable && isEntrySelected && entries!=null) {
+ if (isAllowedEditing && isEntrySelected && entries!=null) {
int last = entries.size()-1;
int pos = getExactIndex(entries, entry);
@@ -552,7 +555,9 @@ public class LanguageSettingsEntriesTab extends AbstractCPropertyTab {
}
if (status==null || status==Status.OK_STATUS) {
ILanguageSettingsProvider provider = getSelectedProvider();
- if (provider!=null && !(provider instanceof ILanguageSettingsBroadcastingProvider)) {
+ boolean isAllowedEditing = provider instanceof ILanguageSettingsEditableProvider
+ && LanguageSettingsProviderAssociationManager.isToEditEntries(provider);
+ if (!isAllowedEditing) {
String msg = "Setting entries for this provider are supplied by system and are not editable.";
status = new Status(IStatus.INFO, CUIPlugin.PLUGIN_ID, msg);
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java
index 186e4b4553b..b641d2c7c65 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/language/settings/providers/LanguageSettingsProviderTab.java
@@ -652,13 +652,10 @@ public class LanguageSettingsProviderTab extends AbstractCPropertyTab {
boolean isRangeOk = pos >= 0 && pos <= last;
ILanguageSettingsProvider rawProvider = LanguageSettingsManager.getRawProvider(provider);
- boolean canClear = false;
- if (rawProvider instanceof ILanguageSettingsEditableProvider) {
- // TODO - commented out because we need the means to restart failed Spec Detectors
-// if (!((ILanguageSettingsEditableProvider) rawProvider).isEmpty()) {
- canClear = canForWorkspace || canForProject;
-// }
- }
+ boolean isAllowedClearing = rawProvider instanceof ILanguageSettingsEditableProvider
+ && LanguageSettingsProviderAssociationManager.isToClear(rawProvider);
+
+ boolean canClear = isAllowedClearing && (canForWorkspace || canForProject);
boolean canReset = false;
if (rawProvider!=null && (canForWorkspace || canForProject)) {