SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
Mobile Accessibility with the
Java Lightweight UI Toolkit
Peter Korn, Accessibility Principal



  AEGIS Workshop and International Conference, Brussels
LWUIT INTRO


AEGIS Workshop and International Conference, Brussels
What is LWUIT?
Lightweight User Interface Toolkit

●
    Advanced, lightweight UI library
●
    Compelling UI
    ●
        Consistent across different devices
●
    For today's handsets (and more ...)
●
    Portable
    ●
        MIDP, Blackberry, Android, CDC, SE, TV, ...
●
    Inspired by Swing
●
    Tools support
●
    Open Source! and International Conference, Brussels
         AEGIS Workshop
LWUIT: Key Benefits
Easy Development and Deployment

●
    Rapid development
    ●
        Familiar API
    ●
        Clean & simple
●
    Easy deployment
    ●
        One jar, many devices
●
    Consistent & flexible
    ●
        Customizable, extensible
●
    “Filthy Rich” UI
●
    Brand-able
            AEGIS Workshop and International Conference, Brussels
LWUIT: Key Features
Rich Functionality

●
    Swing-like MVC
●
    Layouts
●
    Fonts
●
    Rich widgets
●
    HTML widget
●
    3D & SVG integration
●
    Touch screen support
●
    Animations & transitions
●
    PluggableWorkshop and Internationaltheming
          AEGIS Look & Feel, Conference, Brussels
ACCESSIBILITY: THE BASICS


    AEGIS Workshop and International Conference, Brussels
Access Requirements for LWUIT
What needs to be there to support users with disabilities

●
    Needs to be operable from the keyboard (by
    someone who can’t use a touchscreen)
    ●
        LWUIT already has full phone keyboard
        operability
●
    Needs to support a variety of themes for folks
    with poor vision – e.g. “high contrast”, “large
    print”
    ●
        LWUIT already themeable
●
    Needs to support an accessibility API for
    interoperability with assistive technologies
            AEGIS Workshop and International Conference, Brussels
    ●
Accessibility API requirements
Industry consensus on a “sufficient accessibility API”

●
    Expose detailed information about UI
    components
    ●
        Role, state(s), boundary, name & desc.
    ●
        Min/max/current value of anything that takes a
        value (e.g. slider)
    ●
        Text contents, attributes, boundary of all text on
        the display
    ●
        Relationships of UI components with each other;
        including tabular
●
    Fire events when things happen to UI
    components and International Conference, Brussels
           AEGIS Workshop
Goals and Constraints

●
    Minimal impact on phones that aren't running
    AT
●
    Minimal impact on LWUIT API (only add
    something if we really need to)
●
    Run with existing LWUIT apps
●
    Minimal runtime impact for accessibility
    metadata (e.g. name of icons, associating
    labels with text fields)
●
    Support native AT, support Java AT
          AEGIS Workshop and International Conference, Brussels
Roles

●
    LWUIT base components mapped to ARIA
    roles:
    ●
        Roles are determined by:
        –   If a “role” client property is assigned, then it overrides
            everything else
        –   instanceof checks: e.g. if component is TextArea: its
            role is TEXTBOX
        –   UIID checks: e.g. if the component is a Dialog, then if
            its UIID is “Menu” its role is MENU (otherwise its role is
            DIALOG)
        –   Hierarchy checks: e.g. if grandparent of a component
            is a Tabs class then it is either a TAB or a TABPANEL
            (according to class and UIID)
               AEGIS Workshop and International Conference, Brussels
Attributes or States

●
    LWUIT base components get some attributes
    inherently
    ●
        The user can specify attributes in the
        component's client properties. These will override
        everything.
    ●
        Attributes are determined by base component
        states. For example:
        –   aria-disabled – by isEnabled()
        –   aria-visible – by isVisible()
        –   aria-checked – by isSelected()
        –   aria-expanded, aria-setsize, aria-posinset, aria-
            level – Workshop and International Conference, Brussels
              AEGIS for tree
ARCHITECTURE


AEGIS Workshop and International Conference, Brussels
Architecture – Event Bus
           Application          Event Bus                   AT

             LWUIT          App Handler                    AT
             Broker                                        app
                                 Event Bus
             LWUIT                                          AT
              app                   AT Handler            Broker



