Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlena Laskavaia2010-08-17 12:32:03 +0000
committerAlena Laskavaia2010-08-17 12:32:03 +0000
commit97b109e9bafe60384c5aca0097f53432e4473f94 (patch)
tree6b82231fa7ef71b3a47c7b69c34f7ddad2c345f8 /codan/org.eclipse.cdt.codan.ui
parent844b2fa4bd661d9aa11521c13088eac928cefe43 (diff)
downloadorg.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')
-rw-r--r--codan/org.eclipse.cdt.codan.ui/plugin.xml28
-rw-r--r--codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/actions/OpenProblemPreferences.java48
-rw-r--r--codan/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/widgets/ParametersComposite.java48
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) {

Back to the top