Frames | No Frames |
1: /* Copyright (C) 1999, 2000, 2002 Free Software Foundation 2: 3: This file is part of GNU Classpath. 4: 5: GNU Classpath is free software; you can redistribute it and/or modify 6: it under the terms of the GNU General Public License as published by 7: the Free Software Foundation; either version 2, or (at your option) 8: any later version. 9: 10: GNU Classpath is distributed in the hope that it will be useful, but 11: WITHOUT ANY WARRANTY; without even the implied warranty of 12: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13: General Public License for more details. 14: 15: You should have received a copy of the GNU General Public License 16: along with GNU Classpath; see the file COPYING. If not, write to the 17: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 18: 02110-1301 USA. 19: 20: Linking this library statically or dynamically with other modules is 21: making a combined work based on this library. Thus, the terms and 22: conditions of the GNU General Public License cover the whole 23: combination. 24: 25: As a special exception, the copyright holders of this library give you 26: permission to link this library with independent modules to produce an 27: executable, regardless of the license terms of these independent 28: modules, and to copy and distribute the resulting executable under 29: terms of your choice, provided that you also meet, for each linked 30: independent module, the terms and conditions of the license of that 31: module. An independent module is a module which is not derived from 32: or based on this library. If you modify this library, you may extend 33: this exception to your version of the library, but you are not 34: obligated to do so. If you do not wish to do so, delete this 35: exception statement from your version. */ 36: 37: 38: package java.awt; 39: 40: /** 41: * This class represents various predefined cursor types. 42: * 43: * @author Aaron M. Renn (arenn@urbanophile.com) 44: */ 45: public class Cursor implements java.io.Serializable 46: { 47: static final long serialVersionUID = 8028237497568985504L; 48: 49: /** 50: * Constant for the system default cursor type 51: */ 52: public static final int DEFAULT_CURSOR = 0; 53: 54: /** 55: * Constant for a cross-hair cursor. 56: */ 57: public static final int CROSSHAIR_CURSOR = 1; 58: 59: /** 60: * Constant for a cursor over a text field. 61: */ 62: public static final int TEXT_CURSOR = 2; 63: 64: /** 65: * Constant for a cursor to display while waiting for an action to complete. 66: */ 67: public static final int WAIT_CURSOR = 3; 68: 69: /** 70: * Cursor used over SW corner of window decorations. 71: */ 72: public static final int SW_RESIZE_CURSOR = 4; 73: 74: /** 75: * Cursor used over SE corner of window decorations. 76: */ 77: public static final int SE_RESIZE_CURSOR = 5; 78: 79: /** 80: * Cursor used over NW corner of window decorations. 81: */ 82: public static final int NW_RESIZE_CURSOR = 6; 83: 84: /** 85: * Cursor used over NE corner of window decorations. 86: */ 87: public static final int NE_RESIZE_CURSOR = 7; 88: 89: /** 90: * Cursor used over N edge of window decorations. 91: */ 92: public static final int N_RESIZE_CURSOR = 8; 93: 94: /** 95: * Cursor used over S edge of window decorations. 96: */ 97: public static final int S_RESIZE_CURSOR = 9; 98: 99: /** 100: * Cursor used over W edge of window decorations. 101: */ 102: public static final int W_RESIZE_CURSOR = 10; 103: 104: /** 105: * Cursor used over E edge of window decorations. 106: */ 107: public static final int E_RESIZE_CURSOR = 11; 108: 109: /** 110: * Constant for a hand cursor. 111: */ 112: public static final int HAND_CURSOR = 12; 113: 114: /** 115: * Constant for a cursor used during window move operations. 116: */ 117: public static final int MOVE_CURSOR = 13; 118: 119: private static String[] NAMES = { "Default Cursor", "Crosshair Cursor", 120: "Text Cursor", "Wait Cursor", 121: "Southwest Resize Cursor", 122: "Southeast Resize Cursor", 123: "Northwest Resize Cursor", 124: "Northeast Resize Cursor", 125: "North Resize Cursor", "South Resize Cursor", 126: "West Resize Cursor", "East Resize Cursor", 127: "Hand Cursor", "Move Cursor" }; 128: 129: public static final int CUSTOM_CURSOR = 0xFFFFFFFF; 130: 131: private static final int PREDEFINED_COUNT = 14; 132: 133: protected static Cursor[] predefined = new Cursor[PREDEFINED_COUNT]; 134: protected String name; 135: 136: /** 137: * @serial The numeric id of this cursor. 138: */ 139: int type; 140: 141: /** 142: * Initializes a new instance of <code>Cursor</code> with the specified 143: * type. 144: * 145: * @param type The cursor type. 146: * 147: * @exception IllegalArgumentException If the specified cursor type is invalid 148: */ 149: public Cursor(int type) 150: { 151: if (type < 0 || type >= PREDEFINED_COUNT) 152: throw new IllegalArgumentException ("invalid cursor " + type); 153: 154: this.type = type; 155: 156: name = NAMES[type]; 157: 158: // FIXME: lookup? 159: } 160: 161: /** This constructor is used internally only. 162: * Application code should call Toolkit.createCustomCursor(). 163: */ 164: protected Cursor(String name) 165: { 166: this.name = name; 167: this.type = CUSTOM_CURSOR; 168: } 169: 170: /** 171: * Returns an instance of <code>Cursor</code> for one of the specified 172: * predetermined types. 173: * 174: * @param type The type contant from this class. 175: * 176: * @return The requested predefined cursor. 177: * 178: * @exception IllegalArgumentException If the constant is not one of the 179: * predefined cursor type constants from this class. 180: */ 181: public static Cursor getPredefinedCursor(int type) 182: { 183: if (type < 0 || type >= PREDEFINED_COUNT) 184: throw new IllegalArgumentException ("invalid cursor " + type); 185: if (predefined[type] == null) 186: predefined[type] = new Cursor(type); 187: return predefined[type]; 188: } 189: 190: /** 191: * Retrieves the system specific custom Cursor named Cursor names are, 192: * for example: "Invalid.16x16". 193: * 194: * @exception AWTException 195: * @exception HeadlessException If GraphicsEnvironment.isHeadless() 196: * returns true. 197: */ 198: public static Cursor getSystemCustomCursor(String name) 199: throws AWTException 200: { 201: if (GraphicsEnvironment.isHeadless()) 202: throw new HeadlessException (); 203: 204: // FIXME 205: return null; 206: } 207: 208: /** 209: * Returns an instance of the system default cursor type. 210: * 211: * @return The system default cursor. 212: */ 213: public static Cursor getDefaultCursor() 214: { 215: return getPredefinedCursor(DEFAULT_CURSOR); 216: } 217: 218: /** 219: * Returns the numeric type identifier for this cursor. 220: * 221: * @return The cursor id. 222: */ 223: public int getType() 224: { 225: return type; 226: } 227: 228: public String getName() 229: { 230: return name; 231: } 232: 233: public String toString() 234: { 235: return (this.getClass() 236: + "[type=" + getType() 237: + ",name=" + getName() + "]"); 238: } 239: }