package org.archstudio.bna.logics.editing; import org.archstudio.bna.IBNAView; import org.archstudio.bna.IBNAWorld; import org.archstudio.bna.ICoordinate; import org.archstudio.bna.facets.IHasFlow; import org.archstudio.bna.facets.IHasMutableFlow; import org.archstudio.bna.logics.AbstractThingLogic; import org.archstudio.bna.ui.IBNAMenuListener2; import org.archstudio.bna.utils.Assemblies; import org.archstudio.bna.utils.BNAAction; import org.archstudio.bna.utils.BNAUtils; import org.archstudio.bna.utils.BNAUtils2.ThingsAtLocation; import org.archstudio.swtutils.constants.Flow; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; public class EditFlowLogic extends AbstractThingLogic implements IBNAMenuListener2 { public EditFlowLogic(IBNAWorld world) { super(world); } @Override public void fillMenu(IBNAView view, ICoordinate location, ThingsAtLocation thingsAtLocation, IMenuManager menu) { BNAUtils.checkLock(); if (thingsAtLocation.getThingAtLocation() != null) { final IHasFlow editThing = Assemblies.getEditableThing(model, thingsAtLocation.getThing(), IHasFlow.class, IHasMutableFlow.USER_MAY_EDIT_FLOW); if (editThing != null) { MenuManager editDirectionMenu = new MenuManager("Edit Direction..."); for (final Flow f : Flow.values()) { editDirectionMenu.add(new BNAAction(f.toString()) { @Override public void runWithLock() { BNAOperations.set("Direction", model, editThing, IHasFlow.FLOW_KEY, f); } }); } menu.add(editDirectionMenu); } } } }