From ef88803b17371eafe7f27396ec2e3b76c8f49bbf Mon Sep 17 00:00:00 2001
From: Florian Hoelzl <hoelzl@fortiss.org>
Date: Thu, 2 Feb 2012 09:01:43 +0000
Subject: [PATCH] fixed refs 598

---
 .../base/ui/editpart/ElementEditPartBase.java |  1 -
 .../ui/editpart/PositionedEditPartBase.java   | 48 +++++++++++++------
 2 files changed, 33 insertions(+), 16 deletions(-)

diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/ElementEditPartBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/ElementEditPartBase.java
index da4c66432..1856d1c8d 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/ElementEditPartBase.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/ElementEditPartBase.java
@@ -85,7 +85,6 @@ public abstract class ElementEditPartBase<T extends ILayoutedModelElement & INam
 		nameLabel.setIcon(IModelElementHandlerService.INSTANCE
 				.getModelElementHandler(getModel()).getIcon());
 		return nameLabel;
-
 	}
 
 	/**
diff --git a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/PositionedEditPartBase.java b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/PositionedEditPartBase.java
index d4d59c921..3620cc502 100644
--- a/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/PositionedEditPartBase.java
+++ b/org.fortiss.tooling.base.ui/trunk/src/org/fortiss/tooling/base/ui/editpart/PositionedEditPartBase.java
@@ -37,6 +37,7 @@ import org.eclipse.gef.tools.DragEditPartsTracker;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.Image;
 import org.fortiss.tooling.base.model.layout.ILayoutedModelElement;
+import org.fortiss.tooling.base.ui.editpart.figure.TransparentLabel;
 import org.fortiss.tooling.base.ui.layout.IDiagramLayoutConfiguration;
 import org.fortiss.tooling.kernel.extension.data.IConstraintViolation;
 import org.fortiss.tooling.kernel.extension.data.IConstraintViolation.ESeverity;
@@ -73,7 +74,7 @@ import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating GREEN Hash: A3E4A702B8E644BAA152153CBEC63DB2
+ * @ConQAT.Rating YELLOW Hash: 5FE3D895F9E86F63B52B038EAF664C34
  */
 public abstract class PositionedEditPartBase<T extends ILayoutedModelElement>
 		extends GraphicalEditPartBase<T> implements NodeEditPart {
@@ -146,7 +147,7 @@ public abstract class PositionedEditPartBase<T extends ILayoutedModelElement>
 	 * a figure.
 	 */
 	protected Label createDecorationFigure() {
-		return new Label();
+		return new TransparentLabel();
 	}
 
 	/**
@@ -184,9 +185,7 @@ public abstract class PositionedEditPartBase<T extends ILayoutedModelElement>
 			baseFigure.getParent().setConstraint(baseFigure, baseBounds);
 			baseFigure.setForegroundColor(getForegroundColor());
 			baseFigure.setBackgroundColor(getBackgroundColor());
-			baseFigure.setToolTip(new Label(
-					IModelElementHandlerService.INSTANCE
-							.getWrappedNameDescription(getModel())));
+			baseFigure.setToolTip(new Label(getBaseFigureTooltip()));
 		}
 
 		if (labelFigure != null && labelFigure.getParent() != null) {
@@ -201,6 +200,23 @@ public abstract class PositionedEditPartBase<T extends ILayoutedModelElement>
 		}
 	}
 
+	/** Returns the current tooltip description. */
+	protected String getBaseFigureTooltip() {
+		String message = IModelElementHandlerService.INSTANCE
+				.getWrappedNameDescription(getModel());
+		ESeverity sev = IMarkerService.INSTANCE
+				.getHighestViolationSeverity(getModel());
+		switch (sev) {
+		case ERROR:
+			message = getViolationMessage(sev);
+			break;
+		case WARNING:
+			message = getViolationMessage(sev);
+			break;
+		}
+		return message;
+	}
+
 	/** Refreshes the decoration figure using {@link IMarkerService} */
 	private void refreshDecorationFigure() {
 		Rectangle decorationBounds = determineDecorationFigureBounds();
@@ -223,18 +239,20 @@ public abstract class PositionedEditPartBase<T extends ILayoutedModelElement>
 		default:
 		}
 		decorationFigure.setIcon(icon);
-		if (icon != null) {
-			String message = "";
-			Collection<IConstraintViolation<? extends EObject>> violations = IMarkerService.INSTANCE
-					.getViolations(getModel());
-			for (IConstraintViolation<? extends EObject> viol : violations) {
-				if (viol.getSeverity() == sev) {
-					message = viol.getExplanation();
-					break;
-				}
+	}
+
+	/** Returns the message for the given severity of the model. */
+	private String getViolationMessage(ESeverity sev) {
+		String message = "";
+		Collection<IConstraintViolation<? extends EObject>> violations = IMarkerService.INSTANCE
+				.getViolations(getModel());
+		for (IConstraintViolation<? extends EObject> viol : violations) {
+			if (viol.getSeverity() == sev) {
+				message = viol.getExplanation();
+				break;
 			}
-			decorationFigure.setToolTip(new Label(message));
 		}
+		return message;
 	}
 
 	/**
-- 
GitLab