Windows or Panels?

Hi.

my app uses multiple windows to interact with the user. E.g. there is one for handling customer-data, one for contacts, one for notes and so on…

Not so bad, but i thought about making my app more compact. So there is the TabPanel and the PagePanel. Which would you prefer when you must handle different app-modules like descried above? I transfer some data between the separate windows at the moment (click on a listbox, open another windows and transfer the selected row-id to the next windows and so on.)

How do you design your app when you have the need for different views?

Michael

I usually embed container controls.

[quote=182521:@Michael Bzdega]Hi.

my app uses multiple windows to interact with the user. E.g. there is one for handling customer-data, one for contacts, one for notes and so on…

Not so bad, but i thought about making my app more compact. So there is the TabPanel and the PagePanel. Which would you prefer when you must handle different app-modules like descried above? I transfer some data between the separate windows at the moment (click on a listbox, open another windows and transfer the selected row-id to the next windows and so on.)

How do you design your app when you have the need for different views?

Michael[/quote]

PagePanel is very convenient, if you want to prepare a lot of different “windows” without quitting the one you are in. Moreover, since they are part of the same window, you do not need to namespace them.

I think the container control combined with the pagePanel is what i was looking for.

Thank you. I will try this.

Keep in mind a window can be reclassified as a container control which can make your tests pretty painless.

Ok. Good advice.

… and how can i achieve this?

Change the super of the window in the Inspector.

Just type Container in there? i cannot choose Container there. Just Window.

ok, has to be ContainerControl.

Yes. It is a nice “feature” of the Container Control being a “sort of” window. I’ve refactored a couple of multi windowed projects very quickly and painlessly because of it.

Keep in mind that if you are going to produce a Windows version of the app, the TabPanel is extremely ugly and flickers like a pinball machine on Windows. What you see on the Mac is far superior. For this reason, I only use the TabPanel where I have to.

Yes, just type ContainerControl in Super. To go back, just type Window.

FWIW, I use separate windows. For very closely related information, I use a TabPanel. I only use PagePanel if the information for a particular table needs to display differently depending on the contents of the record. It’s too easy to end up hiding information with a PagePanel. Work toward disclosing as much info as you can, making it easy for the user to find stuff.

On the other hand, disclosing only as much information as the user needs to accomplish the task at hand is much more comfortable for the majority of end-user users. I take a dual tiered approach that has been very successful:

Provide the limited interface with the details and settings that are persistent hidden, but give the user a mechanism for accessing those details and persistent settings if modifications are required.

Such an example is our BRU Producer’s Edition “Quick Archive” mode:


Limited info


Expanded details and settings

We tend to use ContainerControls a lot. UI is logically packaged and this makes debugging easier (I believe) and makes the Navigator way less convoluted in the parent window as all the container controls are not shown, though they are (obviously) in original container.

That’s what is shown above - two containers on a single window. Images updated to show this.

That’s not the kind of “hiding” I was referring to. You have a prominent disclosure triangle there that invites the user to explore. It would be even better if there were a textual cue as well. The collapsed summary makes sense as a cue only after you have seen the expanded version. But I applaud the efficient use of screen real estate while remaining uncluttered.

It became a tradeoff between the minimum window width and the length of the info that we needed to display as a minimum.