From 7177fbb1784916c74dcdd0af238eac3f5b326e86 Mon Sep 17 00:00:00 2001
From: Florian Hoelzl <hoelzl@fortiss.org>
Date: Tue, 31 Mar 2020 12:37:14 +0200
Subject: [PATCH] Kernel: fixed restricted model listener for name and comment.

Issue-Ref: 3975
Issue-Url: https://af3-developer.fortiss.org/issues/3975
Signed-off-by: Florian Hoelzl <hoelzl@fortiss.org>
---
 .../base/ui/editor/fx/controller/.ratings     | 24 +++++++++----------
 ...nkLayoutedContentAnchorangeController.java |  3 ++-
 ...nkLayoutedDiagramAnchorangeController.java |  3 ++-
 ...llipticResizableContentControllerBase.java |  9 +++----
 ...angularResizableContentControllerBase.java |  9 +++----
 .../LayoutedContentAnchorageController.java   | 13 +++++-----
 .../LayoutedCurveLinkBendPointController.java |  3 ++-
 .../LayoutedDiagramAnchorageController.java   | 15 ++++++------
 ...tedEllipticResizableContentController.java |  3 ++-
 .../LayoutedLineLinkBendPointController.java  |  3 ++-
 .../LayoutedLinkBendPointController.java      |  9 +++----
 ...RectangularResizableContentController.java |  9 +++----
 ...edCommentedLayoutModelChangeProvider.java} | 18 +++++++++-----
 13 files changed, 69 insertions(+), 52 deletions(-)
 rename org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/{LayoutModelChangeProvider.java => NamedCommentedLayoutModelChangeProvider.java} (85%)

diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/.ratings b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/.ratings
index b6d97c28b..3b6254fb1 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/.ratings
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/.ratings
@@ -1,17 +1,17 @@
 ContextMenuUtil.java 405387151d45b09dffb3b6ba44f980313c8edcaf GREEN
-CurvedLinkLayoutedContentAnchorangeController.java a206a297cfc51281b31d02c751c3090b49fc7341 GREEN
-CurvedLinkLayoutedDiagramAnchorangeController.java 41b7cc1ad066aa677eb3005a5bceeaa200d01eaa GREEN
+CurvedLinkLayoutedContentAnchorangeController.java e22faedbe98c3dab660b5d2df8ebd004e116c5ba YELLOW
+CurvedLinkLayoutedDiagramAnchorangeController.java f2e5e2a7cc9b6a070871e200e57371286bb15222 YELLOW
 EObjectDiagramController.java 2b253941592ee25ead95223470f983f23ef9776f GREEN
-EObjectEllipticResizableContentControllerBase.java 7c862a03b97d2f2cfdcc2fcee7434de2e1e257d2 GREEN
+EObjectEllipticResizableContentControllerBase.java 958d3856daf5337cd75d0a6f163a27dcc8717160 YELLOW
 EObjectModelChangeProvider.java f4b60cebb088a5c81ca92a41614e1a5d40030502 GREEN
-EObjectRectangularResizableContentControllerBase.java e73cda8f54318f8b785a208215d9e31eaa46eff7 GREEN
+EObjectRectangularResizableContentControllerBase.java 7cbc3e89b7b74106d56b8b4f845087e96e13d109 YELLOW
 KernelServiceBasedModelChangeProviderBase.java 8d1f8ef79ecd383ff74e5a2bbcf24345aabe70af GREEN
