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=
("javafx.scene.web.WebView");</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("document"));</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("window"));</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"><<a href=3D"mailto:[email protected]" target=3D"_blank">tom.enebo=
@gmail.com</a>></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"><<a href=3D"mailto:[email protected]" target=3D"_blank">ro=
[email protected]</a>></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--