Revision: 3440
          http://vexi.svn.sourceforge.net/vexi/?rev=3440&view=rev
Author:   clrg
Date:     2009-03-24 03:28:24 +0000 (Tue, 24 Mar 2009)

Log Message:
-----------
Always use string constants in known event cases

Modified Paths:
--------------
    trunk/core/org.vexi.core/src/org/vexi/core/Box.jpp
    trunk/core/org.vexi.core/src/org/vexi/core/Constants.java
    trunk/core/org.vexi.core/src/org/vexi/core/Surface.java

Removed Paths:
-------------
    trunk/core/org.vexi.core/src/org/vexi/core/ConstantsHelper.java

Modified: trunk/core/org.vexi.core/src/org/vexi/core/Box.jpp
===================================================================
--- trunk/core/org.vexi.core/src/org/vexi/core/Box.jpp  2009-03-24 02:06:54 UTC 
(rev 3439)
+++ trunk/core/org.vexi.core/src/org/vexi/core/Box.jpp  2009-03-24 03:28:24 UTC 
(rev 3440)
@@ -1088,16 +1088,15 @@
     }
 
     /** attempt to propagate an input event through the box tree - should only 
be invoked by surface */
-    protected final void tryPropagateEvent(String eventString, JS value) 
throws JSExn {
+    protected final void tryPropagateEvent(JS event, JS _event, JS value, 
boolean forceOnRoot) throws JSExn {
         Surface s = getSurface();
         if (s != null) {
             int s_mx = s.mousex;
             int s_my = s.mousey;
-            JS event = ConstantsHelper.getEventConstant(eventString);
-            JS _event = ConstantsHelper.getPreEventConstant(eventString);
+            if (_event==null) _event = JSU.S('_'+JSU.toString(event));
             if (inside(s_mx, s_my)) {
                 propagateEvent(event, _event, value, s_mx, s_my);
-            } else if (eventString.startsWith("Release") || 
eventString.startsWith("Key")) {
+            } else if (forceOnRoot) {//eventString.startsWith("Release") || 
eventString.startsWith("Key")) {
                 if (Interpreter.CASCADE_PREVENTED == justTriggerTraps(_event, 
value))
                     justTriggerTraps(event, value);
             }
@@ -1194,7 +1193,7 @@
                     throw new JSExn("Illegal arguments for sendEvent; usage: 
sendEvent(<string>, <int>, <int>)");
                 }
                 if (event.equals("Move")) tryPropagateMove(mx, my);
-                else propagateEvent(ConstantsHelper.getEventConstant(event), 
ConstantsHelper.getPreEventConstant(event), JSU.T, mx, my);
+                else propagateEvent(args[0], JSU.S('_'+event), JSU.T, mx, my);
                 return null;
             //#end
         } catch (NullPointerException npe) {

Modified: trunk/core/org.vexi.core/src/org/vexi/core/Constants.java
===================================================================
--- trunk/core/org.vexi.core/src/org/vexi/core/Constants.java   2009-03-24 
02:06:54 UTC (rev 3439)
+++ trunk/core/org.vexi.core/src/org/vexi/core/Constants.java   2009-03-24 
03:28:24 UTC (rev 3440)
@@ -59,10 +59,17 @@
     static final JS SC_large = JSU.S("large",true);
     static final JS SC_xlarge = JSU.S("xlarge",true);
     static final JS SC_xxlarge = JSU.S("xxlarge",true);
-    // events
+    // window events
+    static final JS SC_Close = JSU.S("Close",true);
+    static final JS SC_Focused = JSU.S("Focused",true);
+    static final JS SC_Maximized = JSU.S("Maximized",true);
+    static final JS SC_Minimized = JSU.S("Minimized",true);
+    // normal events
     static final JS SC_Enter = JSU.S("Enter",true);
     static final JS SC_Leave = JSU.S("Leave",true);
     static final JS SC_Move = JSU.S("Move",true);
+    static final JS SC_HScroll = JSU.S("HScroll",true);
+    static final JS SC_VScroll = JSU.S("VScroll",true);
     static final JS SC_Press1 = JSU.S("Press1",true);
     static final JS SC_Press2 = JSU.S("Press2",true);
     static final JS SC_Press3 = JSU.S("Press3",true);
@@ -80,6 +87,8 @@
     static final JS SC__Enter = JSU.S("_Enter",true);
     static final JS SC__Leave = JSU.S("_Leave",true);
     static final JS SC__Move = JSU.S("_Move",true);
+    static final JS SC__HScroll = JSU.S("Close",true);
+    static final JS SC__VScroll = JSU.S("Close",true);
     static final JS SC__Press1 = JSU.S("_Press1",true);
     static final JS SC__Press2 = JSU.S("_Press2",true);
     static final JS SC__Press3 = JSU.S("_Press3",true);

Deleted: trunk/core/org.vexi.core/src/org/vexi/core/ConstantsHelper.java
===================================================================
--- trunk/core/org.vexi.core/src/org/vexi/core/ConstantsHelper.java     
2009-03-24 02:06:54 UTC (rev 3439)
+++ trunk/core/org.vexi.core/src/org/vexi/core/ConstantsHelper.java     
2009-03-24 03:28:24 UTC (rev 3440)
@@ -1,106 +0,0 @@
-package org.vexi.core;
-
-import org.ibex.js.JS;
-import org.ibex.js.JSU;
-
-/** @author Charles Goodwin <char...@webenableit.co.uk>
- * 
- *  Some helpful functions for establishing constants
- */
-public class ConstantsHelper implements Constants {
-    /** get event constant for a given string */
-    static final public JS getEventConstant(String event) {
-        try {
-            switch (event.charAt(0)) {
-            case 'K':
-                switch (event.charAt(3)) {
-                case 'P': return SC_KeyPressed;
-                case 'R': return SC_KeyReleased;
-                }
-                break;
-            case 'P':
-                switch (event.charAt(5)) {
-                case '1': return SC_Press1;
-                case '2': return SC_Press2;
-                case '3': return SC_Press3;
-                }
-                break;
-            case 'R':
-                switch (event.charAt(7)) {
-                case '1': return SC_Release1;
-                case '2': return SC_Release2;
-                case '3': return SC_Release3;
-                }
-                break;
-            case 'C':
-                switch (event.charAt(5)) {
-                case '1': return SC_Click1;
-                case '2': return SC_Click2;
-                case '3': return SC_Click3;
-                }
-                break;
-            case 'D':
-                switch (event.charAt(11)) {
-                case '1': return SC_DoubleClick1;
-                case '2': return SC_DoubleClick2;
-                case '3': return SC_DoubleClick3;
-                }
-                break;
-            case 'E': return SC_Enter;
-            case 'L': return SC_Leave;
-            case 'M': return SC_Move;
-            }
-            return JSU.S(event);
-        } catch(Exception e) {
-            return JSU.S(event);
-        }
-    }
-
-    /** get event constant for a given string */
-    static final public JS getPreEventConstant(String event) {
-        try {
-            switch (event.charAt(0)) {
-            case 'K':
-                switch (event.charAt(3)) {
-                case 'P': return SC__KeyPressed;
-                case 'R': return SC__KeyReleased;
-                }
-                break;
-            case 'P':
-                switch (event.charAt(5)) {
-                case '1': return SC__Press1;
-                case '2': return SC__Press2;
-                case '3': return SC__Press3;
-                }
-                break;
-            case 'R':
-                switch (event.charAt(7)) {
-                case '1': return SC__Release1;
-                case '2': return SC__Release2;
-                case '3': return SC__Release3;
-                }
-                break;
-            case 'C':
-                switch (event.charAt(5)) {
-                case '1': return SC__Click1;
-                case '2': return SC__Click2;
-                case '3': return SC__Click3;
-                }
-                break;
-            case 'D':
-                switch (event.charAt(11)) {
-                case '1': return SC__DoubleClick1;
-                case '2': return SC__DoubleClick2;
-                case '3': return SC__DoubleClick3;
-                }
-                break;
-            case 'E': return SC__Enter;
-            case 'L': return SC__Leave;
-            case 'M': return SC__Move;
-            }
-            return JSU.S('_'+event);
-        } catch(Exception e) {
-            return JSU.S('_'+event);
-        }
-    }
-}

Modified: trunk/core/org.vexi.core/src/org/vexi/core/Surface.java
===================================================================
--- trunk/core/org.vexi.core/src/org/vexi/core/Surface.java     2009-03-24 
02:06:54 UTC (rev 3439)
+++ trunk/core/org.vexi.core/src/org/vexi/core/Surface.java     2009-03-24 
03:28:24 UTC (rev 3440)
@@ -138,20 +138,20 @@
 
     // Event Handling Helper methods for subclasses ///////////////////
     
-    protected final void KeyPressed(String key) { new Message("KeyPressed", 
JSU.S(key)); }
-    protected final void KeyReleased(String key) { new Message("KeyReleased", 
JSU.S(key)); }
-    protected final void Close() { new Message("Close", T, false); }
-    protected final void Minimized(boolean b) { minimized = b; new 
Message("Minimized", b ? T : F, false); }
-    protected final void Maximized(boolean b) { maximized = b; new 
Message("Maximized", b ? T : F, false); }
+    protected final void KeyPressed(String key) { new Message(SC_KeyPressed, 
SC__KeyPressed, JSU.S(key), true); }
+    protected final void KeyReleased(String key) { new Message(SC_KeyReleased, 
SC__KeyReleased, JSU.S(key), true); }
+    protected final void Close() { new Message(SC_Close, T); }
+    protected final void Minimized(boolean b) { minimized = b; new 
Message(SC_Minimized, b ? T : F); }
+    protected final void Maximized(boolean b) { maximized = b; new 
Message(SC_Maximized, b ? T : F); }
     protected final void Focused(boolean b) {
         if (!b) { alt = control = shift = false; }
-        new Message("Focused", b ? T : F, false);
+        new Message(SC_Focused, b ? T : F);
     }
 
-    protected final void HScroll(int pixels) { new Message("HScroll", 
JSU.N(pixels)); }
-    protected final void VScroll(int pixels) { new Message("VScroll", 
JSU.N(pixels)); }
-    protected final void HScroll(float lines) { new Message("HScroll", 
JSU.N(lines)); }
-    protected final void VScroll(float lines) { new Message("VScroll", 
JSU.N(lines)); }
+    protected final void HScroll(int pixels) { new Message(SC_HScroll, 
SC__HScroll, JSU.N(pixels)); }
+    protected final void VScroll(int pixels) { new Message(SC_VScroll, 
SC__VScroll, JSU.N(pixels)); }
+    protected final void HScroll(float lines) { new Message(SC_HScroll, 
SC__HScroll, JSU.N(lines)); }
+    protected final void VScroll(float lines) { new Message(SC_VScroll, 
SC__VScroll, JSU.N(lines)); }
 
     protected final void Press(final int button) {
         last_press_x = mousex;
@@ -171,7 +171,13 @@
                 }
                 return o;
             }});
