summaryrefslogtreecommitdiff
path: root/NET/worlds/console/Cursor.java
diff options
context:
space:
mode:
authorFuwn <[email protected]>2021-05-03 16:38:41 -0700
committerFuwn <[email protected]>2021-05-03 16:38:41 -0700
commite1e781bb2135ef78592226f1a3eaba4925702f1f (patch)
tree8a5b590463ed413e1c6eabb719130e701b95ca63 /NET/worlds/console/Cursor.java
downloadworlds.jar-main.tar.xz
worlds.jar-main.zip
:star:HEADmain
Diffstat (limited to 'NET/worlds/console/Cursor.java')
-rw-r--r--NET/worlds/console/Cursor.java359
1 files changed, 359 insertions, 0 deletions
diff --git a/NET/worlds/console/Cursor.java b/NET/worlds/console/Cursor.java
new file mode 100644
index 0000000..d903881
--- /dev/null
+++ b/NET/worlds/console/Cursor.java
@@ -0,0 +1,359 @@
+/* */ package NET.worlds.console;
+/* */
+/* */ import NET.worlds.network.URL;
+/* */ import NET.worlds.scape.BGLoaded;
+/* */ import NET.worlds.scape.BackgroundLoader;
+/* */ import NET.worlds.scape.NoSuchPropertyException;
+/* */ import NET.worlds.scape.Pilot;
+/* */ import NET.worlds.scape.Property;
+/* */ import NET.worlds.scape.Restorer;
+/* */ import NET.worlds.scape.Room;
+/* */ import NET.worlds.scape.Saver;
+/* */ import NET.worlds.scape.SuperRoot;
+/* */ import NET.worlds.scape.TooNewException;
+/* */ import NET.worlds.scape.URLPropertyEditor;
+/* */ import java.io.IOException;
+/* */ import java.text.MessageFormat;
+/* */ import java.util.Enumeration;
+/* */ import java.util.Hashtable;
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public class Cursor
+/* */ extends SuperRoot
+/* */ implements BGLoaded
+/* */ {
+/* 44 */ private URL url = URL.make("system:DEFAULT_CURSOR");
+/* */
+/* */
+/* */
+/* */ private int hCursor;
+/* */
+/* */
+/* */
+/* */ private static Cursor active;
+/* */
+/* */
+/* */
+/* */ private static Hashtable<URL, Comparable> sysCursors;
+/* */
+/* */
+/* */ private static int defaultCursor;
+/* */
+/* */
+/* */
+/* */ private static URL addCursor(String javaName, String win32Name)
+/* */ {
+/* 65 */ URL url = URL.make("system:" + javaName);
+/* 66 */ sysCursors.put(url, win32Name);
+/* 67 */ return url;
+/* */ }
+/* */
+/* */ static
+/* */ {
+/* 54 */ sysCursors = new Hashtable();
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* 72 */ defaultCursor = retrieveSystemCursor(addCursor("DEFAULT_CURSOR",
+/* 73 */ "IDC_ARROW"));
+/* 74 */ assert (defaultCursor != 0);
+/* */
+/* 76 */ addCursor("CROSSHAIR_CURSOR", "IDC_CROSS");
+/* 77 */ addCursor("TEXT_CURSOR", "IDC_IBEAM");
+/* 78 */ addCursor("WAIT_CURSOR", "IDC_WAIT");
+/* 79 */ addCursor("NE_RESIZE_CURSOR", "IDC_SIZENESW");
+/* 80 */ addCursor("SW_RESIZE_CURSOR", "IDC_SIZENESW");
+/* 81 */ addCursor("NW_RESIZE_CURSOR", "IDC_SIZENWSE");
+/* 82 */ addCursor("SE_RESIZE_CURSOR", "IDC_SIZENWSE");
+/* 83 */ addCursor("N_RESIZE_CURSOR", "IDC_SIZENS");
+/* 84 */ addCursor("S_RESIZE_CURSOR", "IDC_SIZENS");
+/* 85 */ addCursor("W_RESIZE_CURSOR", "IDC_SIZEWE");
+/* 86 */ addCursor("E_RESIZE_CURSOR", "IDC_SIZEWE");
+/* 87 */ addCursor("HAND_CURSOR", "IDC_UPARROW");
+/* 88 */ addCursor("MOVE_CURSOR", "IDC_SIZEALL");
+/* 89 */ addCursor("CANNOT_CURSOR", "IDC_NO");
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public Cursor(URL url)
+/* */ {
+/* 113 */ setURL(url);
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public void setURL(URL url)
+/* */ {
+/* 124 */ this.url = url;
+/* 125 */ if (!url.unalias().startsWith("system:")) {
+/* 126 */ BackgroundLoader.get(this, url);
+/* */ } else {
+/* 128 */ activate();
+/* */ }
+/* */ }
+/* */
+/* */ public static Cursor getActive() {
+/* 133 */ return active;
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public void activate()
+/* */ {
+/* 142 */ SuperRoot owner = getOwner();
+/* */
+/* 144 */ if ((owner != null) && (owner == Console.getActive())) {
+/* 145 */ int sysCurs = retrieveSystemCursor(this.url);
+/* */
+/* 147 */ if (sysCurs != 0) {
+/* 148 */ Window.setCursor(sysCurs);
+/* 149 */ maybeDestroyCursor();
+/* 150 */ this.hCursor = sysCurs;
+/* 151 */ } else if (this.hCursor != 0) {
+/* 152 */ Window.setCursor(this.hCursor);
+/* */ }
+/* */
+/* 155 */ active = this;
+/* */ }
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public void deactivate()
+/* */ {
+/* 165 */ if (active == this)
+/* */ {
+/* */
+/* */
+/* 169 */ active = null;
+/* */ }
+/* */ }
+/* */
+/* */
+/* */
+/* */ public URL getURL()
+/* */ {
+/* 177 */ return this.url;
+/* */ }
+/* */
+/* */ public static Enumeration<URL> getSysCursorURLs()
+/* */ {
+/* 182 */ return sysCursors.keys();
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ private static int retrieveSystemCursor(URL url)
+/* */ {
+/* 208 */ int handle = 0;
+/* 209 */ Object c = sysCursors.get(url);
+/* 210 */ if (c != null)
+/* 211 */ if ((c instanceof String)) {
+/* 212 */ handle = loadSystemCursor((String)c);
+/* 213 */ sysCursors.put(url, new Integer(handle));
+/* */ } else {
+/* 215 */ handle = ((Integer)c).intValue();
+/* */ }
+/* 217 */ return handle;
+/* */ }
+/* */
+/* */ private void maybeDestroyCursor()
+/* */ {
+/* 222 */ if (this.hCursor != 0) {
+/* 223 */ if (!sysCursors.contains(new Integer(this.hCursor)))
+/* 224 */ destroyCursor(this.hCursor);
+/* 225 */ this.hCursor = 0;
+/* */ }
+/* */ }
+/* */
+/* */
+/* */ public Object asyncBackgroundLoad(String localName, URL remoteName)
+/* */ {
+/* 232 */ deactivate();
+/* 233 */ maybeDestroyCursor();
+/* */
+/* */
+/* 236 */ if (localName == null) {
+/* 237 */ return null;
+/* */ }
+/* 239 */ if ((this.hCursor = loadCursor(localName)) != 0)
+/* 240 */ activate();
+/* 241 */ return null;
+/* */ }
+/* */
+/* */ public boolean syncBackgroundLoad(Object obj, URL remoteURL) {
+/* 245 */ if (this.hCursor == 0) {
+/* 246 */ Object[] arguments = { new String(this.url) };
+/* 247 */ Console.println(MessageFormat.format(
+/* 248 */ Console.message("Load-cursor"), arguments));
+/* */ }
+/* 250 */ return false;
+/* */ }
+/* */
+/* */ public Room getBackgroundLoadRoom() {
+/* 254 */ SuperRoot owner = getOwner();
+/* 255 */ if ((owner == null) || (!(owner instanceof Console))) {
+/* 256 */ return null;
+/* */ }
+/* 258 */ return ((Console)owner).getPilot().getRoom();
+/* */ }
+/* */
+/* */
+/* */
+/* */ public Object properties(int index, int offset, int mode, Object value)
+/* */ throws NoSuchPropertyException
+/* */ {
+/* 266 */ Object ret = null;
+/* */
+/* 268 */ switch (index - offset) {
+/* */ case 0:
+/* 270 */ if (mode == 0) {
+/* 271 */ ret = URLPropertyEditor.make(new Property(this, index, "File"),
+/* 272 */ "cur;ani", getSysCursorURLs());
+/* 273 */ } else if (mode == 1) {
+/* 274 */ ret = getURL();
+/* 275 */ } else if (mode == 2)
+/* 276 */ setURL((URL)value);
+/* 277 */ break;
+/* */
+/* */ default:
+/* 280 */ ret = super.properties(index, offset + 1, mode, value);
+/* */ }
+/* 282 */ return ret;
+/* */ }
+/* */
+/* */
+/* */
+/* 287 */ private static Object classCookie = new Object();
+/* */
+/* */ public void saveState(Saver s) throws IOException
+/* */ {
+/* 291 */ s.saveVersion(1, classCookie);
+/* 292 */ super.saveState(s);
+/* */
+/* 294 */ URL.save(s, this.url);
+/* */ }
+/* */
+/* */ public void restoreState(Restorer r) throws IOException, TooNewException
+/* */ {
+/* 299 */ switch (r.restoreVersion(classCookie)) {
+/* */ case 0:
+/* 301 */ r.restoreMaybeNull();
+/* */
+/* */
+/* 304 */ String s = r.restoreString();
+/* 305 */ if ((s.endsWith(".cur")) || (s.endsWith(".ani"))) {
+/* 306 */ setURL(URL.restore(r, s, null));
+/* */ } else {
+/* 308 */ setURL(URL.make("system:" + this.url));
+/* */ }
+/* 310 */ break;
+/* */
+/* */ case 1:
+/* 313 */ super.restoreState(r);
+/* 314 */ setURL(URL.restore(r));
+/* 315 */ break;
+/* */
+/* */ default:
+/* 318 */ throw new TooNewException();
+/* */ }
+/* */ }
+/* */
+/* */ public Cursor() {}
+/* */
+/* */ public static native int getSystemCursorWidth();
+/* */
+/* */ public static native int getSystemCursorHeight();
+/* */
+/* */ public static native int getSystemCursorDepth();
+/* */
+/* */ private static native int loadCursor(String paramString);
+/* */
+/* */ private static native int loadSystemCursor(String paramString);
+/* */
+/* */ private static native void destroyCursor(int paramInt);
+/* */ }
+
+
+/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\console\Cursor.class
+ * Java compiler version: 6 (50.0)
+ * JD-Core Version: 0.7.1
+ */ \ No newline at end of file