Hi, I had replied to this last night, but apparently my phone decided to send the reply to the original sender, not the list. :-P
Listener list properties are currently handled differently than other properties. The assumption was that if you want to define a listener in Java or other compiled language, you'll probably want to use Bindable and attach your listeners that way. It is possible to support the described syntax - I just didn't expect developers to want to do that. :-) G On Feb 1, 2011, at 7:55 AM, Chris Bartlett wrote: > Anton, > > Thanks for all the info. > > I was just getting ready to reply back to you to let you know that I was > wrong, and this is not currently possible. Only listeners defined in script > are supported. > > I'm not sure if this is due to a technical limitation or if it is just > something that has not been required/requested. > Greg - perhaps you could clarify? > > Chris > > On 1 February 2011 22:40, anton dos santos <[email protected]> wrote: > Here the exception: > > An error occurred at line number 10 in file > /D:/DVPT/PIVOT/src/test/ButtonPressTest.bxml: > java.lang.NullPointerException: null script > at > com.sun.script.javascript.RhinoScriptEngine.eval(RhinoScriptEngine.java:122) > at > javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:247) > at > org.apache.pivot.beans.BXMLSerializer.processEndElement(BXMLSerializer.java:1250) > at > org.apache.pivot.beans.BXMLSerializer.readObject(BXMLSerializer.java:440) > at > org.apache.pivot.beans.BXMLSerializer.readObject(BXMLSerializer.java:614) > at > org.apache.pivot.beans.BXMLSerializer.readObject(BXMLSerializer.java:568) > at > org.apache.pivot.beans.BXMLSerializer.readObject(BXMLSerializer.java:534) > at test.ButtonPressTest.startup(ButtonPressTest.java:37) > at > org.apache.pivot.wtk.DesktopApplicationContext$2.run(DesktopApplicationContext.java:594) > at > org.apache.pivot.wtk.ApplicationContext$QueuedCallback.run(ApplicationContext.java:1474) > at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) > at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) > at > java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) > at > java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) > at > java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) > at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) > at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) > at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) > > Here is the code: ButtonPressTest.java > > package test; > > import org.apache.pivot.beans.BXMLSerializer; > import org.apache.pivot.collections.Map; > import org.apache.pivot.wtk.*; > > public class ButtonPressTest implements Application { > > public static final class ButtonPress implements ButtonPressListener { > public void buttonPressed(Button button) { > System.out.println("button pressed"); > } > } > > private Window window = null; > > public void startup(Display display, Map<String, String> properties) throws > Exception { > BXMLSerializer bxmlSerializer = new BXMLSerializer(); > window = (Window) bxmlSerializer.readObject(ButtonPressTest.class, > "ButtonPressTest.bxml"); > > ((PushButton)bxmlSerializer.getNamespace().get("Button2")).getButtonPressListeners().add( > new ButtonPress()); > window.open(display); > } > > public boolean shutdown(boolean optional) throws Exception { > if (window != null) { > window.close(); > } > return false; > } > > public void suspend() throws Exception { > } > > public void resume() throws Exception { > } > public static void main(String[] args) { > DesktopApplicationContext.main(ButtonPressTest.class, args); > } > } > > And the BXML: ButtonPressTest.bxml > > <Window title="Test" maximized="true" > xmlns:bxml="http://pivot.apache.org/bxml" > xmlns:test="test" > xmlns="org.apache.pivot.wtk"> > > <BoxPane orientation="horizontal"> > <PushButton bxml:id="Button1" buttonData="Listener added in BXML"> > <buttonPressListeners> > <test:ButtonPressTest.ButtonPress/> > </buttonPressListeners> > </PushButton> > <PushButton bxml:id="Button2" buttonData="Listener added in Java"> > </PushButton> > </BoxPane> > </Window> > > > > On 31/01/2011 21:16, Chris Bartlett wrote: >> >> I am pretty sure that it is possible, and the syntax looks OK to me. I >> don't have a dev environment in front of me to check though. >> >> What exception are you seeing? Can you try to post a short example of a >> simple listener and BXML which demonstrate the exception. >> >> Chris >> >> On 1 February 2011 02:13, anton dos santos <[email protected]> wrote: >> Hi >> I want to add a listener coded in java to a button. I tried following syntax: >> >> <PushButton buttonData="Click Me!"> >> <buttonPressListeners> >> <utils:MyListener/> >> </buttonPressListeners> >> </PushButton> >> >> but got an exception. >> It seems to me that only scripts can be added as listeners in BXML. Is this >> right or am I doing something wrong in the above code ? >> >> Regards >> Anton >> > >
