Re: [jruby-user] JRubyFX

Rodrigo Botafogo <[email protected]> Wed, 29 Apr 2015 15:51:32 -0300
Newsgroups gmane.comp.lang.jruby.user
Message-ID <CAAKc=GD2b46AtcsWWKLE0+7RgAHcS3oYhBiANvuvn9XMrogqiQ@mail.gmail.com>
--047d7bd6bca8f54c510514e178a7
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Tom,

No, this doesn=C2=B4t work.  Could I do a require in my Ruby code somehow?

require 'javafx.beans.value.ChangeListener' does not work as it is
expecting a jar file, right?  Where is the jar for ChangeListener?


Thanks,

2015-04-29 15:36 GMT-03:00 Thomas E Enebo <[email protected]>:

> I am less of a help for JS but if you see how WebView is defined above yo=
u
> can perhaps do he same thing for ChangeListener is your JS code is barfin=
g
> because it does not know what that type is:
>
> var ChangeListener =3D Java.type("javafx.beans.value.ChangeListener");
>
> -Tom
>
> On Wed, Apr 29, 2015 at 1:32 PM, Rodrigo Botafogo <
> [email protected]> wrote:
>
>> Hi Tom,
>>
>> Not sure I follow... so, the following function is defined inside a
>> javascript file and not in a JRuby script.  I can=C2=B4t do this implici=
t
>> coercion.  I think I should load the ChangeListener interface and make i=
t
>> available to javascript.  I=C2=B4m still learning all this, so I might j=
ust be
>> confused.  If this is any help, I=C2=B4m just trying to follow the blog:
>> https://blogs.oracle.com/nashorn/entry/porting_from_the_browser_to, but
>> instead of using jjs, I=C2=B4m driving nashorn through JRuby.
>>
>>
>> function WebViewWrapper(onload) {
>>     var This =3D this;
>>     var WebView =3D Java.type("javafx.scene.web.WebView");
>>     var webview =3D new WebView();
>>
>>     This.webview =3D webview;
>>     This.engine =3D webview.engine;
>>     This.window =3D undefined;
>>     This.document =3D undefined;
>>
>>     // Make sure the JavaScript is enabled.
>>     This.engine.javaScriptEnabled =3D true;
>>
>>     // Complete initialization when page is loaded.
>>     This.engine.loadWorker.stateProperty().addListener(new
>> ChangeListener() {
>>         changed: function(value, oldState, newState) {
>>             if (newState =3D=3D Worker.State.SUCCEEDED) {
>>                 This.document =3D
>> wrap(This.engine.executeScript("document"));
>>                 This.window =3D wrap(This.engine.executeScript("window")=
);
>>
>>                 // Call users onload function.
>>                 if (onload) {
>>                     onload(This);
>>                 }
>>             }
>>         }
>>     });
>>
>>
>> Thanks....
>>
>> 2015-04-29 15:20 GMT-03:00 Thomas E Enebo <[email protected]>:
>>
>> javafx.beans.value.ChangeListener is an interface so with implicit
>>> closure coercion you should be able to:
>>>
>>>
>>> ```ruby
>>> This.engine.load_worker.state_property.add_listener do |observable,
>>> old_value, new_value|
>>>   #...
>>> end
>>> ```
>>>
>>> -Tom
>>>
>>>
>>> On Wed, Apr 29, 2015 at 11:42 AM, Rodrigo Botafogo <
>>> [email protected]> wrote:
>>>
>>>> Hello....
>>>>
>>>> Sorry if this isn=C2=B4t the right place to post questions about JRuby=
FX.
>>>>
>>>> I=C2=B4m trying to write a JRubyFX application.  I=C2=B4m following a =
post from
>>>> Oracle to try to learn JavaFX and JRubyFx.  In the post, in a js file =
there
>>>> is the following lines:
>>>>
>>>>  // Complete initialization when page is loaded.
>>>>   This.engine.loadWorker.stateProperty().addListener(new ChangeListene=
r() {
>>>>
>>>>
>>>> ChangeListener() is not found when I run the application.  I understan=
d
>>>> that I should load javafx/beans, but I don=C2=B4t know how to do this =
with
>>>> JRubyFX.  Can anybody help me here or point to the right list to ask t=
his
>>>> question?
>>>>
>>>> Thanks
>>>> --
>>>> Rodrigo Botafogo
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> blog: http://blog.enebo.com       twitter: tom_enebo
>>> mail: [email protected]
>>>
>>
>>
>>
>> --
>> Rodrigo Botafogo
>>
>>
>>
>>
>
>
> --
> blog: http://blog.enebo.com       twitter: tom_enebo
> mail: [email protected]
>



--=20
Rodrigo Botafogo

--047d7bd6bca8f54c510514e178a7
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Tom,<div><br></div><div>No, this doesn=C2=B4t work.=C2=A0 =
Could I do a require in my Ruby code somehow?=C2=A0</div><div><br></div><di=
v>require &#39;javafx.beans.value.ChangeListener&#39; does not work as it i=
s expecting a jar file, right?=C2=A0 Where is the jar for ChangeListener?</=
div><div><br></div><div><br></div><div>Thanks,</div></div><div class=3D"gma=
il_extra"><br><div class=3D"gmail_quote">2015-04-29 15:36 GMT-03:00 Thomas =
E Enebo <span dir=3D"ltr">&lt;<a href=3D"mailto:[email protected]" target=
=3D"_blank">[email protected]</a>&gt;</span>:<br><blockquote class=3D"gma=
il_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-lef=
t:1ex"><div dir=3D"ltr"><div><div>I am less of a help for JS but if you see=
 how WebView is defined above you can perhaps do he same thing for ChangeLi=
stener is your JS code is barfing because it does not know what that type i=
s:<br><br></div>var ChangeListener =3D Java.type(&quot;javafx.beans.value.C=
hangeListener&quot;);<br><br></div>-Tom<br></div><div class=3D"HOEnZb"><div=
 class=3D"h5"><div class=3D"gmail_extra"><br><div class=3D"gmail_quote">On =
Wed, Apr 29, 2015 at 1:32 PM, Rodrigo Botafogo <span dir=3D"ltr">&lt;<a hre=
f=3D"mailto:[email protected]" target=3D"_blank">rodrigo@rodrigob=
otafogo.com</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" styl=
e=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div di=
r=3D"ltr">Hi Tom,<div><br></div><div>Not sure I follow... so, the following=
 function is defined inside a javascript file and not in a JRuby script.=C2=
=A0 I can=C2=B4t do this implicit coercion.=C2=A0 I think I should load the=
 ChangeListener interface and make it available to javascript.=C2=A0 I=C2=
=B4m still learning all this, so I might just be confused.=C2=A0 If this is=
 any help, I=C2=B4m just trying to follow the blog:=C2=A0<a href=3D"https:/=
/blogs.oracle.com/nashorn/entry/porting_from_the_browser_to" target=3D"_bla=
nk">https://blogs.oracle.com/nashorn/entry/porting_from_the_browser_to</a>,=
 but instead of using jjs, I=C2=B4m driving nashorn through JRuby.</div><di=
v><br></div><div><br></div><div><div>function WebViewWrapper(onload) {</div=
><div>=C2=A0 =C2=A0 var This =3D this;</div><div>=C2=A0 =C2=A0 var WebView =
=3D Java.type(&quot;javafx.scene.web.WebView&quot;);</div><div>=C2=A0 =C2=
=A0 var webview =3D new WebView();</div><div>=C2=A0 =C2=A0=C2=A0</div><div>=
=C2=A0 =C2=A0 This.webview =3D webview;</div><div>=C2=A0 =C2=A0 This.engine=
 =3D webview.engine;</div><div>=C2=A0 =C2=A0 This.window =3D undefined;</di=
v><div>=C2=A0 =C2=A0 This.document =3D undefined;</div><div>=C2=A0 =C2=A0=
=C2=A0</div><div>=C2=A0 =C2=A0 // Make sure the JavaScript is enabled.</div=
><div>=C2=A0 =C2=A0 This.engine.javaScriptEnabled =3D true;</div><span><div=
>=C2=A0 =C2=A0=C2=A0</div><div>=C2=A0 =C2=A0 // Complete initialization whe=
n page is loaded.</div><div>=C2=A0 =C2=A0 This.engine.loadWorker.statePrope=
rty().addListener(new ChangeListener() {</div></span><div>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 changed: function(value, oldState, newState) {</div><div>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (newState =3D=3D Worker.State.SUCCEED=
ED) {</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Thi=
s.document =3D wrap(This.engine.executeScript(&quot;document&quot;));</div>=
<div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 This.window =
=3D wrap(This.engine.executeScript(&quot;window&quot;));</div><div>=C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0</div><div>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 // Call users onload function=
.</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (onl=
oad) {</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 onload(This);</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 }</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
}</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 }</div><div>=C2=A0 =C2=A0 });</div>=
</div><div><br></div><div><br></div><div>Thanks....</div></div><div class=
=3D"gmail_extra"><br><div class=3D"gmail_quote">2015-04-29 15:20 GMT-03:00 =
Thomas E Enebo <span dir=3D"ltr">&lt;<a href=3D"mailto:[email protected]"=
 target=3D"_blank">[email protected]</a>&gt;</span>:<div><div><br><blockq=
uote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc =
solid;padding-left:1ex"><div dir=3D"ltr"><div><div><div>javafx.beans.value.=
ChangeListener is an interface so with implicit closure coercion you should=
 be able to:<br></div><div><br><br></div>```ruby<br></div>This.engine.load_=
worker.state_property.add_listener do |<code>observable, old_value, new_val=
ue|<br>=C2=A0 #...<br></code></div><code>end<br></code><div><div>```<br><br=
></div><div>-Tom<br><br></div></div></div><div class=3D"gmail_extra"><div><=
div><br><div class=3D"gmail_quote">On Wed, Apr 29, 2015 at 11:42 AM, Rodrig=
o Botafogo <span dir=3D"ltr">&lt;<a href=3D"mailto:rodrigo@rodrigobotafogo.=
com" target=3D"_blank">[email protected]</a>&gt;</span> wrote:<br=
><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1=
px #ccc solid;padding-left:1ex"><div dir=3D"ltr">Hello....=C2=A0<div><br></=
div><div>Sorry if this isn=C2=B4t the right place to post questions about J=
RubyFX. =C2=A0</div><div><br></div><div>I=C2=B4m trying to write a JRubyFX =
application.=C2=A0 I=C2=B4m following a post from Oracle to try to learn Ja=
vaFX and JRubyFx.=C2=A0 In the post, in a js file there is the following li=
nes:</div><div><br></div><div><pre style=3D"margin-top:10px;margin-bottom:1=
0px;color:rgb(85,85,85);font-size:12px;line-height:18px"> // Complete initi=
alization when page is loaded.
  This.engine.loadWorker.stateProperty().addListener(new ChangeListener()=
=C2=A0{</pre><pre style=3D"margin-top:10px;margin-bottom:10px;color:rgb(85,=
85,85);font-size:12px;line-height:18px"><br></pre><div>ChangeListener() is =
not found when I run the application.=C2=A0 I understand that I should load=
 javafx/beans, but I don=C2=B4t know how to do this with JRubyFX.=C2=A0 Can=
 anybody help me here or point to the right list to ask this question?</div=
><div><br></div><div>Thanks</div><span><font color=3D"#888888">-- <br><div>=
<div dir=3D"ltr">Rodrigo Botafogo<div><br><br><div><br></div></div></div></=
div>
</font></span></div></div>
</blockquote></div><br><br clear=3D"all"><br></div></div><span><font color=
=3D"#888888">-- <br><div>blog: <a href=3D"http://blog.enebo.com" target=3D"=
_blank">http://blog.enebo.com</a>=C2=A0 =C2=A0 =C2=A0=C2=A0 twitter: tom_en=
ebo<br>mail: <a href=3D"mailto:[email protected]" target=3D"_blank">tom.e=
[email protected]</a></div>
</font></span></div>
</blockquote></div></div></div><span><font color=3D"#888888"><br><br clear=
=3D"all"><div><br></div>-- <br><div><div dir=3D"ltr">Rodrigo Botafogo<div><=
br><br><div><br></div></div></div></div>
</font></span></div>
</blockquote></div><br><br clear=3D"all"><br>-- <br><div>blog: <a href=3D"h=
ttp://blog.enebo.com" target=3D"_blank">http://blog.enebo.com</a>=C2=A0 =C2=
=A0 =C2=A0=C2=A0 twitter: tom_enebo<br>mail: <a href=3D"mailto:tom.enebo@gm=
ail.com" target=3D"_blank">[email protected]</a></div>
</div>
</div></div></blockquote></div><br><br clear=3D"all"><div><br></div>-- <br>=
<div class=3D"gmail_signature"><div dir=3D"ltr">Rodrigo Botafogo<div><br><b=
r><div><br></div></div></div></div>
</div>

--047d7bd6bca8f54c510514e178a7--