Thanks Steve

on the point 1 I need to call from Javascript to Java, and return from Java 
to Javascript a response.

My doubt is how do I have to do it in Java and in Javascritp, I searched 
examples in code of GoolgeMaps Implementation but I didn't find any help.

Best Regards Kandy

On Thursday, January 4, 2018 at 3:53:19 PM UTC+1, Steve Hannah wrote:
>
> The best examples right now are in the GoogleMaps cn1lib
>
> https://github.com/codenameone/codenameone-google-maps/blob/master/GoogleMaps/src/com/codename1/googlemaps/MapContainer.java
>
> There are also samples in the unit tests:
>
> https://github.com/codenameone/CodenameOne/blob/master/tests/core/test/com/codename1/ui/JavascriptTests.java
>
> The unit tests all use the executeAndWait() wrappers for convenience, but 
> these carry the baggage of invokeAndBlock - to make it synchronous.  Best 
> for performance to try to use async versions whenever possible.
>
> 1) call from Javascritp to java and receive a response from java
>
>
> First add your callback:
> bc.addJSCallback("window.app.mycb=function(arg){callback.onSuccess(arg)}", 
> arg->{
>      // Log.p("The result was "+arg.getInt());
> }); 
>
> Then on the javascript side, you can call "window.app.mycb(1+2)", and your 
> java callback will be called.
>
> 2) call from java to javascript and receive a response from javascript
>
>
> Async style:
>
> bc.execute("callback.onSuccess(1+2)", res->{
>      Log.p("The result was "+res.getInt());
> }); 
>
> Sync Style:
>
> int result = bc.executeAndWait("callback.onSuccess(1+2)").getInt();
>
>
> If you need to pass parameters to your javascript code, there are variants 
> that do that and handle escaping strings properly.
>
> e.g.
>
> bc.execute("callback.onSuccess(${0}+${1})", new Object[]{1, 2}, res->{
>     Log.p("The result was "+res.getInt());  // Should be 3
> });
>
> If you need to call methods on a Javascript object, you can also create a 
> java "Proxy" object to make this a bit easier.  E.g.
>
> JSProxy window = bc.createJSProxy("window");
> int height = window.getAndWait("innerHeight").getInt();
>
>
> Steve
>
> On Thu, Jan 4, 2018 at 6:12 AM, <[email protected] <javascript:>> wrote:
>
>> Hi Steve
>>
>> where can I found documentation or examples to addJSCallback?
>>
>> I can be able to:
>>
>> call from javascritp to java
>>
>> browserComponent.addJSCallback(
>> "window.app = {isActive: function() {callback.onSuccess()}}", 
>> value -> {
>> call from java to javacript and send parameters
>>
>> browserComponent.execute("controlPopUp ('"+ relojReservaValueString +"', 
>> "+ reservationState +","+ vehicleLockState +")");
>>
>>
>> Now I need,
>>
>> 1) call from Javascritp to java and receive a response from java
>>
>> 2) call from java to javascript and receive a response from javascritp
>>
>>
>> Can you help me ?
>>
>> Best Regards Kandy
>>
>> On Wednesday, January 3, 2018 at 8:05:56 PM UTC+1, [email protected] 
>> wrote:
>>>
>>> Hi Steve:
>>>
>>>    Indeed, upon further inspection you're so right! We've just detected 
>>> a problem with our SVN workflow in which we keep updating the "libVersion" 
>>> property on codenameone.properties between dev machines WITHOUT updating 
>>> the libs at the same time, so we were keeping old libs and preventing the 
>>> proper update procedure.
>>>
>>>    We now see the deprecated warnings and the new code in 
>>> BrowserComponent. Will work from here.
>>>
>>> Kind regards,
>>>     Miguelanxo. 
>>>
>>> On Wednesday, January 3, 2018 at 7:09:50 PM UTC+1, Steve Hannah wrote:
>>>>
>>>> I just confirmed with a fresh project.  The changes are there.  I'm not 
>>>> sure why you're not picking them up.  Is your project using the libs at 
>>>> the 
>>>> default location (lib/CodenameOne.jar and JavaSE.jar) or have you adjusted 
>>>> the classpath for the project.
>>>>
>>>> Steve
>>>>
>>>> On Wed, Jan 3, 2018 at 10:02 AM, <[email protected]> wrote:
>>>>
>>>>> Hi Steve
>>>>>
>>>>> I already did the project libs update, but didn't help. My library 
>>>>> date is 30/12/2017, when I do the update it says "Your proyect Libs are 
>>>>> up 
>>>>> to date", we are blocked on the development of our App to IOS.
>>>>>
>>>>> Please help us.
>>>>>
>>>>> Best Regards
>>>>> Kandy
>>>>>
>>>>> On Wednesday, January 3, 2018 at 5:44:23 PM UTC+1, Steve Hannah wrote:
>>>>>
>>>>>>
>>>>>> On Wed, Jan 3, 2018 at 8:35 AM, <[email protected]> wrote:
>>>>>>
>>>>>>> Hello:
>>>>>>>
>>>>>>>     How can we use that new interface? There's no documentation and 
>>>>>>> our current lib doesn't expose said addJSCallback() yet (and updating 
>>>>>>> c1 
>>>>>>> libs didn't help).
>>>>>>>
>>>>>> You need to update your project libs.  It should be there (just 
>>>>>> tested on a project here).  (I.e. Project Properties > Update Project 
>>>>>> Libs 
>>>>>> .. not "update cn1libs")
>>>>>>  
>>>>>>
>>>>>>> Also, is the fix already available in the build servers? 
>>>>>>>
>>>>>> No.  It will be up in the next build server update on Friday.
>>>>>>
>>>>>> Steve
>>>>>>  
>>>>>>
>>>>>>>
>>>>>>> Kind regards,
>>>>>>>     Kandy.
>>>>>>>
>>>>>>>
>>>>>>> On Wednesday, January 3, 2018 at 2:47:04 PM UTC+1, Steve Hannah 
>>>>>>> wrote:
>>>>>>>>
>>>>>>>> This looks like a race condition that has been there for a while.  
>>>>>>>> I have just committed a fix for it here
>>>>>>>>
>>>>>>>> https://github.com/codenameone/CodenameOne/commit/783ac2828409aa747103a35001b4886e24944484
>>>>>>>>
>>>>>>>> With the last update, however, the com.codename1.javascript package 
>>>>>>>> is now deprecated in favour of a new async API that is incorporated 
>>>>>>>> directly into the BrowserComponent class.  I recommend migrating over 
>>>>>>>> to 
>>>>>>>> this new API for new code, as it will produce much better performance 
>>>>>>>> (no 
>>>>>>>> hidden invokeAndBlock under the hood - except in xxxAndWait() methods).
>>>>>>>>
>>>>>>>> Using the new API, your code would become:
>>>>>>>>
>>>>>>>> bc.addJSCallback("window.checkfoxClickedCallback ={setChecked: 
>>>>>>>> function(){ callback.onSuccess(null)}}", r->{
>>>>>>>>     Log.p("->checkboxClickedCallback.setChecked()");
>>>>>>>>     contexto.mostrarMensaje("checkboxClickedCallback.setChecked()");
>>>>>>>> });
>>>>>>>> bc.addJSCallback("window.okButtonClickedCallback = {showMap: 
>>>>>>>> function() { callback.onSuccess(null)}}", r->{
>>>>>>>>      Log.p("->okButtonClickedCallback.showMap()");
>>>>>>>>      contexto.mostrarMensaje("okButtonClickedCallback.showMap()");
>>>>>>>> });
>>>>>>>>
>>>>>>>> Notice, with this new syntax, you reference the java callback 
>>>>>>>> explicitly in the javascript code via the "callback" variable, which, 
>>>>>>>> in 
>>>>>>>> Javascript, contains 2 methods: onSuccess(arg), and onError(message, 
>>>>>>>> code).
>>>>>>>>
>>>>>>>> Steve
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Jan 3, 2018 at 5:09 AM, <[email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hello:
>>>>>>>>>
>>>>>>>>>     Since the last codename1 libary update we've been having 
>>>>>>>>> problems with the BrowserComponent on iOS. We've narrowed down the 
>>>>>>>>> problem 
>>>>>>>>> to the callback registration process (which gets executed on the 
>>>>>>>>> BrowserComponent onLoad callback). We register two functions, but 
>>>>>>>>> only the 
>>>>>>>>> second one can be invoked from javascript. The first one gets 
>>>>>>>>> registered ok 
>>>>>>>>> (we can see its code from the javascript side) but fails to execute 
>>>>>>>>> on iOS 
>>>>>>>>> (in Android and the simulator works fine). We tried a lot of 
>>>>>>>>> permutations, 
>>>>>>>>> and different argument lengths for both functions, but the only 
>>>>>>>>> difference 
>>>>>>>>> we see is the registration order. If we switch the registration 
>>>>>>>>> order, we 
>>>>>>>>> can only invoke the other one (whichever gets registered last).
>>>>>>>>>
>>>>>>>>> /*
>>>>>>>>> * Registramos el callback JS de valor cambiado del checkbox "No 
>>>>>>>>> volver a mostrar este asistente". 
>>>>>>>>> */
>>>>>>>>> JSObject checkboxClickedCallback = (JSObject) 
>>>>>>>>> javascriptContext.get("{}");
>>>>>>>>> checkboxClickedCallback.set("setChecked", new JSFunction() {
>>>>>>>>> public void apply(JSObject self, Object[] args) {
>>>>>>>>> Log.p("->checkboxClickedCallback.setChecked()");
>>>>>>>>> contexto.mostrarMensaje("checkboxClickedCallback.setChecked()");
>>>>>>>>>
>>>>>>>>> }
>>>>>>>>> });
>>>>>>>>> javascriptContext.set("window.checkboxClickedCallback", 
>>>>>>>>> checkboxClickedCallback);
>>>>>>>>>
>>>>>>>>> /*
>>>>>>>>> * Registramos el callback JS de click en el botón "OK".
>>>>>>>>> */
>>>>>>>>> JSObject okButtonClickedCallback = (JSObject) 
>>>>>>>>> javascriptContext.get("{}");
>>>>>>>>> okButtonClickedCallback.set("showMap", new JSFunction() {
>>>>>>>>> public void apply(JSObject self, Object[] args) {
>>>>>>>>> Log.p("->okButtonClickedCallback.showMap()");
>>>>>>>>> contexto.mostrarMensaje("okButtonClickedCallback.showMap()");
>>>>>>>>>
>>>>>>>>> }
>>>>>>>>> });
>>>>>>>>> javascriptContext.set("window.okButtonClickedCallback", 
>>>>>>>>> okButtonClickedCallback);
>>>>>>>>>
>>>>>>>>>     Please help, as it's impacting our current production code.
>>>>>>>>>
>>>>>>>>> Kind regards,
>>>>>>>>>      Kandy
>>>>>>>>>
>>>>>>>>> -- 
>>>>>>>>> You received this message because you are subscribed to the Google 
>>>>>>>>> Groups "CodenameOne Discussions" group.
>>>>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>>>>> send an email to 
>>>>>>>>> [email protected].
>>>>>>>>> Visit this group at 
>>>>>>>>> https://groups.google.com/group/codenameone-discussions.
>>>>>>>>> To view this discussion on the web visit 
>>>>>>>>> https://groups.google.com/d/msgid/codenameone-discussions/493a9217-0a4a-44b5-aede-974096f652d4%40googlegroups.com
>>>>>>>>>  
>>>>>>>>> <https://groups.google.com/d/msgid/codenameone-discussions/493a9217-0a4a-44b5-aede-974096f652d4%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>> .
>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> -- 
>>>>>>>> Steve Hannah
>>>>>>>> Software Developer
>>>>>>>> Codename One
>>>>>>>> http://www.codenameone.com
>>>>>>>>
>>>>>>> -- 
>>>>>>> You received this message because you are subscribed to the Google 
>>>>>>> Groups "CodenameOne Discussions" group.
>>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>>> send an email to 
>>>>>>> [email protected].
>>>>>>> Visit this group at 
>>>>>>> https://groups.google.com/group/codenameone-discussions.
>>>>>>> To view this discussion on the web visit 
>>>>>>> https://groups.google.com/d/msgid/codenameone-discussions/0aa6820b-d038-4a3f-82ad-c45fb4c6d5e6%40googlegroups.com
>>>>>>>  
>>>>>>> <https://groups.google.com/d/msgid/codenameone-discussions/0aa6820b-d038-4a3f-82ad-c45fb4c6d5e6%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>> .
>>>>>>>
>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> -- 
>>>>>> Steve Hannah
>>>>>> Software Developer
>>>>>> Codename One
>>>>>> http://www.codenameone.com
>>>>>>
>>>>> -- 
>>>>> You received this message because you are subscribed to the Google 
>>>>> Groups "CodenameOne Discussions" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>>> an email to [email protected].
>>>>> Visit this group at 
>>>>> https://groups.google.com/group/codenameone-discussions.
>>>>> To view this discussion on the web visit 
>>>>> https://groups.google.com/d/msgid/codenameone-discussions/f7466bae-c35d-4baf-a776-ecc9e13f65ea%40googlegroups.com
>>>>>  
>>>>> <https://groups.google.com/d/msgid/codenameone-discussions/f7466bae-c35d-4baf-a776-ecc9e13f65ea%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>>
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>
>>>>
>>>>
>>>> -- 
>>>> Steve Hannah
>>>> Software Developer
>>>> Codename One
>>>> http://www.codenameone.com
>>>>
>>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "CodenameOne Discussions" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] 
>> <javascript:>.
>> Visit this group at 
>> https://groups.google.com/group/codenameone-discussions.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/codenameone-discussions/014fa1a2-ef58-49ba-bf93-546a95896146%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/codenameone-discussions/014fa1a2-ef58-49ba-bf93-546a95896146%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
>
> -- 
> Steve Hannah
> Software Developer
> Codename One
> http://www.codenameone.com
>

-- 
You received this message because you are subscribed to the Google Groups 
"CodenameOne Discussions" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
Visit this group at https://groups.google.com/group/codenameone-discussions.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/codenameone-discussions/04c278eb-ece6-40bc-8135-8dbaefd4d7c7%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to