●
    The Event Bus listens on 2 TCP/IP ports, one
    for ATs and one for applications
    ●
        The Bus opens an AppHandler/ATHandler
        instance for each app/AT
    ●
        ATHandler listens to AT queries, and forward
        relevant App events to the AT
            AEGIS Workshop and International Conference, Brussels
    ●
Architecture – AT
         Application          Event Bus                   AT

           LWUIT          App Handler                    AT
           Broker                                        app
                               Event Bus
           LWUIT                                          AT
            app                   AT Handler            Broker



●
    ATBroker provides for AT developers event
    listeners and query methods, and on the other
    hand communicates with the Bus via TCP/IP
    (Or IMC in the future)
●
    The AT can signal (via the ATBroker) to which
    events it would like to listen
          AEGIS Workshop and International Conference, Brussels
Architecture – Application
           Application      Event Bus        AT

             LWUIT       App Handler         AT
             Broker                          app
                             Event Bus
             LWUIT                            AT
              app              AT Handler   Broker



●
    The broker once started with Broker.init(),
    starts polling the application UI.
●
    Once a new Form comes up, it adds itself
    (and helper objects) as listeners to all
    components in the UI.
●
    In additionWorkshop and Internationalchanges to the UI for
           AEGIS it polls other Conference, Brussels
Packages

