Search in sources :

Example 11 with Vertex

use of org.yakindu.sct.model.sgraph.Vertex in project statecharts by Yakindu.

the class ExtractSubdiagramRefactoring method createExitPoint.

protected void createExitPoint(Edge edge, Diagram subdiagram) {
    Transition transition = (Transition) edge.getElement();
    // create semantic exit point
    Region exitPointContainer = getExitPointContainer(transition);
    Exit exitPoint = createSemanticExitPoint(transition);
    // create node for exit point
    View exitPointContainerView = helper.getViewForSemanticElement(exitPointContainer, subdiagram);
    View exitPointRegionCompartment = ViewUtil.getChildBySemanticHint(exitPointContainerView, SemanticHints.REGION_COMPARTMENT);
    Node exitNode = ViewService.createNode(exitPointRegionCompartment, exitPoint, SemanticHints.EXIT, preferencesHint);
    // re-wire existing transition to new exit point
    Vertex oldTransitionTarget = transition.getTarget();
    transition.setTarget(exitPoint);
    View oldEdgeTarget = edge.getTarget();
    edge.setTarget(exitNode);
    // create transition from selected state to former transition target
    Transition exitPointTransition = SGraphFactory.eINSTANCE.createTransition();
    exitPointTransition.setSource((State) subdiagram.getElement());
    exitPointTransition.setTarget(oldTransitionTarget);
    ViewService.createEdge(getContextObject(), oldEdgeTarget, exitPointTransition, SemanticHints.TRANSITION, preferencesHint);
    addExitPointSpec(exitPointTransition, exitPoint);
}
Also used : Vertex(org.yakindu.sct.model.sgraph.Vertex) Node(org.eclipse.gmf.runtime.notation.Node) Transition(org.yakindu.sct.model.sgraph.Transition) Region(org.yakindu.sct.model.sgraph.Region) View(org.eclipse.gmf.runtime.notation.View) Exit(org.yakindu.sct.model.sgraph.Exit)

Example 12 with Vertex

use of org.yakindu.sct.model.sgraph.Vertex in project statecharts by Yakindu.

the class GroupStatesIntoCompositeRefactoring method makeNameUnique.

protected void makeNameUnique(StringBuilder nameBuilder) {
    int index = 2;
    List<String> existingStateNames = Lists.newArrayList();
    EList<Vertex> vertices = getParentRegion().getVertices();
    for (Vertex vertex : vertices) {
        existingStateNames.add(vertex.getName());
    }
    while (existingStateNames.contains(nameBuilder.toString())) {
        nameBuilder.append(index++);
    }
}
Also used : Vertex(org.yakindu.sct.model.sgraph.Vertex) PreferencesHint(org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint)

Example 13 with Vertex

use of org.yakindu.sct.model.sgraph.Vertex in project statecharts by Yakindu.

the class TransitionImpl method basicSetTarget.

/**
 * <!-- begin-user-doc -->
 * <!-- end-user-doc -->
 * @generated
 */
public NotificationChain basicSetTarget(Vertex newTarget, NotificationChain msgs) {
    Vertex oldTarget = target;
    target = newTarget;
    if (eNotificationRequired()) {
        ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SGraphPackage.TRANSITION__TARGET, oldTarget, newTarget);
        if (msgs == null)
            msgs = notification;
        else
            msgs.add(notification);
    }
    return msgs;
}
Also used : Vertex(org.yakindu.sct.model.sgraph.Vertex) ENotificationImpl(org.eclipse.emf.ecore.impl.ENotificationImpl)

Example 14 with Vertex

use of org.yakindu.sct.model.sgraph.Vertex in project statecharts by Yakindu.

the class SGraphJavaValidator method vertexNotReachable.

@Check(CheckType.FAST)
public void vertexNotReachable(final Vertex vertex) {
    if (!(vertex instanceof Entry)) {
        final Set<Object> stateScopeSet = new HashSet<>();
        for (EObject obj : EcoreUtil2.eAllContents(vertex)) {
            stateScopeSet.add(obj);
        }
        stateScopeSet.add(vertex);
        final List<Object> externalPredecessors = new ArrayList<>();
        DFS dfs = new DFS() {

            @Override
            public Iterator<Object> getElementLinks(Object element) {
                List<Object> elements = new ArrayList<>();
                if (element instanceof org.yakindu.sct.model.sgraph.State) {
                    if (!stateScopeSet.contains(element)) {
                        externalPredecessors.add(element);
                    } else {
                        elements.addAll(((org.yakindu.sct.model.sgraph.State) element).getRegions());
                        elements.addAll(((org.yakindu.sct.model.sgraph.State) element).getIncomingTransitions());
                    }
                } else if (element instanceof Region) {
                    elements.addAll(((Region) element).getVertices());
                } else if (element instanceof Entry) {
                    if (!stateScopeSet.contains(element)) {
                        externalPredecessors.add(element);
                    } else {
                        elements.addAll(((Entry) element).getIncomingTransitions());
                    }
                } else if (element instanceof Vertex) {
                    elements.addAll(((Vertex) element).getIncomingTransitions());
                } else if (element instanceof Transition) {
                    elements.add(((Transition) element).getSource());
                }
                return elements.iterator();
            }
        };
        dfs.perform(vertex);
        if (externalPredecessors.size() == 0) {
            error(ISSUE_NODE_NOT_REACHABLE, vertex, null, -1);
        }
    }
}
Also used : Vertex(org.yakindu.sct.model.sgraph.Vertex) ArrayList(java.util.ArrayList) Entry(org.yakindu.sct.model.sgraph.Entry) FinalState(org.yakindu.sct.model.sgraph.FinalState) EObject(org.eclipse.emf.ecore.EObject) Transition(org.yakindu.sct.model.sgraph.Transition) Region(org.yakindu.sct.model.sgraph.Region) EObject(org.eclipse.emf.ecore.EObject) HashSet(java.util.HashSet) Check(org.eclipse.xtext.validation.Check)

Aggregations

Vertex (org.yakindu.sct.model.sgraph.Vertex)14 Transition (org.yakindu.sct.model.sgraph.Transition)7 Region (org.yakindu.sct.model.sgraph.Region)6 ArrayList (java.util.ArrayList)4 Check (org.eclipse.xtext.validation.Check)4 EObject (org.eclipse.emf.ecore.EObject)3 Entry (org.yakindu.sct.model.sgraph.Entry)3 HashSet (java.util.HashSet)2 Exit (org.yakindu.sct.model.sgraph.Exit)2 FinalState (org.yakindu.sct.model.sgraph.FinalState)2 Predicate (com.google.common.base.Predicate)1 List (java.util.List)1 ENotificationImpl (org.eclipse.emf.ecore.impl.ENotificationImpl)1 CompositeCommand (org.eclipse.gmf.runtime.common.core.command.CompositeCommand)1 PreferencesHint (org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint)1 DestroyElementCommand (org.eclipse.gmf.runtime.emf.type.core.commands.DestroyElementCommand)1 CreateElementRequest (org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest)1 DestroyElementRequest (org.eclipse.gmf.runtime.emf.type.core.requests.DestroyElementRequest)1 Node (org.eclipse.gmf.runtime.notation.Node)1 View (org.eclipse.gmf.runtime.notation.View)1