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