package org.archstudio.archipelago2.ext.statecharts.outline; import java.util.List; import org.archstudio.archipelago2.AbstractArchipelago2MenuContributor; import org.archstudio.archipelago2.Archipelago2Utils; import org.archstudio.archipelago2.IArchipelago2MenuContributor; import org.archstudio.archipelago2.IArchipelago2Outline; import org.archstudio.archipelago2.ext.statecharts.utils.MenuContributor; import org.archstudio.xadl.XadlUtils; import org.archstudio.xadl3.statechart_1_0.Statechart_1_0Package; import org.archstudio.xarchadt.ObjRef; import org.eclipse.jface.action.IMenuManager; public class StatechartsMenuContributor extends AbstractArchipelago2MenuContributor implements IArchipelago2MenuContributor { @Override public void fillMenu(IArchipelago2Outline outline, List<Object> element, IMenuManager menuManager) { final ObjRef xAdlRef = (ObjRef) xarch.get(docRef, "xADL"); final ObjRef editRef = Archipelago2Utils.getLastObjRef(element); if (Archipelago2Utils.pathEndsWith(element, xAdlRef, "Statecharts")) { MenuContributor.addNewStatechartAction(menuManager, xarch, xAdlRef, outline, element); } if (XadlUtils.isInstanceOf(xarch, editRef, Statechart_1_0Package.Literals.STATECHART)) { MenuContributor.addNewInitialStateAction(menuManager, xarch, editRef, outline, element); MenuContributor.addNewFinalStateAction(menuManager, xarch, editRef, outline, element); MenuContributor.addNewStateAction(menuManager, xarch, editRef, outline, element); MenuContributor.addNewTransitionAction(menuManager, xarch, editRef, outline, element); } if (XadlUtils.isInstanceOf(xarch, editRef, Statechart_1_0Package.Literals.STATE)) { MenuContributor.addClearSubStatechartAction(menuManager, xarch, editRef); } } }