Re: [jruby-user] JRubyFX

Rodrigo Botafogo <[email protected]> Wed, 29 Apr 2015 15:32:13 -0300
Newsgroups gmane.comp.lang.jruby.user
Message-ID <CAAKc=GBWrFsXBZh-oMKUxWQa+UEGEk4DXPkckyta=R-TeWJqSw@mail.gmail.com>
--001a113ecca0e3c9540514e133c3
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

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 implicit
coercion.  I think I should load the ChangeListener interface and make it
available to javascript.  I=C2=B4m still learning all this, so I might just=
 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 closur=
e
> 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 JRubyFX=
.
>>
>> I=C2=B4m trying to write a JRubyFX application.  I=C2=B4m following a po=
st from
>> Oracle to try to learn JavaFX and JRubyFx.  In the post, in a js file th=
ere
>> is the following lines:
>>
>>  // Complete initialization when page is loaded.
>>   This.engine.loadWorker.stateProperty().addListener(new ChangeListener(=
) {
>>
>>
>> ChangeListener() is not found when I run the application.  I understand
>> that I should load javafx/beans, but I don=C2=B4t know how to do this wi=
th
>> JRubyFX.  Can anybody help me here or point to the right list to ask thi=
s
>> question?
>>
>> Thanks
>> --
>> Rodrigo Botafogo
>>
>>
>>
>>
>
>
> --
> blog: http://blog.enebo.com       twitter: tom_enebo
> mail: [email protected]
>



--=20
Rodrigo Botafogo

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

<div dir=3D"ltr">Hi Tom,<div><br></div><div>Not sure I follow... so, the fo=
llowing function is defined inside a javascript file and not in a JRuby scr=
ipt.=C2=A0 I can=C2=B4t do this implicit coercion.=C2=A0 I think I should l=
oad 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 th=
is is any help, I=C2=B4m just trying to follow the blog:=C2=A0<a href=3D"ht=
tps://blogs.oracle.com/nashorn/entry/porting_from_the_browser_to">https://b=
logs.oracle.com/nashorn/entry/porting_from_the_browser_to</a>, but instead =
of using jjs, I=C2=B4m driving nashorn through JRuby.</div><div><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 T=
his.webview =3D webview;</div><div>=C2=A0 =C2=A0 This.engine =3D webview.en=
gine;</div><div>=C2=A0 =C2=A0 This.window =3D undefined;</div><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><div>=C2=A0 =C2=A0=C2=A0</=
div><div>=C2=A0 =C2=A0 // Complete initialization when page is loaded.</div=
><div>=C2=A0 =C2=A0 This.engine.loadWorker.stateProperty().addListener(new =
ChangeListener() {</div><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.SUCCEEDED) {</div><div>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 This.document =3D wrap(This.e=
ngine.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.execute=
Script(&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 (onload) {</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 cl=
ass=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">tom.enebo=
@gmail.com</a>&gt;</span>:<br><blockquote class=3D"gmail_quote" style=3D"ma=
rgin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir=3D"lt=
r"><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></d=
iv>```ruby<br></div>This.engine.load_worker.state_property.add_listener do =
|<code>observable, old_value, new_value|<br>=C2=A0 #...<br></code></div><co=
de>end<br></code><div><div>```<br><br></div><div>-Tom<br><br></div></div></=
div><div class=3D"gmail_extra"><div><div class=3D"h5"><br><div class=3D"gma=
il_quote">On Wed, Apr 29, 2015 at 11:42 AM, Rodrigo Botafogo <span dir=3D"l=
tr">&lt;<a href=3D"mailto:[email protected]" target=3D"_blank">ro=
[email protected]</a>&gt;</span> wrote:<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">Hello....=C2=A0<div><br></div><div>Sorry if this is=
n=C2=B4t the right place to post questions about JRubyFX. =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 JavaFX and JRubyFx.=C2=A0=
 In the post, in a js file there is the following lines:</div><div><br></di=
v><div><pre style=3D"margin-top:10px;margin-bottom:10px;color:rgb(85,85,85)=
;font-size:12px;line-height:18px"> // Complete initialization 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 class=3D"HOE=
nZb"><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_enebo<br>mail: <a href=3D"mailto:[email protected]" target=
=3D"_blank">[email protected]</a></div>
</font></span></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><br><div><br=
></div></div></div></div>
</div>

--001a113ecca0e3c9540514e133c3--