-LayoutModelChangeProvider.java b5449d02eaf39086909720c43e21bd061005fc9e GREEN
-LayoutedContentAnchorageController.java 9fc513a7404277514c730f7702d45588f2d81878 GREEN
-LayoutedCurveLinkBendPointController.java 54d7c294c4afaeadb6787408fbfe2ca1958c2de0 GREEN
-LayoutedDiagramAnchorageController.java 32d7d77daf252d021458c39ebcfe502f26f29a98 GREEN
-LayoutedEllipticResizableContentController.java 93bdeb7ecd5f7386724a9d7df5fff3174ab8ce10 GREEN
-LayoutedLineLinkBendPointController.java f5fac4fe8e4b4c0259407acb6bfc80dbe9c3a1fb GREEN
-LayoutedLinkBendPointController.java 3203d946de233274934dca1bcd47bbdc1d0a3b13 GREEN
-LayoutedRectangularResizableContentController.java 3232d423572924363702898cf8ba240ce7042b65 GREEN
+LayoutedContentAnchorageController.java 83f066a151dd2984c4bef64daf8165a0cd53b00f YELLOW
+LayoutedCurveLinkBendPointController.java d963a5e227de7bd8ba910c733df2ac7acf4fa1fa YELLOW
+LayoutedDiagramAnchorageController.java 89ee56e8e71a5fa635cfac81e84bbfe1d50e5776 YELLOW
+LayoutedEllipticResizableContentController.java 1c50e80121512de7ae1f2ba09e0e1f4d0e3f3104 YELLOW
+LayoutedLineLinkBendPointController.java f49c994a0c90612c44ec83d42cf858e476662e1f YELLOW
+LayoutedLinkBendPointController.java d06736b49b6ac9a073237b989895469891500e7f YELLOW
+LayoutedRectangularResizableContentController.java 341f4a7da0d69360d7026af6d9b3d44dfd7d9bb1 YELLOW
 ModelElementFXEditorUIProviderBase.java b81bf7fc945d40f1f842876f07ba70799ab65f6d GREEN
+NamedCommentedLayoutModelChangeProvider.java 223e82c1b1cba842f6fae115182f5d0c6acb44b0 YELLOW
diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/CurvedLinkLayoutedContentAnchorangeController.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/CurvedLinkLayoutedContentAnchorangeController.java
index a206a297c..e22faedbe 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/CurvedLinkLayoutedContentAnchorangeController.java
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/CurvedLinkLayoutedContentAnchorangeController.java
@@ -28,13 +28,14 @@ import org.fortiss.tooling.common.ui.javafx.lwfxef.DiagramCoordinate;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.controller.base.DelegatingContentAnchorageController;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.mvc.IContentAnchorageMVCBundle;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.mvc.IMVCBundle;
+import org.fortiss.tooling.kernel.model.INamedCommentedElement;
 
 /**
  * {@link DelegatingContentAnchorageController} for diagrams with curved links.
  * 
  * @author munaro
  */
-public class CurvedLinkLayoutedContentAnchorangeController<T extends IConnector & ILayoutedModelElement>
+public class CurvedLinkLayoutedContentAnchorangeController<T extends IConnector & INamedCommentedElement & ILayoutedModelElement>
 		extends LayoutedContentAnchorageController<T> {
 
 	/** Constructor. */
diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/CurvedLinkLayoutedDiagramAnchorangeController.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/CurvedLinkLayoutedDiagramAnchorangeController.java
index 41b7cc1ad..f2e5e2a7c 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/CurvedLinkLayoutedDiagramAnchorangeController.java
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/CurvedLinkLayoutedDiagramAnchorangeController.java
@@ -26,13 +26,14 @@ import org.fortiss.tooling.base.model.element.IConnector;
 import org.fortiss.tooling.base.model.layout.ILayoutedModelElement;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.DiagramCoordinate;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.mvc.IMVCBundle;
+import org.fortiss.tooling.kernel.model.INamedCommentedElement;
 
 /**
  * {@link LayoutedDiagramAnchorageController} for diagrams with curved links.
  * 
  * @author munaro
  */
-public class CurvedLinkLayoutedDiagramAnchorangeController<T extends IConnector & ILayoutedModelElement>
+public class CurvedLinkLayoutedDiagramAnchorangeController<T extends IConnector & INamedCommentedElement & ILayoutedModelElement>
 		extends LayoutedDiagramAnchorageController<T> {
 
 	/** Constructor. */
diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/EObjectEllipticResizableContentControllerBase.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/EObjectEllipticResizableContentControllerBase.java
index 7c862a03b..958d3856d 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/EObjectEllipticResizableContentControllerBase.java
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/EObjectEllipticResizableContentControllerBase.java
@@ -35,6 +35,7 @@ import org.fortiss.tooling.common.ui.javafx.lwfxef.controller.elliptic.EllipticR
 import org.fortiss.tooling.common.ui.javafx.lwfxef.model.IModelChangeProvider;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.mvc.IContentMVCBundle;
 import org.fortiss.tooling.kernel.extension.data.IElementCompositionContext;
+import org.fortiss.tooling.kernel.model.INamedCommentedElement;
 import org.fortiss.tooling.kernel.service.IElementCompositorService;
 import org.fortiss.tooling.kernel.ui.extension.IModelElementHandler;
 import org.fortiss.tooling.kernel.ui.service.IModelEditorBindingService;
@@ -51,10 +52,10 @@ import javafx.scene.input.MouseEvent;
  * 
  * @author hoelzl
  */
-public abstract class EObjectEllipticResizableContentControllerBase<T extends EObject>
+public abstract class EObjectEllipticResizableContentControllerBase<T extends INamedCommentedElement & ILayoutedModelElement>
 		extends EllipticResizableContentControllerBase {
 	/** {@link IModelChangeProvider} for this controller */
-	private final LayoutModelChangeProvider layoutModelChangeProvider;
+	private final NamedCommentedLayoutModelChangeProvider<T> layoutModelChangeProvider;
 	/** The click controller handling double-click to open editor. */
 	private final IClickController openEditorDoubleClickController = new ClickControllerBase() {
 		@Override
@@ -94,8 +95,8 @@ public abstract class EObjectEllipticResizableContentControllerBase<T extends EO
 					modelType.getSimpleName() + ", but was " + model.getClass().getSimpleName());
 		}
 
-		ILayoutedModelElement lme = (ILayoutedModelElement)mvcb.getModel();
-		this.layoutModelChangeProvider = new LayoutModelChangeProvider(lme) {
+		@SuppressWarnings("unchecked") T lme = (T)mvcb.getModel();
+		this.layoutModelChangeProvider = new NamedCommentedLayoutModelChangeProvider<T>(lme) {
 			/** {@inheritDoc} */
 			@Override
 			protected boolean acceptNotification(Notification notification) {
diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/EObjectRectangularResizableContentControllerBase.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/EObjectRectangularResizableContentControllerBase.java
index e73cda8f5..7cbc3e89b 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/EObjectRectangularResizableContentControllerBase.java
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/EObjectRectangularResizableContentControllerBase.java
@@ -41,6 +41,7 @@ import org.fortiss.tooling.common.ui.javafx.lwfxef.model.IModelChangeProvider;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.mvc.IContentAnchorageMVCBundle;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.mvc.IContentMVCBundle;
 import org.fortiss.tooling.kernel.extension.data.IElementCompositionContext;
+import org.fortiss.tooling.kernel.model.INamedCommentedElement;
 import org.fortiss.tooling.kernel.service.IElementCompositorService;
 import org.fortiss.tooling.kernel.ui.extension.IModelElementHandler;
 import org.fortiss.tooling.kernel.ui.service.IModelEditorBindingService;
@@ -58,11 +59,11 @@ import javafx.scene.input.MouseEvent;
  * 
  * @author hoelzl
  */
-public abstract class EObjectRectangularResizableContentControllerBase<T extends EObject>
+public abstract class EObjectRectangularResizableContentControllerBase<T extends INamedCommentedElement & ILayoutedModelElement>
 		extends RectangularResizableContentControllerBase {
 
 	/** {@link IModelChangeProvider} for this controller */
-	private final LayoutModelChangeProvider layoutModelChangeProvider;
+	private final NamedCommentedLayoutModelChangeProvider<T> layoutModelChangeProvider;
 	/** The click controller handling double-click to open editor. */
 	private final IClickController openEditorDoubleClickController = new ClickControllerBase() {
 		@Override
@@ -102,8 +103,8 @@ public abstract class EObjectRectangularResizableContentControllerBase<T extends
 					modelType.getSimpleName() + ", but was " + model.getClass().getSimpleName());
 		}
 
-		ILayoutedModelElement lme = (ILayoutedModelElement)mvcb.getModel();
-		this.layoutModelChangeProvider = new LayoutModelChangeProvider(lme) {
+		@SuppressWarnings("unchecked") T lme = (T)mvcb.getModel();
+		this.layoutModelChangeProvider = new NamedCommentedLayoutModelChangeProvider<T>(lme) {
 			/** {@inheritDoc} */
 			@Override
 			protected boolean acceptNotification(Notification notification) {
diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedContentAnchorageController.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedContentAnchorageController.java
index 9fc513a74..83f066a15 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedContentAnchorageController.java
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedContentAnchorageController.java
@@ -18,14 +18,15 @@ import static org.fortiss.tooling.common.ui.javafx.lwfxef.DiagramViewerDefaultTa
 import static org.fortiss.tooling.common.ui.javafx.lwfxef.DiagramViewerDefaultTags.LINK_TARGET_DENIED_TAG;
 
 import org.eclipse.emf.ecore.EObject;
+import org.fortiss.tooling.base.model.element.IConnector;
+import org.fortiss.tooling.base.model.layout.ILayoutedModelElement;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.DiagramCoordinate;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.controller.base.DelegatingContentAnchorageController;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.model.IModelChangeProvider;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.mvc.IContentAnchorageMVCBundle;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.mvc.IMVCBundle;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.mvc.MVCBundleTag;
-import org.fortiss.tooling.base.model.element.IConnector;
-import org.fortiss.tooling.base.model.layout.ILayoutedModelElement;
+import org.fortiss.tooling.kernel.model.INamedCommentedElement;
 import org.fortiss.tooling.kernel.service.IConnectionCompositorService;
 import org.fortiss.tooling.kernel.service.IElementCompositorService;
 
@@ -34,10 +35,10 @@ import org.fortiss.tooling.kernel.service.IElementCompositorService;
  * 
  * @author hoelzl
  */
-public class LayoutedContentAnchorageController<T extends ILayoutedModelElement>
+public class LayoutedContentAnchorageController<T extends INamedCommentedElement & ILayoutedModelElement>
 		extends DelegatingContentAnchorageController {
 	/** {@link IModelChangeProvider} for this controller */
-	private final LayoutModelChangeProvider layoutModelChangeProvider;
+	private final NamedCommentedLayoutModelChangeProvider<T> layoutModelChangeProvider;
 
 	/** Constructor. */
 	public LayoutedContentAnchorageController(IContentAnchorageMVCBundle mvcb, Class<T> modelType) {
@@ -49,8 +50,8 @@ public class LayoutedContentAnchorageController<T extends ILayoutedModelElement>
 					modelType.getSimpleName() + ", but was " + model.getClass().getSimpleName());
 		}
 
-		ILayoutedModelElement lme = (ILayoutedModelElement)mvcb.getModel();
-		this.layoutModelChangeProvider = new LayoutModelChangeProvider(lme);
+		@SuppressWarnings("unchecked") T lme = (T)mvcb.getModel();
+		this.layoutModelChangeProvider = new NamedCommentedLayoutModelChangeProvider<T>(lme);
 	}
 
 	/** Returns the model element. */
diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedCurveLinkBendPointController.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedCurveLinkBendPointController.java
index 54d7c294c..d963a5e22 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedCurveLinkBendPointController.java
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedCurveLinkBendPointController.java
@@ -28,6 +28,7 @@ import org.fortiss.tooling.common.ui.javafx.lwfxef.FeedbackChange;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.controller.IController;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.mvc.ILinkMVCBundle;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.visual.ILinkVisual;
+import org.fortiss.tooling.kernel.model.INamedCommentedElement;
 
 import javafx.geometry.Point2D;
 
@@ -37,7 +38,7 @@ import javafx.geometry.Point2D;
  * 
  * @author munaro
  */
-public class LayoutedCurveLinkBendPointController<T extends ILayoutedModelElement>
+public class LayoutedCurveLinkBendPointController<T extends INamedCommentedElement & ILayoutedModelElement>
 		extends LayoutedLinkBendPointController<T> {
 
 	/** Constructor. */
diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedDiagramAnchorageController.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedDiagramAnchorageController.java
index 32d7d77da..89ee56e8e 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedDiagramAnchorageController.java
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedDiagramAnchorageController.java
@@ -14,19 +14,20 @@
 package org.fortiss.tooling.base.ui.editor.fx.controller;
 
 import static java.util.Objects.requireNonNull;
+import static org.fortiss.tooling.base.utils.LayoutDataUtils.moveNode;
 import static org.fortiss.tooling.common.ui.javafx.lwfxef.DiagramViewerDefaultTags.LINK_TARGET_ALLOWED_TAG;
 import static org.fortiss.tooling.common.ui.javafx.lwfxef.DiagramViewerDefaultTags.LINK_TARGET_DENIED_TAG;
-import static org.fortiss.tooling.base.utils.LayoutDataUtils.moveNode;
 
 import org.eclipse.emf.ecore.EObject;
+import org.fortiss.tooling.base.model.element.IConnector;
+import org.fortiss.tooling.base.model.layout.ILayoutedModelElement;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.DiagramCoordinate;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.FeedbackChange;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.controller.base.MoveControllerBase;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.model.IModelChangeProvider;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.mvc.IMVCBundle;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.mvc.MVCBundleTag;
-import org.fortiss.tooling.base.model.element.IConnector;
-import org.fortiss.tooling.base.model.layout.ILayoutedModelElement;
+import org.fortiss.tooling.kernel.model.INamedCommentedElement;
 import org.fortiss.tooling.kernel.service.IConnectionCompositorService;
 import org.fortiss.tooling.kernel.service.IElementCompositorService;
 
@@ -35,10 +36,10 @@ import org.fortiss.tooling.kernel.service.IElementCompositorService;
  * 
  * @author hoelzl
  */
-public class LayoutedDiagramAnchorageController<T extends ILayoutedModelElement>
+public class LayoutedDiagramAnchorageController<T extends INamedCommentedElement & ILayoutedModelElement>
 		extends MoveControllerBase {
 	/** {@link IModelChangeProvider} for this controller */
-	private final LayoutModelChangeProvider layoutModelChangeProvider;
+	private final NamedCommentedLayoutModelChangeProvider<T> layoutModelChangeProvider;
 
 	/** Constructor. */
 	public LayoutedDiagramAnchorageController(IMVCBundle mvcb, Class<T> modelType) {
@@ -50,8 +51,8 @@ public class LayoutedDiagramAnchorageController<T extends ILayoutedModelElement>
 					modelType.getSimpleName() + ", but was " + model.getClass().getSimpleName());
 		}
 
-		ILayoutedModelElement lme = (ILayoutedModelElement)mvcb.getModel();
-		this.layoutModelChangeProvider = new LayoutModelChangeProvider(lme);
+		@SuppressWarnings("unchecked") T lme = (T)mvcb.getModel();
+		this.layoutModelChangeProvider = new NamedCommentedLayoutModelChangeProvider<T>(lme);
 	}
 
 	/** Returns the model element. */
diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedEllipticResizableContentController.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedEllipticResizableContentController.java
index 93bdeb7ec..1c50e8012 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedEllipticResizableContentController.java
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedEllipticResizableContentController.java
@@ -29,13 +29,14 @@ import org.fortiss.tooling.common.ui.javafx.lwfxef.FeedbackChange;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.controller.IController;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.mvc.IContentAnchorageMVCBundle;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.mvc.IContentMVCBundle;
+import org.fortiss.tooling.kernel.model.INamedCommentedElement;
 
 /**
  * {@link IController} for {@link ILayoutedModelElement}s that have a elliptical shape.
  * 
  * @author munaro
  */
-public class LayoutedEllipticResizableContentController<T extends ILayoutedModelElement>
+public class LayoutedEllipticResizableContentController<T extends ILayoutedModelElement & INamedCommentedElement>
 		extends EObjectEllipticResizableContentControllerBase<T> {
 
 	/** Constructor */
diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedLineLinkBendPointController.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedLineLinkBendPointController.java
index f5fac4fe8..f49c994a0 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedLineLinkBendPointController.java
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedLineLinkBendPointController.java
@@ -20,6 +20,7 @@ import org.fortiss.tooling.common.ui.javafx.lwfxef.DiagramCoordinate;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.DiagramViewer;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.controller.IController;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.mvc.ILinkMVCBundle;
+import org.fortiss.tooling.kernel.model.INamedCommentedElement;
 
 /**
  * {@link IController} for {@link ILayoutedModelElement}s representing straight links and
@@ -27,7 +28,7 @@ import org.fortiss.tooling.common.ui.javafx.lwfxef.mvc.ILinkMVCBundle;
  * 
  * @author hoelzl
  */
-public class LayoutedLineLinkBendPointController<T extends ILayoutedModelElement>
+public class LayoutedLineLinkBendPointController<T extends INamedCommentedElement & ILayoutedModelElement>
 		extends LayoutedLinkBendPointController<T> {
 
 	/** Constructor. */
diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedLinkBendPointController.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedLinkBendPointController.java
index 3203d946d..d06736b49 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedLinkBendPointController.java
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedLinkBendPointController.java
@@ -30,6 +30,7 @@ import org.fortiss.tooling.common.ui.javafx.lwfxef.controller.base.LinkControlle
 import org.fortiss.tooling.common.ui.javafx.lwfxef.model.IModelChangeProvider;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.mvc.ILinkMVCBundle;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.mvc.IMVCBundle;
+import org.fortiss.tooling.kernel.model.INamedCommentedElement;
 import org.fortiss.tooling.kernel.service.IConnectionCompositorService;
 
 /**
@@ -38,10 +39,10 @@ import org.fortiss.tooling.kernel.service.IConnectionCompositorService;
  * 
  * @author munaro
  */
-public abstract class LayoutedLinkBendPointController<T extends ILayoutedModelElement>
+public abstract class LayoutedLinkBendPointController<T extends INamedCommentedElement & ILayoutedModelElement>
 		extends LinkControllerBase {
 	/** {@link IModelChangeProvider} for this controller */
-	protected final LayoutModelChangeProvider layoutModelChangeProvider;
+	protected final NamedCommentedLayoutModelChangeProvider<T> layoutModelChangeProvider;
 
 	/** Returns the model element. */
 	@SuppressWarnings("unchecked")
@@ -65,8 +66,8 @@ public abstract class LayoutedLinkBendPointController<T extends ILayoutedModelEl
 					modelType.getSimpleName() + ", but was " + model.getClass().getSimpleName());
 		}
 
-		ILayoutedModelElement lme = (ILayoutedModelElement)mvcb.getModel();
-		this.layoutModelChangeProvider = new LayoutModelChangeProvider(lme);
+		@SuppressWarnings("unchecked") T lme = (T)mvcb.getModel();
+		this.layoutModelChangeProvider = new NamedCommentedLayoutModelChangeProvider<T>(lme);
 	}
 
 	/** {@inheritDoc} */
diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedRectangularResizableContentController.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedRectangularResizableContentController.java
index 3232d4235..341f4a7da 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedRectangularResizableContentController.java
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutedRectangularResizableContentController.java
@@ -22,13 +22,14 @@ import static org.fortiss.tooling.base.utils.LayoutDataUtils.moveNode;
 import static org.fortiss.tooling.base.utils.LayoutDataUtils.setNodeSize;
 import static org.fortiss.tooling.base.utils.LayoutDataUtils.setStickyConnectorLayoutData;
 
+import org.fortiss.tooling.base.model.element.IConnector;
+import org.fortiss.tooling.base.model.layout.Dimension;
+import org.fortiss.tooling.base.model.layout.ILayoutedModelElement;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.FeedbackChange;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.controller.IController;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.mvc.IContentAnchorageMVCBundle;
 import org.fortiss.tooling.common.ui.javafx.lwfxef.mvc.IContentMVCBundle;
-import org.fortiss.tooling.base.model.element.IConnector;
-import org.fortiss.tooling.base.model.layout.Dimension;
-import org.fortiss.tooling.base.model.layout.ILayoutedModelElement;
+import org.fortiss.tooling.kernel.model.INamedCommentedElement;
 
 import javafx.geometry.Dimension2D;
 import javafx.geometry.Side;
@@ -38,7 +39,7 @@ import javafx.geometry.Side;
  * 
  * @author diewald
  */
-public class LayoutedRectangularResizableContentController<T extends ILayoutedModelElement>
+public class LayoutedRectangularResizableContentController<T extends INamedCommentedElement & ILayoutedModelElement>
 		extends EObjectRectangularResizableContentControllerBase<T> {
 	/** Constructor. */
 	public LayoutedRectangularResizableContentController(IContentMVCBundle mvcb,
diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutModelChangeProvider.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/NamedCommentedLayoutModelChangeProvider.java
similarity index 85%
rename from org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutModelChangeProvider.java
rename to org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/NamedCommentedLayoutModelChangeProvider.java
index b5449d02e..223e82c1b 100644
--- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/LayoutModelChangeProvider.java
+++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/NamedCommentedLayoutModelChangeProvider.java
@@ -24,28 +24,30 @@ import org.eclipse.emf.ecore.util.EContentAdapter;
 import org.fortiss.tooling.base.model.layout.ILayoutData;
 import org.fortiss.tooling.base.model.layout.ILayoutedModelElement;
 import org.fortiss.tooling.base.model.layout.LayoutPackage;
+import org.fortiss.tooling.kernel.model.FortissToolingKernelPackage;
+import org.fortiss.tooling.kernel.model.INamedCommentedElement;
 
 /**
  * A {@link KernelServiceBasedModelChangeProviderBase} for {@link ILayoutedModelElement}s.
  * 
  * @author hoelzl
  */
-class LayoutModelChangeProvider
-		extends KernelServiceBasedModelChangeProviderBase<ILayoutedModelElement> {
+class NamedCommentedLayoutModelChangeProvider<T extends INamedCommentedElement & ILayoutedModelElement>
+		extends KernelServiceBasedModelChangeProviderBase<T> {
 	/** The layouted model element. */
-	private final ILayoutedModelElement modelElement;
+	private final T modelElement;
 	/** The layout EMF notification listener. */
 	private final LayoutModelElementAdapter notificationListener;
 
 	/** Constructor. */
-	public LayoutModelChangeProvider(ILayoutedModelElement modelElement) {
+	public NamedCommentedLayoutModelChangeProvider(T modelElement) {
 		this.modelElement = modelElement;
 		this.notificationListener = new LayoutModelElementAdapter();
 	}
 
 	/** {@inheritDoc} */
 	@Override
-	protected ILayoutedModelElement getModelElement() {
+	protected T getModelElement() {
 		return modelElement;
 	}
 
@@ -78,7 +80,11 @@ class LayoutModelChangeProvider
 			Object notifier = notification.getNotifier();
 			if(notifier == modelElement) {
 				Object feature = notification.getFeature();
-				if(feature == LayoutPackage.Literals.ILAYOUTED_MODEL_ELEMENT__LAYOUT_DATA) {
+				if(feature == FortissToolingKernelPackage.Literals.INAMED_ELEMENT__NAME ||
+						feature == FortissToolingKernelPackage.Literals.INAMED_COMMENTED_ELEMENT__COMMENT) {
+					addNotification(notification);
+					return;
+				} else if(feature == LayoutPackage.Literals.ILAYOUTED_MODEL_ELEMENT__LAYOUT_DATA) {
 					// self adapt to layout data
 					super.notifyChanged(notification);
 					addNotification(notification);
-- 
GitLab