platform-ui-home/accessibility/tips.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (download) (as text) (annotate)
Mon Mar 4 20:18:39 2002 UTC (7 years, 8 months ago) by tod
Branch: MAIN
CVS Tags: Post_2_1_M2, HEAD
Accessibility pass
<html>
<head>
<title>UI Component Development Resources for Accessibility</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="http://dev.eclipse.org/default_style.css" type="text/css">
</head>
<body>
<h1>Tips For Making User Interfaces Accessible </h1>
<p>Below is a series of tips for making something usable to the IAccessibility
interface provided by Windows. </p>
<p>1) Use Groups instead of Labels </p>
<blockquote>
  <p>If you use a Label to title a group of related widgets remove the label and
  replace thier parent composite with a Group whose text is the same as the
  title Label. </p>
</blockquote>
<p>2) Avoid intermediate Composites. </p>
<blockquote>
  <p>IAccessibility tools will read as far up the parent hierarchy of a widget
  with focus as there are widgets to read. Be sure there are no widgets without
  text anywhere in the tree. </p>
</blockquote>
<p>3) Use Read Only Texts instead of Labels </p>
<blockquote>
  <p>A text can be accessed using the keyboard and should be used if you want
  the information in a label to be accessible to keyboard navigation. Please
  note that a label beside a text will be treated as a title and so if you have
  a title:value pair you wish to show it is only required that you make the
  value widget a Text.&nbsp; </p>
</blockquote>
<p>4) <font COLOR="#000000"> Read and understand the IBM checklist.
http://www-3.ibm.com/able/accesssoftware.html</font> </p>
<p><font COLOR="#000000">5) Assign mnemonics to all menus and menu items.</font></p>
<blockquote>
  <p>E<font COLOR="#000000">nsure they are unique within a given menu. If a menu
  is dynamically composed from multiple plugins, it may be better to not assign
  mnemonics since conflicts cannot be avoided in general (e.g. the File / New
  list, or Perspective / Show View list)</font></p>
</blockquote>
<p><font COLOR="#000000">&nbsp;6) Assign mnemonics to all labels of controls in
dialogs / preference pages / property pages (e.g. buttons, checkboxes, radio
buttons, etc)</font></p>
<p><font COLOR="#000000">Ensure they are unique within the dialog. Be careful to
avoid collisions with the default buttons (e.g. Restore &amp;Defaults,
&amp;Apply in preference pages; &amp;Next, &amp;Back, &amp;Finish in wizards).
Do not assign mnemonics to OK and Cancel buttons. If you make OK the default
button of the shell, and Cancel is equivalent to closing the shell, then Enter
and Esc map to these by default. Generally doing something with Esc or Enter is
a bad idea. </font></p>
<p><font color="#000000">7) </font>I<font COLOR="#000000">f a control does not
have its own label (e.g. a text field), use a preceeding label ending with ':'
and assign a mnemonic to it.&nbsp; Screen readers like JAWS will read this label
when the control has focus (e.g. see Workbench / Preferences / Workbench)</font></p>
<p><font COLOR="#000000">8) Avoid extra freestanding labels as you cannot
navigate to them with the keyboard and screen readers like JAWS skip these since
they don't take focus</font></p>
<p><font COLOR="#000000">9) Do not assign mnemonics on controls in the main
window (other than main menus and main menu items), even if it looks like a
dialog (e.g. the form editors in WSAD) as these will usually conflict with menu
mnemonics</font></p>
<p><font COLOR="#000000">10) Assign shortcut keys for frequently used functions
(and -only- frequently used functions).</font></p>
<blockquote>
  <p><font COLOR="#000000">There are currently only two ways to hook shortcut
  keys in SWT:</font></p>
  <ul>
    <li><font COLOR="#000000">by setting an accelerator on a menu item in the
      main menubar (they are ignored in context menus)- JFace actions have
      support for this</font></li>
    <li><font COLOR="#000000">by hooking a key listener on a particular control
      (e.g. in the implementation of a view or editor)</font></li>
  </ul>
  <p><font COLOR="#000000">Consult the table of Eclipse SDK shortcut keys
  (available off of eclipse.org -&gt; Projects -&gt; Eclipse Project -&gt;
  Platform -&gt; UI -&gt; Development Resources -&gt; Accessibility) to avoid
  collision.</font></p>
</blockquote>
<p><font COLOR="#000000">12) Avoid Alt+{key} combinations since they may
conflict with menu mnemonics</font></p>
<p><font COLOR="#000000">13) Avoid Ctrl+Alt+{key} combinations since they often
conflict with entering special characters on international keyboards (alt Gr =
Ctrl+Alt)</font></p>
<p><font COLOR="#000000">14) Avoid Ctrl+Space+{key} combinations since
Ctrl-Space is used for mode switching in Asian languages.</font></p>
<p><font COLOR="#000000">15) Try to save navigation context.</font></p>
<blockquote>
  <p><font COLOR="#000000">e.g. in Workbench / Preferences, we now remember
  which page you had selected last. This avoids having to navigate through the
  list each time</font></p>
</blockquote>
<p><font color="#000000">16) Assign a specific person on the team to be
responsible for accessibility on your project.</font></p>
<p><font color="#000000">17) Test for accessibility.</font></p>
<blockquote>
  <p><font color="#000000">Have your team hold an occasional &quot;unplug your
  mouse day&quot; where they try to use the product using keyboard only. Get a
  copy of JAWS (http://www.freedomscientific.com/) and ensure that your UI is
  usable with it</font></p>
</blockquote>
</body>