On Sun, Dec 6, 2015 at 5:46 PM, Goktug Gokdogan <[email protected]> wrote:

> You need to remove initialization as well because the field by Java; the
> point is to link to the underlying javascript.
>
>
I was going to write "the field *is not owned* by Java"


> (A field that is defined by a native JsType is "native", meaning it is
> linked to underlying javascript and will generate code like
> 'canvas.nodeType == Node.ELEMENT_NODE')
>
> On Sun, Dec 6, 2015 at 2:15 AM, rhmoller <[email protected]> wrote:
>
>> Just removing the final keyword does not work. It still complains about
>> the initialization. I cannot remove the initialization because that is not
>> valid Java.
>>
>> The @JsOverlay solution looks OK. This line of Java
>>
>> ctx.fillText("Canvas is an element node: " + (canvas.getNodeType() ==
>> Node.ELEMENT_NODE), 10, 20);
>>
>> compiles to this line of Javascript
>>
>> ctx.fillText('Canvas is an element node: ' + (canvas.nodeType == 1), 10,
>> 20);
>>
>> There does not seem to be any overhead from the overlay. It would have
>> been nicer if it said (canvas.nodeType == Node.ELEMENT_NODE) in Javascript.
>> But it evaluates to the same, so I am happy.
>>
>>
>> Den fredag den 4. december 2015 kl. 06.28.02 UTC+1 skrev Goktug Gokdogan:
>>>
>>> Ignoring initialization is quite complicated when you put in to account
>>> generated clinit and also primitives which becomes compile-time-constants
>>> per jls and automatically inlined. Also code wise it is quite weird and
>>> potentially confusing.
>>>
>>> Workaround is quite simple, just remove the "final" keyword and you are
>>> set.
>>>
>>>
>>> On Thu, Dec 3, 2015 at 5:35 AM, Jens <[email protected]> wrote:
>>>
>>>>
>>>> Awesome. Thank you. @JsOverlay did the trick.
>>>>>
>>>>
>>>> But IMHO @JsOverlay is only a workaround because it is meant to be used
>>>> for code additions that do not exist in the underlying native type. So in
>>>> your case GWT will now generate some additional code for your constants and
>>>> will not use $wnd.Node.ELEMENT_NODE when doing comparisons. The link Thomas
>>>> has posted is a good example of proper JsOverlay usage as the constant
>>>> "TAG" is not part of the underlying native object.
>>>>
>>>> So I would consider it a bug/missing feature that you can not define
>>>> native constants in a native JsType. IMHO the restriction checker should
>>>> allow static final constant initialization in native JsType and if constant
>>>> is not annotated with @JsOverlay then GWT should treat the constant name as
>>>> native constant. The value to initialize the constant in java code should
>>>> be ignored, as initialization only exists to make java happy.
>>>>
>>>> cc @goktug
>>>>
>>>> -- J.
>>>>
>>>
>>> --
>> You received this message because you are subscribed to the Google Groups
>> "GWT Users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at http://groups.google.com/group/google-web-toolkit.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups "GWT 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

Reply via email to