Monday, April 21, 2008

Tabbed browser and wxAUI

Milan wrote on devel-list

I have committed to SVN the experimental tab-based implementation of
property pages (using wxAUI). I have developed it on Linux, but it
would be nice if others (i.e. you) could test on other platforms to
see how it works. It's a single commit, and if it turns out that it
doesn't work, we can revert it (at least it would be a nice demo for
what I'd like to see in 'new' FR Michael is working on).

What is done:

- added a notebook control to the main frame (when you start FR,
maximize the window)
- notebook control shows tabs of all opened metadata item property pages
- you can also open links in separate "windows" like the "old" FR
using the "open link in a new window" context menu
- browsing around should be complete and bug free
- maybe adding a 'open link in a new tab' would also be a good idea,
as you currently cannot watch both 'triggers' and 'fields' of a table
(for example) in separate tabs (only in a separate window).

- I also added a special "items" tab, that shows children of the
currently selected tree item (in the main tree)
- "items" tab is only a 'demo', it just shows items, you cannot do
anything with them
- also, each part of the address label (home > localhost > ... ) could
be made a clickable link to go back in hierarchy

Here are some screenshots:

Table properties:

Showing how list control makes browsing a lot of objects easier:

Simple split view:

Users can easily split the screen however they want:

How table columns are displayed (useful when field properties page
cannot fit the screen):

To do all this, I moved all the property-page functionality from
MetadataItemPropertiesFrame to a new class,
MetadataItemPropertiesPanel. Currently, MetadataItemPropertiesFrame
only show a single item, but I guess it could be extended to support
multiple tabs as well.

Before going further I have few doubts, and I'd like others to try it
out and give some input. There seem to be many ways to handle
'tab-based browsing'. We can have the current code, or have ability to
have multiple MainFrame's (i.e. tree+notebook), or we can have a
single main frame (tree-only) and many notebook-frames.

The more 'separation' (i.e. freedom) we have for these elements, it
would be harder to do navigation. Currently it's easy since one tree
maps to one list control.

Also, there seem to exist some wxAUI classes for MDI, so maybe they
would be interesting to play with.

P.S. I know that some of the classes might need to get renamed after
this, for example framemanager doesn't make much sense when it
actually manages panels. If left it as-is as it's a public interface
to other classes, and I'm still not sure about the final shape of the
whole thing.

Milan Babuskov

..:: ::..:: ::..

No comments: