Java tutorial
/* * JFreeChart : a free chart library for the Java(tm) platform * * * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors. * * Project Info: http://www.jfree.org/jfreechart/index.html * * This library is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 of the License, or * (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public * License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, * USA. * * [Java is a trademark or registered trademark of Sun Microsystems, Inc. * in the United States and other countries.] * * ------------- * SWTUtils.java * ------------- * (C) Copyright 2006, 2007, by Henry Proudhon and Contributors. * * Original Author: Henry Proudhon (henry.proudhon AT ensmp.fr); * Contributor(s): Rainer Blessing; * David Gilbert (david.gilbert@object-refinery.com); * Christoph Beck. * * Changes * ------- * 01-Aug-2006 : New class (HP); * 16-Jan-2007 : Use FontData.getHeight() instead of direct field access (RB); * 31-Jan-2007 : Moved the dummy JPanel from SWTGraphics2D.java, * added a new convert method for mouse events (HP); * 12-Jul-2007 : Improved the mouse event conversion with buttons * and modifiers handling, patch sent by Christoph Beck (HP); * 27-Aug-2007 : Modified toAwtMouseEvent signature (HP); * 27-Nov-2007 : Moved convertToSWT() method from SWTGraphics2D and added * convertAWTImageToSWT() (DG); * 01-Jul-2008 : Simplify AWT/SWT font style conversions (HP); * */ import java.awt.Graphics; import java.awt.Image; import java.awt.event.InputEvent; import java.awt.event.MouseEvent; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.awt.image.DirectColorModel; import java.awt.image.IndexColorModel; import java.awt.image.WritableRaster; import javax.swing.JPanel; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Device; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.graphics.PaletteData; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.graphics.Rectangle; /** * Utility class gathering some useful and general method. * Mainly convert forth and back graphical stuff between * awt and swt. */ public class SWTUtils { private final static String Az = "ABCpqr"; /** A dummy JPanel used to provide font metrics. */ protected static final JPanel DUMMY_PANEL = new JPanel(); /** * Create an awt font by converting as much information * as possible from the provided swt <code>Font</code>. * * @param device The swt device to draw on (display or gc device). * @param font The swt font to convert. * @return An awt font converted from the provided swt font. */ public static java.awt.Font toAwtFont(Device device, Font font) { FontData fontData = font.getFontData()[0]; return toAwtFont(device, fontData, true); } /** * Creates an awt color instance to match the rgb values * of the specified swt color. * * @param color The swt color to match. * @return an awt color abject. */ public static java.awt.Color toAwtColor(Color color) { return new java.awt.Color(color.getRed(), color.getGreen(), color.getBlue()); } /** * Creates a swt color instance to match the rgb values * of the specified awt paint. For now, this method test * if the paint is a color and then return the adequate * swt color. Otherwise plain black is assumed. * * @param device The swt device to draw on (display or gc device). * @param paint The awt color to match. * @return a swt color object. */ public static Color toSwtColor(Device device, java.awt.Paint paint) { java.awt.Color color; if (paint instanceof java.awt.Color) { color = (java.awt.Color) paint; } else { try { throw new Exception( "only color is supported at present... " + "setting paint to uniform black color"); } catch (Exception e) { e.printStackTrace(); color = new java.awt.Color(0, 0, 0); } } return new org.eclipse.swt.graphics.Color(device, color.getRed(), color.getGreen(), color.getBlue()); } }