Consider a simple spyware detector that detects a suspicious activity by a program and needs the user to decide, whether it is OK or not. I came up with the following dialog.
download bmml source – Wireframes created with Balsamiq Mockups
Since the detection may not be 100% accurate, the "Ignore thread" button is necessary. However, if the user clicks this button by mistake, he may be seriously compromised.
How do I present the action to the user so that
- the chance that the user chooses the dangerous option by mistake is minimized, and
- the dialog doesn't annoy the user if the detection is spurious and they really want to "Ignore"?
I've considered adding a timeout to the dangerous action, so that the user has to wait before clicking it, but that adds the annoyance factor and may stress the user.
I don't see a way to implement undo (default to Stop program and allow the user to revert later), since once the program is stopped, whatever unsaved data the program was holding are irrevocably lost.
It should also be noted that the dialog will popup unexpectedly and I need to make sure that a user's click intended for a control beneath the dialog does not invoke the dangerous action.
What would be the optimal UI in this case?