// Copyright (c) 1996-98 The Regents of the University of California. All // Rights Reserved. Permission to use, copy, modify, and distribute this // software and its documentation for educational, research and non-profit // purposes, without fee, and without a written agreement is hereby granted, // provided that the above copyright notice and this paragraph appear in all // copies. Permission to incorporate this software into commercial products may // be obtained by contacting the University of California. David F. Redmiles // Department of Information and Computer Science (ICS) University of // California Irvine, California 92697-3425 Phone: 714-824-3823. This software // program and documentation are copyrighted by The Regents of the University // of California. The software program and documentation are supplied "as is", // without any accompanying services from The Regents. The Regents do not // warrant that the operation of the program will be uninterrupted or // error-free. The end-user understands that the program was developed for // research purposes and is advised not to rely exclusively on the program for // any reason. IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY // PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, // INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS // DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY // DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE // SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF // CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, // ENHANCEMENTS, OR MODIFICATIONS. // File: ActionNudge.java // Classes: ActionNudge // Original Author: jrobbins@ics.uci.edu // $Id: ActionNudge.java,v 1.6 1997/06/10 23:42:14 jrobbins Exp $ package uci.graphedit; import java.awt.Event; /** Action to Nudge DiagramElements by a small distance. This is * useful when you want to get diagrams to look just right and you * are not to steady with the mouse. Also allows user to keep hands * on keyboard. * * FEATURE: nudge_objects * * @see DiagramElement */ public class ActionNudge extends Action { //////////////////////////////////////////////////////////////// // constants public static final int LEFT = 1; public static final int RIGHT = 2; public static final int UP = 3; public static final int DOWN = 4; //////////////////////////////////////////////////////////////// // instance variables private int _direction; private int _magnitude; //////////////////////////////////////////////////////////////// // constructor public ActionNudge(int dir) { _direction = dir; _magnitude = 1; // Needs-More-Work: prefs } //////////////////////////////////////////////////////////////// // Action API public String name() { return "Nudge DiagramElement's by a pixel"; } /** Move the selected items a few pixels in the given * direction. Note that the sign convention is the opposite of * ActionScroll. */ public void doIt(Event e) { Editor ce = Globals.curEditor(); Selection sel = ce.selection(); if (sel.locked()) { Globals.showStatus("Cannot Modify Locked Objects"); return; } int dx = 0, dy = 0; switch (_direction) { case LEFT: dx = 0 - _magnitude; break; case RIGHT: dx = _magnitude; break; case UP: dy = 0 - _magnitude; break; case DOWN: dy = _magnitude; break; } // Should I move it so that it aligns with the next grid? if (e.shiftDown()) { dx *= ce.gridSize(); dy *= ce.gridSize(); } sel.startTrans(); sel.translate(dx, dy); sel.endTrans(); } public void undoIt() { System.out.println("Cannot undo ActionNudge, yet."); } } /* end class ActionNudge */