myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andy Schwartz" <andy.g.schwa...@gmail.com>
Subject Re: [Trinidad] Adding additional accessibility features to skinning
Date Thu, 14 Feb 2008 17:50:09 GMT
Gang -

I am hoping to pick this up where Matt left off and see if I can
provide a solution.  There are two problems that I am hoping to
address:

1. High contrast content: Skin styles or icons may need to be tweaked
for users who require high contrast-friendly content.  In some cases
it may also be necessary to tweak the rendered HTML content itself (as
opposed to just tweaking styles/icons), eg. add affordances to the UI
to assist high contrast users.

2. Low vision content: The issue here is that for users with low
vision it would be nice to both bump up the default font size to a
more reasonable value (eg. "medium" instead of "x-small" on IE), and
also avoid sizing text smaller than some reasonable minimum (eg.
anything smaller than the default font size gets cranked up to the
default font size).  There may also be cases where it may be useful to
tweak rendered content to provide content which is more friendly to
users who want to scale up the font size.

Matt has already provided a basic outline of the solution.  Refining
that a bit, I think we want to do the following:

- Add a new RequestContext.AccessibilityProfile API which provides
access to finer grained accessibility preferences (ie. finer-grained
than the current accessibility "mode").
- Provide access to the AccessibilityProfile via a new
RequestContext.getAccessibilityProfile() API.
- Expose a new <accessibility-profile> configuration parameter in
trinidad-config.xml.
- Enhance skinning to support a new "@accessibility-profile" constraint.

The AccessibilityProfile API would initially support the two
preferences described above.  In terms of APIs, note that we should
avoid referring to specific disabilities directly, but rather use
names which refer to the functionality that we are providing.  For
example, we want to avoid using the term "low vision" in our API.
Instead of "low vision" we want something that says "I don't want the
normal default/small fonts" - I was thinking we could call this
preference something like "large fonts".  (I believe there is some
precendent for this sort of terminology - checking with our
accessibility experts on that.)

If we go this route, we could have a couple of boolean properties
hanging off of the AccessibilityProfile, eg:

  public static class AccessibilityProfile
  {
    public boolean isHighContrast();
    public boolean isLargeFonts();
  }

Alternatively, if people would prefer to have room to expand, we could
make these return enumerations instead of booleans, though I see these
properties as being either on or off - ie. I don't see the need for
low contrast, or small fonts options, but I am open to other opinions.

The trinidad-config API would be a simple list of preferences.  For
example, to enable high contrast support:

  <accessibility-profile>high-contrast</accessibility-profile>

Or to enable both high contrast and large fonts:

  <accessibility-profile>high-contrast large-fonts</accessibility-profile>

Note that typically this value will be EL-bound to a user-provided
preference (like <accessibility-mode>).

Finally, on the skinning side, we would need to support customizations
along the lines of:

@accessibility-profile high-contrast {

  /* high-contrast styles here */
}

Or, for styles that apply in either the high contrast or the large font case:

@accessibility-profile high-contrast, low-vision {
  /* high-contrast/low-vision styles here */
}

One high-level question about the API...  While our current
requirements our focused on accessibility-specific issues, this
mechanism could be used for general-purposes user preferences (not
limited to accessibility).  As such, we could go with a more general
name - eg. replace "accessibility" with "user" in all of the APIs
above (UserProfile, <user-profile>, @user-profile).

Thoughts?

Andy

Mime
View raw message