The most productive environment I have ever used was Hypercard and that was 
because you could cmd-opt click on any button or field or UI element and the 
script for that would open and you could edit it.

I have always wanted that in Smalltalk.

> On Nov 12, 2017, at 9:10 AM, Ben Coman <b...@openinworld.com> wrote:
> 
> A feature I believe would be useful is to help a user to dig into the 
> application code behind a button (e.g. Hierarchy button). This would help 
> discoverability of the system.  I learnt a lot using Halos>Debug but it's a 
> bit tedious deciphering from the instance variables what system application 
> code ends up beign invoked.  
> 
> I flirted a bit with adding a <Simulate Click> item next to Halos>Debug, but 
> that ended up first tracing through dozens of mouse dispatch calls, which 
> wasn't appealing for the purpose I wanted... to have a shortcut into the 
> application code. Perhaps the way to do it would be silently tracing through 
> the dispatch code until a particular pragma is reached - but I didn't get 
> that far with it. I think quick access to the application code would enhance 
> the liveness of the system.
> Wdyt?  
> 
> Cheers -ben
> 
> On Sun, Nov 12, 2017 at 5:39 AM, Tudor Girba <tu...@tudorgirba.com 
> <mailto:tu...@tudorgirba.com>> wrote:
> Hi Denis,
> 
> It is not a global function.
> 
> It is a class-side method because it relies on the following logic:
> - if the element is attached to a space, it uses that space to dispatch the 
> event.
> - otherwise, it creates a temporary space and uses that one.
> 
> The use case for such simulators is needed in the case of overlapping 
> elements. In most cases, such as in a grid layout, the elements do not 
> overlap, so clicking on the position occupied by an element will always lead 
> to a high level click event dispatched to that element. However, when we have 
> overlapping elements, clicking on the position of an element might end up 
> dispatched to another element. In fact, we introduced this testing ability 
> exactly to write a red test involving overlapping elements.
> 
> Cheers,
> Doru
> 
> 
> > On Nov 11, 2017, at 11:35 AM, Denis Kudriashov <dionisi...@gmail.com 
> > <mailto:dionisi...@gmail.com>> wrote:
> >
> > Hi Aliaksei
> >
> > 2017-11-10 22:36 GMT+01:00 Aliaksei Syrel <alex.sy...@gmail.com 
> > <mailto:alex.sy...@gmail.com>>:
> > Hi Sean,
> >
> > Why not `anElement simulateClick`?
> >
> > Good question :)
> > We indeed evaluated a possibility to have (BlElement >> #simulateClick) but 
> > then decided to make BlSpace class to be responsible for that.
> >
> > First we should realise that when we simulate a click we do literally 
> > simulate user's action which is: mouseDown at some global coordinate in 
> > space and then mouseUp. A process of handing mouse down/up events involves 
> > some complex event processing in order to detect what should happen, for 
> > example, with currently focused element or if we need to send double-click 
> > event. It is a mouse processor who is responsible for all these actions and 
> > it belongs to Space (inst. var in space). Not to mention some weird cases 
> > of overlapped elements, elements with custom elevation (zIndex), custom 
> > mouseDown/up event listeners that do some work too...
> > That is why it is definitely not enough just to send a plain BlClickEvent 
> > directly to the element. Instead, we should involve a space in the process 
> > and actually simulate it by pushing mouseDown and mouseUp events to the 
> > event queue.
> >
> > Next what we realised it the fact that it is not nice to always create a 
> > temporary space and add our element to it in order to simulate a click. 
> > What if an element is already added to the space, what if not?
> > To wrap up, we decided that it should be a responsibility of the Space 
> > class to create a new temporary instance of itself, add an element to it, 
> > simulate click event and then delete itself. In order to show the intent 
> > and a process behind we decided that it would be a good idea to actually 
> > write a code like this:
> >
> > BlSpace simulateClickOn: element.
> >
> > It looks like global function. According to your description I would expect:
> > aSpace simulateClickOn: element
> >
> > I imaging tests where I create internal space instance, open application in 
> > it and simulate events to check expected behaviour. But maybe you will 
> > explain that it should be done differently?
> > And what is actual use case for such simulations if we can just #fireEvent: 
> > as you wrote below?
> >
> >
> > In english it is quite nice:
> >
> > "dear space class, could you, please, simulate a click event on a given 
> > element?" It is a space who simulates event, not an element.
> >
> > P.S. Users can still send a BlClickEvent directly (informs 'click'):
> >
> > element := BlElement new.
> > element addEventHandlerOn: BlClickEvent do: [ self inform: 'click' ].
> > element fireEvent: BlClickEvent new
> >
> > Cheers,
> > Alex
> >
> > On 10 November 2017 at 21:22, Sean P. DeNigris <s...@clipperadams.com 
> > <mailto:s...@clipperadams.com>> wrote:
> > Tudor Girba-2 wrote
> > > - support for programatic testing of bloc mouse events:
> > > https://twitter.com/feenkcom/status/925672206763511808 
> > > <https://twitter.com/feenkcom/status/925672206763511808>
> >
> > Why not `anElement simulateClick`?
> >
> >
> >
> > -----
> > Cheers,
> > Sean
> > --
> > Sent from: http://forum.world.st/Pharo-Smalltalk-Developers-f1294837.html 
> > <http://forum.world.st/Pharo-Smalltalk-Developers-f1294837.html>
> 
> --
> www.tudorgirba.com <http://www.tudorgirba.com/>
> www.feenk.com <http://www.feenk.com/>
> 
> "Obvious things are difficult to teach."
> 
> 
> 
> 
> 
> 

Reply via email to