From cbb43fd93b3825ee3cd1c1010b04e60ea623b262 Mon Sep 17 00:00:00 2001 From: Alena Laskavaia Date: Sun, 27 Feb 2011 03:13:31 +0000 Subject: [PATCH] added ui code to grey out checkboxes which are conditionally enabled based on launch mode --- .../param/LaunchTypeProblemPreference.java | 17 +++++++++++++++- .../ui/preferences/ProblemsTreeEditor.java | 20 ++++++++++++++++++- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/LaunchTypeProblemPreference.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/LaunchTypeProblemPreference.java index c283ee0a882..77ca9a38d7f 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/LaunchTypeProblemPreference.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/core/param/LaunchTypeProblemPreference.java @@ -14,7 +14,7 @@ import org.eclipse.cdt.codan.core.model.CheckerLaunchMode; /** * Problem preference for launch type of the checker - * + * * @since 2.0 */ public class LaunchTypeProblemPreference extends MapProblemPreference { @@ -71,4 +71,19 @@ public class LaunchTypeProblemPreference extends MapProblemPreference { public void setRunningMode(CheckerLaunchMode mode, boolean value) { setChildValue(mode.name(), value); } + + /** + * @return true if all modes are enabled (or this is parent mode) + */ + public boolean isAllEnabled() { + return isRunningInMode(CheckerLaunchMode.RUN_AS_YOU_TYPE) && isRunningInMode(CheckerLaunchMode.RUN_ON_DEMAND) + && isRunningInMode(CheckerLaunchMode.RUN_ON_FULL_BUILD); + } + /** + * @return true if all modes are disabled + */ + public boolean isAllDisabled() { + return !isRunningInMode(CheckerLaunchMode.RUN_AS_YOU_TYPE) && !isRunningInMode(CheckerLaunchMode.RUN_ON_DEMAND) + && !isRunningInMode(CheckerLaunchMode.RUN_ON_FULL_BUILD); + } } diff --git a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/ProblemsTreeEditor.java b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/ProblemsTreeEditor.java index cdf6d8de2ad..91323264784 100644 --- a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/ProblemsTreeEditor.java +++ b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/ProblemsTreeEditor.java @@ -13,12 +13,16 @@ package org.eclipse.cdt.codan.internal.ui.preferences; import java.text.MessageFormat; import org.eclipse.cdt.codan.core.PreferenceConstants; +import org.eclipse.cdt.codan.core.model.CheckerLaunchMode; import org.eclipse.cdt.codan.core.model.CodanSeverity; import org.eclipse.cdt.codan.core.model.IProblem; import org.eclipse.cdt.codan.core.model.IProblemCategory; import org.eclipse.cdt.codan.core.model.IProblemElement; import org.eclipse.cdt.codan.core.model.IProblemProfile; import org.eclipse.cdt.codan.core.model.IProblemWorkingCopy; +import org.eclipse.cdt.codan.core.param.IProblemPreference; +import org.eclipse.cdt.codan.core.param.LaunchTypeProblemPreference; +import org.eclipse.cdt.codan.core.param.MapProblemPreference; import org.eclipse.cdt.codan.internal.core.CodanPreferencesLoader; import org.eclipse.cdt.codan.internal.ui.CodanUIMessages; import org.eclipse.core.resources.IMarker; @@ -85,6 +89,20 @@ public class ProblemsTreeEditor extends CheckedTreeEditor { */ public boolean isGrayed(Object element) { if (element instanceof IProblem) { + IProblem p = (IProblem) element; + IProblemPreference preference = p.getPreference(); + if (preference instanceof MapProblemPreference) { + LaunchTypeProblemPreference pref = (LaunchTypeProblemPreference) ((MapProblemPreference) preference) + .getChildDescriptor(LaunchTypeProblemPreference.KEY); + if (pref == null || pref.isRunningInMode(CheckerLaunchMode.USE_PARENT)) { + return false; + } + boolean enabled = p.isEnabled(); + boolean match = pref.isAllEnabled(); + if (enabled && match) return false; + if (!enabled && pref.isAllDisabled()) return false; + return true; + } return false; } if (element instanceof IProblemCategory) { @@ -368,7 +386,7 @@ public class ProblemsTreeEditor extends CheckedTreeEditor { protected String modelToString(Object model) { return ""; //$NON-NLS-1$ } - + /** * @return */