Skip to content
Snippets Groups Projects
Commit a72e4959 authored by Simon Barner's avatar Simon Barner
Browse files

Auto layouter: Use model element handler to determine root objects

* No longer use erroneous heuristics that depends on the assumption that
  for some model viewst there is a hidden root element (e.g., CA)
* Instead, use the model element handler service to determine object
  to be edited (same as object to be layouted).

Issue-Ref: 3433
Issue-Url: https://af3-developer.fortiss.org/issues/3433


Signed-off-by: default avatarSimon Barner <barner@fortiss.org>
parent d54c0fad
No related branches found
No related tags found
1 merge request!63433 auto layouter label size
AutoLayoutMenu.java ef3b897cc2fd99cf9ce201f03cffea036555e3ac GREEN
AutoLayoutMenu.java bca7986c209678ed937548a37db494430877d80e YELLOW
DiagramTapeMeasure.java 72454e6fe5225dab11d3d691baad93aab7a171c0 YELLOW
IAutoLayouter.java de1b11d9e202c7e23352ad85684dbf8a3fd17c7d GREEN
IAutoLayouterTapeMeasure.java df186e0ba505e0ecda211b1df76cf12f3245b47e YELLOW
......
......@@ -21,7 +21,6 @@ import static org.fortiss.tooling.base.utils.AngleUtils.getAngle;
import static org.fortiss.tooling.kernel.utils.EcoreUtils.pickInstanceOf;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
......@@ -34,9 +33,10 @@ import org.fortiss.tooling.base.model.element.IConnector;
import org.fortiss.tooling.base.model.element.IHierarchicElement;
import org.fortiss.tooling.base.model.layout.ILayoutedModelElement;
import org.fortiss.tooling.base.ui.ToolingBaseUIActivator;
import org.fortiss.tooling.kernel.model.IProjectRootElement;
import org.fortiss.tooling.kernel.ui.extension.IContextMenuContributor;
import org.fortiss.tooling.kernel.ui.extension.IModelElementHandler;
import org.fortiss.tooling.kernel.ui.extension.data.ContextMenuContextProvider;
import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService;
/**
* Context menu entry to automatic layout {@link IHierarchicElement}-based models.
......@@ -96,16 +96,16 @@ public class AutoLayoutMenu implements IContextMenuContributor {
public List<IContributionItem> getContributedItems(EObject selection,
ContextMenuContextProvider contextProvider) {
if(!(selection instanceof IHierarchicElement)) {
return Collections.emptyList();
IModelElementHandler<EObject> handler =
IModelElementHandlerService.getInstance().getModelElementHandler(selection);
if(handler == null) {
return emptyList();
}
IHierarchicElement element = (IHierarchicElement)selection;
// Skip single top-level model element (e.g., AF3 component architecture)
if(element instanceof IProjectRootElement && element.getContainedElements().size() == 1) {
// There is exactly one child element
element = element.getContainedElements().get(0);
EObject editedObject = handler.handleOpenModelElementRequest(selection);
if(!(editedObject instanceof IHierarchicElement)) {
return emptyList();
}
IHierarchicElement element = (IHierarchicElement)editedObject;
// Check if model is empty
if(pickInstanceOf(ILayoutedModelElement.class, element.getContainedElements()).isEmpty()) {
......
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