diff --git a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/CodanUIMessages.java b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/CodanUIMessages.java index 95d1a2fbe95..bfa213fed57 100644 --- a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/CodanUIMessages.java +++ b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/CodanUIMessages.java @@ -40,6 +40,7 @@ public class CodanUIMessages extends NLS { public static String CustomizeProblemDialog_Message; public static String CustomizeProblemDialog_Title; public static String Job_TitleRunningAnalysis; + public static String ParametersComposite_DoNotChange; public static String ParametersComposite_IsEnabled; public static String ParametersComposite_MessagePattern; public static String ParametersComposite_NewValue; diff --git a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/dialogs/CustomizeProblemDialog.java b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/dialogs/CustomizeProblemDialog.java index 2b3eb06eb7f..0af15775591 100644 --- a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/dialogs/CustomizeProblemDialog.java +++ b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/dialogs/CustomizeProblemDialog.java @@ -53,14 +53,23 @@ public class CustomizeProblemDialog extends TitleAreaDialog { * @return */ private IProblem buildCombined(IProblem[] selectedProblems) { + if (selectedProblems.length == 0) + return null; + IProblem one = selectedProblems[0]; if (selectedProblems.length == 1) { - return selectedProblems[0]; + return one; } - CodanProblem problem = new CodanProblem("multi", getTitle()); + CodanProblem problem = new CodanProblem("multi", getTitle()); //$NON-NLS-1$ problem.setMessagePattern(ParametersComposite.NO_CHANGE); problem.setPreference(new RootProblemPreference()); - problem.setSeverity(selectedProblems[0].getSeverity()); - problem.setEnabled(selectedProblems[0].isEnabled()); + problem.setSeverity(one.getSeverity()); + problem.setEnabled(one.isEnabled()); + if (one.getPreference() instanceof RootProblemPreference) { + RootProblemPreference onepref = (RootProblemPreference) one.getPreference(); + RootProblemPreference pref = (RootProblemPreference) problem.getPreference(); + pref.addChildDescriptor(onepref.getLaunchModePreference()); + pref.addChildDescriptor(onepref.getScopePreference()); + } return problem; } diff --git a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/messages.properties b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/messages.properties index 6c10dc59db6..5b5b6e4dce0 100644 --- a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/messages.properties +++ b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/messages.properties @@ -24,6 +24,7 @@ CustomizeProblemComposite_TabScope=Scope CustomizeProblemDialog_Message=Edit problem preferences, scope and launch options CustomizeProblemDialog_Title=Customize Problem... Job_TitleRunningAnalysis=Running Code Analysis +ParametersComposite_DoNotChange= ParametersComposite_IsEnabled=This problem is enabled ParametersComposite_MessagePattern=Message Pattern ParametersComposite_NewValue=New Value diff --git a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/widgets/FileScopeComposite.java b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/widgets/FileScopeComposite.java index 40dc2b848e2..557fd184ec8 100644 --- a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/widgets/FileScopeComposite.java +++ b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/widgets/FileScopeComposite.java @@ -71,14 +71,14 @@ public class FileScopeComposite extends Composite { public void save(IProblemWorkingCopy problem) { if (page != null) page.performOk(); - savePrefStore(); + savePrefStore(problem); } - private void savePrefStore() { + private void savePrefStore(IProblemWorkingCopy problem) { if (scope == null) return; String key = scope.getQualifiedKey(); - ((MapProblemPreference) problem.getPreference()).setChildValue(FileScopeProblemPreference.KEY, scope); + ((MapProblemPreference) problem.getPreference()).addChildDescriptor(scope); prefStore.setValue(key, scope.exportValue()); } diff --git a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/widgets/LaunchingTabComposite.java b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/widgets/LaunchingTabComposite.java index 96ed0e6d866..b827ff58f6e 100644 --- a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/widgets/LaunchingTabComposite.java +++ b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/widgets/LaunchingTabComposite.java @@ -66,18 +66,18 @@ public class LaunchingTabComposite extends Composite { page.getControl().setLayoutData(new GridData(GridData.FILL_BOTH)); } - public void save(@SuppressWarnings("unused") IProblemWorkingCopy problem) { + public void save(IProblemWorkingCopy problem) { if (page != null) page.performOk(); - savePrefStore(); + savePrefStore(problem); } - private void savePrefStore() { + private void savePrefStore(IProblemWorkingCopy problem) { if (launchPref == null) return; saveToPref(launchPref, page.getPreferenceStore()); MapProblemPreference parentMap = (MapProblemPreference) problem.getPreference(); - parentMap.addChildDescriptor(launchPref); + parentMap.addChildDescriptor((IProblemPreference) launchPref.clone()); } /** diff --git a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/widgets/ParametersComposite.java b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/widgets/ParametersComposite.java index 05875e87fb3..bfb70b42de4 100644 --- a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/widgets/ParametersComposite.java +++ b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/widgets/ParametersComposite.java @@ -45,7 +45,7 @@ public class ParametersComposite extends Composite { private static final String PREF_ENABLED = "enabled"; //$NON-NLS-1$ private static final String PREF_SEVERITY = "severity"; //$NON-NLS-1$ private static final String PREF_MESSAGE = "message"; //$NON-NLS-1$ - public static final String NO_CHANGE = ""; + public static final String NO_CHANGE = CodanUIMessages.ParametersComposite_DoNotChange; private FieldEditorPreferencePage page; private IProblem problem; private PreferenceStore prefStore;