From 30c7b8a69f318486b9e5574e7e1d52e3ef9932e1 Mon Sep 17 00:00:00 2001 From: Florian Hoelzl <hoelzl@fortiss.org> Date: Wed, 28 Dec 2011 14:42:19 +0000 Subject: [PATCH] added toggle buttons for severity levels to marker view. refs 307 --- .../ui/internal/views/MarkerViewPart.java | 71 ++++++++++++++++++- 1 file changed, 69 insertions(+), 2 deletions(-) diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/MarkerViewPart.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/MarkerViewPart.java index d2a179e7d..9ee4b5be6 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/MarkerViewPart.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/MarkerViewPart.java @@ -23,7 +23,15 @@ import static org.fortiss.tooling.kernel.extension.data.IConstraintViolation.ESe import static org.fortiss.tooling.kernel.extension.data.IConstraintViolation.ESeverity.INFO; import static org.fortiss.tooling.kernel.extension.data.IConstraintViolation.ESeverity.WARNING; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import org.eclipse.emf.ecore.EObject; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.Separator; import org.eclipse.jface.viewers.CellLabelProvider; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; @@ -46,16 +54,27 @@ import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService; * @author hoelzl * @author $Author$ * @version $Rev$ - * @ConQAT.Rating YELLOW Hash: 360983B847696BC72FE50E894CCAC89A + * @ConQAT.Rating YELLOW Hash: FEA75C43E09572D37F628C9ACC0395F3 */ public class MarkerViewPart extends ViewPart { + /** Stores the toggle state of for each severity level. */ + private Map<ESeverity, Boolean> toggleState = new HashMap<ESeverity, Boolean>(); + /** GUI builder viewer instance. */ private MarkerViewerGUI gui; + /** Toggle expert severity filter actions. */ + private Action[] toggleSeverityFilterAction = new Action[5]; + /** Constructor. */ public MarkerViewPart() { ((MarkerService) IMarkerService.INSTANCE).setMarkerViewPart(this); + toggleState.put(DEBUG, false); + toggleState.put(INFO, false); + toggleState.put(WARNING, true); + toggleState.put(ERROR, true); + toggleState.put(FATAL, false); } /** {@inheritDoc} */ @@ -93,7 +112,13 @@ public class MarkerViewPart extends ViewPart { @Override public Object[] getElements(Object inputElement) { - return new Object[] { FATAL, ERROR, WARNING, INFO, DEBUG }; + List<ESeverity> result = new ArrayList<ESeverity>(5); + for (ESeverity sev : ESeverity.values()) { + if (toggleState.get(sev)) { + result.add(sev); + } + } + return result.toArray(); } @Override @@ -163,6 +188,8 @@ public class MarkerViewPart extends ViewPart { }); gui.getTreeViewer().setInput(IMarkerService.INSTANCE); + + createToggleActions(); } /** {@inheritDoc} */ @@ -175,4 +202,44 @@ public class MarkerViewPart extends ViewPart { public void refresh() { gui.getTreeViewer().refresh(); } + + /** Creates the toggle actions. */ + private void createToggleActions() { + toggleSeverityFilterAction[0] = new SeverityFilterAction("D", DEBUG); + toggleSeverityFilterAction[1] = new SeverityFilterAction("I", INFO); + toggleSeverityFilterAction[2] = new SeverityFilterAction("W", WARNING); + toggleSeverityFilterAction[3] = new SeverityFilterAction("E", ERROR); + toggleSeverityFilterAction[4] = new SeverityFilterAction("F", FATAL); + + IToolBarManager toolBarManager = getViewSite().getActionBars() + .getToolBarManager(); + Separator additionsSeperator = new Separator("additions"); + additionsSeperator.setVisible(true); + toolBarManager.add(additionsSeperator); + for (int i = 0; i < 5; i++) { + toolBarManager.insertAfter("additions", + toggleSeverityFilterAction[i]); + } + } + + /** Action for severity filter toggle. */ + private class SeverityFilterAction extends Action { + /** Stores the severity level this action toggles. */ + private final ESeverity severity; + + /** Constructor. */ + public SeverityFilterAction(String name, ESeverity severity) { + super(name, SWT.TOGGLE); + this.severity = severity; + setChecked(toggleState.get(severity)); + } + + /** {@inheritDoc} */ + @Override + public void run() { + // invert state + toggleState.put(severity, !toggleState.get(severity)); + refresh(); + } + } } -- GitLab