// Copyright (c) 2006 - 2008, Markus Strauch. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * 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. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF // THE POSSIBILITY OF SUCH DAMAGE. package net.sf.sdedit.ui.components; import java.awt.Graphics; import javax.swing.JComponent; /** * A <tt>Zoomable</tt> object is an instance of a subclass of * <tt>JComponent</tt> that has a public <tt>paintComponent(Graphics)</tt> * method. According to the zoom factor set by the {@linkplain ZoomPane} * belonging to this <tt>Zoomable</tt>, the graphics is scaled before we * paint on it. * * @author Markus Strauch * @param <T> * the subtype of <tt>JComponent</tt> that the implementing class * extends */ public interface Zoomable<T extends JComponent> { /** * A <tt>JComponent#paintComponent(Graphics)</tt>, made public. * * @param g */ public void paintComponent(Graphics g); /** * Returns a JComponent reference to this Zoomable. * * @return a JComponent reference to this Zoomable */ public T asJComponent(); /** * Returns the absolute, unscaled width. * * @return the absolute, unscaled width */ public int getAbsoluteWidth(); /** * Returns the absolute, unscaled height * * @return the absolute, unscaled height */ public int getAbsoluteHeight(); /** * Sets the <tt>ZoomPane</tt> that is used to display this * <tt>Zoomable</tt>. * * @param zoomPane * the <tt>ZoomPane</tt> that is used to display this * <tt>Zoomable</tt> */ public void setZoomPane(ZoomPane zoomPane); /** * Returns the <tt>ZoomPane</tt> that is used to display this * <tt>Zoomable</tt>. * * @return the <tt>ZoomPane</tt> that is used to display this * <tt>Zoomable</tt> */ public ZoomPane getZoomPane(); }