Skip to content
Snippets Groups Projects
Commit e634562c authored by Tiziano Munaro's avatar Tiziano Munaro
Browse files

[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: default avatarTiziano Munaro <munaro@fortiss.org>
parent 039eaf4e
No related branches found
No related tags found
1 merge request!79[LWFXEF] Change EObjectBasedDiagramControllerBase to work on EObjects
ContextMenuUtil.java 3e04dbd52ee99a59735d39b4087c55b07fb91076 GREEN ContextMenuUtil.java 3e04dbd52ee99a59735d39b4087c55b07fb91076 GREEN
EObjectBasedDiagramControllerBase.java b25bbbaa6eef3878b9aea73ca67d66de9beebb18 GREEN EObjectBasedDiagramControllerBase.java 3564ece9b3cac29caaf9201e0be3451a6a3c2b21 YELLOW
EObjectBasedRectangularResizableContentControllerBase.java a263a6c123ee96015e0a5c37b6e3c13ebd0e8a75 GREEN EObjectBasedRectangularResizableContentControllerBase.java a263a6c123ee96015e0a5c37b6e3c13ebd0e8a75 GREEN
HierarchicModelElementModelChangeProvider.java 05217577a99d78038763bbcd841a032bb84f0553 GREEN EObjectModelChangeProvider.java 664e4db2e32124832682aff8235ac380ed4db1c0 YELLOW
KernelServiceBasedModelChangeProviderBase.java 7c30347fb0c7cc4aacc79aeaf85167872afc1958 GREEN KernelServiceBasedModelChangeProviderBase.java 7c30347fb0c7cc4aacc79aeaf85167872afc1958 GREEN
LayoutModelElementModelChangeProvider.java 70c50b789c0088a7e5363bf662bc707a5b5ddf10 GREEN LayoutModelElementModelChangeProvider.java 70c50b789c0088a7e5363bf662bc707a5b5ddf10 GREEN
LayoutedModelElementBasedContentAnchorageController.java c4dfb9dbcd16078c63321d5dec13a902e4088949 GREEN LayoutedModelElementBasedContentAnchorageController.java c4dfb9dbcd16078c63321d5dec13a902e4088949 GREEN
......
...@@ -26,7 +26,6 @@ import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.DiagramViewerFeatu ...@@ -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.controller.base.ControllerBase;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.model.IModelChangeProvider; import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.model.IModelChangeProvider;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.mvc.IMVCBundle; 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.extension.data.IElementCompositionContext;
import org.fortiss.tooling.kernel.service.IElementCompositorService; import org.fortiss.tooling.kernel.service.IElementCompositorService;
import org.fortiss.tooling.kernel.ui.service.IContextMenuService; import org.fortiss.tooling.kernel.ui.service.IContextMenuService;
...@@ -41,18 +40,17 @@ import javafx.scene.control.MenuItem; ...@@ -41,18 +40,17 @@ import javafx.scene.control.MenuItem;
* @author hoelzl * @author hoelzl
*/ */
public abstract class EObjectBasedDiagramControllerBase extends ControllerBase { public abstract class EObjectBasedDiagramControllerBase extends ControllerBase {
/** The model change provider. */ /** The model change provider. */
private final HierarchicModelElementModelChangeProvider modelChangeProvider; private final EObjectModelChangeProvider modelChangeProvider;
/** Constructor. */ /** Constructor. */
public EObjectBasedDiagramControllerBase(IMVCBundle mvcb) { public EObjectBasedDiagramControllerBase(IMVCBundle mvcb) {
super(mvcb); super(mvcb);
if(!(getModel() instanceof IHierarchicElement)) { if(!(getModel() instanceof EObject)) {
throw new IllegalArgumentException( throw new IllegalArgumentException("Model element must be an instance of an EObject.");
"Model element must be an instance of an IHierarchicElement.");
} }
this.modelChangeProvider = this.modelChangeProvider = new EObjectModelChangeProvider(getEObject());
new HierarchicModelElementModelChangeProvider(getHierarchicElement());
} }
/** {@inheritDoc} */ /** {@inheritDoc} */
...@@ -61,10 +59,10 @@ public abstract class EObjectBasedDiagramControllerBase extends ControllerBase { ...@@ -61,10 +59,10 @@ public abstract class EObjectBasedDiagramControllerBase extends ControllerBase {
return modelChangeProvider; return modelChangeProvider;
} }
/** Returns the {@link IHierarchicElement} model element. */ /** Returns the {@link EObject} model element. */
protected IHierarchicElement getHierarchicElement() { protected EObject getEObject() {
// wild cast works: see constructor check with exception // wild cast works: see constructor check with exception
return (IHierarchicElement)getModel(); return (EObject)getModel();
} }
/** {@inheritDoc} */ /** {@inheritDoc} */
...@@ -76,7 +74,7 @@ public abstract class EObjectBasedDiagramControllerBase extends ControllerBase { ...@@ -76,7 +74,7 @@ public abstract class EObjectBasedDiagramControllerBase extends ControllerBase {
double y = max(features.getVerticalSpacing(), diagramLocation.getY()); double y = max(features.getVerticalSpacing(), diagramLocation.getY());
// wild cast works: see constructor exception // wild cast works: see constructor exception
EObject modelParent = getHierarchicElement(); EObject modelParent = getEObject();
IElementCompositionContext edc = createElementCompositionContext(modelParent, x, y, true, IElementCompositionContext edc = createElementCompositionContext(modelParent, x, y, true,
getViewer().getFeatures().getCurrentZoomFactor()); getViewer().getFeatures().getCurrentZoomFactor());
List<MenuItem> result = createPrototypeMenu(modelParent, edc); List<MenuItem> result = createPrototypeMenu(modelParent, edc);
......
...@@ -18,29 +18,28 @@ package org.fortiss.tooling.base.ui.editor.fx; ...@@ -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.Adapter;
import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.impl.AdapterImpl; 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 * @author hoelzl
*/ */
final class HierarchicModelElementModelChangeProvider final class EObjectModelChangeProvider extends KernelServiceBasedModelChangeProviderBase<EObject> {
extends KernelServiceBasedModelChangeProviderBase<IHierarchicElement> {
/** The model element. */ /** The model element. */
private final IHierarchicElement modelElement; private final EObject modelElement;
/** The EMF notification listener. */ /** The EMF notification listener. */
private final HierarchicElementAdapter notificationListener; private final EObjectElementAdapter notificationListener;
/** Constructor. */ /** Constructor. */
public HierarchicModelElementModelChangeProvider(IHierarchicElement modelElement) { public EObjectModelChangeProvider(EObject modelElement) {
this.modelElement = modelElement; this.modelElement = modelElement;
this.notificationListener = new HierarchicElementAdapter(); this.notificationListener = new EObjectElementAdapter();
} }
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
protected IHierarchicElement getModelElement() { protected EObject getModelElement() {
return modelElement; return modelElement;
} }
...@@ -50,8 +49,8 @@ final class HierarchicModelElementModelChangeProvider ...@@ -50,8 +49,8 @@ final class HierarchicModelElementModelChangeProvider
return notificationListener; return notificationListener;
} }
/** Specialized adapter listening to model changes of {@link IHierarchicElement}. */ /** Specialized adapter listening to model changes of {@link EObject}. */
private class HierarchicElementAdapter extends AdapterImpl { private class EObjectElementAdapter extends AdapterImpl {
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
public void notifyChanged(Notification event) { public void notifyChanged(Notification event) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment