views:

474

answers:

3

Modal dialogs are evil, but I keep reading "You should remove modal dialogs when possible"

When isn't it possible to remove modal dialogs? I mean, what are some truly modal tasks that force us to use evil modal dialogs?

The most common given example is the "Do you want to Save?" I think this is the problem of the concept of having the user hit Save instead of remembering that user input is sacred. If you just saved automatically with the ability to "undo" or have revisions, then you don't ever need ask the user if they want to save.

  • "Are you sure you want to delete?" Undelete
  • "Are you sure you want to quit?" Why would you ask that? Are you that vain?

Why do we ever need modal dialogs?

EDIT

Webs app don't count in my books, unless they write their own UI windowing system within the browser. Web apps don't have the same tools set as desktop apps.

EDIT 2

My question is slightly different than the one labeled as duplicate. I feel that there is no case that modal dialogs are the best solution. The referred question assumes there is such a case.

Duplicate of: When Is Modal UI acceptable?

+3  A: 

Use Cases for Modal Dialogs

  • blocking the application flow until information required to continue is entered, as for example a password in a login process.
  • collecting application configuration options in a centralized dialog. In such cases, typically the changes are applied upon closing the dialog, and access to the application is disabled while the edits are being made.
  • warning that the effects of the current action are not reversible. This is a frequent interaction pattern for modal dialogs, but it is also criticised by usability experts as being ineffective for its intended use (protection against errors in destructive actions) and for which better alternatives exist.

(Source: Wikipedia)

When I use them

In instances where stopping them from doing something stupid is absolutely mandatory. My company has a web app where Users sometimes leave the page before finishing their work. We prompt them with a Modal (the standard onbeforeunload JavaScript function) if they haven't saved their work.

Otherwise, I don't use Modals if I can help it, I hate it when an app steals focus from what I'm doing.

Edit: We don't save their work automatically for them when they leave the page. We do at other times, but not when they leave the page, hence the Modal. I did write could that could go in and save their work when they left the page, but it wouldn't be a 'great' idea to implement it, especially if they accidentally deleted their work and didn't want it to automatically save.

George Stocker
I can't excuse web apps for using modal dialogs, since they have a subset of UI tools when compared to desktop apps.
Pyrolistical
The world is moving to the web...
George Stocker
Not if I can help it. I want to be able to make web apps using the full set of desktop tools with the transparent security of an web app
Pyrolistical
Then your implementation of automatic saving is flawed. It can't simply overwrite the existing information. It needs at least 1 revision back so you can undo.
Pyrolistical
You're absolutely right. However, that's what our customers wanted, and that was the specification we were given. I've raised the same issue, but I doubt it'll change.
George Stocker
"blocking the application flow until information required to continue is entered..." -- That is not a *use case* for modal dialog, that is the *reason* they are evil and must be avoided.
ShreevatsaR
I agree with Gortok. A modal is yet another tool in the interface arsenal, and can be used for good measure when the need arises. There are instances you want to present information without having the rest of the application distracting the user, and a modal is the perfect tool for that.
Eran Galperin
@ShreevatsaR : That list was from Wikipedia. My personal thought is much closer to what Eran has posted, that it really is just another tool, and there are great uses for it (most especially in the web environment). I don't use it in Winforms apps if I can help it. Webforms? That's another story.
George Stocker
+1  A: 

The only thing more sacred than user input is any file I known about. You should never modify any file that an implementation detail unless I have told you to. Thus boxes like "do you want to save?" at exit are a must because I may want to not save.

BCS
That's why I said automatic save with undo. I would never overwrite the only copy of the user's input.
Pyrolistical
Auto save to where? Unless I ask you to, I NEVER want to to even touch my files. You can have a application data file somewhere to play with but don't touch my documents!
BCS
Sure, there has to be a smart way to do it that doesn't touch your files, we don't need to figure that out here.
Pyrolistical
A user may well know they've pooched it, and just want to back right out and start again, then automatic save (even with undo) will be a problem, how do you know what they meant to do? Do you present them with a diff when they open it again, that seems more PITA than modal on close to me. $.02
seanb
While I certainly understand your position, BCS - I share it! - usability studies consistently show that most users expect their actions to be persistent by default, which basically means continual saves (with unlimited undo).
Dave Sherohman
Put an on off check box on that feature and I can live with it.
BCS
A: 

Imagine an application which needs to open a dialog for some actions. Now imagine that these would be non-modal dialogs: while one dialog is open, you could change the selection or even worse - invoke a different command which itself opens another dialog. Now imagine the these dialogs would be modal: then you would have to close the dialog to proceed - you can't get in the state where the selection changes under a dialog or where two commands are waiting for input.

mklhmnn
yeah if you use non-modal dialogs without thought that will occur. but given a more realistic design when you change something in one dialog it should automatically update the other related dialogs.
Pyrolistical
That's not possible for all scenarios.
mklhmnn