diff options
author | Alena Laskavaia | 2010-08-17 12:32:03 +0000 |
---|---|---|
committer | Alena Laskavaia | 2010-08-17 12:32:03 +0000 |
commit | 97b109e9bafe60384c5aca0097f53432e4473f94 (patch) | |
tree | 6b82231fa7ef71b3a47c7b69c34f7ddad2c345f8 /codan/org.eclipse.cdt.codan.ui | |
parent | 844b2fa4bd661d9aa11521c13088eac928cefe43 (diff) | |
download | org.eclipse.cdt-97b109e9bafe60384c5aca0097f53432e4473f94.tar.gz org.eclipse.cdt-97b109e9bafe60384c5aca0097f53432e4473f94.tar.xz org.eclipse.cdt-97b109e9bafe60384c5aca0097f53432e4473f94.zip |
added general problem attributes in customize page
Diffstat (limited to 'codan/org.eclipse.cdt.codan.ui')
3 files changed, 120 insertions, 4 deletions
diff --git a/codan/org.eclipse.cdt.codan.ui/plugin.xml b/codan/org.eclipse.cdt.codan.ui/plugin.xml index 63a466e69f9..8a0b8675dd2 100644 --- a/codan/org.eclipse.cdt.codan.ui/plugin.xml +++ b/codan/org.eclipse.cdt.codan.ui/plugin.xml @@ -191,4 +191,32 @@ super="org.eclipse.ui.workbench.texteditor.info"> </type> </extension> + <extension + point="org.eclipse.ui.popupMenus"> + <objectContribution + adaptable="true" + id="org.eclipse.cdt.codan.ui.CodanProblemActions" + objectClass="org.eclipse.core.resources.IMarker"> + <action + class="org.eclipse.cdt.codan.internal.ui.actions.OpenProblemPreferences" + id="org.eclipse.cdt.codan.ui.OpenProblemProperties" + label="Customize Problem..." + menubarPath="additions"/> + + <filter name="type" + value="org.eclipse.cdt.codan.core.codanProblem"/> + <!-- user: menubarPath="org.eclipse.cdt.codan.ui.configureMenu/configureProblemSep" --> + <!-- <menu + id="org.eclipse.cdt.codan.ui.configureMenu" + label="Configure Problem" + path="additions"> + <separator + name="configureProblemSep"> + </separator> + + </menu> + --> + + </objectContribution> + </extension> </plugin> diff --git a/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/actions/OpenProblemPreferences.java b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/actions/OpenProblemPreferences.java new file mode 100644 index 00000000000..d98a05f9489 --- /dev/null +++ b/codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/actions/OpenProblemPreferences.java @@ -0,0 +1,48 @@ +package org.eclipse.cdt.codan.internal.ui.actions; + +import org.eclipse.cdt.codan.core.model.IProblemProfile; +import org.eclipse.cdt.codan.internal.core.model.CodanProblem; +import org.eclipse.cdt.codan.internal.core.model.CodanProblemMarker; +import org.eclipse.cdt.codan.internal.ui.dialogs.CustomizeProblemDialog; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IResource; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.ui.IObjectActionDelegate; +import org.eclipse.ui.IWorkbenchPart; + +public class OpenProblemPreferences implements IObjectActionDelegate { + private ISelection selection; + private IWorkbenchPart targetPart; + + public OpenProblemPreferences() { + } + + public void run(IAction action) { + if (selection instanceof IStructuredSelection) { + Object firstElement = ((IStructuredSelection) selection) + .getFirstElement(); // TODO support multiple + if (firstElement instanceof IMarker) { + IMarker marker = (IMarker) firstElement; + String id = CodanProblemMarker.getProblemId(marker); + if (id == null) + return; + IResource resource = marker.getResource(); + IProblemProfile profile = CodanProblemMarker + .getProfile(resource); + CodanProblem problem = ((CodanProblem) profile.findProblem(id)); + new CustomizeProblemDialog(targetPart.getSite().getShell(), + problem, resource).open(); + } + } + } + + public void selectionChanged(IAction action, ISelection selection) { + this.selection = selection; + } + + public void setActivePart(IAction action, IWorkbenchPart targetPart) { + this.targetPart = targetPart; + } +} 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 26e58fc0e3b..bc033da5b6f 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 @@ -12,6 +12,7 @@ package org.eclipse.cdt.codan.internal.ui.widgets; import java.io.File; +import org.eclipse.cdt.codan.core.model.CodanSeverity; import org.eclipse.cdt.codan.core.model.IProblem; import org.eclipse.cdt.codan.core.model.IProblemWorkingCopy; import org.eclipse.cdt.codan.core.param.FileScopeProblemPreference; @@ -21,6 +22,7 @@ import org.eclipse.cdt.codan.core.param.ListProblemPreference; import org.eclipse.cdt.codan.internal.ui.CodanUIMessages; import org.eclipse.jface.dialogs.InputDialog; import org.eclipse.jface.preference.BooleanFieldEditor; +import org.eclipse.jface.preference.ComboFieldEditor; import org.eclipse.jface.preference.FieldEditorPreferencePage; import org.eclipse.jface.preference.FileFieldEditor; import org.eclipse.jface.preference.ListEditor; @@ -31,6 +33,7 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; /** @@ -38,6 +41,9 @@ import org.eclipse.swt.widgets.Label; * */ 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$ private FieldEditorPreferencePage page; private IProblem problem; private PreferenceStore prefStore; @@ -54,14 +60,34 @@ public class ParametersComposite extends Composite { this.setLayout(new GridLayout(2, false)); this.problem = problem; this.prefStore = new PreferenceStore(); - page = new FieldEditorPreferencePage() { + page = new FieldEditorPreferencePage(FieldEditorPreferencePage.GRID) { @Override protected void createFieldEditors() { noDefaultAndApplyButton(); + ((GridLayout) getFieldEditorParent().getLayout()).numColumns = 2; + addField(new BooleanFieldEditor(PREF_ENABLED, + "This problem is enabled", getFieldEditorParent())); + String[][] entries = { + { CodanSeverity.Error.toString(), + CodanSeverity.Error.toString() }, // + { CodanSeverity.Warning.toString(), + CodanSeverity.Warning.toString() }, // + { CodanSeverity.Info.toString(), + CodanSeverity.Info.toString() }, // + }; + addField(new ComboFieldEditor(PREF_SEVERITY, "Severity", + entries, getFieldEditorParent())); + addField(new StringFieldEditor(PREF_MESSAGE, "Message Pattern", + getFieldEditorParent())); IProblemPreference pref = problem.getPreference(); createFieldEditorsForParameters(pref); } + @Override + protected Control createContents(Composite parent) { + return super.createContents(parent); + } + /** * @param info */ @@ -161,6 +187,16 @@ public class ParametersComposite extends Composite { } } }; + load(problem); + page.setPreferenceStore(prefStore); + page.createControl(parent); + page.getControl().setLayoutData(new GridData(GridData.FILL_BOTH)); + } + + /** + * @param problem + */ + public void load(final IProblem problem) { IProblemPreference info = problem.getPreference(); if (info == null) { Label label = new Label(this, 0); @@ -168,14 +204,18 @@ public class ParametersComposite extends Composite { } else { initPrefStore(info); } - page.setPreferenceStore(prefStore); - page.createControl(parent); - page.getControl().setLayoutData(new GridData(GridData.FILL_BOTH)); + prefStore.setValue(PREF_ENABLED, problem.isEnabled()); + prefStore.setValue(PREF_SEVERITY, problem.getSeverity().toString()); + prefStore.setValue(PREF_MESSAGE, problem.getMessagePattern()); } public void save(IProblemWorkingCopy problem) { page.performOk(); savePrefStore(problem.getPreference()); + problem.setEnabled(prefStore.getBoolean(PREF_ENABLED)); + problem.setSeverity(CodanSeverity.valueOf(prefStore + .getString(PREF_SEVERITY))); + problem.setMessagePattern(prefStore.getString(PREF_MESSAGE)); } private void savePrefStore(IProblemPreference desc) { |