Take the 2-minute tour ×
User Experience Stack Exchange is a question and answer site for user experience researchers and experts. It's 100% free, no registration required.

In the case where a single desktop application has many different screens, and a user may (or may not depending on the task) need to see more than one screen at a time, which approach is best for handling multiple screens?

For example, think of a business/ERP type application that has screens for listing items, editing items, viewing customers, entering orders, entering payroll, updating inventory, and so on. There could easily be thousands of available screens, although only certain combinations of screens might be used at a time.

I can think of two ways of dealing with this problem:

Option 1

Use the Operating System window manager to manage the windows. The user launches the main application window, and the main application window launches new windows in the desktop environment. The new windows appear on the taskbar/dock and the OS Alt+tab/Expose can be used for window switching.

Advantages:

  • The application uses the GUI the user is already accustomed to. ie. mac users who like Expose don't have to use a Windows style GUI inside the application.
  • Users with multiple monitors can move the various windows to different screens.
  • We don't have to develop our own window manager. The OS does this for us.

Disadvantages:

  • Having many windows of our application windows open at once can make a giant mess of the taskbar. It may be hard to find a specific window we need.

  • What is the point of the main application window then? It's just a window with a menu bar. Whenever you open a new window, you switch to it. When you need to open another, you have to find the window-launching window down on the taskbar, which can create a bad UI experience.

  • No way to minimize/restore all windows at once.

Option 2

Create only one main application window that appears at the OS level. Create your own window manager that lives inside the main application window, to manage the various sub-windows. Windows can be opened, moved, and minimized within the main application, but they do not appear on the main application task bar and can't be alt-tabbed, etc.

Advantages:

  • Less Clutter. When you minimize the application, the whole thing minimizes to one slot on the taskbar. Clicking it again restores the application.

Disadvantages:

  • Creating your own window manger is a lot of work to create and maintain.

  • Windows that you can drag around, close, and minimize just like real windows can be very frustrating when you can't drag the windows outside of parent window.

  • Will not work with multiple monitors.

  • These types of interfaces always feel clunky to me, compared to the native desktop.

  • May force the user to use a different metaphor for window management. ie. they are used to Expose but are forced to use a taskbar within the application.

I would consider option #1 to be a lesser of evils, but I'm not satisfied with it as a solution because it still has many disadvantages such as lots of clutter on the OS taskbar with many open windows, and having a main window with nothing more than a menu bar/launcher that you have to keep flipping back to.

Certainly someone has come up with a better way of managing windows in a multi-window application?

share|improve this question
    
I would be helpful to mention the platform that you are targeting. Different operating systems have different conventions for handling things. Windows 7 will actually group windows for a single application in the taskbar to reduce clutter. –  17 of 26 Sep 3 '13 at 13:26
    
Now why did Microsoft change the MDI (Multiple Document Interface) which once acted much like your second option, to act much like your first option? Me thinks it had something to do with user research. And although there is a difference between multiple windows of the same type of document as in MDI and multiple windows of different types of documents (multi-windowed SDI), and we of course have eccentric Outlook interface (different types of lists, all in a single window no simultaneous views, and dialogs for new/edit items), I'd say that I often doesn't hurt to follow one of the leaders. –  Marjan Venema Sep 3 '13 at 16:26
add comment

2 Answers

It sounds like what you're looking for is a docking window framework. A docking window framework lets users dock, detach, and combine windows in any way that they see fit. The windows can be moved to other monitors and the entire application appears as one entity on the taskbar. Visual Studio 2012 is one example of an application that uses this model.

If you have a bunch of equally important views that can be available at any given time, this can be an elegant solution.

You wouldn't necessarily have to roll your own. This is a solved problem with commercially available packages. For the product that I work on, we use a third party library called SandDock.

share|improve this answer
1  
I was going to recommend this solution as well. Most likely, users will have a preferred way of docking the windows according to their usual tasks. If you save the layout for each user (assuming you have users or similar means of identification), then most of your worries are covered. I use WPF docks for quite complex apps, and so far it's worked quite nicely. –  Yisela Sep 4 '13 at 2:56
add comment

I think that both of your options grant too much liberty for the user. I believe that when users cannot grasp a clear and simple workflow they feel lost. When an app allows you to do the same thing in many different ways, I feel this way. When an apps allows you to position its controls in many different ways, I feel the same.

What I would do is to approach this problem in a specific case-by-case basis. No general solution will work well with any kind of program. The content should be the guiding principle. Once you know the kind of app that you need to make, decide a nice information flow for the user. Don't allow every master-detail-subdetail combination just because you can. Reorganize the subviews to where they make sense.

Decide on what is the most important view of your app. What is the most important piece of content the users will be working with? Made this the main window, and nothing else. I'd forget about developing a window manager within you app.

For subviews you have other options.

You can use what I call weak-modal popups (Apple calls them popovers). This are modal popups which immediately update the data model when you modify any field (you don't effectively need apply/close/accept buttons). They can be easily dismissed just by clicking outside them. They feel less intrusive and interrupting than traditional modal popups, because they don't obscure the rest of the view, and you can perform an additional action when you click to close them (say, close a weak-modal popup by clicking some control which at the same time opens a new weak-modal popup).

Another kind of control that I believe may be useful for your goals is the modern in-app drawer that has a fixed location within the main app window. The user can hide or show them at will, at the main view scales accordingly, showing more or less content. Xcode 4 shows a very good implementation of this with their debug, navigation and utilities areas. An advantage of this kind of drawers is that it makes full use of the spatial memory of the user: the appropriate drawer will always show in the same position relative to the full window. One less thing to keep in mind: where did I put this little window that I need now?

share|improve this answer
    
What should be done if there is no single important piece of content for users? This method only works up to a certain complexity after which this seems impossible. –  bendataclear Sep 3 '13 at 12:13
    
Multiple windows are less about workflow and more about the information that the user wants to have readily accessible during their workflow. Supporting multiple monitors is crucial in a workflow where the user wants to compare data. –  17 of 26 Sep 3 '13 at 13:14
    
My belief is that there is always something that you can think of that could be the single most important piece of content. A simple enough view that can be hierarchically placed above everything else. You can always simplify and hide rarely modified information in subviews of the kinds I am mentioning. I have a distaste for over-generalizing apps (which usually also suffer from feature-creep). My view is that apps that focus on a specific task or goal are able to provide a better UX than apps with are too general. –  Ricardo Sánchez-Sáez Sep 3 '13 at 13:14
    
First, you can actually compare data on the same monitor, I do this all the time. The main window can have a "compare in split view mode" which is unrelated to the "input data mode". Again, I believe that trying to support every possible use case within the same mode is a mistake. Second, regarding multiple monitor support, I would implement that within my solution by providing a second "main window" that can be optionally opened on the second monitor. If you don't have two monitors, you don't get the extra window. –  Ricardo Sánchez-Sáez Sep 3 '13 at 13:16
1  
No single important piece of content means one of two things: either everything is important or nothing is important. If everything is important then show everything, if nothing is important then why does it need to be there? You have to relate design principles/objectives to meet the problem you are trying to solve. –  Michael Lai Sep 4 '13 at 1:22
show 2 more comments

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.