{"id":594,"date":"2003-08-10T12:39:38","date_gmt":"2003-08-10T16:39:38","guid":{"rendered":"\/?p=594"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T04:00:00","slug":"file_choosing_widgets","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2003\/08\/10\/file_choosing_widgets\/","title":{"rendered":"File Choosing Widgets"},"content":{"rendered":"<p>\n<a href=\"http:\/\/disco.ucsd.edu\/blog\/computers\/mac\/programming\/fileChoosingUI.html\">Michael McCracken<\/a> has started a discussion about widgets for choosing files (and folders) and displaying the currently chosen item. Apple hasn&rsquo;t provided any guidance in this matter and uses a variety of designs:\n<\/p>\n\n<ul>\n\n\t<li>The Internet preferences pane uses a uneditable, undraggable text field with the form &ldquo;\"Downloads\" on volume \"HD\".&rdquo; (Yes, it uses straight quotes.) You pick the folder using a Select&hellip; button. It also has pop-up menu for picking the default Web browser, which shows the current selection and also has an Other&hellip; button.<\/li>\n\n\t<li>Mail uses an editable, undraggable text field showing the <tt>~<\/tt> path and a Choose&hellip; button. It doesn&rsquo;t care whether the text you type in the field forms a valid path.<\/li>\n\n\t<li>Project Builder is like Mail, except that since its dialog is for creating files, if the path you type doesn&rsquo;t exist it will create all the necessary intermediate folders.<\/li>\n\n\t<li>Safari uses a pop-up menu with two items: the selected folder and an Other&hellip; command.<\/li>\n    \n    <li>Terminal uses an uneditable, undraggable text field that shows the <tt>\/<\/tt> path and has a Select File&hellip; button.<\/li>\n<\/ul>\n\n<p>\nThird-party applications use a variety of designs, too:\n<\/p>\n\n<ul>\n\t<li><a href=\"http:\/\/www.barebones.com\/products\/bbedit\/index.shtml\">BBEdit<\/a> shows the <tt>~<\/tt> path in an uneditable, draggable text field and has a Set&hellip; button.<\/li>\n\n    <li><a href=\"http:\/\/www.c-command.com\/dropdmg\">DropDMG<\/a> uses a pop-up menu that shows the chosen folder, along with recent folders, favorite folders, and an Other&hellip; command.<\/li>\n\n\t<li><a href=\"http:\/\/www.elgato.com\/eyeTV\/index.html\">EyeTV<\/a> shows the <tt>\/<\/tt> path in an uneditable, undraggable text field and has a Change&hellip; button.<\/li>\n\n\t<li><a href=\"http:\/\/www.icab.de\">iCab<\/a> has a uneditable, undraggable text field that shows the <tt>:<\/tt> path and has a Choose&hellip; button.<\/li>\n\n    <li><a href=\"http:\/\/www.barebones.com\/products\/mailsmith\/index.shtml\">Mailsmith<\/a> uses an undraggable text field that shows the name of the selected file. At the right of the text field is a down-pointing triangle that pops up a menu with an Other&hellip; command.<\/li>\n\n\t<li><a href=\"http:\/\/www.microsoft.com\/mac\/products\/internetexplorer\/internetexplorer.aspx?pid=internetexplorer\">Internet Explorer<\/a> uses the same form as the downloads folder portion of the Internet preferences pane, except that the title of its button is Change Location&hellip;.<\/li>\n\n    <li><a href=\"http:\/\/www.omnigroup.com\/applications\/omniweb\/\">OmniWeb<\/a> has an editable, undraggable, non-validating text field that shows the <tt>\/<\/tt> path and has a Find&hellip; button.<\/li>\n<\/ul>\n\n<p>\nHere&rsquo;s my take:\n<\/p>\n\n<dl>\n<dt>\nText field or pop-up menu?\n<\/dt>\n\n<dd>\nUse a pop-up menu when space is scarce or when you want to provide preset choices, such as recent folders or a list of known Web browsers. Otherwise use a text field and a button.\n<\/dd>\n\n<dt>\nShould the text field show just the filename, or its path?\n<\/dt>\n\n<dd>\nI like to see the full path, starting at <tt>~<\/tt>.\n<\/dd>\n\n<dt>\nWhat if the path is too long to fit?\n<\/dt>\n\n<dd>\nIt should be ellipsed in the middle.\n<\/dd>\n\n<dt>\nShould the text field accept drags?\n<\/dt>\n\n<dd>\nOf course!\n<\/dd>\n\n<dt>\nShould the text field be editable?\n<\/dt>\n\n<dd>\nSome people don&rsquo;t like this because the user shouldn&rsquo;t have to deal with paths. On the other hand, it can be a nice time-saver for the user. One thorny issue is what to do about invalid paths. It&rsquo;s easy to validate the text field after the user&rsquo;s done typing, and to revert it if the path isn&rsquo;t valid. However, I don&rsquo;t like text fields that don&rsquo;t commit until you press Return and that show invalid data in the interim. Since I haven&rsquo;t seen how to do this right, I&rsquo;ll say that the text field should be uneditable.\n<\/dd>\n\n<\/dl>\n\n<p>\nI&rsquo;m sure there are many other issues to consider&hellip;\n<\/p>","protected":false},"excerpt":{"rendered":"<p>Michael McCracken has started a discussion about widgets for choosing files (and folders) and displaying the currently chosen item. Apple hasn&rsquo;t provided any guidance in this matter and uses a variety of designs: The Internet preferences pane uses a uneditable, undraggable text field with the form &ldquo;\"Downloads\" on volume \"HD\".&rdquo; (Yes, it uses straight quotes.) [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"","apple_news_api_id":"","apple_news_api_modified_at":"","apple_news_api_revision":"","apple_news_api_share_url":"","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[2],"tags":[],"class_list":["post-594","post","type-post","status-publish","format-standard","hentry","category-technology"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/594","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=594"}],"version-history":[{"count":0,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/594\/revisions"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=594"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=594"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}