Re: how to get a component nest Childs in some inner html tag
Hi Alex, 2018-06-30 8:06 GMT+02:00 Alex Harui : > > > On 6/29/18, 11:29 AM, "carlos.rov...@gmail.com on behalf of Carlos > Rovira" > wrote: > > Hi Alex, > > thanks for the explanation I think finaly understand the main > difference > between Group and Container. Although, I see Group seems to have many > things already setup to be able to do have this feature. Don't know if > having two separate components make sense, or there's more differences? > > IIRC, Group has some code to implement an interface that allows layouts to > find the right children, and could therefore have an internal actual parent > for its children, but Group never does for PAYG reasons, since lots of > times you don't need an internal parent. The code in Group is effectively > a degenerate case, but done that way so the Layouts can find the children > in the same way as in a Container. > > Container always creates an internal actual parent for the children. For > PAYG reasons, we offer these two ready-to-go components. If you looked at > the first FlexJS examples, there was no Group and thus there were twice as > many Divs in the DOM, one for the Container and one for the internal actual > parent. That was not PAYG. > > If we wanted to rename things, I would recommend dropping "Group" and > calling that Container (and not have an internal actual parent) and the > current Container would be more explicitly named, like > ContainerWithContentArea or something like that. > For me actual names "Group" and "Container" are ok now that I understand the differences, I think the names are capturing the essence. I'm not a fan of names like "XWithYAndZ". For me is a matter of update the comment description in both classes to describe the differences between both. > > COMPILE::JS > { > nav.appendChild(c.positioner); > (c as IUIBase).addedToParent(); > } > } > > So I have a "nav" html nested tag, and there's where things are added. > Is still early code, so maybe I should refactor it, but is a very > concrete > use for HTML (maybe SWF will not need this) > > I think you can create a component like ContainerContentArea and have it > create some other html element besides Div and set that as the IContentView > in a Container. There may be some support missing on the JS side. You > might want to see how Panel does it. > > I must say that as I dig more and more in new html5 components and > layouts > I see each time that things use to be created nesting some tags to > have the > final desired use case. In SWF things can be more simpler or less > nesting > (but as normal, more code too) > > Some of our component sets (or maybe just some of the components) are just > intended to encapsulate common DOM patterns. So if HTML5 nests tags, that > shouldn't be a problem, it is just the pattern you are trying to > encapsulate. The View should take care of that encapsulation. > I have things working right now, but I think as all code is a "first draft", I think we could revisit it to upgrade to a better, reusable and extendable class as Jewel settles more and more. > > I think there should be a distinction in the framework between a > "container" which can contain an arbitrary set of children, and a "control" > which might be composed of children, but you aren't supposed to know about > that, sort of like Web Components. So if you are creating Controls and > know the children in the "sub-DOM" then I would recommend creating that > sub-DOM in the View. If you are creating new containers, then it makes > more sense to base your Container on GroupBase or ContainerBase. > Right, I'm agree with that. I'll try to get back over the actual code of this case to try somethings in that way. It's more easy always to rework from a working version to get a better one thanks! :) > > HTH, > -Alex > > 2018-06-29 18:13 GMT+02:00 Alex Harui : > > > Container creates a ContainerContentArea as its child and then all > > children become children of the ContainerContentArea. Group does > not do > > that. The concept of having an inner content area forms the basis of > > complex containers with "chrome" around it, such as Panel. I'm not > sure > > how your requirements about positioner are different from what > Container > > and Panel do, so you might need to provide more detail about the > > differences. > > > > HTH, > > -Alex > > > > On 6/29/18, 8:17 AM, "carlos.rov...@gmail.com on behalf of Carlos > > Rovira" carlosrov...@apache.org> > > wrote: > > > > Hi, > > > > I trying to find the best route to have a container component > that has > > some > > nested html tag structure and adding child elements will be > added to > > the > > inner element, but the rest of normal behavior (id, listeners, > etc..) > > will > > be referencing the positioner. > > >
Re: how to get a component nest Childs in some inner html tag
On 6/29/18, 11:29 AM, "carlos.rov...@gmail.com on behalf of Carlos Rovira" wrote: Hi Alex, thanks for the explanation I think finaly understand the main difference between Group and Container. Although, I see Group seems to have many things already setup to be able to do have this feature. Don't know if having two separate components make sense, or there's more differences? IIRC, Group has some code to implement an interface that allows layouts to find the right children, and could therefore have an internal actual parent for its children, but Group never does for PAYG reasons, since lots of times you don't need an internal parent. The code in Group is effectively a degenerate case, but done that way so the Layouts can find the children in the same way as in a Container. Container always creates an internal actual parent for the children. For PAYG reasons, we offer these two ready-to-go components. If you looked at the first FlexJS examples, there was no Group and thus there were twice as many Divs in the DOM, one for the Container and one for the internal actual parent. That was not PAYG. If we wanted to rename things, I would recommend dropping "Group" and calling that Container (and not have an internal actual parent) and the current Container would be more explicitly named, like ContainerWithContentArea or something like that. COMPILE::JS { nav.appendChild(c.positioner); (c as IUIBase).addedToParent(); } } So I have a "nav" html nested tag, and there's where things are added. Is still early code, so maybe I should refactor it, but is a very concrete use for HTML (maybe SWF will not need this) I think you can create a component like ContainerContentArea and have it create some other html element besides Div and set that as the IContentView in a Container. There may be some support missing on the JS side. You might want to see how Panel does it. I must say that as I dig more and more in new html5 components and layouts I see each time that things use to be created nesting some tags to have the final desired use case. In SWF things can be more simpler or less nesting (but as normal, more code too) Some of our component sets (or maybe just some of the components) are just intended to encapsulate common DOM patterns. So if HTML5 nests tags, that shouldn't be a problem, it is just the pattern you are trying to encapsulate. The View should take care of that encapsulation. I think there should be a distinction in the framework between a "container" which can contain an arbitrary set of children, and a "control" which might be composed of children, but you aren't supposed to know about that, sort of like Web Components. So if you are creating Controls and know the children in the "sub-DOM" then I would recommend creating that sub-DOM in the View. If you are creating new containers, then it makes more sense to base your Container on GroupBase or ContainerBase. HTH, -Alex 2018-06-29 18:13 GMT+02:00 Alex Harui : > Container creates a ContainerContentArea as its child and then all > children become children of the ContainerContentArea. Group does not do > that. The concept of having an inner content area forms the basis of > complex containers with "chrome" around it, such as Panel. I'm not sure > how your requirements about positioner are different from what Container > and Panel do, so you might need to provide more detail about the > differences. > > HTH, > -Alex > > On 6/29/18, 8:17 AM, "carlos.rov...@gmail.com on behalf of Carlos > Rovira" > wrote: > > Hi, > > I trying to find the best route to have a container component that has > some > nested html tag structure and adding child elements will be added to > the > inner element, but the rest of normal behavior (id, listeners, etc..) > will > be referencing the positioner. > > What's the best way to do this? Use Group or Container? what I should > override? get host() method in BeadViewBase should be override? how? > > Hope you could point to the best way of doing this > > thanks > > -- > Carlos Rovira > https://na01.safelinks.protection.outlook.com/?url= > http%3A%2F%2Fabout.me%2Fcarlosrovira=02%7C01%7Caharui%40adobe.com% > 7Cbef963261fdf463682d308d5ddd37182%7Cfa7b1b5a7b34438794aed2c178de > cee1%7C0%7C1%7C636658822573164461=kLJNuz8V8r46O6YvTUm5TuQHx78VXn > rPSbAbp2p%2BOLg%3D=0 > > > -- Carlos Rovira
Re: how to get a component nest Childs in some inner html tag
Hi Alex, thanks for the explanation I think finaly understand the main difference between Group and Container. Although, I see Group seems to have many things already setup to be able to do have this feature. Don't know if having two separate components make sense, or there's more differences? Regarding the concrete case, for now I'm using this code: override public function addElement(c:IChild, dispatchEvent:Boolean = true): void { COMPILE::SWF { ... } COMPILE::JS { nav.appendChild(c.positioner); (c as IUIBase).addedToParent(); } } So I have a "nav" html nested tag, and there's where things are added. Is still early code, so maybe I should refactor it, but is a very concrete use for HTML (maybe SWF will not need this) I must say that as I dig more and more in new html5 components and layouts I see each time that things use to be created nesting some tags to have the final desired use case. In SWF things can be more simpler or less nesting (but as normal, more code too) Thanks Alex 2018-06-29 18:13 GMT+02:00 Alex Harui : > Container creates a ContainerContentArea as its child and then all > children become children of the ContainerContentArea. Group does not do > that. The concept of having an inner content area forms the basis of > complex containers with "chrome" around it, such as Panel. I'm not sure > how your requirements about positioner are different from what Container > and Panel do, so you might need to provide more detail about the > differences. > > HTH, > -Alex > > On 6/29/18, 8:17 AM, "carlos.rov...@gmail.com on behalf of Carlos > Rovira" > wrote: > > Hi, > > I trying to find the best route to have a container component that has > some > nested html tag structure and adding child elements will be added to > the > inner element, but the rest of normal behavior (id, listeners, etc..) > will > be referencing the positioner. > > What's the best way to do this? Use Group or Container? what I should > override? get host() method in BeadViewBase should be override? how? > > Hope you could point to the best way of doing this > > thanks > > -- > Carlos Rovira > https://na01.safelinks.protection.outlook.com/?url= > http%3A%2F%2Fabout.me%2Fcarlosrovira=02%7C01%7Caharui%40adobe.com% > 7Cbef963261fdf463682d308d5ddd37182%7Cfa7b1b5a7b34438794aed2c178de > cee1%7C0%7C1%7C636658822573164461=kLJNuz8V8r46O6YvTUm5TuQHx78VXn > rPSbAbp2p%2BOLg%3D=0 > > > -- Carlos Rovira http://about.me/carlosrovira
Re: how to get a component nest Childs in some inner html tag
Container creates a ContainerContentArea as its child and then all children become children of the ContainerContentArea. Group does not do that. The concept of having an inner content area forms the basis of complex containers with "chrome" around it, such as Panel. I'm not sure how your requirements about positioner are different from what Container and Panel do, so you might need to provide more detail about the differences. HTH, -Alex On 6/29/18, 8:17 AM, "carlos.rov...@gmail.com on behalf of Carlos Rovira" wrote: Hi, I trying to find the best route to have a container component that has some nested html tag structure and adding child elements will be added to the inner element, but the rest of normal behavior (id, listeners, etc..) will be referencing the positioner. What's the best way to do this? Use Group or Container? what I should override? get host() method in BeadViewBase should be override? how? Hope you could point to the best way of doing this thanks -- Carlos Rovira https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira=02%7C01%7Caharui%40adobe.com%7Cbef963261fdf463682d308d5ddd37182%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C1%7C636658822573164461=kLJNuz8V8r46O6YvTUm5TuQHx78VXnrPSbAbp2p%2BOLg%3D=0
how to get a component nest Childs in some inner html tag
Hi, I trying to find the best route to have a container component that has some nested html tag structure and adding child elements will be added to the inner element, but the rest of normal behavior (id, listeners, etc..) will be referencing the positioner. What's the best way to do this? Use Group or Container? what I should override? get host() method in BeadViewBase should be override? how? Hope you could point to the best way of doing this thanks -- Carlos Rovira http://about.me/carlosrovira