Search code examples
user-interfaceui-design

Usability: Save changes using "Apply" button or after every single change?


I am interested in hearing opinions and experiences of fellow developers on topic of designing user interface, usability AND maintainability-wise.

Common approach is to allow users to tweak options and after form gets "dirty", enable "Apply" button, and user has possibility to back out by pressing cancel. This is most common approach on Windows platform (I believe MS usability guidelines say to do so as well).

Another way is to apply changes after every single change has been made to options. Example, user checks some checkbox, and change is applied. User changes value of some text box, and change is applied after box looses focus, etc. You get the point. This approach is most common on Mac OSX.

Regardless of my personal opinion (which is that Apple is better at usability, but software I usually write targets Windows users), what do you people think?

Edit: I am fully aware that this is not a real question, but rather asks for a discussion, and that it's place might not be on SO, whose policy is to have answers and questions only. But I believe it could be useful discussion, mostly because I was unable to find anything like it before asking.


Solution

  • Both have their places, and they're both used across many platforms (they are not really a differentiator between PCs and Macs).

    The "Apply" button approach allows you to make some changes, apply them, and not have to re-open the dialog to make some more changes. This is useful for trying things out, but when you wish the user to think methodically (or feel secure) about their choices - the user is in control of precisely when their changes are applied. This is important in some cases where you may not wish to commit your changes until you have made several of them, or in cases where the user should know what setting they want, rather than needing to "experiment". These dialogs usually also have a cancel button which (hopefully) undoes any changes made since the dialog opened. THese dialogs are often modal so the user is locked into the dialog until they have made their choices.

    The instant-effect dialog allows the user to experiment and see "live" updates based on their choices. This is great when the user wants to experiment with options to see what effect they will have. You have to be careful with the visual style to make it clear to the user that they are operating "live", and they must be careful because they can't back out their changes. The Microsoft approach for this type of dialog is to have a single "Close" button, which makes the instant-effect approach obvious. These dialogs often aren't modal, i.e. they are treated as "live editing panels" rather than dialogs.

    Generally, UI is leaning towards the live editing side of the fence, as it allows users to be experimental and unhampered by technicalities like having to press a special button to commit changes (see the control panels in Win7 for example - hardly any modal dialogs compared to XP)

    However, ultimately the choice between these two options is really down to what type of settings you wish to control. i.e. If you're setting font styles on some text, then you really want to be at the live, experimental end of the spectrum, but if you are configuring important and related groups of information (e.g. your DNS server's address and your subnet mask) you may want to use something that requires you to think/know and deliberately Apply your change (So users can enter and double-check the information, and so they can change several related pieces of information "simultaneously". Also, if you commit a DNS server address live as the user types it, they will lose their net connection until they get all the digits right - live just doesn't make sense for this).