X-Git-Url: http://git.megacz.com/?p=org.ibex.core.git;a=blobdiff_plain;f=src%2Forg%2Fibex%2Fgraphics%2FSurface.java;h=574cc35d503c339f8847d35aace1be56562064b6;hp=31ac36ea29da80b03fb668fa39ca45b18f3e8727;hb=76982fccac3c46ccc47621dd22dc0c96b6b9cd62;hpb=ce791e4058158295bce9cf7b6698c2b565d571d7 diff --git a/src/org/ibex/graphics/Surface.java b/src/org/ibex/graphics/Surface.java index 31ac36e..574cc35 100644 --- a/src/org/ibex/graphics/Surface.java +++ b/src/org/ibex/graphics/Surface.java @@ -17,8 +17,8 @@ public abstract class Surface extends PixelBuffer implements Task { // Static Data //////////////////////////////////////////////////////////////////////////////// - private static Boolean T = Boolean.TRUE; - private static Boolean F = Boolean.FALSE; + private static final JS T = JS.T; + private static final JS F = JS.F; /** all instances of Surface which need to be refreshed by the Scheduler */ public static Vec allSurfaces = new Vec(); @@ -96,7 +96,7 @@ public abstract class Surface extends PixelBuffer implements Task { Scheduler.add(new Task() { public void perform() throws JSExn { Platform.clipboardReadEnabled = true; try { - root.putAndTriggerTraps("_Press3", T); + root.putAndTriggerTraps(JS.S("_Press3"), T); } finally { Platform.clipboardReadEnabled = false; } @@ -130,6 +130,7 @@ public abstract class Surface extends PixelBuffer implements Task { } } + private final static JS MOVE = JS.S("_Move"); /** we enqueue ourselves in the Scheduler when we have a Move message to deal with */ private Task mover = new Task() { public void perform() { @@ -139,7 +140,7 @@ public abstract class Surface extends PixelBuffer implements Task { String oldcursor = cursor; cursor = "default"; // FIXME: Root (ONLY) gets motion events outside itself (if trapped) if (oldmousex != mousex || oldmousey != mousey) - root.putAndTriggerTrapsAndCatchExceptions("_Move", T); + root.putAndTriggerTrapsAndCatchExceptions(MOVE, T); if (!cursor.equals(oldcursor)) syncCursor(); } }; @@ -155,10 +156,10 @@ public abstract class Surface extends PixelBuffer implements Task { Scheduler.add(mover); } - protected final void HScroll(int pixels) { new Message("_HScroll", new Integer(pixels), root); } - protected final void VScroll(int pixels) { new Message("_VScroll", new Integer(pixels), root); } - protected final void HScroll(float lines) { new Message("_HScroll", new Float(lines), root); } - protected final void VScroll(float lines) { new Message("_VScroll", new Float(lines), root); } + protected final void HScroll(int pixels) { new Message("_HScroll", JS.N(pixels), root); } + protected final void VScroll(int pixels) { new Message("_VScroll", JS.N(pixels), root); } + protected final void HScroll(float lines) { new Message("_HScroll", JS.N(lines), root); } + protected final void VScroll(float lines) { new Message("_VScroll", JS.N(lines), root); } /** subclasses should invoke this method when the user resizes the window */ protected final void SizeChange(final int width, final int height) { @@ -175,14 +176,14 @@ public abstract class Surface extends PixelBuffer implements Task { Scheduler.add(new Task() { public void perform() throws JSExn { root.x = x; root.y = y; - root.putAndTriggerTrapsAndCatchExceptions("PosChange", T); + root.putAndTriggerTrapsAndCatchExceptions(JS.S("PosChange"), T); }}); } private final String[] doubleClick = new String[] { null, "_DoubleClick1", "_DoubleClick2", "_DoubleClick3" }; protected final void DoubleClick(int button) { new Message(doubleClick[button], T, root); } - protected final void KeyPressed(String key) { new Message("_KeyPressed", key, root); } - protected final void KeyReleased(String key) { new Message("_KeyReleased", key, root); } + protected final void KeyPressed(String key) { new Message("_KeyPressed", JS.S(key), root); } + protected final void KeyReleased(String key) { new Message("_KeyReleased", JS.S(key), root); } protected final void Close() { new Message("Close", T, root); } protected final void Minimized(boolean b) { minimized = b; new Message("Minimized", b ? T : F, root); } protected final void Maximized(boolean b) { maximized = b; new Message("Maximized", b ? T : F, root); } @@ -304,37 +305,37 @@ public abstract class Surface extends PixelBuffer implements Task { public class Message implements Task { private Box boxContainingMouse; - private Object value; + private JS value; public String name; - Message(String name, Object value, Box boxContainingMouse) { + Message(String name, JS value, Box boxContainingMouse) { this.boxContainingMouse = boxContainingMouse; this.name = name; this.value = value; Scheduler.add(this); } - public void perform() { + public void perform() throws JSExn { if (name.equals("_KeyPressed")) { - String value = (String)this.value; + String value = JS.toString(this.value); if (value.toLowerCase().endsWith("shift")) shift = true; else if (shift) value = value.toUpperCase(); if (value.toLowerCase().equals("alt")) alt = true; else if (alt) value = "A-" + value; if (value.toLowerCase().endsWith("control")) control = true; else if (control) value = "C-" + value; if (value.equals("C-v") || value.equals("A-v")) Platform.clipboardReadEnabled = true; - this.value = value; + this.value = JS.S(value); } else if (name.equals("_KeyReleased")) { - String value = (String)this.value; + String value = JS.toString(this.value); if (value.toLowerCase().equals("alt")) alt = false; else if (value.toLowerCase().equals("control")) control = false; else if (value.toLowerCase().equals("shift")) shift = false; - this.value = value; + this.value = JS.S(value); } else if (name.equals("_HScroll") || name.equals("_VScroll")) { // FIXME: technically points != pixels - if (value instanceof Integer) - value = new Float(((Integer)value).intValue() * root.fontSize()); + if (JS.isInt(value)) + value = JS.N(JS.toInt(value) * root.fontSize()); } try { - boxContainingMouse.putAndTriggerTrapsAndCatchExceptions(name, value); + boxContainingMouse.putAndTriggerTrapsAndCatchExceptions(JS.S(name), value); } finally { Platform.clipboardReadEnabled = false; }