1 /* 2 * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 package sun.swing.plaf.synth; 26 27 import javax.swing.plaf.synth.*; 28 import java.awt.*; 29 import javax.swing.*; 30 import javax.swing.border.Border; 31 import javax.swing.plaf.UIResource; 32 33 /** 34 * An icon that is passed a SynthContext. Subclasses need only implement 35 * the variants that take a SynthContext, but must be prepared for the 36 * SynthContext to be null. 37 * 38 * @author Scott Violet 39 */ 40 public abstract class SynthIcon implements Icon { 41 public static int getIconWidth(Icon icon, SynthContext context) { 42 if (icon == null) { 43 return 0; 44 } 45 if (icon instanceof SynthIcon) { 46 return ((SynthIcon)icon).getIconWidth(context); 47 } 48 return icon.getIconWidth(); 49 } 50 51 public static int getIconHeight(Icon icon, SynthContext context) { 52 if (icon == null) { 53 return 0; 54 } 55 if (icon instanceof SynthIcon) { 56 return ((SynthIcon)icon).getIconHeight(context); 57 } 58 return icon.getIconHeight(); 59 } 60 61 public static void paintIcon(Icon icon, SynthContext context, Graphics g, 62 int x, int y, int w, int h) { 63 if (icon instanceof SynthIcon) { 64 ((SynthIcon)icon).paintIcon(context, g, x, y, w, h); 65 } 66 else if (icon != null) { 67 icon.paintIcon(context.getComponent(), g, x, y); 68 } 69 } 70 71 /** 72 * Paints the icon at the specified location. 73 * 74 * @param context Identifies hosting region, may be null. 75 * @param x x location to paint to 76 * @param y y location to paint to 77 * @param w Width of the region to paint to, may be 0 78 * @param h Height of the region to paint to, may be 0 79 */ 80 public abstract void paintIcon(SynthContext context, Graphics g, int x, 81 int y, int w, int h); 82 83 /** 84 * Returns the desired width of the Icon. 85 * 86 * @param context SynthContext requesting the Icon, may be null. 87 * @return Desired width of the icon. 88 */ 89 public abstract int getIconWidth(SynthContext context); 90 91 /** 92 * Returns the desired height of the Icon. 93 * 94 * @param context SynthContext requesting the Icon, may be null. 95 * @return Desired height of the icon. 96 */ 97 public abstract int getIconHeight(SynthContext context); 98 99 /** 100 * Paints the icon. This is a cover method for 101 * <code>paintIcon(null, g, x, y, 0, 0)</code> 102 */ 103 public void paintIcon(Component c, Graphics g, int x, int y) { 104 paintIcon(null, g, x, y, 0, 0); 105 } 106 107 /** 108 * Returns the icon's width. This is a cover methods for 109 * <code>getIconWidth(null)</code>. 110 * 111 * @return an int specifying the fixed width of the icon. 112 */ 113 public int getIconWidth() { 114 return getIconWidth(null); 115 } 116 117 /** 118 * Returns the icon's height. This is a cover method for 119 * <code>getIconHeight(null)</code>. 120 * 121 * @return an int specifying the fixed height of the icon. 122 */ 123 public int getIconHeight() { 124 return getIconHeight(null); 125 } 126 }