package org.archstudio.bna.logics.editing; import org.archstudio.bna.IBNAModel; 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.BNAAction; import org.archstudio.bna.utils.BNAUtils; import org.archstudio.bna.utils.BNAUtils2.ThingsAtLocation; import org.archstudio.bna.utils.GridUtils; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.Separator; import org.eclipse.ui.IWorkbenchActionConstants; public class RectifyToGridLogic extends AbstractThingLogic implements IBNAMenuListener2 { public RectifyToGridLogic(IBNAWorld world) { super(world); } @Override public void fillMenu(IBNAView view, ICoordinate location, ThingsAtLocation thingsAtLocation, IMenuManager menuManager) { BNAUtils.checkLock(); if (thingsAtLocation.getThing() == null) { final IBNAModel model = view.getBNAWorld().getBNAModel(); if (GridUtils.getGridSpacing(world) != 0) { IAction rectifyAction = new BNAAction("Rectify Diagram to Grid") { @Override public void runWithLock() { Runnable undoRunnable = BNAOperations.takeSnapshotOfLocations(model, model.getAllThings()); GridUtils.rectifyToGrid(world); BNAOperations.runnable("Rectify", undoRunnable, BNAOperations.takeSnapshotOfLocations(model, model.getAllThings()), false); } }; menuManager.add(rectifyAction); menuManager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); } } } }