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)) {