Commit 4e8d62ff authored by Simon Barner's avatar Simon Barner

Merge branch '3884' into 'master'

Initial JavaFX-based Partition Architectecture editor

See merge request af3/af3!268
parents c9362d0d e8a30c00
ComponentControllerFactory.java debf3bb80cb56197d4dd0c84f38e466f99da9a34 GREEN ComponentControllerFactory.java 4995e5cc92b2ce5c3d178f7c047e76bf05844c44 GREEN
ComponentModelFactory.java 7e58831949f50a9887bcbf31959f887a87f703cb GREEN ComponentModelFactory.java 7e58831949f50a9887bcbf31959f887a87f703cb GREEN
ComponentStructureFXEditor.java d662863a84c9e3f24e46de19dad1d750a1462cd3 GREEN ComponentStructureFXEditor.java d662863a84c9e3f24e46de19dad1d750a1462cd3 GREEN
ComponentStructureFXEditorBinding.java 370fe5c458f15bd8299364f858250d5c2bda6729 GREEN ComponentStructureFXEditorBinding.java 370fe5c458f15bd8299364f858250d5c2bda6729 GREEN
ComponentVisualFactory.java 4b5f4e36726d65422719d628765d176aa077b673 GREEN ComponentVisualFactory.java 4b5f4e36726d65422719d628765d176aa077b673 GREEN
SubComponentController.java e7361eb33367c160f9a7502721bca13f1ee85128 GREEN
...@@ -29,6 +29,7 @@ import org.fortiss.tooling.base.ui.editor.fx.controller.EObjectDiagramController ...@@ -29,6 +29,7 @@ import org.fortiss.tooling.base.ui.editor.fx.controller.EObjectDiagramController
import org.fortiss.tooling.base.ui.editor.fx.controller.LayoutedContentAnchorageController; import org.fortiss.tooling.base.ui.editor.fx.controller.LayoutedContentAnchorageController;
import org.fortiss.tooling.base.ui.editor.fx.controller.LayoutedDiagramAnchorageController; import org.fortiss.tooling.base.ui.editor.fx.controller.LayoutedDiagramAnchorageController;
import org.fortiss.tooling.base.ui.editor.fx.controller.LayoutedLinkBendPointController; import org.fortiss.tooling.base.ui.editor.fx.controller.LayoutedLinkBendPointController;
import org.fortiss.tooling.base.ui.editor.fx.controller.LayoutedRectangularResizableContentController;
/** /**
* The implementation of the {@link IControllerFactory} for the component editor. * The implementation of the {@link IControllerFactory} for the component editor.
...@@ -40,7 +41,7 @@ public final class ComponentControllerFactory implements IControllerFactory { ...@@ -40,7 +41,7 @@ public final class ComponentControllerFactory implements IControllerFactory {
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
public IController createContentController(IContentMVCBundle model) { public IController createContentController(IContentMVCBundle model) {
return new SubComponentController(model); return new LayoutedRectangularResizableContentController<Component>(model, Component.class);
} }
/** {@inheritDoc} */ /** {@inheritDoc} */
......
...@@ -58,6 +58,10 @@ ...@@ -58,6 +58,10 @@
<modelEditorBinding binding="org.fortiss.af3.partition.ui.editor.PartitionArchitectureMemoryAreaAllocationEditorBinding"> <modelEditorBinding binding="org.fortiss.af3.partition.ui.editor.PartitionArchitectureMemoryAreaAllocationEditorBinding">
<modelElementClass modelElementClass="org.fortiss.af3.partition.model.PartitionArchitecture"/> <modelElementClass modelElementClass="org.fortiss.af3.partition.model.PartitionArchitecture"/>
</modelEditorBinding> </modelEditorBinding>
<modelEditorBinding binding="org.fortiss.af3.partition.ui.editor.fx.PartitionStructureFXEditorBinding">
<modelElementClass modelElementClass="org.fortiss.af3.partition.model.PartitionArchitecture"></modelElementClass>
</modelEditorBinding>
</extension> </extension>
<extension point="org.fortiss.tooling.kernel.ui.modelElementHandler"> <extension point="org.fortiss.tooling.kernel.ui.modelElementHandler">
......
PartitionControllerFactory.java 85d48280fd1970357bd58c3061fa989f669dbc3b GREEN
PartitionModelFactory.java d6137f92cb27b13ad08cadcf327c6b39b8cf47e7 GREEN
PartitionStructureFXEditor.java 2b29b5b2021d9692957ef93a4f9eda5b26661e01 GREEN
PartitionStructureFXEditorBinding.java 02754326053ed46688f404df0378ad32bc08a7dc GREEN
PartitionVisualFactory.java df76e179f1970905e6c42f312f71a1126d9dab4b GREEN
/*-------------------------------------------------------------------------+
| Copyright 2019 fortiss GmbH |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
+--------------------------------------------------------------------------*/
package org.fortiss.af3.partition.ui.editor.fx;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.controller.IController;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.controller.IControllerFactory;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.mvc.IContentAnchorageMVCBundle;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.mvc.IContentMVCBundle;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.mvc.IDiagramAnchorageMVCBundle;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.mvc.IDiagramMVCBundle;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.mvc.ILinkMVCBundle;
import org.fortiss.af3.partition.model.MemoryArea;
import org.fortiss.af3.partition.model.MemoryAreaChannel;
import org.fortiss.af3.partition.model.Partition;
import org.fortiss.af3.partition.model.PartitionArchitecture;
import org.fortiss.af3.partition.model.PartitionChannel;
import org.fortiss.af3.partition.model.PartitionPort;
import org.fortiss.tooling.base.ui.editor.fx.controller.EObjectDiagramController;
import org.fortiss.tooling.base.ui.editor.fx.controller.LayoutedDiagramAnchorageController;
import org.fortiss.tooling.base.ui.editor.fx.controller.LayoutedLinkBendPointController;
import org.fortiss.tooling.base.ui.editor.fx.controller.LayoutedRectangularResizableContentController;
/**
* The implementation of the {@link IControllerFactory} for the {@link PartitionArchitecture}
* editor.
*
* @author barner
*/
public final class PartitionControllerFactory implements IControllerFactory {
/** {@inheritDoc} */
@Override
public IController createContentController(IContentMVCBundle modelBundle) {
Object modelObj = modelBundle.getModel();
if(modelObj instanceof Partition) {
return new LayoutedRectangularResizableContentController<Partition>(modelBundle,
Partition.class);
} else if(modelObj instanceof MemoryArea) {
return new LayoutedRectangularResizableContentController<MemoryArea>(modelBundle,
MemoryArea.class);
}
return null;
}
/** {@inheritDoc} */
@Override
public IController createDiagramAnchorageController(IDiagramAnchorageMVCBundle modelBundle) {
return null;
}
/** {@inheritDoc} */
@Override
public IController createContentAnchorageController(IContentAnchorageMVCBundle modelBundle) {
// PartitionPort is a supertype of MemoryArea{Input, Output}Port
return new LayoutedDiagramAnchorageController<>(modelBundle, PartitionPort.class);
}
/** {@inheritDoc} */
@Override
public IController createLinkController(ILinkMVCBundle modelBundle) {
Object linkObj = modelBundle.getModel();
if(linkObj instanceof PartitionChannel) {
return new LayoutedLinkBendPointController<>(modelBundle, PartitionChannel.class);
} else if(linkObj instanceof MemoryAreaChannel) {
return new LayoutedLinkBendPointController<>(modelBundle, MemoryAreaChannel.class);
}
return null;
}
/** {@inheritDoc} */
@Override
public IController createDiagramController(IDiagramMVCBundle diagramBundle) {
return new EObjectDiagramController<>(diagramBundle, PartitionArchitecture.class);
}
}
/*-------------------------------------------------------------------------+
| Copyright 2019 fortiss GmbH |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
+--------------------------------------------------------------------------*/
package org.fortiss.af3.partition.ui.editor.fx;
import static java.util.Collections.emptyList;
import static java.util.Objects.requireNonNull;
import static org.conqat.lib.commons.reflect.ReflectionUtils.isInstanceOfAny;
import static org.fortiss.tooling.common.util.LambdaUtils.filterList;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.model.IModelFactory;
import org.fortiss.af3.partition.model.MemoryArea;
import org.fortiss.af3.partition.model.MemoryAreaChannel;
import org.fortiss.af3.partition.model.Partition;
import org.fortiss.af3.partition.model.PartitionArchitecture;
import org.fortiss.af3.partition.model.PartitionChannel;
import org.fortiss.tooling.base.model.element.IConnection;
import org.fortiss.tooling.base.model.element.IHierarchicElement;
/**
* The implementation of the {@link IModelFactory} for the {@link Partition} editor.
*
* @author barner
*/
public final class PartitionModelFactory implements IModelFactory {
/** The currently edited {@link PartitionArchitecture}. */
private final PartitionArchitecture rootElement;
/** Constructor. */
public PartitionModelFactory(PartitionArchitecture root) {
this.rootElement = requireNonNull(root);
}
/** {@inheritDoc} */
@Override
public Object getRootModel() {
return rootElement;
}
/** {@inheritDoc} */
@SuppressWarnings({"unchecked", "rawtypes"})
@Override
public List<?> getContentModels() {
List rval = new ArrayList();
rval.addAll(rootElement.getPartitions());
rval.addAll(rootElement.getMemoryAreas());
return rval;
}
/** {@inheritDoc} */
@Override
public List<?> getDiagramAnchorageModels() {
return emptyList();
}
/** {@inheritDoc} */
@Override
public List<?> getContentAnchorageModels(Object parent) {
if(isInstanceOfAny(parent, Partition.class, MemoryArea.class)) {
return ((IHierarchicElement)parent).getConnectors();
}
return emptyList();
}
/** {@inheritDoc} */
@Override
public List<?> getLinkModels() {
return filterList(rootElement.getConnections(),
c -> filterPartiallyInitializedConnections(c));
}
/** Checks whether the given connection is only partially initialized. */
private boolean filterPartiallyInitializedConnections(IConnection c) {
return c.getSource() != null && c.getTarget() != null && c.eContainer() != null;
}
/** {@inheritDoc} */
@Override
public Object getLinkStart(Object link) {
if(link instanceof PartitionChannel) {
return ((PartitionChannel)link).getSource();
} else if(link instanceof MemoryAreaChannel) {
return ((MemoryAreaChannel)link).getSource();
}
return null;
}
/** {@inheritDoc} */
@Override
public Object getLinkEnd(Object link) {
if(link instanceof PartitionChannel) {
return ((PartitionChannel)link).getTarget();
} else if(link instanceof MemoryAreaChannel) {
return ((MemoryAreaChannel)link).getTarget();
}
return null;
}
/** {@inheritDoc} */
@Override
public Object getParent(Object element) {
return null;
}
/** {@inheritDoc} */
@Override
public void update() {
// ignored
}
}
/*-------------------------------------------------------------------------+
| Copyright 2019 fortiss GmbH |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
+--------------------------------------------------------------------------*/
package org.fortiss.af3.partition.ui.editor.fx;
import static javafx.scene.paint.Color.LIGHTGRAY;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.DiagramViewerFeatures;
import org.fortiss.af3.partition.model.MemoryArea;
import org.fortiss.af3.partition.model.MemoryAreaInputPort;
import org.fortiss.af3.partition.model.MemoryAreaOutputPort;
import org.fortiss.af3.partition.model.Partition;
import org.fortiss.af3.partition.model.PartitionArchitecture;
import org.fortiss.af3.partition.model.PartitionInputPort;
import org.fortiss.af3.partition.model.PartitionOutputPort;
import org.fortiss.tooling.kernel.ui.extension.base.LWFXEFEditorBase;
import javafx.geometry.Dimension2D;
/**
* Graphical editor for {@link Partition} structures based on JavaFX.
*
* @author barner
*/
public class PartitionStructureFXEditor extends LWFXEFEditorBase<PartitionArchitecture> {
/** {@inheritDoc} */
@SuppressWarnings("unchecked")
@Override
public Class<? extends EObject>[] getVisibleEObjectTypes() {
return new Class[] {Partition.class, PartitionInputPort.class, PartitionOutputPort.class,
MemoryArea.class, MemoryAreaInputPort.class, MemoryAreaOutputPort.class};
}
/** {@inheritDoc} */
@Override
protected void customizeViewer() {
DiagramViewerFeatures features = viewer.getFeatures();
features.setIndicatorSpacing(new Dimension2D(12, 12));
features.setBackgroundColor(LIGHTGRAY);
}
}
...@@ -13,37 +13,54 @@ ...@@ -13,37 +13,54 @@
| See the License for the specific language governing permissions and | | See the License for the specific language governing permissions and |
| limitations under the License. | | limitations under the License. |
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
package org.fortiss.af3.component.ui.editor.fx; package org.fortiss.af3.partition.ui.editor.fx;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.controller.IController; import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.controller.IControllerFactory;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.mvc.IContentAnchorageMVCBundle; import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.model.IModelFactory;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.mvc.IContentMVCBundle; import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.visual.IVisualFactory;
import org.fortiss.af3.component.model.Component; import org.eclipse.ui.IEditorPart;
import org.fortiss.af3.component.model.Port; import org.fortiss.af3.partition.model.Partition;
import org.fortiss.tooling.base.ui.editor.fx.controller.LayoutedRectangularResizableContentController; import org.fortiss.tooling.kernel.ui.extension.base.ModelEditorBindingBase;
import javafx.geometry.Side;
/** /**
* {@link IController} for sub-components of the component displayed in the diagram. * Editor binding for the JavaFX-based {@link Partition} structure editor.
* *
* @author hoelzl * @author barner
* @author diewald
*/ */
public final class SubComponentController public final class PartitionStructureFXEditorBinding extends ModelEditorBindingBase<Partition> {
extends LayoutedRectangularResizableContentController<Component> { /** {@inheritDoc} */
/** Constructor. */ @Override
public SubComponentController(IContentMVCBundle mvcb) { public Class<? extends IEditorPart> getEditorClass() {
super(mvcb, Component.class); return PartitionStructureFXEditor.class;
}
/** {@inheritDoc} */
@Override
public Class<? extends IModelFactory> getModelFactory() {
return PartitionModelFactory.class;
}
/** {@inheritDoc} */
@Override
public Class<? extends IVisualFactory> getVisualFactory() {
return PartitionVisualFactory.class;
}
/** {@inheritDoc} */
@Override
public Class<? extends IControllerFactory> getControllerFactory() {
return PartitionControllerFactory.class;
}
/** {@inheritDoc} */
@Override
public String getLabel() {
return "Partition Structure (FX)";
} }
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
protected void moveAnchorageToSideOffset(IContentAnchorageMVCBundle anchorage, Side side, public int getPriority() {
double offset) { return -100;
Object portObj = anchorage.getModel();
if(portObj instanceof Port) {
super.moveAnchorageToSideOffset(anchorage, side, offset);
}
} }
} }
/*-------------------------------------------------------------------------+
| Copyright 2019 fortiss GmbH |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
+--------------------------------------------------------------------------*/
package org.fortiss.af3.partition.ui.editor.fx;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.mvc.IContentAnchorageMVCBundle;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.mvc.IContentMVCBundle;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.mvc.IDiagramAnchorageMVCBundle;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.mvc.ILinkMVCBundle;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.visual.IContentAnchorageVisual;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.visual.IContentVisual;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.visual.IDiagramAnchorageVisual;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.visual.ILinkVisual;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.visual.IVisualFactory;
import org.fortiss.af3.partition.model.MemoryArea;
import org.fortiss.af3.partition.model.MemoryAreaChannel;
import org.fortiss.af3.partition.model.Partition;
import org.fortiss.af3.partition.model.PartitionArchitecture;
import org.fortiss.af3.partition.model.PartitionChannel;
import org.fortiss.af3.partition.model.PartitionPort;
import org.fortiss.af3.partition.ui.editor.fx.visual.MemoryAreaVisual;
import org.fortiss.af3.partition.ui.editor.fx.visual.PartitionPortVisual;
import org.fortiss.af3.partition.ui.editor.fx.visual.PartitionVisual;
import org.fortiss.tooling.base.ui.editor.fx.visual.NamedLayoutedLineLinkVisual;
/**
* The implementation of the {@link IVisualFactory} for the {@link PartitionArchitecture} editor.
*
* @author barner
*/
public final class PartitionVisualFactory implements IVisualFactory {
/** {@inheritDoc} */
@Override
public IContentVisual createContentVisual(IContentMVCBundle modelBundle) {
Object modelObj = modelBundle.getModel();
if(modelObj instanceof Partition) {
return new PartitionVisual(modelBundle);
} else if(modelObj instanceof MemoryArea) {
return new MemoryAreaVisual(modelBundle);
}
return null;
}
/** {@inheritDoc} */
@Override
public IDiagramAnchorageVisual
createDiagramAnchorageVisual(IDiagramAnchorageMVCBundle modelBundle) {
return null;
}
/** {@inheritDoc} */
@Override
public IContentAnchorageVisual
createContentAnchorageVisual(IContentAnchorageMVCBundle modelBundle) {
Object anchorageObj = modelBundle.getModel();
// PartitionPort is a supertype of MemoryArea{Input, Output}Port
if(anchorageObj instanceof PartitionPort) {
return new PartitionPortVisual(modelBundle);
}
return null;
}
/** {@inheritDoc} */
@Override
public ILinkVisual createLinkVisual(ILinkMVCBundle modelBundle) {
Object linkObj = modelBundle.getModel();
if(linkObj instanceof PartitionChannel) {
return new NamedLayoutedLineLinkVisual<PartitionChannel>(modelBundle,
PartitionChannel.class);
} else if(linkObj instanceof MemoryAreaChannel) {
return new NamedLayoutedLineLinkVisual<MemoryAreaChannel>(modelBundle,
MemoryAreaChannel.class);
}
return null;
}
}
MemoryAreaVisual.java 3e844560e0d19d0688f6a3ca394afbea113b9f15 GREEN
PartitionPortVisual.java 9e1d26b30d6cc347a8b402ebb6f437693271e242 GREEN
PartitionVisual.java 7c673660857917c332e2d8e338f6262f8dce5939 GREEN
/*-------------------------------------------------------------------------+
| Copyright 2019 fortiss GmbH |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
+--------------------------------------------------------------------------*/
package org.fortiss.af3.partition.ui.editor.fx.visual;
import static org.fortiss.af3.partition.ui.AF3PartitionUIActivator.PLUGIN_ID;
import static org.fortiss.af3.partition.ui.DefaultStyle.MEMORYAREA_BACKGROUND;
import static org.fortiss.tooling.common.ui.javafx.util.GraphicUtils.convertColor;
import static org.fortiss.tooling.common.ui.javafx.util.GraphicUtils.getFXImage;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.mvc.IContentMVCBundle;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.visual.IContentVisual;
import org.fortiss.af3.partition.model.MemoryArea;
import org.fortiss.af3.partition.model.PartitionArchitecture;
import org.fortiss.tooling.base.ui.editor.fx.visual.NamedLayoutedRectangularContentVisual;
import javafx.scene.image.Image;
import javafx.scene.paint.Color;
import javafx.scene.paint.Paint;
/**
* {@link IContentVisual} for {@link MemoryArea}s of the {@link PartitionArchitecture} displayed in
* the diagram.
*
* @author barner
*/
public final class MemoryAreaVisual extends NamedLayoutedRectangularContentVisual<MemoryArea> {
/** The fill color used by {@link MemoryArea}s. */
private static final Color MEMORYAREA_COLOR = convertColor(MEMORYAREA_BACKGROUND);
/** The icon image. */
private static final Image ICON = getFXImage(PLUGIN_ID, "/icons/memoryarea.png");
/** Constructor. */
public MemoryAreaVisual(IContentMVCBundle mvcb) {
super(mvcb, MemoryArea.class);
}
/** {@inheritDoc} */
@Override
protected Paint getFillColor() {
return MEMORYAREA_COLOR;
}
/** {@inheritDoc} */
@Override
protected Image getIcon() {
return ICON;
}
}
...@@ -13,42 +13,43 @@ ...@@ -13,42 +13,43 @@
| See the License for the specific language governing permissions and | | See the License for the specific language governing permissions and |
| limitations under the License. | | limitations under the License. |
+--------------------------------------------------------------------------*/ +--------------------------------------------------------------------------*/
package org.fortiss.af3.task.ui.editor.fx; package org.fortiss.af3.partition.ui.editor.fx.visual;
import static javafx.scene.paint.Color.BLACK;
import static javafx.scene.paint.Color.WHITE;
import static org.conqat.lib.commons.reflect.ReflectionUtils.isInstanceOfAny;
import org.eclipse.systemfocus.kernel.common.ui.javafx.lwfxef.controller.IController;