CS 338: Graphical User Interfaces
  Design Guidelines
The following list is a compilation of the design guidelines presented in lecture 
  that should be followed in the assignments. These guidelines derive from the 
  Java 
  Look & Feel Design Guidelines and represent those guidelines which are 
  most important for this course and for general GUI development.
Windows & Layout
  - Layout process 
    
      - Include 12 pixels between the top and left borders of a dialog box and 
        its components.
 
      - Place 17 pixels of vertical space between the command button row and 
        the other components. 
 
      - Buttons must have the same width and must right-aligned along the bottom 
        margin.
 
      - When designing a dialog box, place the most important options, or those 
        you expect users to complete first, prior to others (in reading order).
 
      - Align related components vertically using a chosen design grid column, 
        and horizontally using a chosen design grid row.
 
    
   
  - Labels 
    
      - Place labels before the component to which they refer (generally, above 
        and to the left).
 
      - Align labels with the tops of their components.
 
      - Insert 12 pixels between the trailing edge of a label and any associated 
        components.
 
      - Left-align all vertically aligned labels.
 
      - Insert 12 pixels after the edge of the longest label.
 
    
   
  - Command buttons 
    
      - Center all button text, with a 12-pixel left & right boundary between 
        button label and button edge.
 
      - Make all grouped command buttons equal width, which doesn't change when 
        window is resized.
 
      - Space buttons in a group 6 pixels apart.
 
      - Make the default button the left-most button.
 
      - Insert 17 pixels between these & rest of window.
 
    
   
  - Radio & check-box buttons 
    
      - Align the leading edge with that of other components.
 
      - Space grouped buttons 6 pixels apart.
 
      - Space separate groups 12 pixels apart.
 
    
   
  - Toolbar buttons 
    
      - Space individual toolbar buttons 2 pixels apart.
 
      - Space groups of toolbar buttons 11 pixels apart.
 
      - Include 3 pixels of space above and below all toolbar buttons.
 
    
   
  - Interface text 
    
      - Most components use "headline" capitalization.
 
      - Alerts, errors, and long labels use "sentence" capitalization.
 
    
   
Dialogs & Alerts
  - Dialog boxes 
    
      - Use layout managers!
 
      - Specify a logical tab traversal order for the user interface elements 
        in a dialog box.
 
    
   
  - Command buttons
 
  
    - Place command buttons that apply to the dialog box as a whole in the command 
      button row at the bottom of the dialog box.
 
    - Align buttons in the command button row along the lower-right edge of 
      the dialog box.
 
    - Place command buttons that apply to one or a few components next to their 
      associated components.
 
  
  - OK & Cancel 
    
      - When users click "OK", save the settings (or carry out the 
        commands) and close the dialog.
 
      - Whenever possible, provide the button with a command name that describes 
        the action (such as Print or Find) instead of OK.
 
      - When users click "Cancel", close the window and restore the 
        settings to the state they were in when the dialog box was opened.
 
    
   
  - Apply & Close 
    
      - Use "Apply" to carry out the changes users specify in a dialog 
        box without closing the window. 
 
      - Whenever possible, in use a specific action name (such as "Find") instead 
        of "Apply".
 
      - Include a "Close" button in a dialog box with an "Apply" 
        (or other action) button. Close dismisses the dialog box without applying 
        changes.
 
      - If the user has made changes in a dialog box and clicks Close before 
        clicking the Apply button, display a Warning alert box to apply changes, 
        discard changes, or cancel the close operation.
 
    
   
  - Close only 
    
      - Never use an "OK" button in a window that has a "Close" 
        button.
 
      - When users click the "Close" button, dismiss the dialog box 
        and do not make additional changes to the system. 
 
    
   
  - Default button 
    
      - If a dialog box has a default button, make it the first (left-most) 
        command button in the group.
 
      - Commands that cause the user to lose data should never be the default 
        button, even if they are the most common option.
 
    
   
  - Alert boxes 
    
      - Begin your message with a brief heading in bold.Start the body of the 
        message on a separate line.
 
      - If appropriate, provide a Help button in an alert box that opens an 
        additional window with more information.
 
    
   
  - Info alerts 
    
      - Provide a Close button to dismiss an Info alert.
 
    
   
  - Warning alerts 
    
      - Keep the message in a Warning alert box brief, and use terms that are 
        familiar to users.
 
      - Include at least two buttons in a Warning alert box: one button to perform 
        the action and the other to cancel the action.
 
      - If the most common action could result in data loss, do not provide 
        a default. 
 
    
   
  - Error alerts 
    
      - In the message of an Error alert box, explain what happened, the cause 
        of the problem, and what the user can do about it. Keep the message brief 
        and use terms that are familiar to users. 
 
      - If possible, provide buttons or other controls to resolve the error 
        noted in the Error alert box.
 
      - Label the buttons according to the action they perform.
 
      - If users cannot resolve the error, provide a Close button.
 
      - If appropriate, include an error number in the title bar of an Error 
        alert box.
 
      - If appropriate, provide a Help button in an Error alert box to open 
        a separate window that gives background information about the error.
 
    
   
Selection Components
  - General 
    
      - Put your selectable list in a scroll pane.
 
      - Put your selectable table in a scroll pane.
 
      - Put your selectable tree in a scroll pane.
 
    
   
Text & Panels
  - Labels 
    
      - Keep label text brief, and use terminology that is familiar to users.
 
      - Use headline capitalization in the label text and place a colon at the 
        end of the text.
 
      - Use sentence capitalization in the text of a label that communicates 
        status. (Use a period only when text is a complete sentence.)
 
      - Make a label unavailable when the component it describes is unavailable.
 
    
   
Menus & Toolbars
  - Menu bars 
    
      - Use menu titles that make it easy for users to determine which menu 
        contains the items of interest to them. 
 
      - Use a single word for each menu title.
 
      - Be sure to include mnemonics for every menu title in your menu bar.
 
      - Do not display menu bars in secondary windows.
 
      - If your application needs the commonly used menus, place the menu titles 
        in this order: File, Edit, Format, View, and Help.
 
      - If needed, insert other menus between the View and Help menus (and sometimes 
        between Edit and View, as appropriate).
 
    
   
  - Submenus 
    
      - Minimize the use of submenus.
 
      -  If you want to present a large or complex set of choices, display them 
        in a dialog box. 
 
    
   
  - Menu items 
    
      - Make your menu items brief — typically verb phrases (e.g., 
        “Align Left”) or nouns (e.g., “Font”).
 
      - Never give a menu item the same name as its menu title.
 
      - Use headline capitalization for menu items.
 
      - Include mnemonics for all menu items.
 
      - Offer keyboard shortcuts for frequently used menu items.
 
      - Use the same keyboard shortcut if a menu item appears in multiple menus.
 
      - Use the same mnemonic if a menu item appears in multiple menus.
 
      - If a menu item does not fully specify a command and users need a dialog 
        box to finish the specification, use an ellipsis (“...”) after 
        the menu item.
 
      - Do not use an ellipsis mark simply to indicate that a secondary or utility 
        window will appear.
 
    
   
  - Separators 
    
      - Use separators to group similar menu items in a way that helps users 
        find items and better understand their range of choices.
 
      - Users can never choose a separator.
 
      - While separators serve important functions on menus, avoid using them 
        elsewhere in your application.
 
    
   
  - Checkbox menu items 
    
      - Use checkbox menu items with restraint.
 
      - If users must set >2 related attributes, place the checkboxes in 
        a dialog box (or provide a utility window or toolbar buttons for the attributes).
 
      - Use checkbox menu items instead of toggle menu items (e.g., “Italics 
        On” and “Italics Off”)to indicate choices you can turn 
        on or off. 
        
          - Toggle menu items confuse users — it is unclear if the 
            commands are telling users the current state of the selected object, 
            or the state they can change the object to by choosing the menu item
 
        
       
    
   
  -  Radio button menu items 
    
      - To indicate that the radio button items are part of a set, group them 
        and use separators to separate them from other menu items.
 
    
   
  - File menu 
    
      - Place commands that apply to the document or the main object (or the 
        application as a whole) in the File menu.
 
      - If your application manipulates “non-file” objects, give 
        the File menu a different name.
 
      - When the Close item dismisses the active window, close any dependent 
        windows at the same time.
 
      - Provide an Exit item, which closes all associated windows and terminates 
        the application. 
        
          - Be sure to use Exit, not Quit! (by convention)
 
        
       
    
   
  - Edit menu 
    
      - Place commands that modify the contents of documents or other data in 
        the Edit menu.
 
    
   
  - Format menu 
    
      - Place commands that change the format of objects, usually text, in the 
        Format menu.
 
    
   
  - View menu 
    
      - Place commands that change the view of the data in the View menu.
 
      - Ensure that commands in the View menu alter only the view/presentation 
        of the underlying data without changing the data directly.
 
    
   
  - Help menu 
    
      - Place access to online information about the features of the application 
        in the Help menu.
 
      - Include “About <app-name>” as the last item and place 
        a separator before the item. 
        
          - “About <app-name>” should display a window with 
            the product name, version number, company logo, product logo, legal 
            notices, and names of contributors. 
 
        
       
    
   
  - Contextual menus 
    
      - Ensure that all features presented in contextual menus are also available 
        in more visible and accessible places, such as drop-down menus.
 
      - Display keyboard shortcuts and mnemonics in contextual menus that are 
        consistent with their usage in any corresponding drop-down menus.
 
    
   
  - Toolbars 
    
      - Include commonly used menu items as buttons (or other components) in 
        your toolbar.
 
      - Even if your window has a toolbar, make all toolbar commands accessible 
        from menus.
 
      - Be sure to provide tool tips for all toolbar buttons.
 
      - Because toolbars can be difficult for users with motor impairments and 
        are not always regarded as a good use of space, provide a way to hide 
        each toolbar in your application.
 
      - Provide large and small graphics (e.g., 24 x 24 and 16 x 16 
        pixels) in your application and enable users to select the large graphics 
        in all parts of the application, including the toolbars. 
 
    
   
  - Toolbar tool tips
    
      - Ensure that the keyboard shortcuts for toolbar buttons match the keyboard 
        shortcuts for the corresponding menu items.
 
      - Attach tool tips to all toolbar components that do not include text 
        identifiers.
 
      - If your application does not have menus, attach tool tips to the toolbar 
        buttons in order to display keyboard shortcuts.