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