{"id":806,"date":"2010-05-16T21:55:36","date_gmt":"2010-05-17T03:55:36","guid":{"rendered":"http:\/\/thesmithfam.org\/blog\/?p=806"},"modified":"2019-08-12T07:15:31","modified_gmt":"2019-08-12T13:15:31","slug":"whats-wrong-with-this-dialog","status":"publish","type":"post","link":"https:\/\/thesmithfam.org\/blog\/2010\/05\/16\/whats-wrong-with-this-dialog\/","title":{"rendered":"What&#8217;s Wrong With This Dialog?"},"content":{"rendered":"<p>Sometimes I can&#8217;t help myself. This week, I read a <a href=\"http:\/\/lateral.netmanagers.com.ar\/weblog\/posts\/BB889.html\">blog post asking what was wrong with a dialog<\/a>. I found plenty of stuff wrong, so I decided to write a response and create a replacement dialog. This is not intended as an attack on the dialog author. I hope it&#8217;s not received that way. Rather, I just felt an itch to answer the question posted with my own opinion on the subject.<\/p>\n<p>Read on for the gory details.<\/p>\n<p><b>Deciding what&#8217;s wrong<\/b><\/p>\n<p>When I find myself asking if a feature is &#8220;wrong&#8221;, the first thing I do is ask if the feature should even exist. That is especially important with dialogs. Dialogs interrupt a user&#8217;s work flow, and for whatever non-deterministic-human-psychological reason, in-line GUI elements tend to interrupt humans less than pop-up dialogs. I try to avoid dialogs, and pop-ups, almost religiously. So when I find myself asking, &#8220;what&#8217;s wrong with this dialog?&#8221;, the next question I ask is &#8220;should this dialog even exist?&#8221;. Unfortunately, in this article, I can&#8217;t tell whether that&#8217;s the case, so I&#8217;ll assume it must exist.<\/p>\n<p><b>The litany<\/b><\/p>\n<p>In my view, this dialog contains many mistakes. Its core functionality is certainly accessible, but it&#8217;s not as easy as it should be. Here&#8217;s my list of mistakes:<\/p>\n<p><a href=\"\/images\/dialog-fixes-old.png\"><img decoding=\"async\" src=\"\/images\/dialog-fixes-old.png\" \/><\/a><\/p>\n<p>Now I&#8217;ll try to explain myself in prose rather than pixels.<\/p>\n<p><strong>Mistake 1: Too many buttons<\/strong><\/p>\n<p>This dialog provides a simple <a href=\"http:\/\/en.wikipedia.org\/wiki\/Create,_read,_update_and_delete\">CRUD<\/a> user interface, but it has <b>6 buttons<\/b>. That&#8217;s too many buttons for such a simple task<\/p>\n<p><b>Mistake 2: Wasted space<\/b><\/p>\n<p>Don&#8217;t get me wrong. I&#8217;m a fan of liberal white space between elements. I think it puts users at ease, when used properly. But in this case, there is too much wasted space.<\/p>\n<p><b>Mistake 3: Misalignment<\/b><\/p>\n<p>The 6 buttons all have icons, but none of the buttons or text align vertically. This forces the human eye to read more carefully, causing unnecessary stress.<\/p>\n<p><b>Mistake 4: No way to revert<\/b><\/p>\n<p>If I make a mistake with this dialog, my only option is to manually revert my changes. Sometimes this approach is okay, especially with simple dialogs like this one, but as a user, I find it comforting when there is a &#8220;cancel&#8221; button to rescue me from my own fat fingers. I realize that the GNOME project usually follows the &#8220;apply-as-you-type&#8221; paradigm, but I prefer the OK\/Cancel\/Apply approach.<\/p>\n<p><b>Mistake 5: Editing, Deleting, and Re-ordering is too hard<\/b><\/p>\n<p>Although the &#8220;focus-and-click&#8221; method for editing, deleting, and re-ordering has seen a lot of use over the years, I find it dated and confusing to users. I much prefer to inline the &#8220;edit&#8221; and &#8220;remove&#8221; buttons as close to their respective elements as possible, reducing confusion about exactly what will be deleted when I click a button. Also, clicking &#8220;Up&#8221; and &#8220;Down&#8221; to move the focused item in the list is old school. Much better to drag and drop in modern user interfaces.<\/p>\n<p><b>The Proposal<\/b><\/p>\n<p>If I woke up in the UI designer&#8217;s shoes tomorrow, and this dialog was my number one priority, I would probably refactor it as follows:<\/p>\n<p><a href=\"\/images\/dialog-fixes-new.png\"><img decoding=\"async\" src=\"\/images\/dialog-fixes-new.png\" \/><\/a><\/p>\n<p><b>Improvement 1: Easy editing<\/b><\/p>\n<p>The actions of the &#8220;Edit&#8221; and &#8220;Remove&#8221; buttons are super obvious. To edit an item, click the &#8220;Edit&#8221; button right on it. No ambiguity. You also don&#8217;t have to worry about graying out buttons when there is no selection.<\/p>\n<p><b>Improvement 2: Drag and drop<\/b><\/p>\n<p>To re-order items in the list, just drag &#8217;em.<\/p>\n<p><b>Improvement 3: Cancel<\/b><\/p>\n<p>If you don&#8217;t like your changes, click &#8220;Cancel&#8221;. Also, if you want to see the effect of your changes without closing the dialog, click &#8220;Apply&#8221;. Very handy if you want to try out lots of little changes without having to re-open the dialog between each change.<\/p>\n<p><b>Improvement 4: No focusing<\/b><\/p>\n<p>Now that the &#8220;Edit&#8221; and &#8220;Remove&#8221; buttons are in-line with the list items, there&#8217;s no need for a selection\/focus model at all. That&#8217;s one less thing the user has to worry about.<\/p>\n<p><b>Improvement 5: Simpler layout<\/b><\/p>\n<p>The layout is essentially vertical. The user sees two areas, one above the other, and the two areas do <b>only one thing each.<\/b> The top area contains the list of editable items. The bottom area deals with saving your changes (the &#8220;add&#8221; button is a small exception). I think this design is more approachable and easier for a user to understand quickly.<\/p>\n<p><b>Conclusion<\/b><\/p>\n<p>So that&#8217;s what I propose. A simpler, cleaner approach using modern methods to make the editing task easier on users. It doesn&#8217;t make them think <strong>about the user interface<\/strong>, but rather they are freed to think about the <strong>task they want to accomplish<\/strong> with the user interface.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sometimes I can&#8217;t help myself. This week, I read a blog post asking what was wrong with a dialog. I found plenty of stuff wrong, so I decided to write a response and create a replacement dialog. This is not intended as an attack on the dialog author. I hope it&#8217;s not received that way. [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-806","post","type-post","status-publish","format-standard","hentry","category-code-and-cruft"],"_links":{"self":[{"href":"https:\/\/thesmithfam.org\/blog\/wp-json\/wp\/v2\/posts\/806","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thesmithfam.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thesmithfam.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thesmithfam.org\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thesmithfam.org\/blog\/wp-json\/wp\/v2\/comments?post=806"}],"version-history":[{"count":17,"href":"https:\/\/thesmithfam.org\/blog\/wp-json\/wp\/v2\/posts\/806\/revisions"}],"predecessor-version":[{"id":1518,"href":"https:\/\/thesmithfam.org\/blog\/wp-json\/wp\/v2\/posts\/806\/revisions\/1518"}],"wp:attachment":[{"href":"https:\/\/thesmithfam.org\/blog\/wp-json\/wp\/v2\/media?parent=806"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thesmithfam.org\/blog\/wp-json\/wp\/v2\/categories?post=806"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thesmithfam.org\/blog\/wp-json\/wp\/v2\/tags?post=806"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}