package org.archstudio.archipelago2.ext.statecharts.logics;
import org.archstudio.archipelago2.ext.statecharts.utils.MenuContributor;
import org.archstudio.bna.IBNAView;
import org.archstudio.bna.IBNAWorld;
import org.archstudio.bna.ICoordinate;
import org.archstudio.bna.logics.AbstractThingLogic;
import org.archstudio.bna.ui.IBNAMenuListener2;
import org.archstudio.bna.utils.BNAUtils2;
import org.archstudio.bna.utils.BNAUtils2.ThingsAtLocation;
import org.archstudio.xarchadt.IXArchADT;
import org.archstudio.xarchadt.ObjRef;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.swt.graphics.Point;
public class NewElementLogic extends AbstractThingLogic implements IBNAMenuListener2 {
protected final IXArchADT xarch;
protected final ObjRef editRef;
public NewElementLogic(IBNAWorld world, IXArchADT xarch, ObjRef editRef) {
super(world);
this.xarch = xarch;
this.editRef = editRef;
}
@Override
public void fillMenu(IBNAView view, ICoordinate location, ThingsAtLocation thingsAtLocation,
IMenuManager menuManager) {
Point worldPoint = location.getWorldPoint();
BNAUtils2.setNewThingSpot(view.getBNAWorld(), worldPoint.x, worldPoint.y);
if (thingsAtLocation.getViewAtLocation() != null) {
MenuContributor.addNewInitialStateAction(menuManager, xarch, editRef, null, null);
MenuContributor.addNewFinalStateAction(menuManager, xarch, editRef, null, null);
MenuContributor.addNewStateAction(menuManager, xarch, editRef, null, null);
MenuContributor.addNewTransitionAction(menuManager, xarch, editRef, null, null);
}
}
}