diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editor/DiagramEditorBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editor/DiagramEditorBase.java
index 4d53620481bc079d032df5fb50c0ba0706cd566f..6e5dc8eba21997a2923f14e7b1d380dc59d79a7f 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editor/DiagramEditorBase.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editor/DiagramEditorBase.java
@@ -19,9 +19,14 @@ package org.fortiss.tooling.base.ui.editor;
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.conqat.ide.commons.gef.editpart.EditPartUtils;
+import org.eclipse.draw2d.ColorConstants;
+import org.eclipse.draw2d.IFigure;
 import org.eclipse.draw2d.geometry.Dimension;
 import org.eclipse.draw2d.geometry.Point;
 import org.eclipse.emf.ecore.EObject;
@@ -37,6 +42,7 @@ import org.eclipse.gef.RootEditPart;
 import org.eclipse.gef.SnapToGeometry;
 import org.eclipse.gef.SnapToGrid;
 import org.eclipse.gef.commands.CommandStack;
+import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
 import org.eclipse.gef.editparts.ScalableFreeformRootEditPart;
 import org.eclipse.gef.editparts.ScalableRootEditPart;
 import org.eclipse.gef.editparts.ZoomManager;
@@ -59,6 +65,7 @@ import org.eclipse.jface.viewers.IPostSelectionProvider;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.ISelectionChangedListener;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.ui.IActionBars;
@@ -70,6 +77,7 @@ import org.eclipse.ui.PartInitException;
 import org.fortiss.tooling.base.layout.DefaultLayoutConstants;
 import org.fortiss.tooling.base.ui.ToolingBaseUIActivator;
 import org.fortiss.tooling.base.ui.dnd.ElementCompositionDropTargetListener;
+import org.fortiss.tooling.base.ui.editpart.ConnectorEditPartBase;
 import org.fortiss.tooling.base.ui.editpart.ExtendedLayerRootEditPart;
 import org.fortiss.tooling.base.ui.editpart.figure.EVisualStyle;
 import org.fortiss.tooling.kernel.ui.extension.base.EObjectActionBase;
@@ -86,7 +94,7 @@ import org.fortiss.tooling.kernel.ui.util.EObjectSelectionUtils;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating YELLOW Hash: 63FF468A2D042586A22495828A0798EF
+ * @ConQAT.Rating YELLOW Hash: 68835BEA73B1CA070BA7EAD5C14D8C00
  */
 public class DiagramEditorBase<T extends EObject> extends GEFEditorBase<T>
 		implements IPostSelectionProvider, ContextMenuContextProvider {
@@ -435,4 +443,77 @@ public class DiagramEditorBase<T extends EObject> extends GEFEditorBase<T>
 	public void setSelection(ISelection selection) {
 		viewer.setSelection(selection);
 	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void setHighlight(EObject element, boolean highlighted) {
+		EditPart ep = findEditPart(viewer.getRootEditPart(), element);
+		if (ep instanceof AbstractGraphicalEditPart) {
+			IFigure fig = ((AbstractGraphicalEditPart) ep).getFigure();
+			setHighlight(fig, highlighted);
+		}
+	}
+
+	/**
+	 * Highlights a figure by setting its color to be RED. This implementation
+	 * can be changed by more specific editors.
+	 */
+	protected void setHighlight(IFigure fig, boolean highlighted) {
+		if (highlighted) {
+			highlightedFigures2NormalColor.put(fig, fig.getForegroundColor());
+			fig.setForegroundColor(ColorConstants.red);
+		} else {
+			Color normalColor = highlightedFigures2NormalColor.get(fig);
+			fig.setForegroundColor(normalColor);
+			highlightedFigures2NormalColor.remove(fig);
+		}
+	}
+
+	/**
+	 * A map from figures that are currently highlighted to their normal
+	 * foreground color.
+	 */
+	private HashMap<IFigure, Color> highlightedFigures2NormalColor = new HashMap<IFigure, Color>();
+
+	/**
+	 * Returns the edit part corresponding to the EObject or null if it cannot
+	 * be found.
+	 */
+	@SuppressWarnings("unchecked")
+	private EditPart findEditPart(EditPart container, EObject element) {
+		if (container.getModel().equals(element)) {
+			return container;
+		}
+
+		List<EditPart> subEditParts = new ArrayList<EditPart>();
+		if (container.getChildren() != null) {
+			subEditParts.addAll(container.getChildren());
+		}
+		if (container instanceof ConnectorEditPartBase) {
+			ConnectorEditPartBase<?> connector = (ConnectorEditPartBase<?>) container;
+			if (connector.getSourceConnections() != null) {
+				subEditParts.addAll(connector.getSourceConnections());
+			}
+		}
+
+		for (EditPart child : subEditParts) {
+			EditPart foundEditPart = findEditPart(child, element);
+			if (foundEditPart != null) {
+				return foundEditPart;
+			}
+		}
+
+		return null;
+	}
+
+	/** {@inheritDoc} */
+	@Override
+	public void clearAllHighlights() {
+		Set<IFigure> figs = new HashSet<IFigure>(
+				highlightedFigures2NormalColor.keySet());
+
+		for (IFigure figure : figs) {
+			setHighlight(figure, false);
+		}
+	}
 }