// 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: ModeCreateFigImage.java // Classes: ModeCreateFigImage // Original Author: jrobbins@ics.uci.edu // $Id: ModeCreateFigImage.java,v 1.7 1997/06/10 23:43:06 jrobbins Exp $ package uci.graphedit; import java.awt.*; /** A Mode to interpert user input while creating a FigImage. All of * the actual event handling is inherited from ModeCreate. This class * just implements the differences needed to make it specific to * rectangles. * * FEATURE: basic_shapes_image */ public class ModeCreateFigImage extends ModeCreate { //////////////////////////////////////////////////////////////// // instance variables /** The image to be placed. */ protected Image _image; //////////////////////////////////////////////////////////////// // accessors /** get and set the image to be used for the new FigImage. */ public Image image() { return _image; } public void image(Image i) { _image = i; } //////////////////////////////////////////////////////////////// // Mode API public String instructions() { return "Click to place an image"; } //////////////////////////////////////////////////////////////// // ModeCreate API /** Create a new FigImage instance based on the given mouse down * event and the state of the parent Editor. */ public DiagramElement createNewItem(Event e, int snapX, int snapY) { if (null == _image) { String dURL = "http://www.ics.uci.edu/~jrobbins/banners/gef_banner.gif"; String urlString = _args.getProperty("imageURL", dURL); _image = Globals.getImage(urlString); Globals.waitForImages(); } return new FigImage(snapX, snapY, _image, parent.graphAttrs()); } //////////////////////////////////////////////////////////////// // event handlers /** When the mouse enters an Editor, create the FigImage and place * it at the mouse position. */ public boolean mouseEnter(Event e, int x, int y) { start(); anchorX = x; anchorY = y; Point snapPt = new Point(x, y); parent.snap(snapPt); if (null == newItem) newItem = createNewItem(e, snapPt.x, snapPt.y); return true; } /** When the mouse exits the editor, clean up the display a little. */ public boolean mouseExit(Event e, int x, int y) { parent.damaged(newItem); return true; } /** On mouse down, do nothing. */ public boolean mouseDown(Event e, int x, int y) { return true; } /** Whem the user drags or moves the mouse, move the FigImage to the * current mouse position. */ public boolean mouseMove(Event evt,int x,int y) { if (newItem == null) {System.out.println("null newItem"); return true; } parent.damaged(newItem); Point snapPt = new Point(x, y); parent.snap(snapPt); newItem.position(snapPt.x, snapPt.y); parent.damaged(newItem); /* needed? */ return true; } /** Exactly the same as mouseMove. */ public boolean mouseDrag(Event e, int x, int y) { return mouseMove(e, x, y); } } /* end class ModeCreateFigImage */