From e634562c1f5cfeaf1c535408edf6deb0c01bfa10 Mon Sep 17 00:00:00 2001 From: Tiziano Munaro <munaro@fortiss.org> Date: Mon, 9 Dec 2019 10:38:29 +0100 Subject: [PATCH] [LWFXEF] Change EObjectBasedDiagramControllerBase to work on EObjects The type checks and model change providers have been edited in order for the class to actually work with `EObjects`: * The `EObjectBasedDiagramControllerBase` has been changed to require `EObject`s only (not `IHierarchicElement`s). * The `HierarchicModelElementModelChangeProvider`has been changed to require `EObject`s only and has thus been renamed to `EObjectModelChangeProvider`. Issue-Ref: 3890 Issue-Url: https://af3-developer.fortiss.org/issues/3890 Signed-off-by: Tiziano Munaro <munaro@fortiss.org> --- .../tooling/base/ui/editor/fx/.ratings | 4 ++-- .../fx/EObjectBasedDiagramControllerBase.java | 20 ++++++++---------- ...r.java => EObjectModelChangeProvider.java} | 21 +++++++++---------- 3 files changed, 21 insertions(+), 24 deletions(-) rename org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/{HierarchicModelElementModelChangeProvider.java => EObjectModelChangeProvider.java} (73%) diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/.ratings b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/.ratings index e65316624..8393231ba 100644 --- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/.ratings +++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/.ratings @@ -1,7 +1,7 @@ ContextMenuUtil.java 3e04dbd52ee99a59735d39b4087c55b07fb91076 GREEN -EObjectBasedDiagramControllerBase.java b25bbbaa6eef3878b9aea73ca67d66de9beebb18 GREEN +EObjectBasedDiagramControllerBase.java 3564ece9b3cac29caaf9201e0be3451a6a3c2b21 YELLOW EObjectBasedRectangularResizableContentControllerBase.java a263a6c123ee96015e0a5c37b6e3c13ebd0e8a75 GREEN -HierarchicModelElementModelChangeProvider.java 05217577a99d78038763bbcd841a032bb84f0553 GREEN +EObjectModelChangeProvider.java 664e4db2e32124832682aff8235ac380ed4db1c0 YELLOW KernelServiceBasedModelChangeProviderBase.java 7c30347fb0c7cc4aacc79aeaf85167872afc1958 GREEN LayoutModelElementModelChangeProvider.java 70c50b789c0088a7e5363bf662bc707a5b5ddf10 GREEN LayoutedModelElementBasedContentAnchorageController.java c4dfb9dbcd16078c63321d5dec13a902e4088949 GREEN diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/EObjectBasedDiagramControllerBase.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/EObjectBasedDiagramControllerBase.java index b25bbbaa6..3564ece9b 100644 --- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/EObjectBasedDiagramControllerBase.java +++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/EObjectBasedDiagramControllerBase.java @@ -26,7 +26,6 @@ import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.DiagramViewerFeatu import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.controller.base.ControllerBase; import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.model.IModelChangeProvider; import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.mvc.IMVCBundle; -import org.fortiss.tooling.base.model.element.IHierarchicElement; import org.fortiss.tooling.kernel.extension.data.IElementCompositionContext; import org.fortiss.tooling.kernel.service.IElementCompositorService; import org.fortiss.tooling.kernel.ui.service.IContextMenuService; @@ -41,18 +40,17 @@ import javafx.scene.control.MenuItem; * @author hoelzl */ public abstract class EObjectBasedDiagramControllerBase extends ControllerBase { + /** The model change provider. */ - private final HierarchicModelElementModelChangeProvider modelChangeProvider; + private final EObjectModelChangeProvider modelChangeProvider; /** Constructor. */ public EObjectBasedDiagramControllerBase(IMVCBundle mvcb) { super(mvcb); - if(!(getModel() instanceof IHierarchicElement)) { - throw new IllegalArgumentException( - "Model element must be an instance of an IHierarchicElement."); + if(!(getModel() instanceof EObject)) { + throw new IllegalArgumentException("Model element must be an instance of an EObject."); } - this.modelChangeProvider = - new HierarchicModelElementModelChangeProvider(getHierarchicElement()); + this.modelChangeProvider = new EObjectModelChangeProvider(getEObject()); } /** {@inheritDoc} */ @@ -61,10 +59,10 @@ public abstract class EObjectBasedDiagramControllerBase extends ControllerBase { return modelChangeProvider; } - /** Returns the {@link IHierarchicElement} model element. */ - protected IHierarchicElement getHierarchicElement() { + /** Returns the {@link EObject} model element. */ + protected EObject getEObject() { // wild cast works: see constructor check with exception - return (IHierarchicElement)getModel(); + return (EObject)getModel(); } /** {@inheritDoc} */ @@ -76,7 +74,7 @@ public abstract class EObjectBasedDiagramControllerBase extends ControllerBase { double y = max(features.getVerticalSpacing(), diagramLocation.getY()); // wild cast works: see constructor exception - EObject modelParent = getHierarchicElement(); + EObject modelParent = getEObject(); IElementCompositionContext edc = createElementCompositionContext(modelParent, x, y, true, getViewer().getFeatures().getCurrentZoomFactor()); List<MenuItem> result = createPrototypeMenu(modelParent, edc); diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/HierarchicModelElementModelChangeProvider.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/EObjectModelChangeProvider.java similarity index 73% rename from org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/HierarchicModelElementModelChangeProvider.java rename to org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/EObjectModelChangeProvider.java index 05217577a..664e4db2e 100644 --- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/HierarchicModelElementModelChangeProvider.java +++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/EObjectModelChangeProvider.java @@ -18,29 +18,28 @@ package org.fortiss.tooling.base.ui.editor.fx; import org.eclipse.emf.common.notify.Adapter; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.impl.AdapterImpl; -import org.fortiss.tooling.base.model.element.IHierarchicElement; +import org.eclipse.emf.ecore.EObject; /** - * An {@link KernelServiceBasedModelChangeProviderBase} for {@link IHierarchicElement}s. + * An {@link KernelServiceBasedModelChangeProviderBase} for {@link EObject}s. * * @author hoelzl */ -final class HierarchicModelElementModelChangeProvider - extends KernelServiceBasedModelChangeProviderBase<IHierarchicElement> { +final class EObjectModelChangeProvider extends KernelServiceBasedModelChangeProviderBase<EObject> { /** The model element. */ - private final IHierarchicElement modelElement; + private final EObject modelElement; /** The EMF notification listener. */ - private final HierarchicElementAdapter notificationListener; + private final EObjectElementAdapter notificationListener; /** Constructor. */ - public HierarchicModelElementModelChangeProvider(IHierarchicElement modelElement) { + public EObjectModelChangeProvider(EObject modelElement) { this.modelElement = modelElement; - this.notificationListener = new HierarchicElementAdapter(); + this.notificationListener = new EObjectElementAdapter(); } /** {@inheritDoc} */ @Override - protected IHierarchicElement getModelElement() { + protected EObject getModelElement() { return modelElement; } @@ -50,8 +49,8 @@ final class HierarchicModelElementModelChangeProvider return notificationListener; } - /** Specialized adapter listening to model changes of {@link IHierarchicElement}. */ - private class HierarchicElementAdapter extends AdapterImpl { + /** Specialized adapter listening to model changes of {@link EObject}. */ + private class EObjectElementAdapter extends AdapterImpl { /** {@inheritDoc} */ @Override public void notifyChanged(Notification event) { -- GitLab