[Widgetry] DropDownList questions

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

[Widgetry] DropDownList questions

Stefan Schmiedl
Compliments to Sames for the work on Widgetry and the valuable tutorial
material on his blog.

DropDownLists are fairly keyboard-friendly already, but still have room
for improvement, IMHO.

Currently, text is either entered into the InputField or handled by the
ListBox. While this makes sense from a programmer's perspective, users
will perceive this widget as a single thingie on the screen and expect a
more integrated behavior.

- I always have to open the ListBox manually.
  I guess I can "fix" this myself, as soon as I groked the Announcements
  being sent around, there must be some way to open the ListBox, when
  the InputField gets the focus.

- If I start entering text, then find that I can't remember the exact
  sequence, I will open the ListBox. Now, to select a list entry by typing,
  I have to re-enter the beginning which is still being displayed in the
  InputField above.
  I'd suggest setting the initial lookup string to the contents of the
  text field upon opening the ListBox.

- If I type "at" the ListBox, there is almost no visual feedback on what
  I've actually entered. This is annoying when you fat-finger two keys
  at once and now don't know what has actually been entered.
  I'd suggest updating the text field such that the lookup term is
  displayed.

Are there any hooks I could patch into to get these modifications?

Thanks,
s.

Reply | Threaded
Open this post in threaded view
|

Re: [Widgetry] DropDownList questions

Samuel S. Shuster <sames@interaccess.com>
Stefan,

>- I always have to open the ListBox manually.
>  I guess I can "fix" this myself, as soon as I groked the Announcements
>  being sent around, there must be some way to open the ListBox, when
>  the InputField gets the focus.

There is no pane command to open the drop down. However, there is one on the
Agent:

dropDownList agent buttonClicked

This will open the drop down.

You could then do:

dropDownList when: GettingFocus send: #buttonClicked to: dropDownList agent



>- If I start entering text, then find that I can't remember the exact
>  sequence, I will open the ListBox. Now, to select a list entry by typing,
>  I have to re-enter the beginning which is still being displayed in the
>  InputField above.
>  I'd suggest setting the initial lookup string to the contents of the
>  text field upon opening the ListBox.

That's a good idea. Will do.

>- If I type "at" the ListBox, there is almost no visual feedback on what
>  I've actually entered. This is annoying when you fat-finger two keys
>  at once and now don't know what has actually been entered.
>  I'd suggest updating the text field such that the lookup term is
>  displayed.

Interesting thought. I'll look into it.

                                And So It Goes
                                     Sames
______________________________________________________________________

Samuel S. Shuster [|]
VisualWorks Engineering, GUI Project
Smalltalk Enables Success -- What Are YOU Using?

Reply | Threaded
Open this post in threaded view
|

Re: [Widgetry] DropDownList questions

Stefan Schmiedl
I just love different time zones ... how else can you get high-level
tech support on a Sunday night?

Samuel S. Shuster (2007-06-10 14:45):

> >- I always have to open the ListBox manually.
> >  I guess I can "fix" this myself, as soon as I groked the Announcements
> >  being sent around, there must be some way to open the ListBox, when
> >  the InputField gets the focus.
>
> dropDownList when: GettingFocus send: #buttonClicked to: dropDownList agent

Thanks, I hoped it would be something like that :-)

> >- If I start entering text, then find that I can't remember the exact
> >  sequence, I will open the ListBox. Now, to select a list entry by typing,
> >  I have to re-enter the beginning which is still being displayed in the
> >  InputField above.
> >  I'd suggest setting the initial lookup string to the contents of the
> >  text field upon opening the ListBox.
>
> That's a good idea. Will do.
>
> >- If I type "at" the ListBox, there is almost no visual feedback on what
> >  I've actually entered. This is annoying when you fat-finger two keys
> >  at once and now don't know what has actually been entered.
> >  I'd suggest updating the text field such that the lookup term is
> >  displayed.
>
> Interesting thought. I'll look into it.

That's about the only thing in MS Access which I still like after all
these years ... the "Combobox" is soooo convenient, and since I'm aiming
at replacing a decade-old homegrown Access frontend I will have to
provide something similar.

I dug around for a while (of course) in the keyboard handling methods
associated with ListBox and DropDownList, but could not find a reference
back to the InputField. Am I missing something?

Thanks,
s.

Reply | Threaded
Open this post in threaded view
|

Re: [Widgetry] DropDownList questions

Samuel S. Shuster <sames@interaccess.com>
Stefan,

>I dug around for a while (of course) in the keyboard handling methods
>associated with ListBox and DropDownList, but could not find a reference
>back to the InputField. Am I missing something?

Heheh... Yeah, sort of.

DropDownList, SpinButton, MenuButton, RadioButton and CheckBox are all
subclasses of ComponentPair.

A ComponentPair has a head part and a tail part. For CheckBox and RadioButton,
the head part is the Check/Radio. For the rest, the head part is the "Button"
part.

So, for a DropDownList, the InputField is the tailPart.

                                And So It Goes
                                     Sames
______________________________________________________________________

Samuel S. Shuster [|]
VisualWorks Engineering, GUI Project
Smalltalk Enables Success -- What Are YOU Using?

Reply | Threaded
Open this post in threaded view
|

Re: [Widgetry] DropDownList questions

Stefan Schmiedl
On Mon, 11 Jun 2007 11:06:37 -0500
"Samuel S. Shuster" <[hidden email]> wrote:

>
> DropDownList, SpinButton, MenuButton, RadioButton and CheckBox are all
> subclasses of ComponentPair.
>
> A ComponentPair has a head part and a tail part. For CheckBox and
> RadioButton, the head part is the Check/Radio. For the rest, the head
> part is the "Button" part.
>
> So, for a DropDownList, the InputField is the tailPart.

Maybe I'm dense, but we seem to be talking about three components in a
DropDownList:
- InputField
- Button
- ListBox

DropDownList
  headPart -> Button
  tailPart -> InputField

Now where does the ListBox fit into this?

Confused,
s.

Reply | Threaded
Open this post in threaded view
|

Re: [Widgetry] DropDownList questions

Samuel S. Shuster <sames@interaccess.com>
Stefan:

> Now where does the ListBox fit into this?

It gets created on the fly and put into an ActiveTransient window  
when requested. When it is open, the ActiveTransient that hosts it is  
accessible via dropDown. When it is not open, dropDown is nil.

                                 And So It Goes
                                      Sames
______________________________________________________________________

Samuel S. Shuster [|]
VisualWorks Engineering, GUI Project
Smalltalk Enables Success -- What Are YOU Using?