# IMarker für GMF



## meddins (18. Aug 2009)

Hallo,

ich bin zur Zeit dabei, für ein Projekt eine Validierung zu erstellen. Es handelt sich dabei um ein RCP Projekt. 
Um genau zu sein, sollen Diagramme validiert werden, die mit einem gmf Editor erstellt werden. Zur validierung sollen aber keine Constrains und das bereits in emf vorhandene Validation-Framework verwendet werden. 
Der Code läuft soweit auch ganz gut und Fehler werden erkannt und angezeigt. Zur Zeit setzte ich die IMarker auf das File (resource), in dem das Modell liegt. Es wird also, wenn man im Problems View auf das Problem klickt das File geöffnet. Ziel ist es aber die Marker mit den einzelnen Elementen zu verbinden. Ich weiß aber nicht, wie man die Marker auf die Elemente setzten kann oder wie ich eine Referenz auf diese bekomme. Ich habe lediglich eine Id. Das setzten des Markers sieht folgendermaßen aus:

```
List<ProblemAttribute> problems = sepProblems(problemMessage);
		Iterator<ProblemAttribute> i = problems.iterator();
		while(i.hasNext()){
			ProblemAttribute attribute = i.next();
			IMarker marker = null;
			try {
				marker = resource.createMarker(IMarker.PROBLEM);
				marker.setAttribute(IMarker.MESSAGE, attribute.getMessage());
				marker.setAttribute(IMarker.LOCATION, attribute.getLocation());
				marker.setAttribute(org.eclipse.gmf.runtime.common.ui.resources.IMarker.ELEMENT_ID, attribute.getId());
				marker.setAttribute(IMarker.SEVERITY, attribute.getSeverity());	
			} catch (CoreException e) {
				e.printStackTrace();
			}
		}
```
Kann mir da jemand weiter helfen? Ich habe leider nicht viel Ahnung von GMF/EMF. Hoffe jemand kann mich da in die Richtige richtung weisen.


----------



## meddins (19. Aug 2009)

ok, 
ich bin mit dem Problem weiter und habe nun ein weiteres Problem XD. Also ich habe die ID eines Elements und will dieses Makieren. Folgenden Code habe ich dazu benutzt:

```
String elementId = "_hCsRo4fhEd6ysL2u54zYuA";
		DiagramEditor editor = (DiagramEditor) window.getActivePage().getActiveEditor();
		EObject targetView = editor.getDiagram().eResource().getEObject(elementId);
		if (targetView == null) {
			System.out.println(elementId+" targetView == null");
		}
		Map editPartRegistry = editor.getDiagramGraphicalViewer().getEditPartRegistry();
		EditPart targetEditPart = (EditPart) editPartRegistry.get(targetView);
		if (targetEditPart != null) {
                    ...
		}
```
Leider ist der EditPart aber immer null. Das EOject aber komischerweise nicht. Also gibt es das Element aber warum gibt es keinen EditPart dazu?


----------



## Wildcard (19. Aug 2009)

Nicht jedes Element hat einen EditPart


----------

