001: /*
002: * Copyright (c) 2005, romain guy (romain.guy@jext.org) and craig wickesser (craig@codecraig.com)
003: * All rights reserved.
004: *
005: * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
006: *
007: * * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
008: * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
009: * * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
010: *
011: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
012: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
013: * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
014: * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
015: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
016: * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
017: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
018: * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
019: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
020: * POSSIBILITY OF SUCH DAMAGE.
021: */
022:
023: package net.java.swingfx.rubberband.rubberbands;
024:
025: import java.awt.Graphics;
026: import java.awt.Rectangle;
027: import java.util.EventObject;
028:
029: import net.java.swingfx.rubberband.canvas.RubberBandCanvas;
030:
031: /**
032: * Defines the required functionality for creating a rubber band
033: *
034: * @author rwickesser
035: * @since 1.0
036: * $Revision: 1.1 $
037: */
038: public interface RubberBand {
039:
040: /**
041: * Enforces that the mouse listeners are added to the canvas
042: */
043: public void addMouseListeners();
044:
045: /**
046: * Draws the rubber band on the given <code>Graphics</code> object
047: *
048: * @param g the <code>Graphics</code> object to draw the rubber band on
049: */
050: public void draw(Graphics g);
051:
052: /**
053: * Returns an integer <code>Rectangle</code> which contains the
054: * size and location of this rubber band
055: *
056: * @return an integer <code>Rectangle</code> which contains the size and
057: * location of this rubber band
058: */
059: public Rectangle getBounds();
060:
061: /**
062: * Sets the canvas which the rubber band will be drawn onto
063: *
064: * @param canvas the canvas which the rubber band will be drawn onto
065: */
066: public void setCanvas(RubberBandCanvas canvas);
067:
068: /**
069: * Updates the parameters of the rubber band
070: *
071: * @param x the x coordinate
072: * @param y the y coordinate
073: * @param width the width of the rubber band
074: * @param height the height of the rubber band
075: */
076: public void update(int x, int y, int width, int height);
077:
078: /**
079: * Called when the rubber band is first created, typically on a mouse pressed
080: * event
081: *
082: * @param event the event that started the rubber band
083: */
084: public void startRubberBand(EventObject event);
085:
086: /**
087: * Called when the rubber band is done being created, typically on a mouse released
088: * event
089: *
090: * @param event the event that stopped the rubber band
091: */
092: public void stopRubberBand(EventObject event);
093:
094: /**
095: * Called when the rubber band is being updated, typically on a mouse dragged
096: * event
097: *
098: * @param event the event that started the rubber band
099: */
100: public void updateRubberBand(EventObject event);
101: }
|