From 96f98fb29a11b1b5387d5c313ed098cfe4a46662 Mon Sep 17 00:00:00 2001
From: Florian Hoelzl <hoelzl@fortiss.org>
Date: Tue, 5 Apr 2016 12:12:14 +0000
Subject: [PATCH] Icons received from model element handler can now change when
 some model property changes. Both navigator view and GEF editors recognize
 the icon change now. refs 2547

---
 .../ui/editpart/PositionedEditPartBase.java     |  4 +++-
 .../extension/base/ModelElementHandlerBase.java | 17 +++++++++++------
 2 files changed, 14 insertions(+), 7 deletions(-)

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 1a8a20200..497b9275b 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
@@ -73,7 +73,7 @@ import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating GREEN Hash: 2CA4D9BEA4398F84CA04EB00ABD88A30
+ * @ConQAT.Rating YELLOW Hash: CD1071857B9255A7644C2F83F6366AE1
  */
 public abstract class PositionedEditPartBase<T extends ILayoutedModelElement> extends
 		GraphicalEditPartBase<T> implements NodeEditPart {
@@ -189,6 +189,8 @@ public abstract class PositionedEditPartBase<T extends ILayoutedModelElement> ex
 
 		if(labelFigure != null && labelFigure.getParent() != null) {
 			labelFigure.setText(determineLabelFigureText());
+			labelFigure.setIcon(IModelElementHandlerService.INSTANCE.getModelElementHandler(
+					getModel()).getIcon(getModel()));
 			Rectangle labelBounds = determineLabelFigureBounds();
 			labelFigure.setBounds(labelBounds);
 			labelFigure.getParent().setConstraint(labelFigure, labelBounds);
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ModelElementHandlerBase.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ModelElementHandlerBase.java
index 218fed83b..5a3d921b3 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ModelElementHandlerBase.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ModelElementHandlerBase.java
@@ -18,7 +18,9 @@ $Id$
 package org.fortiss.tooling.kernel.ui.extension.base;
 
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.jface.resource.ImageDescriptor;
@@ -36,12 +38,12 @@ import org.fortiss.tooling.kernel.ui.extension.IModelElementHandler;
  * @author hoelzl
  * @author $Author$
  * @version $Rev$
- * @ConQAT.Rating GREEN Hash: C9EDF1141B7267010D32E1FCE0D64F91
+ * @ConQAT.Rating YELLOW Hash: AF790167C4115EAF2DA3DFF030E670FC
  */
 public abstract class ModelElementHandlerBase<T extends EObject> implements IModelElementHandler<T> {
 
 	/** Stores the icon image. */
-	private Image iconImage;
+	private Map<ImageDescriptor, Image> iconImages = new HashMap<ImageDescriptor, Image>();
 
 	/** {@inheritDoc} */
 	@Override
@@ -52,11 +54,14 @@ public abstract class ModelElementHandlerBase<T extends EObject> implements IMod
 	/** {@inheritDoc} */
 	@Override
 	public final Image getIcon(T element) {
+		ImageDescriptor descr = getIconImageDescriptor(element);
+		if(descr == null) {
+			return null;
+		}
+		Image iconImage = iconImages.get(descr);
 		if(iconImage == null) {
-			ImageDescriptor descr = getIconImageDescriptor(element);
-			if(descr != null) {
-				iconImage = descr.createImage();
-			}
+			iconImage = descr.createImage();
+			iconImages.put(descr, iconImage);
 		}
 		return iconImage;
 	}
-- 
GitLab