/* * ImageBorder.java * * Created on January 15, 2007, 6:54 AM * * Copyright 2006-2007 Nigel Hughes * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at http://www.apache.org/ * licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ package org.pushingpixels.lafwidget.contrib.blogofbug.swing.borders; import java.awt.*; import java.awt.image.BufferedImage; import java.net.URL; import javax.swing.border.AbstractBorder; /** * ImageBorder takes an image and breaks out the corners and the top, left, right, and bottom * borders stretching them to fill the space around which the border is drawn * @author nigel */ public class ImageBorder extends AbstractBorder{ protected AbstractImageBorder borderRenderer; boolean paintBorder = true; /** * Creates a new ImageBorder using the supplied image and the insets * * @param borderImage The image to be used as the border * @param imageInsets The insets around the edge of the image that allow the cookie-cut-and-stretch of the image * around the edge of the border */ public ImageBorder(BufferedImage borderImage, Insets imageInsets) { borderRenderer= new AbstractImageBorder(borderImage, imageInsets); } /** * Creates a new ImageBofder loading the image from the supplied URL * @param imageURL The location of the image to use * @param imageInsets The insets around the edge of the image that allow the cookie-cut-and-stretch of the image * around the edge of the border */ public ImageBorder(URL imageURL, Insets imageInsets){ borderRenderer = new AbstractImageBorder(imageURL,imageInsets); } /** * Paints the border around the specified component * * @param c The component to paint the border on * @param g The graphics context * @param x The x offset * @param y The y offset * @param width The width * @param height The height */ public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) { if (!paintBorder){ return; } borderRenderer.paintBorder(c.getWidth(),c.getHeight(),g,x,y,width,height); } /** * Controls wether or not the border is actually painted or not. * * @param paintBorder If false then will not draw the border. Useful if the border is being used to show a selected item */ public void setPaintBorder(boolean paintBorder){ this.paintBorder = paintBorder; } /** * Gets the insets of the image back (subtracting from the component size would give you the renderable * area * * @param c The component to which the border will be applied * @return The insets of the border */ public Insets getBorderInsets(Component c) { return borderRenderer.getImageInsets(); } /** * Gets the insets of the image and returns in the in the supplied Insets instance * * @param c The component to which the border will be applied * @param i A pre-created insets object * @return The insets of the border */ public Insets getBorderInsets(Component c, Insets i){ Insets imageInsets = borderRenderer.getImageInsets(); i.top = imageInsets.top; i.bottom = imageInsets.bottom; i.left = imageInsets.left; i.right = imageInsets.right; return i; } public void paintCenter(Graphics2D g2, Component c) { if (paintBorder){ borderRenderer.paintCenter(g2,c.getWidth(),c.getHeight()); } } }