// 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: SelectionBox.java // Classes: SelectionBox // Original Author: jrobbins@ics.uci.edu // $Id: SelectionBox.java,v 1.10 1997/06/10 23:43:30 jrobbins Exp $ package uci.graphedit; import java.util.*; import java.awt.*; /** Selection object for DiagramElement's that do not have handles. A * colorded rectangular frame is drawn just outside the bounding box * of the DiagramElement. The box has things that look like handles on * its four corners so that it looks more like a selection and less * like the highlighting used by Argo. However, these fake handles * cannot be dragged to resize the DiagramElement. * * FEATURE: selections_box * * @see FigText * @see Perspective */ public class SelectionBox extends SelectionSingle { /** The margin between the contents bbox and the frame */ public static final int BORDER_WIDTH = 4; /** Height and width in pixels of (square) rectangles used for handle */ public static final int HAND_SIZE = 6; /** Construct a new SelectionBox around the given DiagramElement */ public SelectionBox(DiagramElement de) { super(de); } /** Draw the selection. */ public void draw(Graphics g) { Rectangle bb = _content.getBoundingBox(); g.setColor(Globals.prefs().handleColor(_content)); g.drawRect(bb.x - BORDER_WIDTH, bb.y - BORDER_WIDTH, bb.width + BORDER_WIDTH * 2 - 1, bb.height + BORDER_WIDTH * 2 - 1); g.drawRect(bb.x - BORDER_WIDTH - 1, bb.y - BORDER_WIDTH - 1, bb.width + BORDER_WIDTH * 2 + 2 - 1, bb.height + BORDER_WIDTH * 2 + 2 - 1); g.fillRect(bb.x - HAND_SIZE, bb.y - HAND_SIZE, HAND_SIZE, HAND_SIZE); g.fillRect(bb.x + bb.width, bb.y - HAND_SIZE, HAND_SIZE, HAND_SIZE); g.fillRect(bb.x - HAND_SIZE, bb.y + bb.height, HAND_SIZE, HAND_SIZE); g.fillRect(bb.x + bb.width, bb.y + bb.height, HAND_SIZE, HAND_SIZE); } /** SelectionBox is used when there are no handles, so dragHandle * does nothing. Actually, pickHandle always returns -1 , so this * method should never even get called. */ public void dragHandle(int mx, int my, int an_x,int an_y, Handle h) { /* do nothing */ } /** The bounding box of the SelectionBox is the contents bbox plus a * border on all sides */ public Rectangle getBoundingBox() { Rectangle r = _content.getBoundingBox(); return r; } } /* end class SelectionBox */