1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-01 14:15:23 +02:00

Disallow clearing and editing entries for specific providers in UI

This commit is contained in:
Andrew Gvozdev 2011-12-08 15:22:51 -05:00
parent c9b2608713
commit 54b1cda61e
5 changed files with 29 additions and 19 deletions

View file

@ -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">
</class-association>
<class-association
class="org.eclipse.cdt.make.core.scannerconfig.AbstractBuiltinSpecsDetector"
icon="icons/obj16/inspect_system.gif"
page="org.eclipse.cdt.make.internal.ui.scannerconfig.BuiltinSpecsDetectorOptionPage"
shared="true">
shared="true"
ui-clear-entries="true"
ui-edit-entries="false">
</class-association>
</extension>
<extension

View file

@ -653,7 +653,9 @@
<id-association
id="org.eclipse.cdt.managedbuilder.core.LanguageSettingsProvider"
icon="icons/obj16/mbs.gif"
shared="true">
shared="true"
ui-clear-entries="false"
ui-edit-entries="false">
</id-association>
</extension>

View file

@ -3806,7 +3806,9 @@
<id-association
id="org.eclipse.cdt.ui.user.LanguageSettingsProvider"
icon="icons/obj16/person-me.gif"
shared="false">
shared="false"
ui-clear-entries="true"
ui-edit-entries="true">
</id-association>
</extension>
<extension point="org.eclipse.cdt.ui.cPropertyTab">

View file

@ -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);
}

View file

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