I was using WinSCP the other day for transferring files, when I came across this.. umm.. I'll call it a set of options, but it was more like an interview.
Oh boy. I just want to move a file. Now I have to read nine options to determine what I want to do!
The problem is, for the kind of thing WinSCP does, each of these options is sometimes very relevant. Clearly, yes no and cancel are always relevant. When you're moving log files, append is very useful. The option to rename is a common one, particularly when copying output files. When moving code or config or graphic files, newer only is very useful. No to all and yes to all are good for when you're doing a bunch of files at once.
Lord knows they could have added "append all" too. To top it all off, in case you're confused, there's a help button! (The help button doesn't really help either... but that's another story...)
So being that each of these buttons is a good thing at times, how can this problem of overloading be avoided while still giving people the flexibility they need to get high productivity out of your tool?
Edit: here's what the help button does, actually:
Two ideas that come to mind immediately are:
Edited for clarity.
I feel that some of the buttons can be combined by simply adding a "if all apply" checkbox. I would also NOT put in a help button if there isn't anything there. It seems rather pointless to direct the user to something that doesn't exist.
One big issue here is a lack of hierarchy, all of the buttons are given equal weight on one wide line, which ends up being overpowering at first glance. The user wastes mental energy scanning all available actions because he/she assumes that all choices are equally important.
I believe this dialog box should be customized, with obviously the 2 big buttons (which I'm assuming are the most popular ones) - being Yes and No. Then below that there could be "Other options" that has a smaller list of remaining actions, with a description if necessary (which would negate the need for a prominent help button). And as others are saying a checkbox for "Apply to All" like Windows does could also alleviate the visual clutter.
With that approach, you have 2 major actions and 4 minor ones (with a checkbox and a help link), which is much easier on the user.
That is one of the best examples of an interface designed by engineers for engineers :)
I would suggest the following improvements:
A rough mockup would be something like this:
I know this window, and also never remember what to click, so I need to go through all the options :) Anyway, WinSCP is a great tool, so I close my eye for this one. What can be done in this situation:
First of all, the buttons use different forms: there is yes/no (to understand which you should read all the text above the button), there are verbal ones, plus two buttons refer to additional conditions
Help button should not be there, I mean - it should be present, but in a different form, maybe question mark icon or a link (even though I hate links in such windows). And of course it must show some help related to the window, not what is shown there now. While options are self-explanatory, there are many users who will need additional help, which does not appear here
Third thing is proper grouping of the buttons.
Last but not least - I think the "Never ask me again" option is very dangerous, as the overwrite action always should be confirmed by the user.
I would do it like this:
Group 1: [Overwrite] [Do not overwrite]  Only if if newer  Apply to all.
Group 2: [Append] [Rename] (does anyone append, btw?)
Plus a non-intrusive help button, presented and located in a corner for example.
I think FileZilla does a good job of this. And they give you options to never ask again when overwriting - either in the current queue of transfers ('apply to current queue only'), or for the entire FTP session (just 'always use this action' selected).
If they were to add any more options though, I reckon a drop down list would be in order for the 'action' radio boxes.
Another great part about FileZilla is that the queue isn't blocked while this prompt is showing, so if you go away and come back to this, any files that don't have overwriting issues will have continued to transfer. I really dislike coming back to my Windows machine to discover that the 25GB of files I was transferring got blocked by a file around the 1GB mark...
There are some existing constraints in terms of the functions that need to be made available, and the type of interaction for the file transfer dialog window. The only way I can see to addressing this issue is to deal with some of the options before you start the file transfer process. So what you might have is a set of options that asks the user what they want to do when there a conflict (Overwrite, Rename, Don't transfer), and then once the transfer is complete then you can do a batch rename or append process afterwards.
Given the choice I would redesign the process, but I guess it comes down to how much effort it takes versus how much return for the effort.
When a user is about to take an action that may not be easily reversible, it is imperative that the interface give them enough information to:
In Windows 7 the "Copy File" dialog gives you plenty of information to help you compare the two files using meta data and clear steps for how to make it happen:
Because this is an FTP program there are more options than whether to overwrite or not.
It would be better if the interface made it easier for the user to know what the effect of their decision would have.
FileZilla does a much better job of asking the user for the same information as the question's example:
The dialog might benefit if it grouped related actions so that it is more clear to the user what their options are broadly and then specifically what their refinement options are based on their need:
While Charles's Answer shows some great UIs, I wanted to add the UX that Directory Opus uses for the same action, which I find very good as well. Simple on the surface with advanced options tucked away after a click.
Clicking on the Dropdowns results in these options:
As you can see it also provides shortcuts for the advanced operations making it easy for power users as well.
The problem is not even in the huge amount of possibilities. It is with the fact that they are fundamentally different.
I will try to break them down by creating a scenario of several questions that make sense, rather than one that doesn't.
Currently we have:
File already exists. Overwrite? "Yes" "No" "Cancel" "Append" "Newer Only" "No to all" "Yes to all"
The Yes and No options are obviously valid but there are ones that are not for example the "Cancel" option is part of a separate question:
Do you want to stop the operation? "Yes" "No"
The next option is Append. This clearly should stay because it is a new alternative (different from "Yes" and "No"). However the question should be revised because of it:
File already exists. What do you want to do? "Overwrite" "Keep Old File" "Append the two Files" "Newer Only" "No to all" "Yes to all" "Help"
I will skip the "Newer Only" option for now and I will proceed to the No/Yes to all options. I think they should also be excluded because they ask a different question. Which is:
Do you want to do the same for all files? "Yes" "No"
Now lets get to the Newer Only. This option should be removed from the initial question (the user can see for himself which file is newer). However it is absolutely valid for the question:
Do you want to do the same for all files?
So options the options that come from it are now three:
"Yes" "No" "Only if my version is newer"
The last button we have is Help which is not really part of the procedure. It should be there on all popups but not on the same level as the option buttons.
The end result is:
File already exists. Do you want to stop the operation? "Yes" "No" What do you want to do then? "Overwrite" "Keep Old File" "Append the two Files" Do you want to do the same for all files? "Yes" "No" "Only if my version is newer"
It is far from usable. We can fix that by removing the first question (because we have undo, right?). Putting the third question in a combo that remembers the last option the user chose and sets it as default etc. but that is another story
That's 9 buttons.
Now that's a very poorly designed dialog box.
The problem here is that all those actions are displayed at the same level, when they have various levels of relevance.
e.g: You don't want to provide a "New name" if you don't wanna overwrite anyway.
For starters: No and Cancel are basically the same thing.
And if cancel is to stop the current copying, you have the red cross for that already.
Remove the cancel button. (-1 button)
So now what may be done when a file already exists?
You ask the question: overwrite?
You offer (YES/NO)
And add a checkbox "Apply to all". (-2 buttons)
If NO was selected, you rename the file being moved with ([INSERT NUMBER HERE]) as is the default behavior. That's basically what "New name" does. (-1 button)
If YES was selected, offer actions that may be performed:
With a checkbox: newer only
We don't need the Help button anymore. It's a Yes/No question. (-1 button)
I'm the author of WinSCP and I've found this "question" really inspiring. Thanks. This is my (kind of) "answer".
Improvements I've done (see also the screenshot below):
There are some suggestions that I've decided not to adopt:
Thanks for all the suggestions!