The cuplrit is UIbuilder>>componentAt: which now seems to search most
of the universe trying to find some component somewhere. It used to just look in that builder's dictionary, it now searches other builders?? Anyone seen this as a problem? Anyone know why??? -- Dennis Smith +1 416.798.7948 Cherniak Software Development Corporation Fax: +1 416.798.0948 509-2001 Sheppard Avenue East [hidden email] Toronto, ON M2J 4Z8 sip:[hidden email] Canada http://www.CherniakSoftware.com Entrance off Yorkland Blvd south of Sheppard Ave east of the DVP _______________________________________________ vwnc mailing list [hidden email] http://lists.cs.uiuc.edu/mailman/listinfo/vwnc |
That subject should have read "Our UI's" -- now sure what an "Out UI" is
:) (sorry!) On 2013-02-07 8:09 AM, Dennis Smith wrote: > The cuplrit is UIbuilder>>componentAt: which now seems to search > most of the universe trying to find some component somewhere. > > It used to just look in that builder's dictionary, it now searches > other builders?? > > Anyone seen this as a problem? Anyone know why??? > -- Dennis Smith +1 416.798.7948 Cherniak Software Development Corporation Fax: +1 416.798.0948 509-2001 Sheppard Avenue East [hidden email] Toronto, ON M2J 4Z8 sip:[hidden email] Canada http://www.CherniakSoftware.com Entrance off Yorkland Blvd south of Sheppard Ave east of the DVP _______________________________________________ vwnc mailing list [hidden email] http://lists.cs.uiuc.edu/mailman/listinfo/vwnc |
An "Out UI" is probably the opposite to an "In UI" ;-)
A mathematician considers a problem solved if he can attribute it to another problem ;-) -----Ursprüngliche Nachricht----- Von: [hidden email] [mailto:[hidden email]] Im Auftrag von Dennis Smith Gesendet: Donnerstag, 7. Februar 2013 14:17 An: [hidden email] Betreff: Re: [vwnc] Out UI's Slowed down 10x or more between VW7.7.1 and VW7.9.1 ... That subject should have read "Our UI's" -- now sure what an "Out UI" is :) (sorry!) On 2013-02-07 8:09 AM, Dennis Smith wrote: > The cuplrit is UIbuilder>>componentAt: which now seems to search > most of the universe trying to find some component somewhere. > > It used to just look in that builder's dictionary, it now searches > other builders?? > > Anyone seen this as a problem? Anyone know why??? > -- Dennis Smith +1 416.798.7948 Cherniak Software Development Corporation Fax: +1 416.798.0948 509-2001 Sheppard Avenue East [hidden email] Toronto, ON M2J 4Z8 sip:[hidden email] Canada http://www.CherniakSoftware.com Entrance off Yorkland Blvd south of Sheppard Ave east of the DVP _______________________________________________ vwnc mailing list [hidden email] http://lists.cs.uiuc.edu/mailman/listinfo/vwnc _______________________________________________ vwnc mailing list [hidden email] http://lists.cs.uiuc.edu/mailman/listinfo/vwnc |
In reply to this post by Dennis smith-4
What a coincidence!
I started today working on upgrading our application to vw7.9.1 and also noticed this change in #componentAt: I'm considering making a new method with the old behavior and change our code to use this new method. I think the current implementation in VW7.9.1 is quite unreliable. @Cincom: What was the reason for introducing this "search for a widget anywhere on the window"? It means, for instance, that if you're in a subcanvas and you write code like this: (self builder componentAt: #myComponent) ifNotNil: [:c | ...] that you're no longer sure that the component that's returned really is part of the subcanvas since the method looks for the component in the entire Window's component tree: componentAt: aKey "Retrieve the wrapperInterface or other object that goes by the same id, of the indicated component." namedComponents at: aKey ifPresent: [:each | each ifNotNil: [:visual | ^visual wrapperInterface]]. (self searchCurrentCompositeViewTreeForID: aKey) ifNotNil: [:view | ^view]. (self searchTopWindowViewTreeForID: aKey) ifNotNil: [:view | ^view]. ^nil This sounds like looking for trouble... What would go wrong if I would revert the method to the vw7.7.0 behavior where only the dictionary of #namedComponents was used? I can replace our senders with a new method, but we've got quite a few senders and the current implementation of #componentAt: looks unreliable to me. It will probably cause us problems if people incorrectly start using it... Mark -----Original Message----- From: [hidden email] [mailto:[hidden email]] On Behalf Of Dennis Smith Sent: donderdag 7 februari 2013 14:10 To: [hidden email] Subject: [vwnc] Out UI's Slowed down 10x or more between VW7.7.1 and VW7.9.1 ... The cuplrit is UIbuilder>>componentAt: which now seems to search most of the universe trying to find some component somewhere. It used to just look in that builder's dictionary, it now searches other builders?? Anyone seen this as a problem? Anyone know why??? -- Dennis Smith +1 416.798.7948 Cherniak Software Development Corporation Fax: +1 416.798.0948 509-2001 Sheppard Avenue East [hidden email] Toronto, ON M2J 4Z8 sip:[hidden email] Canada http://www.CherniakSoftware.com Entrance off Yorkland Blvd south of Sheppard Ave east of the DVP _______________________________________________ vwnc mailing list [hidden email] http://lists.cs.uiuc.edu/mailman/listinfo/vwnc _______________________________________________ vwnc mailing list [hidden email] http://lists.cs.uiuc.edu/mailman/listinfo/vwnc |
Just for fun I changed the method back to what it used to be and ran
browsers and debuggers etc -- all fine. For now my solution is a subclass which has the old method and each of my applications (all use a common superclass) do a aBuilder changeClasssTo: NewBuilderClass so that protects VW apps, but lets mine be faster. I too would like to hear what cincom says about it?? On 2013-02-07 8:54 AM, Mark Plas wrote: > What a coincidence! > > I started today working on upgrading our application to vw7.9.1 and also noticed this change in #componentAt: > > I'm considering making a new method with the old behavior and change our code to use this new method. I think the current implementation in VW7.9.1 is quite unreliable. > > @Cincom: What was the reason for introducing this "search for a widget anywhere on the window"? > > It means, for instance, that if you're in a subcanvas and you write code like this: > > (self builder componentAt: #myComponent) ifNotNil: [:c | ...] > > that you're no longer sure that the component that's returned really is part of the subcanvas since the method looks for the component in the entire Window's component tree: > > componentAt: aKey > "Retrieve the wrapperInterface or other object that goes by the same id, of the indicated component." > > namedComponents at: aKey > ifPresent: [:each | each ifNotNil: [:visual | ^visual wrapperInterface]]. > (self searchCurrentCompositeViewTreeForID: aKey) ifNotNil: [:view | ^view]. > (self searchTopWindowViewTreeForID: aKey) ifNotNil: [:view | ^view]. > ^nil > > This sounds like looking for trouble... > > What would go wrong if I would revert the method to the vw7.7.0 behavior where only the dictionary of #namedComponents was used? I can replace our senders with a new method, but we've got quite a few senders and the current implementation of #componentAt: looks unreliable to me. It will probably cause us problems if people incorrectly start using it... > > Mark > > > -----Original Message----- > From: [hidden email] [mailto:[hidden email]] On Behalf Of Dennis Smith > Sent: donderdag 7 februari 2013 14:10 > To: [hidden email] > Subject: [vwnc] Out UI's Slowed down 10x or more between VW7.7.1 and VW7.9.1 ... > > The cuplrit is UIbuilder>>componentAt: which now seems to search most > of the universe trying to find some component somewhere. > > It used to just look in that builder's dictionary, it now searches other > builders?? > > Anyone seen this as a problem? Anyone know why??? > -- Dennis Smith +1 416.798.7948 Cherniak Software Development Corporation Fax: +1 416.798.0948 509-2001 Sheppard Avenue East [hidden email] Toronto, ON M2J 4Z8 sip:[hidden email] Canada http://www.CherniakSoftware.com Entrance off Yorkland Blvd south of Sheppard Ave east of the DVP _______________________________________________ vwnc mailing list [hidden email] http://lists.cs.uiuc.edu/mailman/listinfo/vwnc |
Good idea about the subclass!
we already have one. I will restore the basic behavior on that one. -----Original Message----- From: [hidden email] [mailto:[hidden email]] On Behalf Of Dennis Smith Sent: donderdag 7 februari 2013 15:03 To: vwnc >> "[hidden email]" Subject: Re: [vwnc] Out UI's Slowed down 10x or more between VW7.7.1 and VW7.9.1 ... Just for fun I changed the method back to what it used to be and ran browsers and debuggers etc -- all fine. For now my solution is a subclass which has the old method and each of my applications (all use a common superclass) do a aBuilder changeClasssTo: NewBuilderClass so that protects VW apps, but lets mine be faster. I too would like to hear what cincom says about it?? On 2013-02-07 8:54 AM, Mark Plas wrote: > What a coincidence! > > I started today working on upgrading our application to vw7.9.1 and also noticed this change in #componentAt: > > I'm considering making a new method with the old behavior and change our code to use this new method. I think the current implementation in VW7.9.1 is quite unreliable. > > @Cincom: What was the reason for introducing this "search for a widget anywhere on the window"? > > It means, for instance, that if you're in a subcanvas and you write code like this: > > (self builder componentAt: #myComponent) ifNotNil: [:c | ...] > > that you're no longer sure that the component that's returned really is part of the subcanvas since the method looks for the component in the entire Window's component tree: > > componentAt: aKey > "Retrieve the wrapperInterface or other object that goes by the same id, of the indicated component." > > namedComponents at: aKey > ifPresent: [:each | each ifNotNil: [:visual | ^visual wrapperInterface]]. > (self searchCurrentCompositeViewTreeForID: aKey) ifNotNil: [:view | ^view]. > (self searchTopWindowViewTreeForID: aKey) ifNotNil: [:view | ^view]. > ^nil > > This sounds like looking for trouble... > > What would go wrong if I would revert the method to the vw7.7.0 behavior where only the dictionary of #namedComponents was used? I can replace our senders with a new method, but we've got quite a few senders and the current implementation of #componentAt: looks unreliable to me. It will probably cause us problems if people incorrectly start using it... > > Mark > > > -----Original Message----- > From: [hidden email] [mailto:[hidden email]] On > Behalf Of Dennis Smith > Sent: donderdag 7 februari 2013 14:10 > To: [hidden email] > Subject: [vwnc] Out UI's Slowed down 10x or more between VW7.7.1 and VW7.9.1 ... > > The cuplrit is UIbuilder>>componentAt: which now seems to search most > of the universe trying to find some component somewhere. > > It used to just look in that builder's dictionary, it now searches > other builders?? > > Anyone seen this as a problem? Anyone know why??? > -- Dennis Smith +1 416.798.7948 Cherniak Software Development Corporation Fax: +1 416.798.0948 509-2001 Sheppard Avenue East [hidden email] Toronto, ON M2J 4Z8 sip:[hidden email] Canada http://www.CherniakSoftware.com Entrance off Yorkland Blvd south of Sheppard Ave east of the DVP _______________________________________________ vwnc mailing list [hidden email] http://lists.cs.uiuc.edu/mailman/listinfo/vwnc _______________________________________________ vwnc mailing list [hidden email] http://lists.cs.uiuc.edu/mailman/listinfo/vwnc |
I imagine this is related to what Travis Griggs suggested on vw-dev:
http://www.parcplace.net/list/vw-dev/1110/msg00012.html (only visible if you're signed up to vw-dev) http://objology.blogspot.com/2011/10/sounding-out-view-tree.html I commented then that I didn't like the automatic deep search: > Also, I'm not sure about walking the tree as far as possible in one > direction or the other. It's not needed very often, and it may end up > finding something surprising deep in some subcanvas. Most of my > navigation is simply down one level, to a widget that I've explicitly > named, so the explicit "self widgetAt: #tree" is better than the more > eager-to-help "self ? #tree", which like a puppy may run off and fetch > something I didn't want, which will then get mangled. ... > If I had deep subcanvases, I wouldn't want a method at the top level > to manipulate UI components deep inside. That would seem to break > the modularization, which I'd see as one of the benefits of > subcanvases. I'd rather have each subcanvas have its own > ApplicationModel and take care of its own bit of the UI. Steve > -----Original Message----- > From: [hidden email] [mailto:[hidden email]] On > Behalf Of Mark Plas > Sent: Thursday, February 7, 2013 4:15 PM > To: Dennis Smith; vwnc >> "[hidden email]" > Subject: Re: [vwnc] Out UI's Slowed down 10x or more between VW7.7.1 > and VW7.9.1 ... > > Good idea about the subclass! > > we already have one. I will restore the basic behavior on that one. > > -----Original Message----- > From: [hidden email] [mailto:[hidden email]] On > Behalf Of Dennis Smith > Sent: donderdag 7 februari 2013 15:03 > To: vwnc >> "[hidden email]" > Subject: Re: [vwnc] Out UI's Slowed down 10x or more between VW7.7.1 > and VW7.9.1 ... > > Just for fun I changed the method back to what it used to be and ran > browsers and debuggers etc -- all fine. > > For now my solution is a subclass which has the old method and each of > my applications (all use a common superclass) do a > aBuilder changeClasssTo: NewBuilderClass > > so that protects VW apps, but lets mine be faster. > > I too would like to hear what cincom says about it?? > > > > On 2013-02-07 8:54 AM, Mark Plas wrote: > > What a coincidence! > > > > I started today working on upgrading our application to vw7.9.1 and > also noticed this change in #componentAt: > > > > I'm considering making a new method with the old behavior and change > our code to use this new method. I think the current implementation in > VW7.9.1 is quite unreliable. > > > > @Cincom: What was the reason for introducing this "search for a > widget anywhere on the window"? > > > > It means, for instance, that if you're in a subcanvas and you write > code like this: > > > > (self builder componentAt: #myComponent) ifNotNil: [:c > | ...] > > > > that you're no longer sure that the component that's returned really > is part of the subcanvas since the method looks for the component in > the entire Window's component tree: > > > > componentAt: aKey > > "Retrieve the wrapperInterface or other object that goes by > the same id, of the indicated component." > > > > namedComponents at: aKey > > ifPresent: [:each | each ifNotNil: [:visual | > ^visual wrapperInterface]]. > > (self searchCurrentCompositeViewTreeForID: aKey) ifNotNil: > [:view | ^view]. > > (self searchTopWindowViewTreeForID: aKey) ifNotNil: [:view | > ^view]. > > ^nil > > > > This sounds like looking for trouble... > > > > What would go wrong if I would revert the method to the vw7.7.0 > behavior where only the dictionary of #namedComponents was used? I can > replace our senders with a new method, but we've got quite a few > senders and the current implementation of #componentAt: looks > unreliable to me. It will probably cause us problems if people > incorrectly start using it... > > > > Mark > > > > > > -----Original Message----- > > From: [hidden email] [mailto:[hidden email]] On > > Behalf Of Dennis Smith > > Sent: donderdag 7 februari 2013 14:10 > > To: [hidden email] > > Subject: [vwnc] Out UI's Slowed down 10x or more between VW7.7.1 and > VW7.9.1 ... > > > > The cuplrit is UIbuilder>>componentAt: which now seems to search > most > > of the universe trying to find some component somewhere. > > > > It used to just look in that builder's dictionary, it now searches > > other builders?? > > > > Anyone seen this as a problem? Anyone know why??? > > > > -- > Dennis Smith +1 416.798.7948 > Cherniak Software Development Corporation Fax: +1 416.798.0948 > 509-2001 Sheppard Avenue East [hidden email] > Toronto, ON M2J 4Z8 sip:[hidden email] > Canada http://www.CherniakSoftware.com > Entrance off Yorkland Blvd south of Sheppard Ave east of the DVP > > _______________________________________________ > vwnc mailing list > [hidden email] > http://lists.cs.uiuc.edu/mailman/listinfo/vwnc > > _______________________________________________ > vwnc mailing list > [hidden email] > http://lists.cs.uiuc.edu/mailman/listinfo/vwnc _______________________________________________ vwnc mailing list [hidden email] http://lists.cs.uiuc.edu/mailman/listinfo/vwnc |
Yes, the deep search (other than the cost in time) could cause all kinds
of issues .. what if I have something called "id" in a subapplication and things work, then I add one in the main window -- now it no longer works. Even worse, what if you have it a sub-app but not the main canvas and you look for it expecting to find or not find it, but you find it and its the wrong one. This one would in fact create serious problems for us. We did need the ability to walk the tree, but we added that capability and now we can do either depending, but its a different method. On 2013-02-07 10:35 AM, Steven Kelly wrote: > I imagine this is related to what Travis Griggs suggested on vw-dev: > http://www.parcplace.net/list/vw-dev/1110/msg00012.html > (only visible if you're signed up to vw-dev) > http://objology.blogspot.com/2011/10/sounding-out-view-tree.html > > I commented then that I didn't like the automatic deep search: >> Also, I'm not sure about walking the tree as far as possible in one >> direction or the other. It's not needed very often, and it may end up >> finding something surprising deep in some subcanvas. Most of my >> navigation is simply down one level, to a widget that I've explicitly >> named, so the explicit "self widgetAt: #tree" is better than the more >> eager-to-help "self ? #tree", which like a puppy may run off and fetch >> something I didn't want, which will then get mangled. > ... >> If I had deep subcanvases, I wouldn't want a method at the top level >> to manipulate UI components deep inside. That would seem to break >> the modularization, which I'd see as one of the benefits of >> subcanvases. I'd rather have each subcanvas have its own >> ApplicationModel and take care of its own bit of the UI. > Steve > >> -----Original Message----- >> From: [hidden email] [mailto:[hidden email]] On >> Behalf Of Mark Plas >> Sent: Thursday, February 7, 2013 4:15 PM >> To: Dennis Smith; vwnc >> "[hidden email]" >> Subject: Re: [vwnc] Out UI's Slowed down 10x or more between VW7.7.1 >> and VW7.9.1 ... >> >> Good idea about the subclass! >> >> we already have one. I will restore the basic behavior on that one. >> >> -----Original Message----- >> From: [hidden email] [mailto:[hidden email]] On >> Behalf Of Dennis Smith >> Sent: donderdag 7 februari 2013 15:03 >> To: vwnc >> "[hidden email]" >> Subject: Re: [vwnc] Out UI's Slowed down 10x or more between VW7.7.1 >> and VW7.9.1 ... >> >> Just for fun I changed the method back to what it used to be and ran >> browsers and debuggers etc -- all fine. >> >> For now my solution is a subclass which has the old method and each of >> my applications (all use a common superclass) do a >> aBuilder changeClasssTo: NewBuilderClass >> >> so that protects VW apps, but lets mine be faster. >> >> I too would like to hear what cincom says about it?? >> >> >> >> On 2013-02-07 8:54 AM, Mark Plas wrote: >>> What a coincidence! >>> >>> I started today working on upgrading our application to vw7.9.1 and >> also noticed this change in #componentAt: >>> I'm considering making a new method with the old behavior and change >> our code to use this new method. I think the current implementation in >> VW7.9.1 is quite unreliable. >>> @Cincom: What was the reason for introducing this "search for a >> widget anywhere on the window"? >>> It means, for instance, that if you're in a subcanvas and you write >> code like this: >>> (self builder componentAt: #myComponent) ifNotNil: [:c >> | ...] >>> that you're no longer sure that the component that's returned really >> is part of the subcanvas since the method looks for the component in >> the entire Window's component tree: >>> componentAt: aKey >>> "Retrieve the wrapperInterface or other object that goes by >> the same id, of the indicated component." >>> namedComponents at: aKey >>> ifPresent: [:each | each ifNotNil: [:visual | >> ^visual wrapperInterface]]. >>> (self searchCurrentCompositeViewTreeForID: aKey) ifNotNil: >> [:view | ^view]. >>> (self searchTopWindowViewTreeForID: aKey) ifNotNil: [:view | >> ^view]. >>> ^nil >>> >>> This sounds like looking for trouble... >>> >>> What would go wrong if I would revert the method to the vw7.7.0 >> behavior where only the dictionary of #namedComponents was used? I can >> replace our senders with a new method, but we've got quite a few >> senders and the current implementation of #componentAt: looks >> unreliable to me. It will probably cause us problems if people >> incorrectly start using it... >>> Mark >>> >>> >>> -----Original Message----- >>> From: [hidden email] [mailto:[hidden email]] On >>> Behalf Of Dennis Smith >>> Sent: donderdag 7 februari 2013 14:10 >>> To: [hidden email] >>> Subject: [vwnc] Out UI's Slowed down 10x or more between VW7.7.1 and >> VW7.9.1 ... >>> The cuplrit is UIbuilder>>componentAt: which now seems to search >> most >>> of the universe trying to find some component somewhere. >>> >>> It used to just look in that builder's dictionary, it now searches >>> other builders?? >>> >>> Anyone seen this as a problem? Anyone know why??? >>> >> -- >> Dennis Smith +1 416.798.7948 >> Cherniak Software Development Corporation Fax: +1 416.798.0948 >> 509-2001 Sheppard Avenue East [hidden email] >> Toronto, ON M2J 4Z8 sip:[hidden email] >> Canada http://www.CherniakSoftware.com >> Entrance off Yorkland Blvd south of Sheppard Ave east of the DVP >> >> _______________________________________________ >> vwnc mailing list >> [hidden email] >> http://lists.cs.uiuc.edu/mailman/listinfo/vwnc >> >> _______________________________________________ >> vwnc mailing list >> [hidden email] >> http://lists.cs.uiuc.edu/mailman/listinfo/vwnc -- Dennis Smith +1 416.798.7948 Cherniak Software Development Corporation Fax: +1 416.798.0948 509-2001 Sheppard Avenue East [hidden email] Toronto, ON M2J 4Z8 sip:[hidden email] Canada http://www.CherniakSoftware.com Entrance off Yorkland Blvd south of Sheppard Ave east of the DVP _______________________________________________ vwnc mailing list [hidden email] http://lists.cs.uiuc.edu/mailman/listinfo/vwnc |
Dennis, et al.,
It always seemed to me, and was a "feature" of Widgetry, that componentAt: and its cousins should optionally be able to take an array of IDs... in effect defining a path to a widget. That way if you used the same "address" sub-canvas twice on a window, each one would be in it's own sub-canvas (and thus ID for each) and you could talk to each "state" widget via: self componentAt: #(#ShipAddressCanvas #state) self componentAt: #(#BillAddressCanvas #state) The tradeoff here is that the "smarts" of how to get to a widget is not in the framework, but in effect hard coded. This in particular made sure that no matter which one was first in the sub-components collection, you would always get exactly which one you wanted, whereas now, if someone came by and (accidentally or on purpose) changed the Z order of each sub-canvas, you would possibly get a different #state widget using the new #findAt: behavior. Of course you can do that now simply by doing: (self componentAt: #ShipAddressCanvas) componentAt: #state. But then it gets even uglier as you need to go deeper. While I'm discussing such things, it would be nice if when someone changed the ID of a saved spec in the UI Painter, upon save it went through and offered to refactor any `@.statement componentAt: <ID> (widgetAt: and others) code. > Yes, the deep search (other than the cost in time) could cause all kinds of issues .. what if I have something called "id" in a subapplication and things work, then I add one in the main window -- now it no longer works. > > Even worse, what if you have it a sub-app but not the main canvas and you look for it expecting to find or not find it, but you find it and its the wrong one. This one would in fact create serious problems for us. > > > We did need the ability to walk the tree, but we added that capability and now we can do either depending, but its a different method. And So It Goes Sames ______________________________________________________________________ Samuel S. Shuster [|] _______________________________________________ vwnc mailing list [hidden email] http://lists.cs.uiuc.edu/mailman/listinfo/vwnc |
In reply to this post by Dennis smith-4
On Thursday, 7 February, 2013 19:27, "Dennis Smith" <[hidden email]> said:
> Even worse, what if you have it a sub-app but not the main canvas and
But this has always been the case right. As I have many nested levels I allways dig down to a widget from the main window builder otherwise it is impossible to know wheter you're dealing with the "real" widget. When I create a new widget I simply hard wire it and then simply maintain these methods upon change...
Do agree however that it drove me nuts the first time ...
Regards,
@+Maarten, _______________________________________________ vwnc mailing list [hidden email] http://lists.cs.uiuc.edu/mailman/listinfo/vwnc |
Free forum by Nabble | Edit this page |