You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@pivot.apache.org by anton dos santos <ad...@free.fr> on 2011/01/31 20:13:21 UTC
Adding listeners in BXML
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
Re: Adding listeners in BXML
Posted by Sandro Martini <sa...@gmail.com>.
Hi Chris,
> I think it is a worthwhile feature to add.
I agree.
> My first thoughts were that it would already be supported as it is just
> another java class being set in BXML. I didn't realise it was a special
> case.
me too :-) ...
Bye
--
View this message in context: http://apache-pivot-users.399431.n3.nabble.com/Adding-listeners-in-BXML-tp2392677p2412066.html
Sent from the Apache Pivot - Users mailing list archive at Nabble.com.
Re: Adding listeners in BXML
Posted by Chris Bartlett <cb...@gmail.com>.
I think it is a worthwhile feature to add. My first thoughts were that it
would already be supported as it is just another java class being set in
BXML. I didn't realise it was a special case.
Chris
On 3 February 2011 16:41, Sandro Martini <sa...@gmail.com> wrote:
>
> Hi all,
> I agree with Anton, so if it's not complex to write (but I don't know) why
> not have even this feature ?
> Greg, Chris (and others :-) ), what do you think ?
>
> Bye,
> Sandro
>
> --
> View this message in context:
> http://apache-pivot-users.399431.n3.nabble.com/Adding-listeners-in-BXML-tp2392677p2411982.html
> Sent from the Apache Pivot - Users mailing list archive at Nabble.com.
>
Re: Adding listeners in BXML
Posted by Sandro Martini <sa...@gmail.com>.
Hi all,
I agree with Anton, so if it's not complex to write (but I don't know) why
not have even this feature ?
Greg, Chris (and others :-) ), what do you think ?
Bye,
Sandro
--
View this message in context: http://apache-pivot-users.399431.n3.nabble.com/Adding-listeners-in-BXML-tp2392677p2411982.html
Sent from the Apache Pivot - Users mailing list archive at Nabble.com.
Re: Adding listeners in BXML
Posted by anton dos santos <ad...@free.fr>.
Hi
Most of the time I try to put in BXML the GUI layout and user interactions, whereas the bindable is
for back-end integration, data transformations and loading the GUI.
In this case, I wanted to have buttons that get pressed when user hits return key and since I prefer
java to javascript ...
Anyway, I can can live without this feature, but at least it would be good to document in the
tutorial that only scripted listeners are possible in BXML.
Regards
Anton
On 02/02/2011 05:11, Greg Brown wrote:
> 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 <adsantos@free.fr <ma...@free.fr>> 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" <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 <adsantos@free.fr <ma...@free.fr>> 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
>>>
>>>
>>
>>
>
Re: Adding listeners in BXML
Posted by Greg Brown <gk...@verizon.net>.
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 <ad...@free.fr> 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 <ad...@free.fr> 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
>>
>
>
Re: Adding listeners in BXML
Posted by Chris Bartlett <cb...@gmail.com>.
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 <ad...@free.fr> 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"<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 <ad...@free.fr> 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
>>
>
>
>
Re: Adding listeners in BXML
Posted by anton dos santos <ad...@free.fr>.
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 <adsantos@free.fr <ma...@free.fr>> 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
>
>
Re: Adding listeners in BXML
Posted by Chris Bartlett <cb...@gmail.com>.
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 <ad...@free.fr> 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
>