When something gets very complex and there is no space for all the info on
the screen (imagine a form with 300 text boxes and other controls on it - yes, I saw such forms in my life!) you
can use various techniques to temporarily hide or completely remove certain info
(probably rarely used) or allocate it in a way it will occupy less
space.
Many container UI elements like tab controls, panels and our
layout
control are designed to help you with this task. Talking about XAF apps, the
most popular way of accomplishing this I saw was putting unwanted fields behind
the
tab groups, which were activated by end-users on demand:
This approach does
not involve any refactoring of your underlying data model, but just means
re-layouting the default form in a way where most often used data appears on top
while having less popular data hidden. It seems that this all comes from trying
to mimic the behavior and look & feel of legacy apps or even papers, because
many end-users might be accustomed to such a UI in the past.
Another, but less popular approach I saw was in refactoring a huge data
model, which technically means aggregating similar data into a separate part,
adding a reference to it from the main object and then showing a
separate detail form
on demand, e.g. via a button in the toolbar. A perfect example of this can be
our
ObjectPropertyEditor that can be used for an aggregated reference property
and that displays a nice UI for editing its details:
Today, I would like to show you an alternative way of solving the problem of
complex detail forms usability. I am double excited about this solution, because
it comes from our XAF customer,
Sergey Zaycev and his team from Galaktika, whom I recently blogged about.
These guys implemented a
custom Property Editor -
TabbedDetailPropertyEditor (
check this help link to learn more on how it is possible to create such extensions yourself), which is essentially a tree-like navigation panel at
the left side and a detail panel on the right. Each node in the tree represents
a small portion of data, which is then displayed on the right side as user
focuses it in the tree:
This hierarchy is fully
customizable at runtime,
thus allows you to meet the needs of a very demanding client right in front of
his/her PC.
In my opinion, this is a very good alternative to the standard approaches
described above. If you think about it, you may find the analogy with how the
main application navigation works. Of course, this displaying a small portion of data at a time also works faster and thus is more usable.
I liked this idea very much, what about
you?
If you liked this stuff, then I suggest you learn more on it as well as check out other
XAFARI platform features at
http://xafari.ru/