●
    accessibility.common – a common package
    used by all 3 runtimes (AT/App/Bus) for a
    unified way of serializing event objects.
    Includes:
    ●
        AEvent – the base event class. Basically
        serializes the event type and a queryId. AEvent
        can also be a query or response (Considering
        elaborating the class structure)
    ●
        Other events: RegisterEvent (App/AT
        identification), FocusEvent, ComponentQuery
        (queries component states/children etc.),
        StatesResponsesInternational Conference, Brussels queries)
             AEGIS Workshop and (Returns component
Code Samples: Enabling Access

●
    Making a LWUIT app accessible is very easy,
    simply add to your midlet:
        Broker.init(“App Name”);
●
    Notes:
    ●
        This should be added after the
        Display.init(midlet) call.
    ●
        Your app should use the ATBroker project
    ●
        This applies to the prototype only, when the
        accessibility technology will be integrated into
        OJWC, There would be no need to explicitly
        initialize the broker, it would be done by LWUIT.
              AEGIS Workshop and International Conference, Brussels
Code Samples: Custom Properties

●
    Most ARIA properties are determined
    automatically by the Broker.
●
    However, some custom components may
    require setting various properties
●
    Example: Let's say that we have a custom
    component that needs to relay the information
    that it has 6 items:
        putClientProperty(Attribute.getAttName(Attribute.ARI
        A_SETSIZE), 6);
●
    Notes:
    ●
             AEGIS Workshop and International Conference, Brussels
Code Samples: Setting names

●
    Another way of adding accessibility info is by
    using:
    component.setLabelForComponent(Label
    componentLabel);
    ●
        This was created in LWUIT for other uses.
    ●
        It is especially useful for components that don’t
        have a defined name (For example TextArea/Field
        vs. Label/Button)
●
    Example:
        Label nameLabel = new Label(“Name:”);
        TextField nameField = new TextField();
            AEGIS Workshop and International Conference, Brussels
Code Samples:
ListCellRenderers
●
    Work is needed for custom list cells
    ●
        Set the appropriate Role for the cell
    ●
        Set the appropriate Name, Description
    ●
        Ensure correct Selection, item count
●
    Example from ScrollDemo.java:
    public Component
    getListCellRendererComponent(List list, Object value,
    int index, boolean isSelected) {
       Contact person = (Contact) value;
       name.setText(person.getName());
       email.setText(person.getEmail());
            AEGIS Workshop and International Conference, Brussels
Code Samples: ListCellRenderers

public Component
getListCellRendererComponent(List list, Object
value, int index
    boolean isSelected) {
  Contact person = (Contact) value;
  name.setText(person.getName());
  email.setText(person.getEmail());
  pic.setIcon(person.getPic());

putClientProperty(Attribute.ATT_NAMES[Attrib
ute.ROLE], new Integer(Role.LISTITEM));
        AEGIS Workshop and International Conference, Brussels
Code Samples: AT

●
    Writing an assistive technology is also quite
    easy.
●
    First, initialize the ATBroker:
        ATBroker.getInstance().init(midlet,"AT
        Name");
●
    Implement the relevant Listener
    ●
        For focus for example, implement
        AFocusListener that gets called on its
        focusGained method.
    ●
        Other listeners:
              AEGIS Workshop and International Conference, Brussels
        –   AHierarchyListener, ADataChangeListener,
Code Samples: AT
import accessibility.at.AFocusListener;
import accessibility.at.ATBroker;
import accessibility.common.FocusEvent;
import javax.microedition.midlet.MIDlet;
import
javax.microedition.midlet.MIDletStateChangeEx
ception;
public class SimpleATMIDlet extends MIDlet
implements AFocusListener {
  protected WorkshopstartApp() throws
        AEGIS void and International Conference, Brussels
Monkey Application
Scans all UI components and provides details about them

●
    Demonstrates the ability
    for AT to query entire UI
    hierarchy
●
    Also a great accessibility
    debugging tool




             AEGIS Workshop and International Conference, Brussels
DEMOS


AEGIS Workshop and International Conference, Brussels

Weitere ähnliche Inhalte

Andere mochten auch (11)

28 accessible digital office document (adod) project
28 accessible digital office document (adod) project28 accessible digital office document (adod) project
28 accessible digital office document (adod) project
 
20 adibib aegis paper
20 adibib aegis paper20 adibib aegis paper
20 adibib aegis paper
 
VERITAS newsletter n° 4
VERITAS newsletter n° 4VERITAS newsletter n° 4
VERITAS newsletter n° 4
 
2. eHealth services for the elderly at home and on the move
2. eHealth services for the elderly at home and on the move2. eHealth services for the elderly at home and on the move
2. eHealth services for the elderly at home and on the move
 
Accessible project newsletter 5
Accessible project newsletter 5Accessible project newsletter 5
Accessible project newsletter 5
 
2. aegis concept and realisations conference v3
2. aegis concept and realisations   conference v32. aegis concept and realisations   conference v3
2. aegis concept and realisations conference v3
 
41 planning for accessible emergency communications
41 planning for accessible emergency communications41 planning for accessible emergency communications
41 planning for accessible emergency communications
 
Towards the future... v2
Towards the future... v2Towards the future... v2
Towards the future... v2
 
7 christophe
7 christophe7 christophe
7 christophe
 
30 31 cognitive navigation and object detection system for blind people
30 31 cognitive navigation and object detection system for blind people30 31 cognitive navigation and object detection system for blind people
30 31 cognitive navigation and object detection system for blind people
 
25 jo daems ict inclusive
25 jo daems ict inclusive25 jo daems ict inclusive
25 jo daems ict inclusive
 

Ähnlich wie 40 peter korn light weight ui toolkit

2. the aegis story building an accessible application
2. the aegis story   building an accessible application2. the aegis story   building an accessible application
2. the aegis story building an accessible applicationAEGIS-ACCESSIBLE Projects
 
Developing and Benchmarking Qt applications on Hawkboard with Xgxperf
Developing and Benchmarking Qt applications on Hawkboard with XgxperfDeveloping and Benchmarking Qt applications on Hawkboard with Xgxperf
Developing and Benchmarking Qt applications on Hawkboard with XgxperfPrabindh Sundareson
 
Design of accessibility framework for mobile devices.
Design of accessibility framework for mobile devices.Design of accessibility framework for mobile devices.
Design of accessibility framework for mobile devices.AEGIS-ACCESSIBLE Projects
 
Programming IoT Gateways with macchina.io
Programming IoT Gateways with macchina.ioProgramming IoT Gateways with macchina.io
Programming IoT Gateways with macchina.ioGünter Obiltschnig
 
1. aegis concept and realisations workshop v3
1. aegis concept and realisations   workshop v31. aegis concept and realisations   workshop v3
1. aegis concept and realisations workshop v3AEGIS-ACCESSIBLE Projects
 
AGILE software, devices and wider ecosystem
AGILE software, devices and wider ecosystemAGILE software, devices and wider ecosystem
AGILE software, devices and wider ecosystemAGILE IoT
 
Attach Me, Detach Me, Assemble Me like you Work
Attach Me, Detach Me, Assemble Me like you WorkAttach Me, Detach Me, Assemble Me like you Work
Attach Me, Detach Me, Assemble Me like you WorkJean Vanderdonckt
 
Suiteflex Application Development
Suiteflex Application DevelopmentSuiteflex Application Development
Suiteflex Application DevelopmentNetSuite
 
Software Development Best Practices: Separating UI from Business Logic
Software Development Best Practices: Separating UI from Business LogicSoftware Development Best Practices: Separating UI from Business Logic
Software Development Best Practices: Separating UI from Business LogicICS
 
Qt Technical Presentation
Qt Technical PresentationQt Technical Presentation
Qt Technical PresentationDaniel Rocha
 
Docker Madison, Introduction to Kubernetes
Docker Madison, Introduction to KubernetesDocker Madison, Introduction to Kubernetes
Docker Madison, Introduction to KubernetesTimothy St. Clair
 
20180518 QNAP Seminar - Introduction to React Native
20180518 QNAP Seminar - Introduction to React Native20180518 QNAP Seminar - Introduction to React Native
20180518 QNAP Seminar - Introduction to React NativeEric Deng
 
201410 1 fiware-overview
201410 1 fiware-overview201410 1 fiware-overview
201410 1 fiware-overviewFIWARE
 
Widgets - the Wookie project
Widgets - the Wookie projectWidgets - the Wookie project
Widgets - the Wookie projectscottw
 
OSDC 2016 | rkt and Kubernetes: What’s new with Container Runtimes and Orches...
OSDC 2016 | rkt and Kubernetes: What’s new with Container Runtimes and Orches...OSDC 2016 | rkt and Kubernetes: What’s new with Container Runtimes and Orches...
OSDC 2016 | rkt and Kubernetes: What’s new with Container Runtimes and Orches...NETWAYS
 
OSDC 2016 - rkt and Kubernentes what's new with Container Runtimes and Orches...
OSDC 2016 - rkt and Kubernentes what's new with Container Runtimes and Orches...OSDC 2016 - rkt and Kubernentes what's new with Container Runtimes and Orches...
OSDC 2016 - rkt and Kubernentes what's new with Container Runtimes and Orches...NETWAYS
 

Ähnlich wie 40 peter korn light weight ui toolkit (20)

2. the aegis story building an accessible application
2. the aegis story   building an accessible application2. the aegis story   building an accessible application
2. the aegis story building an accessible application
 
Developing and Benchmarking Qt applications on Hawkboard with Xgxperf
Developing and Benchmarking Qt applications on Hawkboard with XgxperfDeveloping and Benchmarking Qt applications on Hawkboard with Xgxperf
Developing and Benchmarking Qt applications on Hawkboard with Xgxperf
 
Design of accessibility framework for mobile devices.
Design of accessibility framework for mobile devices.Design of accessibility framework for mobile devices.
Design of accessibility framework for mobile devices.
 
Gui automation framework
Gui automation frameworkGui automation framework
Gui automation framework
 
Programming IoT Gateways with macchina.io
Programming IoT Gateways with macchina.ioProgramming IoT Gateways with macchina.io
Programming IoT Gateways with macchina.io
 
1. aegis concept and realisations workshop v3
1. aegis concept and realisations   workshop v31. aegis concept and realisations   workshop v3
1. aegis concept and realisations workshop v3
 
AGILE software, devices and wider ecosystem
AGILE software, devices and wider ecosystemAGILE software, devices and wider ecosystem
AGILE software, devices and wider ecosystem
 
Attach Me, Detach Me, Assemble Me like you Work
Attach Me, Detach Me, Assemble Me like you WorkAttach Me, Detach Me, Assemble Me like you Work
Attach Me, Detach Me, Assemble Me like you Work
 
Qt
QtQt
Qt
 
GUI JAVA PROG ~hmftj
GUI  JAVA PROG ~hmftjGUI  JAVA PROG ~hmftj
GUI JAVA PROG ~hmftj
 
Suiteflex Application Development
Suiteflex Application DevelopmentSuiteflex Application Development
Suiteflex Application Development
 
Software Development Best Practices: Separating UI from Business Logic
Software Development Best Practices: Separating UI from Business LogicSoftware Development Best Practices: Separating UI from Business Logic
Software Development Best Practices: Separating UI from Business Logic
 
Qt Technical Presentation
Qt Technical PresentationQt Technical Presentation
Qt Technical Presentation
 
Docker Madison, Introduction to Kubernetes
Docker Madison, Introduction to KubernetesDocker Madison, Introduction to Kubernetes
Docker Madison, Introduction to Kubernetes
 
20180518 QNAP Seminar - Introduction to React Native
20180518 QNAP Seminar - Introduction to React Native20180518 QNAP Seminar - Introduction to React Native
20180518 QNAP Seminar - Introduction to React Native
 
201410 1 fiware-overview
201410 1 fiware-overview201410 1 fiware-overview
201410 1 fiware-overview
 
Widgets - the Wookie project
Widgets - the Wookie projectWidgets - the Wookie project
Widgets - the Wookie project
 
OSDC 2016 | rkt and Kubernetes: What’s new with Container Runtimes and Orches...
OSDC 2016 | rkt and Kubernetes: What’s new with Container Runtimes and Orches...OSDC 2016 | rkt and Kubernetes: What’s new with Container Runtimes and Orches...
OSDC 2016 | rkt and Kubernetes: What’s new with Container Runtimes and Orches...
 
OSDC 2016 - rkt and Kubernentes what's new with Container Runtimes and Orches...
OSDC 2016 - rkt and Kubernentes what's new with Container Runtimes and Orches...OSDC 2016 - rkt and Kubernentes what's new with Container Runtimes and Orches...
OSDC 2016 - rkt and Kubernentes what's new with Container Runtimes and Orches...
 
ADVANCED NOTEPAD
ADVANCED NOTEPADADVANCED NOTEPAD
ADVANCED NOTEPAD
 

Mehr von AEGIS-ACCESSIBLE Projects

Aegis concertation - 2nd International AEGIS conference
Aegis concertation - 2nd International AEGIS conferenceAegis concertation - 2nd International AEGIS conference
Aegis concertation - 2nd International AEGIS conferenceAEGIS-ACCESSIBLE Projects
 
Mobile applications (Panagiotis Tsoris, Steficon)
Mobile applications (Panagiotis Tsoris, Steficon)Mobile applications (Panagiotis Tsoris, Steficon)
Mobile applications (Panagiotis Tsoris, Steficon)AEGIS-ACCESSIBLE Projects
 
ViPi platform technologies and integration pathway (Karel Van Isacker, Phoeni...
ViPi platform technologies and integration pathway (Karel Van Isacker, Phoeni...ViPi platform technologies and integration pathway (Karel Van Isacker, Phoeni...
ViPi platform technologies and integration pathway (Karel Van Isacker, Phoeni...AEGIS-ACCESSIBLE Projects
 
Basic ICT Training curriculum (Andy Burton, NTU)
Basic ICT Training curriculum (Andy Burton, NTU)Basic ICT Training curriculum (Andy Burton, NTU)
Basic ICT Training curriculum (Andy Burton, NTU)AEGIS-ACCESSIBLE Projects
 
General introduction of the ViPi project (Karel Van Isacker, PhoenixKM)
General introduction of the ViPi project (Karel Van Isacker, PhoenixKM)General introduction of the ViPi project (Karel Van Isacker, PhoenixKM)
General introduction of the ViPi project (Karel Van Isacker, PhoenixKM)AEGIS-ACCESSIBLE Projects
 
Semantic Content Management enhancements (George Milis, G.M EuroCy Innovation...
Semantic Content Management enhancements (George Milis, G.M EuroCy Innovation...Semantic Content Management enhancements (George Milis, G.M EuroCy Innovation...
Semantic Content Management enhancements (George Milis, G.M EuroCy Innovation...AEGIS-ACCESSIBLE Projects
 
Gelijke kansen op informatie, toegankelijke documenten en communicatiekanalen...
Gelijke kansen op informatie, toegankelijke documenten en communicatiekanalen...Gelijke kansen op informatie, toegankelijke documenten en communicatiekanalen...
Gelijke kansen op informatie, toegankelijke documenten en communicatiekanalen...AEGIS-ACCESSIBLE Projects
 
AEGIS SP4 story - building an accessible mobile application
AEGIS SP4 story - building an accessible mobile applicationAEGIS SP4 story - building an accessible mobile application
AEGIS SP4 story - building an accessible mobile applicationAEGIS-ACCESSIBLE Projects
 
AEGIS SP3 story - building an accessible web application
AEGIS SP3 story - building an accessible web applicationAEGIS SP3 story - building an accessible web application
AEGIS SP3 story - building an accessible web applicationAEGIS-ACCESSIBLE Projects
 
Conference proceedings 2011 AEGIS International Workshop and Conference
Conference proceedings 2011 AEGIS International Workshop and ConferenceConference proceedings 2011 AEGIS International Workshop and Conference
Conference proceedings 2011 AEGIS International Workshop and ConferenceAEGIS-ACCESSIBLE Projects
 

Mehr von AEGIS-ACCESSIBLE Projects (20)

Newsletter 7 AEGIS project
Newsletter 7 AEGIS projectNewsletter 7 AEGIS project
Newsletter 7 AEGIS project
 
Veritas newsletter no 5 final
Veritas newsletter no 5 finalVeritas newsletter no 5 final
Veritas newsletter no 5 final
 
Aegis concertation - 2nd International AEGIS conference
Aegis concertation - 2nd International AEGIS conferenceAegis concertation - 2nd International AEGIS conference
Aegis concertation - 2nd International AEGIS conference
 
Mobile applications (Panagiotis Tsoris, Steficon)
Mobile applications (Panagiotis Tsoris, Steficon)Mobile applications (Panagiotis Tsoris, Steficon)
Mobile applications (Panagiotis Tsoris, Steficon)
 
ViPi platform technologies and integration pathway (Karel Van Isacker, Phoeni...
ViPi platform technologies and integration pathway (Karel Van Isacker, Phoeni...ViPi platform technologies and integration pathway (Karel Van Isacker, Phoeni...
ViPi platform technologies and integration pathway (Karel Van Isacker, Phoeni...
 
Basic ICT Training curriculum (Andy Burton, NTU)
Basic ICT Training curriculum (Andy Burton, NTU)Basic ICT Training curriculum (Andy Burton, NTU)
Basic ICT Training curriculum (Andy Burton, NTU)
 
ViPi Survey (Andy Burton, NTU)
ViPi Survey (Andy Burton, NTU)ViPi Survey (Andy Burton, NTU)
ViPi Survey (Andy Burton, NTU)
 
General introduction of the ViPi project (Karel Van Isacker, PhoenixKM)
General introduction of the ViPi project (Karel Van Isacker, PhoenixKM)General introduction of the ViPi project (Karel Van Isacker, PhoenixKM)
General introduction of the ViPi project (Karel Van Isacker, PhoenixKM)
 
Semantic Content Management enhancements (George Milis, G.M EuroCy Innovation...
Semantic Content Management enhancements (George Milis, G.M EuroCy Innovation...Semantic Content Management enhancements (George Milis, G.M EuroCy Innovation...
Semantic Content Management enhancements (George Milis, G.M EuroCy Innovation...
 
Gelijke kansen op informatie, toegankelijke documenten en communicatiekanalen...
Gelijke kansen op informatie, toegankelijke documenten en communicatiekanalen...Gelijke kansen op informatie, toegankelijke documenten en communicatiekanalen...
Gelijke kansen op informatie, toegankelijke documenten en communicatiekanalen...
 
AEGIS SP4 story - building an accessible mobile application
AEGIS SP4 story - building an accessible mobile applicationAEGIS SP4 story - building an accessible mobile application
AEGIS SP4 story - building an accessible mobile application
 
AEGIS SP3 story - building an accessible web application
AEGIS SP3 story - building an accessible web applicationAEGIS SP3 story - building an accessible web application
AEGIS SP3 story - building an accessible web application
 
ACCESSIBLE newsletter n° 6
ACCESSIBLE newsletter n° 6ACCESSIBLE newsletter n° 6
ACCESSIBLE newsletter n° 6
 
AEGIS Newsletter n° 6
AEGIS Newsletter n° 6AEGIS Newsletter n° 6
AEGIS Newsletter n° 6
 
VERITAS newsletter n° 3
VERITAS newsletter n° 3VERITAS newsletter n° 3
VERITAS newsletter n° 3
 
VERITAS newsletter n° 2
VERITAS newsletter n° 2VERITAS newsletter n° 2
VERITAS newsletter n° 2
 
Conference proceedings 2011 AEGIS International Workshop and Conference
Conference proceedings 2011 AEGIS International Workshop and ConferenceConference proceedings 2011 AEGIS International Workshop and Conference
Conference proceedings 2011 AEGIS International Workshop and Conference
 
Aegis concertation certh
Aegis concertation certhAegis concertation certh
Aegis concertation certh
 
Veritas iti aegis_conf
Veritas iti aegis_confVeritas iti aegis_conf
Veritas iti aegis_conf
 
Haptimap in a_nutshell_2011_for_aegis
Haptimap in a_nutshell_2011_for_aegisHaptimap in a_nutshell_2011_for_aegis
Haptimap in a_nutshell_2011_for_aegis
 

Kürzlich hochgeladen

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Kürzlich hochgeladen (20)

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 

40 peter korn light weight ui toolkit

  • 1. Mobile Accessibility with the Java Lightweight UI Toolkit Peter Korn, Accessibility Principal AEGIS Workshop and International Conference, Brussels
  • 2. LWUIT INTRO AEGIS Workshop and International Conference, Brussels
  • 3. What is LWUIT? Lightweight User Interface Toolkit ● Advanced, lightweight UI library ● Compelling UI ● Consistent across different devices ● For today's handsets (and more ...) ● Portable ● MIDP, Blackberry, Android, CDC, SE, TV, ... ● Inspired by Swing ● Tools support ● Open Source! and International Conference, Brussels AEGIS Workshop
  • 4. LWUIT: Key Benefits Easy Development and Deployment ● Rapid development ● Familiar API ● Clean & simple ● Easy deployment ● One jar, many devices ● Consistent & flexible ● Customizable, extensible ● “Filthy Rich” UI ● Brand-able AEGIS Workshop and International Conference, Brussels
  • 5. LWUIT: Key Features Rich Functionality ● Swing-like MVC ● Layouts ● Fonts ● Rich widgets ● HTML widget ● 3D & SVG integration ● Touch screen support ● Animations & transitions ● PluggableWorkshop and Internationaltheming AEGIS Look & Feel, Conference, Brussels
  • 6. ACCESSIBILITY: THE BASICS AEGIS Workshop and International Conference, Brussels
  • 7. Access Requirements for LWUIT What needs to be there to support users with disabilities ● Needs to be operable from the keyboard (by someone who can’t use a touchscreen) ● LWUIT already has full phone keyboard operability ● Needs to support a variety of themes for folks with poor vision – e.g. “high contrast”, “large print” ● LWUIT already themeable ● Needs to support an accessibility API for interoperability with assistive technologies AEGIS Workshop and International Conference, Brussels ●
  • 8. Accessibility API requirements Industry consensus on a “sufficient accessibility API” ● Expose detailed information about UI components ● Role, state(s), boundary, name & desc. ● Min/max/current value of anything that takes a value (e.g. slider) ● Text contents, attributes, boundary of all text on the display ● Relationships of UI components with each other; including tabular ● Fire events when things happen to UI components and International Conference, Brussels AEGIS Workshop
  • 9. Goals and Constraints ● Minimal impact on phones that aren't running AT ● Minimal impact on LWUIT API (only add something if we really need to) ● Run with existing LWUIT apps ● Minimal runtime impact for accessibility metadata (e.g. name of icons, associating labels with text fields) ● Support native AT, support Java AT AEGIS Workshop and International Conference, Brussels
  • 10. Roles ● LWUIT base components mapped to ARIA roles: ● Roles are determined by: – If a “role” client property is assigned, then it overrides everything else – instanceof checks: e.g. if component is TextArea: its role is TEXTBOX – UIID checks: e.g. if the component is a Dialog, then if its UIID is “Menu” its role is MENU (otherwise its role is DIALOG) – Hierarchy checks: e.g. if grandparent of a component is a Tabs class then it is either a TAB or a TABPANEL (according to class and UIID) AEGIS Workshop and International Conference, Brussels
  • 11. Attributes or States ● LWUIT base components get some attributes inherently ● The user can specify attributes in the component's client properties. These will override everything. ● Attributes are determined by base component states. For example: – aria-disabled – by isEnabled() – aria-visible – by isVisible() – aria-checked – by isSelected() – aria-expanded, aria-setsize, aria-posinset, aria- level – Workshop and International Conference, Brussels AEGIS for tree
  • 12. ARCHITECTURE AEGIS Workshop and International Conference, Brussels
  • 13. Architecture – Event Bus Application Event Bus AT LWUIT App Handler AT Broker app Event Bus LWUIT AT app AT Handler Broker ● The Event Bus listens on 2 TCP/IP ports, one for ATs and one for applications ● The Bus opens an AppHandler/ATHandler instance for each app/AT ● ATHandler listens to AT queries, and forward relevant App events to the AT AEGIS Workshop and International Conference, Brussels ●
  • 14. Architecture – AT Application Event Bus AT LWUIT App Handler AT Broker app Event Bus LWUIT AT app AT Handler Broker ● ATBroker provides for AT developers event listeners and query methods, and on the other hand communicates with the Bus via TCP/IP (Or IMC in the future) ● The AT can signal (via the ATBroker) to which events it would like to listen AEGIS Workshop and International Conference, Brussels
  • 15. Architecture – Application Application Event Bus AT LWUIT App Handler AT Broker app Event Bus LWUIT AT app AT Handler Broker ● The broker once started with Broker.init(), starts polling the application UI. ● Once a new Form comes up, it adds itself (and helper objects) as listeners to all components in the UI. ● In additionWorkshop and Internationalchanges to the UI for AEGIS it polls other Conference, Brussels
  • 16. Packages ● accessibility.common – a common package used by all 3 runtimes (AT/App/Bus) for a unified way of serializing event objects. Includes: ● AEvent – the base event class. Basically serializes the event type and a queryId. AEvent can also be a query or response (Considering elaborating the class structure) ● Other events: RegisterEvent (App/AT identification), FocusEvent, ComponentQuery (queries component states/children etc.), StatesResponsesInternational Conference, Brussels queries) AEGIS Workshop and (Returns component
  • 17. Code Samples: Enabling Access ● Making a LWUIT app accessible is very easy, simply add to your midlet: Broker.init(“App Name”); ● Notes: ● This should be added after the Display.init(midlet) call. ● Your app should use the ATBroker project ● This applies to the prototype only, when the accessibility technology will be integrated into OJWC, There would be no need to explicitly initialize the broker, it would be done by LWUIT. AEGIS Workshop and International Conference, Brussels
  • 18. Code Samples: Custom Properties ● Most ARIA properties are determined automatically by the Broker. ● However, some custom components may require setting various properties ● Example: Let's say that we have a custom component that needs to relay the information that it has 6 items: putClientProperty(Attribute.getAttName(Attribute.ARI A_SETSIZE), 6); ● Notes: ● AEGIS Workshop and International Conference, Brussels
  • 19. Code Samples: Setting names ● Another way of adding accessibility info is by using: component.setLabelForComponent(Label componentLabel); ● This was created in LWUIT for other uses. ● It is especially useful for components that don’t have a defined name (For example TextArea/Field vs. Label/Button) ● Example: Label nameLabel = new Label(“Name:”); TextField nameField = new TextField(); AEGIS Workshop and International Conference, Brussels
  • 20. Code Samples: ListCellRenderers ● Work is needed for custom list cells ● Set the appropriate Role for the cell ● Set the appropriate Name, Description ● Ensure correct Selection, item count ● Example from ScrollDemo.java: public Component getListCellRendererComponent(List list, Object value, int index, boolean isSelected) { Contact person = (Contact) value; name.setText(person.getName()); email.setText(person.getEmail()); AEGIS Workshop and International Conference, Brussels
  • 21. Code Samples: ListCellRenderers public Component getListCellRendererComponent(List list, Object value, int index boolean isSelected) { Contact person = (Contact) value; name.setText(person.getName()); email.setText(person.getEmail()); pic.setIcon(person.getPic()); putClientProperty(Attribute.ATT_NAMES[Attrib ute.ROLE], new Integer(Role.LISTITEM)); AEGIS Workshop and International Conference, Brussels
  • 22. Code Samples: AT ● Writing an assistive technology is also quite easy. ● First, initialize the ATBroker: ATBroker.getInstance().init(midlet,"AT Name"); ● Implement the relevant Listener ● For focus for example, implement AFocusListener that gets called on its focusGained method. ● Other listeners: AEGIS Workshop and International Conference, Brussels – AHierarchyListener, ADataChangeListener,
  • 23. Code Samples: AT import accessibility.at.AFocusListener; import accessibility.at.ATBroker; import accessibility.common.FocusEvent; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeEx ception; public class SimpleATMIDlet extends MIDlet implements AFocusListener { protected WorkshopstartApp() throws AEGIS void and International Conference, Brussels
  • 24. Monkey Application Scans all UI components and provides details about them ● Demonstrates the ability for AT to query entire UI hierarchy ● Also a great accessibility debugging tool AEGIS Workshop and International Conference, Brussels
  • 25. DEMOS AEGIS Workshop and International Conference, Brussels