Bug 549397 - remove UI-dependency from Henshin-interpreter

Change-Id: I22320f143ebd5a5b667e24e2d744199102c76eb4
Signed-off-by: Hannes Wellmann <wellmann.hannes1@gmx.net>
diff --git a/plugins/org.eclipse.emf.henshin.interpreter/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.henshin.interpreter/META-INF/MANIFEST.MF
index 717efce..e650a7d 100644
--- a/plugins/org.eclipse.emf.henshin.interpreter/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.emf.henshin.interpreter/META-INF/MANIFEST.MF
@@ -22,4 +22,3 @@
  org.eclipse.emf.henshin.interpreter.matching.constraints,
  org.eclipse.emf.henshin.interpreter.monitoring,
  org.eclipse.emf.henshin.interpreter.util
-Import-Package: org.eclipse.emf.henshin.diagram.providers
diff --git a/plugins/org.eclipse.emf.henshin.interpreter/src/org/eclipse/emf/henshin/interpreter/matching/conditions/DebugApplicationCondition.java b/plugins/org.eclipse.emf.henshin.interpreter/src/org/eclipse/emf/henshin/interpreter/matching/conditions/DebugApplicationCondition.java
index 75849d2..29078b7 100644
--- a/plugins/org.eclipse.emf.henshin.interpreter/src/org/eclipse/emf/henshin/interpreter/matching/conditions/DebugApplicationCondition.java
+++ b/plugins/org.eclipse.emf.henshin.interpreter/src/org/eclipse/emf/henshin/interpreter/matching/conditions/DebugApplicationCondition.java
@@ -7,7 +7,6 @@
 import java.util.Observer;
 import java.util.StringJoiner;
 
-import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IMarker;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.CoreException;
@@ -24,7 +23,6 @@
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.henshin.HenshinModelPlugin;
-import org.eclipse.emf.henshin.diagram.providers.HenshinMarkerNavigationProvider;
 import org.eclipse.emf.henshin.interpreter.EGraph;
 import org.eclipse.emf.henshin.interpreter.debug.DebugValueEObject;
 import org.eclipse.emf.henshin.interpreter.debug.DebugValueList;
@@ -852,7 +850,7 @@
 		IBreakpointManager manager = getManager();
 		// create breakpoint
 		IResource moduleFile = debugTarget.getModuleResource();
-		IMarker marker = HenshinMarkerNavigationProvider.addMarker(moduleFile, HenshinModelPlugin.PLUGIN_ID, "/variable", "Sample VariableBreakpoint", IStatus.OK);
+		IMarker marker = addMarker(moduleFile, HenshinModelPlugin.PLUGIN_ID, "/variable", "Sample VariableBreakpoint", IStatus.OK);
 		VariableBreakpoint breakpoint = new VariableBreakpoint();
 		try {
 			// set marker for breakpoint
@@ -887,7 +885,7 @@
 		IBreakpointManager manager = getManager();
 		// create breakpoint
 		IResource moduleFile = debugTarget.getModuleResource();
-		IMarker marker = HenshinMarkerNavigationProvider.addMarker(moduleFile, HenshinModelPlugin.PLUGIN_ID, "/value", "Sample ValueBreakpoint", IStatus.OK);
+		IMarker marker = addMarker(moduleFile, HenshinModelPlugin.PLUGIN_ID, "/value", "Sample ValueBreakpoint", IStatus.OK);
 		ValueBreakpoint breakpoint = new ValueBreakpoint();
 		try {
 			// set marker for breakpoint
@@ -911,7 +909,7 @@
 		IBreakpointManager manager = getManager();
 		// create breakpoint
 		IResource moduleFile = debugTarget.getModuleResource();
-		IMarker marker = HenshinMarkerNavigationProvider.addMarker(moduleFile, HenshinModelPlugin.PLUGIN_ID, "/constraintType", "Sample ConstraintTypeBreakpoint", IStatus.OK);
+		IMarker marker = addMarker(moduleFile, HenshinModelPlugin.PLUGIN_ID, "/constraintType", "Sample ConstraintTypeBreakpoint", IStatus.OK);
 		ConstraintTypeBreakpoint breakpoint = new ConstraintTypeBreakpoint();
 		try {
 			// set marker for breakpoint
@@ -933,7 +931,7 @@
 		IBreakpointManager manager = getManager();
 		// create breakpoint
 		IResource moduleFile = debugTarget.getModuleResource();
-		IMarker marker = HenshinMarkerNavigationProvider.addMarker(moduleFile, HenshinModelPlugin.PLUGIN_ID, "/constraintInstance", "Sample ConstraintInstanceBreakpoint", IStatus.OK);
+		IMarker marker = addMarker(moduleFile, HenshinModelPlugin.PLUGIN_ID, "/constraintInstance", "Sample ConstraintInstanceBreakpoint", IStatus.OK);
 		ConstraintInstanceBreakpoint breakpoint = new ConstraintInstanceBreakpoint();
 		try {
 			// set marker for breakpoint
@@ -1679,4 +1677,27 @@
 				+ ", " + retrieveConstraintLabel()
 				+ "]";
 	}
+
+	private static final String MARKER_TYPE = "org.eclipse.emf.henshin.diagram" + ".diagnostic"; //$NON-NLS-1$
+	// use the same type as in org.eclipse.emf.henshin.diagram.providers.HenshinMarkerNavigationProvider so the markers can still be deleted from there.
+
+	private static IMarker addMarker(IResource ressource, String elementId, String location, String message, int statusSeverity) {
+		IMarker marker = null;
+		try {
+			marker = ressource.createMarker(MARKER_TYPE);
+			marker.setAttribute(IMarker.MESSAGE, message);
+			marker.setAttribute(IMarker.LOCATION, location);
+			marker.setAttribute("elementId", elementId);
+			int markerSeverity = IMarker.SEVERITY_INFO;
+			if (statusSeverity == IStatus.WARNING) {
+				markerSeverity = IMarker.SEVERITY_WARNING;
+			} else if (statusSeverity == IStatus.ERROR || statusSeverity == IStatus.CANCEL) {
+				markerSeverity = IMarker.SEVERITY_ERROR;
+			}
+			marker.setAttribute(IMarker.SEVERITY, markerSeverity);
+		} catch (CoreException e) {
+			HenshinModelPlugin.INSTANCE.logError("Failed to create validation marker", e); //$NON-NLS-1$
+		}
+		return marker;
+	}
 }