CLIM mail archive


Selecting Presentations


I want to implement a kind of user-interaction, where the user (or
the system) "selects" some "objects" and where some operations can be
performed on a set of objects commonly called "current selection". 

I have some problems as well on a technical as on a conceptual level.
Let me start with the concetual part. 

What the user "wants" (as I understand) is selecting an object. What he
"does" is selecting a presentation of the object. Things are easy as
long as there is only one presentation of an object at any time. But
what should happen (and in what terms should it be described /
formalized /  specified) if there are more than one?

>From the user perspective, it may make sense that several
representations of one object are selected (i.e. marked as selected) if
he selects one of them. I will use the term "selection context" to
denote the set of presentations that should behave in this way.

Example: Consider a hierarchy of objects, where in one pane (yes, I'm
using CLIM) the hierarchy is presented graphically as a tree. In
another pane, there is just displayed a list of the objects ordered
alphabetically. The user wants to change the parent of object "foo" to
it's brother. This can be done by selecting "it" and dragging it around in
the graph-pane. However, finding and selecting "foo" is easier in the
alphabetical list. After selecting it there, the graphcial view could
scroll (automatically or after a separate command, not important in this
question) to the selected object's presentation in the graph pane, where
the user drags it around.
(I know this task can be relalized with another UI, but that's not
my point.)

How can I specify such selection contexts? Is it sufficient to describe
it in terms of panes? Or MUST they be described in terms of user
intention? How are selection contexts "switched"? Furthermore, there are
arguments to have different user feedback for selected presentations of
the same object (drawing the select-mark of the presentation which the
user selected in a different way than the other presentations of the
associated object), i.e. presentations within one selection context
should be differentiated.

I don't want to dig deeper into this to keep this message short (?).
However, as the "selecting" user interaction style is quite important, I
want to get the concepts clear and then implement some kind of 
"selection-substrate" in CLIM (or is there already one in CLIM 2.0 ??).

Now a more technical problem: The user feedback for selecting objects
requires that seleted presentations are drawn in a different way. What
is the most efficient way to do this in CLIM?  My first approach uses
incremental redisplay (updating-output) to replace a presentation with a
"selected" one and vice versa. But I know what presentations have
changed, so I don't need that unique-id- and chaching-stuff.
Furthermore, as I understand, it could be more efficient if I associate
with each presentation one (or serveral different) output record
"selection mark(s)" which are visible or not (installed in the output
history or not). How can I use output records on this low level?
There are some documented functions, but the documentation seems quite
"compact" to me...  

I find the possibilty to define my own border types and bordering the
output quite suitable as selection markers. That's what I'm using at the
moment together with updating output. How can I use the output record
created by surrounding-output-with-border directly?

Any help or example codes on playing with output records?

Thanks - Stefan B.

Mail: Stefan Bernemann        ! Phone:  +49-231-9743-139
      c/o FhG IML Dortmund    ! Fax:    +49-231-9743-234
      Emil-Figge-Str. 75      ! Email:
      D-4600 Dortmund 50, FRG !         


Main Index | Thread Index