Harbs,

Please push those changes into separate branch "feature/" no matter how non
serious it look. I hope your changes will simplify things.

Thank you!


2017-09-26 17:54 GMT+02:00 Harbs <harbs.li...@gmail.com>:

> I’m working on refactoring this.
>
> Is there a reason for the null check in UIBase.createElement()?
>
> Why would createElement be called if the element is already created? None
> of the subclasses have this null check.
>
> if (element == null)
>     element = document.createElement('div') as WrappedHTMLElement;
>
> Do you think it’s safe to remove the check?
>
> > On Sep 26, 2017, at 6:42 PM, Alex Harui <aha...@adobe.com.INVALID>
> wrote:
> >
> > I believe there are components where more than one HTMLElement is created
> > but only one is (and can be) assigned as "element" but all have
> > flexjs_wrapper assigned to the wrapping IUIBase.
> >
> > If in fact no components need a separate positioner, it is fine to remove
> > it.  But if we keep it, even as a getter returning element, we have to
> > make sure our code that positions things uses positioner and not element
> > in case someone does try to override positioner some day.
> >
> > As Peter mentioned, the original thinking was that element would be the
> > HTMLElement that defines the node in the DOM that dispatches interaction
> > events, but positioner might be some parent of the element like a Div
> used
> > to give the element appropriate visuals, chrome, accessory widgets, etc,
> > like NumericStepper, ComboBox, DateField, and maybe more sophisticated
> > components like a RichTextEditor where the "element" is a Div that gets
> > focus and holds the text lines, but is a child of a positioner Div that
> > also contains child buttons for bold/italic/underline.  Another example
> > may be VideoPlayback.  The element might be some sort of video widget but
> > the positioner might be a div that also contains child buttons for
> > stop/pause/rewind/forward.
> >
> > Of course, I could be wrong...
> > -Alex
> >
> > On 9/26/17, 6:27 AM, "Peter Ent" <p...@adobe.com.INVALID> wrote:
> >
> >> @Harbs: yes on get positioner returning element. This way someone could
> >> override the getter and return something else if it suited their needs.
> >>
> >> —peter
> >>
> >> On 9/26/17, 9:25 AM, "Harbs" <harbs.li...@gmail.com> wrote:
> >>
> >>> I looked at MDL and I don’t see any problem there.
> >>>
> >>> I’m talking about simplifying things across the board. I don’t see how
> it
> >>> could effect anything.
> >>>
> >>> @Peter I think removing positioner might not be a bad idea, but keeping
> >>> it and using it as a pointer to element is basically just as cheap.
> >>>
> >>>> On Sep 26, 2017, at 4:12 PM, Piotr Zarzycki <
> piotrzarzyck...@gmail.com>
> >>>> wrote:
> >>>>
> >>>> Hi Harbs,
> >>>>
> >>>> If you will do such changes like moving to set flexjs_wrapper in the
> >>>> setter
> >>>> of element - please make it on the separate branch. Let me test with
> my
> >>>> app
> >>>> whether MDL will not breaking up. I hope that we could avoid this one,
> >>>> even
> >>>> if I think that it seems to be quite reasonable to do that.
> >>>>
> >>>> Can you for example do this only for your custom component not for the
> >>>> global IUIBase class ?
> >>>>
> >>>> Let see what Peter say.
> >>>>
> >>>> Thanks, Piotr
> >>>>
> >>>>
> >>>> 2017-09-26 15:02 GMT+02:00 Harbs <harbs.li...@gmail.com>:
> >>>>
> >>>>> Yishay and I were working on drag/drop today and we were modifying
> one
> >>>>> of
> >>>>> the classes you wrote for generating the drag image.
> >>>>>
> >>>>> The code can be simplified by using cloneNode() and stuffing the
> >>>>> results
> >>>>> into the element. The thing is, it does not work until you assign the
> >>>>> flexjs_wrapper to the element. IMO, calling the element setter should
> >>>>> do
> >>>>> that automatically.
> >>>>>
> >>>>> On a similar note, Every IUIBase object has a positioner set. I don’t
> >>>>> know
> >>>>> of a single class which has a different positioner than the element.
> >>>>> It
> >>>>> seems to me that positioner should be a getter (which normally
> returns
> >>>>> the
> >>>>> element) that’s overridden for classes which need a different one.
> >>>>> That
> >>>>> will save memory for every IUIBase created.
> >>>>>
> >>>>> Harbs
> >>>>>
> >>>>>> On Sep 26, 2017, at 3:23 PM, Peter Ent <p...@adobe.com.INVALID>
> >>>>>> wrote:
> >>>>>>
> >>>>>> The setter for element is in HTMLElementWrapper, the super class for
> >>>>>> UIBase. The setter for flexes_wrapper is in UIBase. So if the
> element
> >>>>>> setter were to also set the flexjs_wrapper, it would have to be an
> >>>>>> override in UIBase to do it. At least that¹s how I understand it.
> >>>>>>
> >>>>>> Could you elaborate a little more on the issue that is raising this
> >>>>>> concern?
> >>>>>>
> >>>>>> Your question made me scan through these classes. Looking at this
> >>>>>> code
> >>>>> now
> >>>>>> makes me think we can do a better and more consistent job organizing
> >>>>>> it
> >>>>>> for Royale. After all, having code that can be quickly understood
> and
> >>>>>> modified is important.
> >>>>>>
> >>>>>> ‹peter
> >>>>>>
> >>>>>> On 9/26/17, 7:13 AM, "Harbs" <harbs.li...@gmail.com> wrote:
> >>>>>>
> >>>>>>> Currently, setting the element of a IUIBase will not work correctly
> >>>>>>> because the flexjs_wrapper is not set. This makes it error prone
> >>>>>>> when
> >>>>>>> there¹s a need to work with the underlying DOM elements for HTML
> >>>>>>> output.
> >>>>>>>
> >>>>>>> I cannot think of a reason why the wrapper should not be set when
> >>>>> calling
> >>>>>>> the element setter. Instead of setting the flexjs_wrapper in
> >>>>>>> createElement(), it seems to me that it should be set in the
> element
> >>>>>>> setter in HTMLElementWrapper.
> >>>>>>>
> >>>>>>> Anyone have a reason not to do this?
> >>>>>>>
> >>>>>>> Harbs
> >>>>>>
> >>>>>
> >>>>>
> >>>>
> >>>>
> >>>> --
> >>>>
> >>>> Piotr Zarzycki
> >>>>
> >>>> mobile: +48 880 859 557
> >>>> skype: zarzycki10
> >>>>
> >>>> LinkedIn:
> >>>> https://na01.safelinks.protection.outlook.com/?url=
> http%3A%2F%2Fwww.link
> >>>> e
> >>>> din.com%2Fpiotrzarzycki&data=02%7C01%7C%
> 7C6716901213624a0e804708d504e203
> >>>> 9
> >>>> f%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%
> 7C636420291136295544&sdata=
> >>>> f
> >>>> Q1CjLGkCpNKxSQBmZn%2BnKZEplQpGl25XACOqq0gO2o%3D&reserved=0
> >>>>
> >>>> <https://na01.safelinks.protection.outlook.com/?url=
> https%3A%2F%2Fpl.lin
> >>>> k
> >>>> edin.com%2Fin%2Fpiotr-zarzycki-92a53552&data=02%
> 7C01%7C%7C6716901213624a
> >>>> 0
> >>>> e804708d504e2039f%7Cfa7b1b5a7b34438794aed2c178de
> cee1%7C0%7C0%7C636420291
> >>>> 1
> >>>> 36295544&sdata=LzIej2n6WVnm9AG1Hi4NqIZjOQS%
> 2Byo4w%2BPYTX0Rq8Gc%3D&reserv
> >>>> e
> >>>> d=0>
> >>>>
> >>>> GitHub:
> >>>> https://na01.safelinks.protection.outlook.com/?url=
> https%3A%2F%2Fgithub.
> >>>> c
> >>>> om%2Fpiotrzarzycki21&data=02%7C01%7C%7C6716901213624a0e804708d504e2
> 039f%
> >>>> 7
> >>>> Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%
> 7C636420291136295544&sdata=WeI
> >>>> l
> >>>> LzVsJzRKniD1r9F2xb%2BwljhCLHnurBnl03kBM9E%3D&reserved=0
> >>>
> >>
> >
>
>


-- 

Piotr Zarzycki

mobile: +48 880 859 557
skype: zarzycki10

LinkedIn: http://www.linkedin.com/piotrzarzycki
<https://pl.linkedin.com/in/piotr-zarzycki-92a53552>

GitHub: https://github.com/piotrzarzycki21

Reply via email to