-        } else new 
Message(button==1?"Press1":button==2?"Press2":"Press"+button, T); 
+        } else {
+            if (button==1)
+                new Message(SC_Press1, SC__Press1, JSU.T);
+            else if (button==2)
+                new Message(SC_Press1, SC__Press1, JSU.T);
+            else new Message(JSU.S("Press"+button), JSU.S("_Press"+button), 
JSU.T);
+        }
     }
 
     protected final void Release(int button) {
@@ -179,7 +185,13 @@
         else if (button == 2) button2 = false;
         else if (button == 3) button3 = false;
 
-        new 
Message(button==1?"Release1":button==2?"Release2":button==3?"Release3":"Release"+button,
 T);
+        if (button==1)
+            new Message(SC_Release1, SC__Release1, JSU.T, true);
+        else if (button==2)
+            new Message(SC_Release1, SC__Release1, JSU.T, true);
+        else if (button==3)
+            new Message(SC_Release1, SC__Release1, JSU.T, true);
+        else new Message(JSU.S("Release"+button), JSU.S("_Release"+button), 
JSU.T, true);
         // invoke Click if platform requires it and release is sufficiently 
close to release
         if (Platform.needsAutoClick() && Math.abs(last_press_x - mousex) < 5 
&& Math.abs(last_press_y - mousey) < 5)
             Click(button);
@@ -188,7 +200,13 @@
     }
 
     protected final void Click(int button) {
-        new 
Message(button==1?"Click1":button==2?"Click2":button==3?"Click3":"Click"+button,
 T);
+        if (button==1)
+            new Message(SC_Click1, SC__Click1, JSU.T);
+        else if (button==2)
+            new Message(SC_Click1, SC__Click1, JSU.T);
+        else if (button==3)
+            new Message(SC_Click1, SC__Click1, JSU.T);
+        else new Message(JSU.S("Click"+button), JSU.S("_Click"+button), JSU.T);
         if (Platform.needsAutoDoubleClick()) {
             long now = System.currentTimeMillis();
             if (lastClickButton == button && now - lastClickTime < 350) 
DoubleClick(button);
@@ -198,7 +216,13 @@
     }
 
     protected final void DoubleClick(int button) {
-        new 
Message(button==1?"DoubleClick1":button==2?"DoubleClick2":button==3?"DoubleClick3":"DoubleClick"+button,
 T);
+        if (button==1)
+            new Message(SC_DoubleClick1, SC__DoubleClick1, JSU.T);
+        else if (button==2)
+            new Message(SC_DoubleClick1, SC__DoubleClick1, JSU.T);
+        else if (button==3)
+            new Message(SC_DoubleClick1, SC__DoubleClick1, JSU.T);
+        else new Message(JSU.S("DoubleClick"+button), 
JSU.S("_DoubleClick"+button), JSU.T);
     }
 
     /** we enqueue ourselves in the Platform.Scheduler when we have a Move 
message to deal with */
@@ -236,30 +260,42 @@
     // FEATURE: reinstate recycler
     public class Message implements Callable {
         
+        private JS event;
+        private JS _event;
         private JS value;
         private boolean inputEvent;
-        public String name;
+        private boolean forceOnRoot;
 
-        Message(String name, JS value) {
-            this(name, value, true);
+        Message(JS event, JS value) {
+            this(event, null, value, false, false);
         }
 
-        Message(String name, JS value, boolean inputEvent) {
-            this.name = name;
+        Message(JS event, JS _event, JS value) {
+            this(event, _event, value, true, false);
+        }
+
+        Message(JS event, JS _event, JS value, boolean forceOnRoot) {
+            this(event, _event, value, true, forceOnRoot);
+        }
+
+        Message(JS event, JS _event, JS value, boolean inputEvent, boolean 
forceOnRoot) {
+            this.event = event;
+            this._event = _event;
             this.value = value;
             this.inputEvent = inputEvent;
+            this.forceOnRoot = forceOnRoot;
             Scheduler.add(this);
         }
 
         public Object run(Object o) throws JSExn {
             if (!inputEvent) {
-                JS ret = root.justTriggerTraps(JSU.S(name), value);
-                if (Interpreter.CASCADE_PREVENTED != ret && 
name.equals("Close"))
+                JS ret = root.justTriggerTraps(event, value);
+                if (Interpreter.CASCADE_PREVENTED != ret && (event==SC_Close))
                     dispose(true);
                 return o;
             }
 
-            if (name.equals("KeyPressed")) {
+            if (event==SC_KeyPressed) {
                 String value = JSU.toString(this.value);
                 if (shift && !value.equals("shift")) value = 
value.toUpperCase();
                 if (alt && !value.equals("alt")) value = "A-" + value;
@@ -268,11 +304,11 @@
                 this.value = JSU.S(value);
             }
             
-            try { root.tryPropagateEvent(name, value); }
+            try { root.tryPropagateEvent(event, _event, value, forceOnRoot); }
             finally { Platform.clipboardReadEnabled = false; }
             return o;
         }
-        public String toString() { return "Message [name=" + name + ", value=" 
+ JSU.toString(value) + "]"; }
+        public String toString() { return "Message [name=" + 
JSU.toString(event) + ", value=" + JSU.toString(value) + "]"; }
     }
     
     


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
Vexi-svn mailing list
Vexi-svn@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/vexi-svn

Reply via email to