nino: thank you very much! I have my two question responded in your code 
snippet. My last question: I notice you perform most of the job in 
javascript / jsni, nice. How is your experience using  eclipse+google Java 
code refactoring tools ? in particular, method and class renames ? Thank 
you again.- 

On Thursday, September 13, 2012 5:51:30 PM UTC-3, nino wrote:
>
> In one our our project we have a base which goes something like 
>
> public class ProxyObject {
>
>     protected JavaScriptObject jsObj;
>
>     protected ProxyObject() {
>
>     }
>
> }
>
>
> The we do 
>
> public class View extends ProxyObject {
>
>     public View() {
>
>         createPeer();
>
>     }
>
>
>     View(JavaScriptObject obj) {
>
>         jsObj = obj;
>
>     }
>
>
>     private List<View> children = new ArrayList<View>();
>
>     @Override
>
>     public native Point getAnchorPoint() /*-{
>
>  var jso = 
> [email protected]::getJsObj()();
>
>  var obj = jso.anchorPoint;
>
>  var toReturn = 
> @com.emitrom.gwt4.ti.mobile.client.ui.Point::new(Lcom/google/gwt/core/client/JavaScriptObject;)(obj);
>
>  return toReturn;
>
>     }-*/;
>
> }
>
> We create the wrapped JSO in the  constructor and delegation is done using 
> JSNI which save the need of the explicit cast.
>
> To call methods on the wrapped JSO we use JSNI
>
>
> Hope this could help
>
>
>
> 2012/9/13 Sebastián Gurin <[email protected] <javascript:>>
>
>> Hi nino, i'm making a second Java API for my yuigwt project, on top of my 
>> JSO based Java API, wrapping JSO objects and delegating methods to it. I 
>> have a couple of questions for you about this. I'm not sure, perhaps the 
>> best is to create another thread for this questions, but here they go: 
>>
>> I have a rich class hierarchy for example, ClassC extends ClassB extends 
>> ClassA
>>
>> Now for ClassA I'm writing: 
>>
>> public class ClassA {
>> protected JSOClassA _wrapped; 
>> }
>>
>> The problem is that in ClassB and ClassC I must cast _wrapped to 
>> JSOClassB and JSOClassC for implementing method delegation, so I ended with 
>> something like
>>
>> public class ClassB extends ClassA {
>>   protected JSOClassB _wrappedClassB() {
>>     return _wrapped.cast(); 
>>   }
>> }
>> public class ClassC extends ClassB {
>>   protected JSOClassC _wrappedClassC() {
>>     return _wrapped.cast(); 
>>   }
>> }
>>
>> can you think of another more simpler way to solve this ? 
>>
>> And the other question is, how or where should I initialize the _wrapped 
>> field ? at constructor ? 
>>
>> Regards and thanks in advance. 
>>
>> On Tuesday, September 11, 2012 7:24:56 AM UTC-3, nino wrote:
>>
>>> Answer below in Bold.
>>>
>>> Cheers
>>>
>>> 2012/9/11 Sebastián Gurin <[email protected]>
>>>
>>> Nino; I very like your thoughts and I agree with them. My reply between 
>>>> lines: 
>>>>
>>>> On Monday, September 10, 2012 5:05:25 PM UTC-3, nino wrote:
>>>>>
>>>>> The main Question is do you want YUI users to use Java or do you want 
>>>>>  to bring Java Devs to YUI ? 
>>>>> I think you will get more traction by choosing the latter.
>>>>>
>>>>>
>>>> I also thought of that. I started learning how to port JavaScript 
>>>> libraries to GWT  with my project http://code.google.com/p/**
>>>> raphael4gwt/ <http://code.google.com/p/raphael4gwt/> , a vector 
>>>> drawing library. As such, performance was a requirement, and then a Java 
>>>> API using  GWT overlays directly was a requirement. But now for YUIGWT I 
>>>> wonder if that is true. Some notes: 
>>>>
>>>
>>>
>>>         *Yeah overlay type can be inherited but there is not much u can 
>>> do with that.Plus the methods beeing all finals one cant override them. Not 
>>> really flexible imho*. 
>>>
>>>>
>>>> 1) overlay types CAN be inherited, but I agre that is very 
>>>> unconfortable for end GWT/Java users to do this... this is a very 
>>>> important  "issue" in my project I think...
>>>> 2) I very liked your question: "do you want YUI users to use Java or do 
>>>> you want  to bring Java Devs to YUI ? " and it is making me reflect a lot. 
>>>> thanks. 
>>>>  
>>>>
>>>>> While a zero overhead API gives you the ability to  easely write YUI 
>>>>> code in java soon you will get users request  like "Why cant i extends 
>>>>> class X to add my own functions". Overlay types dont give you.
>>>>>
>>>>> We had this problems while implementing our libraries. We started 
>>>>> first with 1:1 match of the JS API. Until our users start complaining 
>>>>> about 
>>>>> the API not beeing extensible. What you would expect  when using an OO 
>>>>> language like Java. 
>>>>>
>>>>
>>>> Well, but tell me, do you write a second Java API, with real java 
>>>> classes that wrapp the Js objects ? and if so, do you use your previous 
>>>> 1:1 
>>>> Java API for writing the this second more-java-confortable API?  (I sould 
>>>> do that) and if so, do you use some Java code generator tool for 
>>>> artificial 
>>>> create the second Java API form the first 1:1 - overlays Java API ? can 
>>>> this be mechanized at all? 
>>>>
>>>> I'm questioning my self these kind of things for my project YUIGWT. YUI 
>>>> has a very big API, and unlike other libraries it contains utils for doing 
>>>> a more structured - object oriented javascript like classes, inheritance, 
>>>> plugins, attributes, events, etc. All artificially and fully extensible 
>>>> from javascript. The big desicion I have to make is this: "the 
>>>> objective of YUIGWT is to bring the YUI public concrete utilities to the 
>>>> GWT user, like a datatable, a button, etc ". But not to support those 
>>>> utilities enhancing the Javascript language.
>>>>
>>>
>>>
>>> *We dont use generator for our APIs. We go the insane way to look at 
>>> each methods in the APIs we try to wrap! This is a lot of work but it gives 
>>> us the possibility to optimize/enhendce some stuff. And sometime leave some 
>>> stuff out that dont make sence for a Java Developer. Plus you come to learn 
>>> the JS library which is not bad (At my day to day work i dont use GWT but 
>>>  EXTJS. So Wrapping ExtJS helped me understand  that library better, and 
>>> hate it even more loooool). *
>>> * *
>>> * Concerning building the objects. Like i said before we basically have 
>>> a real Java Object wrapping a JSO. And we are just delegating to the native 
>>> JSO. You can have a look at our Java API for Sencha Touch (
>>> http://emitrom.com/touch4j) to see it in action.*
>>> * *
>>> * If you have any question feel free to ping me.*
>>>
>>>  
>>>
>>>>
>>>>
>>>>> .... code....
>>>>>
>>>>> That looks pretty cool. Now what if i want to extend Button  and 
>>>>> override some methods ?
>>>>>
>>>>>
>>>>>
>>>>
>>>> This is the perfect example, thank you!
>>>>
>>>> Currently in my YUIGWT project (very new project) I do not contemplate 
>>>> that. What I'm thinking can be a perfect solution for me is : to create a 
>>>> second Button class, that wraps all current Button methods, as you 
>>>> suggested in your first post. The user could override some methods, and it 
>>>> is his responsability to call super.(). In the constructor, they must pass 
>>>> me the Y object that is responsible for instantiate the "real - native" 
>>>> Button . 
>>>>  
>>>> Well, a pleasure to read you, if you have any other suggestions or tips 
>>>> about this subject are most welcome. 
>>>>
>>>>  -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "Google Web Toolkit" group.
>>>> To view this discussion on the web visit https://groups.google.com/d/**
>>>> msg/google-web-toolkit/-/a-**U28tdEaPAJ<https://groups.google.com/d/msg/google-web-toolkit/-/a-U28tdEaPAJ>
>>>> .
>>>>  
>>>> To post to this group, send email to google-we...@**googlegroups.com.
>>>>
>>>> To unsubscribe from this group, send email to google-web-toolkit+**
>>>> [email protected].
>>>> For more options, visit this group at http://groups.google.com/**
>>>> group/google-web-toolkit?hl=en<http://groups.google.com/group/google-web-toolkit?hl=en>
>>>> **.
>>>>
>>>
>>>  -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Google Web Toolkit" group.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msg/google-web-toolkit/-/pAMwpwmGowMJ.
>>
>> To post to this group, send email to 
>> [email protected]<javascript:>
>> .
>> To unsubscribe from this group, send email to 
>> [email protected] <javascript:>.
>> For more options, visit this group at 
>> http://groups.google.com/group/google-web-toolkit?hl=en.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/google-web-toolkit/-/MNdypItk-VUJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.

Reply via email to