The document proposes a model for handling intuitive behavior in GUI lists when multiple user actions are combined. It defines a set of deltas (Add, Remove, Change, Filter, Sort, Select) that can be applied to lists and examines scenarios where multiple deltas are combined, such as sorting then selecting items or filtering and then removing an item. The objective is to make lists behave intuitively no matter the order of actions. Future work includes generalizing the model to handle tree structures and considering the visible portion of long lists.
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Toward an intuitive behaviour for GUI lists
1. Toward an intuitive
behaviour for GUI lists
Julien Delplanque and Thomas Dupriez
Follow-up of a brainstorming during last Pharo Sprint
2. What can a user do with a
list ?
Change items
Filter items
Order items
Select item(s)}
All items
Remove item
Add item
3. Minimal API for a list
supporting these actions
• « items » : Items in the list, without filtering or sorting
applied.
• « visibleItems » : items user can see. They might be
sorted and filtered depending on previous user actions.
• « selectedItems » : visibleItems that have been selected
by users. Sorting is preserved.
4. Minimal API for a list
supporting these actions
items availableItems selectedItems⊇ ⊇
To be clear:
5. Hypothesis:
User do 1 action at a time
Add
xor
Remove
xor
Change
xor
Filter
xor
Sort
xor
Select
State n State n+1
6. Deltas
• Add(item, index) : Add the item at index in the list.
• Remove(item) : Remove the item form the list.
• Change(newItems) : Replace current items in the list by newItems.
• Filter(predicate) : Hide items that do not match the predicate from
availableItems.
• Sort(comparison) : Order availableItems items according to
comparison criteria.
• Select(indexes) : Select visibleItems items at indexes.
17. Future work
• Generalise model to handle trees?
• Handle the part of the list seen by the user?
• Connected topic: filter predicate compiler?
https://github.com/juliendelplanque/DeltaListModelIt happens here: