CA2693935A1 - Ensuring hidden controls are accessible - Google Patents

Ensuring hidden controls are accessible Download PDF

Info

Publication number
CA2693935A1
CA2693935A1 CA2693935A CA2693935A CA2693935A1 CA 2693935 A1 CA2693935 A1 CA 2693935A1 CA 2693935 A CA2693935 A CA 2693935A CA 2693935 A CA2693935 A CA 2693935A CA 2693935 A1 CA2693935 A1 CA 2693935A1
Authority
CA
Canada
Prior art keywords
focus
controls
program code
control
executable program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
CA2693935A
Other languages
French (fr)
Inventor
Adam Glen Archer
Dejan Glozic
Michael Alexander Pawlowski
Curtis Phillip D'entremont
Robert Retchless
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
IBM Canada Ltd
Original Assignee
IBM Canada Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by IBM Canada Ltd filed Critical IBM Canada Ltd
Priority to CA2693935A priority Critical patent/CA2693935A1/en
Publication of CA2693935A1 publication Critical patent/CA2693935A1/en
Abandoned legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0483Interaction with page-structured environments, e.g. book metaphor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

An illustrative embodiment of a computer-implemented process for ensuring hidden controls are accessible, receives focus at a tab target of a set of tab targets of a control area containing a set of controls that is hidden, selectively identifies a control in the set of controls to form an identified control, shows the set of controls, and passes the focus to the identified control. The computer-implemented process further in response to a loss of focus yields a function call to hide the set of controls and enable the set of tab targets to form a yielded function call, determines whether a next control gains the focus and responsive to a determination that the next control gains the focus, cancels the yielded function.

Description

ENSURING HIDDEN CONTROLS ARE ACCESSIBLE
BACKGROUND

Technical Field:

[00011 This disclosure relates generally to user interface controls in a data processing system and more specifically to ensuring hidden controls of a user interface in a data processing system are accessible.

Description of the Related Art:

[00021 Typical Web applications often have user interface based controls that only appear when a user hovers a pointing device, such as a mouse over a given area. The specific area is a hot spot and may be referred to as a hover area. To meet accessibility requirements, it is typically necessary to ensure that traversing the Web page using the tab key can also focus on the controls.
[00031 A common solution to support the tab key selection process is to place the hidden controls inside a wrapper, which accepts focus by assigning a tabindex value of 0 to the wrapper.
A tabindex is an attribute having a value that determines when to allow a tab object to accept focus. A value of 0 defines a state in which focus is accepted, whereas a value of -1 prevents acceptance of focus. Upon receiving focus, the wrapper shows the controls and transfers focus to the first child.

[00041 A problem with this solution arises when a reverse traversal, such a key combination of shift + tab, skips all controls except the first control. Since it is impossible to determine either why or how the wrapper received focus, focus must arbitrarily be passed to a first child control.
A reverse traverse off the controls is impossible because shift + tab from the first control will pass focus to the wrapper which will immediately pass focus back to the first child.

[00051 Accurate determination of when to hide the controls again is difficult.
The controls may be hidden in the event of an on blur event of the last control. This solution fails when a user clicks elsewhere on the page without ever reaching the last child. Therefore a more precise manner of accessing hidden controls is required.

BRIEF SUMMARY

[00061 According to one embodiment, a computer-implemented process for ensuring hidden controls are accessible receives focus at a tab target of a set of tab targets of a control area containing a set of controls that is hidden, selectively identifies a control in the set of controls to form an identified control, shows the set of controls, and passes focus to the identified control.
The computer-implemented process further responsive to a loss of focus yields a function call to hide the set of controls and enable the set of tab targets to form a yielded function call, determines whether a next control gains the focus and responsive to a determination that the next control gains the focus, cancels the yielded function.

[00071 According to another embodiment, a computer program product for accessible hidden controls, comprises a computer recordable-type media containing computer executable program code stored thereon, the computer executable program code comprises computer executable program code for receiving focus at a tab target of a set of tab targets of a control area containing a set of controls that is hidden, computer executable program code for selectively identifying a control in the set of controls to form an identified control, computer executable program code for showing the set of controls, computer executable program code for passing the focus to the identified control, computer executable program code responsive to a loss of focus for yielding a function call to hide the set of controls and enable the set of tab targets to form a yielded function call, computer executable program code for determining whether a next control gains the focus, and computer executable program code responsive to a determination that the next control gains the focus, for cancelling the yielded function.

100081 According to another embodiment, an apparatus for accessible hidden controls, comprises a communications fabric, a memory connected to the communications fabric, wherein the memory contains computer executable program code, a communications unit connected to the communications fabric, an input/output unit connected to the communications fabric, a display connected to the communications fabric and a processor unit connected to the communications fabric. The processor unit executes the computer executable program code to direct the apparatus to receive focus at a tab target of a set of tab targets of a control area containing a set of controls that is hidden, selectively identify a control in the set of controls to form an identified control, show the set of controls, pass the focus to the identified control, responsive to a loss of focus yield a function call to hide the set of controls and enable the set of tab targets to form a yielded function call, determine whether a next control gains the focus, and responsive to a determination that the next control gains the focus, cancel the yielded function.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

[0009] For a more complete understanding of this disclosure, reference is now made to the following brief description, taken in conjunction with the accompanying drawings and detailed description, wherein like reference numerals represent like parts.
[0010] Figure 1 is a diagram of an exemplary network data processing system operable for various embodiments of the disclosure;
[0011] Figure 2 is a block diagram of an exemplary data processing system operable for various embodiments of the disclosure;
[0012] Figure 3 is a block diagram of an embodiment of a user interface portion with hidden controls;
[0013] Figure 4 is a block diagram of an embodiment of a user interface portion with hidden controls, in accordance with one embodiment of the disclosure;
[0014] Figure 5 is a block diagram of an embodiment of an event sequence using the hidden controls of Figure 4 and event listeners, in accordance with one embodiment of the disclosure;
[0015] Figure 6 is a flowchart of an overview of a process using the event listeners and the hidden controls of Figure 5, in accordance with one embodiment of the disclosure;
[0016] Figure 7 is a flowchart of a detail view of the process of Figure 6, in accordance with one embodiment of the disclosure.

DETAILED DESCRIPTION

[0017] Although an illustrative implementation of one or more embodiments is provided below, the disclosed systems and/or methods may be implemented using any number of techniques.
This disclosure should in no way be limited to the illustrative implementations, drawings, and techniques illustrated below, including the exemplary designs and implementations illustrated and described herein, but may be modified within the scope of the appended claims along with their full scope of equivalents.

[0018] As will be appreciated by one skilled in the art, the present disclosure may be embodied as a system, method or computer program product. Accordingly, the present disclosure may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a "circuit,"
"module," or "system." Furthermore, the present invention may take the form of a computer program product tangibly embodied in any medium of expression with computer usable program code embodied in the medium.

[0019] Computer program code for carrying out operations of the present disclosure may be written in any combination of one or more programming languages, including an object oriented programming language such as JavaTM, Smalltalk, C++, or the like and conventional procedural programming languages, such as the "C" programming language or similar programming languages. Java and all Java-based trademarks and logos are trademarks of Sun Microsystems, Inc., in the United States, other countries or both. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server.
In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).

[00201 The present disclosure is described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus, systems, and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions.

[00211 These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer program instructions may also be stored in a computer readable medium that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instruction means which implement the function/act specified in the flowchart and/or block diagram block or blocks.

[00221 The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer-implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.

[00231 With reference now to the figures and in particular with reference to Figures 1-2, exemplary diagrams of data processing environments are provided in which illustrative embodiments may be implemented. It should be appreciated that Figures 1-2 are only exemplary and are not intended to assert or imply any limitation with regard to the environments in which different embodiments may be implemented. Many modifications to the depicted environments may be made.

[0024] Figure 1 depicts a pictorial representation of a network of data processing systems in which illustrative embodiments may be implemented. Network data processing system 100 is a network of computers in which the illustrative embodiments may be implemented.
Network data processing system 100 contains network 102, which is the medium used to provide communications links between various devices and computers connected together within network data processing system 100. Network 102 may include connections, such as wire, wireless communication links, or fiber optic cables.

[0025] In the depicted example, server 104 and server 106 connect to network 102 along with storage unit 108. In addition, clients 110, 112, and 114 connect to network 102. Clients 110, 112, and 114 may be, for example, personal computers or network computers. In the depicted example, server 104 provides data, such as boot files, operating system images, and applications to clients 110, 112, and 114. Clients 110, 112, and 114 are clients to server 104 in this example.
Network data processing system 100 may include additional servers, clients, and other devices not shown.

[0026] In the depicted example, network data processing system 100 is the Internet with network 102 representing a worldwide collection of networks and gateways that use the Transmission Control Protocol/Internet Protocol (TCP/IP) suite of protocols to communicate with one another.
At the heart of the Internet is a backbone of high-speed data communication lines between major nodes or host computers, consisting of thousands of commercial, governmental, educational and other computer systems that route data and messages. Of course, network data processing system 100 also may be implemented as a number of different types of networks, such as for example, an intranet, a local area network (LAN), or a wide area network (WAN). Figure 1 is intended as an example, and not as an architectural limitation for the different illustrative embodiments.

[0027] Turning now to Figure 2 a block diagram of an exemplary data processing system operable for various embodiments of the disclosure is presented. In this illustrative example, data processing system 200 includes communications fabric 202, which provides communications between processor unit 204, memory 206, persistent storage 208, communications unit 210, input/output (I/O) unit 212, and display 214.

[00281 Processor unit 204 serves to execute instructions for software that may be loaded into memory 206. Processor unit 204 may be a set of one or more processors or may be a multi-processor core, depending on the particular implementation. Further, processor unit 204 may be implemented using one or more heterogeneous processor systems in which a main processor is present with secondary processors on a single chip. As another illustrative example, processor unit 204 may be a symmetric multi-processor system containing multiple processors of the same type.
[00291 Memory 206 and persistent storage 208 are examples of storage devices 216. A storage device is any piece of hardware that is capable of storing information, such as, for example without limitation, data, program code in functional form, and/or other suitable information either on a temporary basis and/or a permanent basis. Memory 206, in these examples, may be, for example, a random access memory or any other suitable volatile or non-volatile storage device. Persistent storage 208 may take various forms depending on the particular implementation. For example, persistent storage 208 may contain one or more components or devices. For example, persistent storage 208 may be a hard drive, a flash memory, a rewritable optical disk, a rewritable magnetic tape, or some combination of the above.
The media used by persistent storage 208 also may be removable. For example, a removable hard drive may be used for persistent storage 208.

[00301 Communications unit 210, in these examples, provides for communications with other data processing systems or devices. In these examples, communications unit 210 is a network interface card. Communications unit 210 may provide communications through the use of either or both physical and wireless communications links.

[00311 Input/output unit 212 allows for input and output of data with other devices that may be connected to data processing system 200. For example, input/output unit 212 may provide a connection for user input through a keyboard, a mouse, and/or some other suitable input device.

Further, input/output unit 212 may send output to a printer. Display 214 provides a mechanism to display information to a user.

[0032] Instructions for the operating system, applications and/or programs may be located in storage devices 216, which are in communication with processor unit 204 through communications fabric 202. In these illustrative examples the instructions are in a functional form on persistent storage 208. These instructions may be loaded into memory 206 for execution by processor unit 204. The processes of the different embodiments may be performed by processor unit 204 using computer-implemented instructions, which may be located in a memory, such as memory 206.

[0033] These instructions are referred to as program code, computer usable program code, or computer readable program code that may be read and executed by a processor in processor unit 204. The program code in the different embodiments may be embodied on different physical or tangible computer readable media, such as memory 206 or persistent storage 208.

[0034] Program code 218 is located in a functional form on computer readable media 220 that is selectively removable and may be loaded onto or transferred to data processing system 200 for execution by processor unit 204. Program code 218 and computer readable media 220 form computer program product 222 in these examples. In one example, computer readable media 220 may be in a tangible form, such as, for example, an optical or magnetic disc that is inserted or placed into a drive or other device that is part of persistent storage 208 for transfer onto a storage device, such as a hard drive that is part of persistent storage 208.
In a tangible form, computer readable media 220 also may take the form of a persistent storage, such as a hard drive, a thumb drive, or a flash memory that is connected to data processing system 200. The tangible form of computer readable media 220 is also referred to as computer recordable storage media.
In some instances, computer readable media 220 may not be removable.

[0035] Alternatively, program code 218 may be transferred to data processing system 200 from computer readable media 220 through a communications link to communications unit 210 and/or through a connection to input/output unit 212. The communications link and/or the connection may be physical or wireless in the illustrative examples. The computer readable media also may take the form of non-tangible media, such as communications links or wireless transmissions containing the program code.

[0036] In some illustrative embodiments, program code 218 may be downloaded over a network to persistent storage 208 from another device or data processing system for use within data processing system 200. For instance, program code stored in a computer readable storage medium in a server data processing system may be downloaded over a network from the server to data processing system 200. The data processing system providing program code 218 may be a server computer, a client computer, or some other device capable of storing and transmitting program code 218.

[0037] According to an illustrative embodiment, a computer-implemented process for ensuring hidden controls are accessible, receives focus at a tab target of a set of tab targets of a control area containing a set of controls that is hidden, selectively identifies a control in the set of controls to form an identified control, shows the set of controls, and passes focus to the identified control. The computer-implemented process further yields a function call to hide the set of controls and enable the set of tab targets to form a yielded function call, determines whether a next control gains the focus and responsive to a determination that the next control gains the focus, cancels the yielded function.

[0038] Using data processing system 200 of Figure 2 as an example, an illustrative embodiment provides the computer-implemented process for ensuring hidden controls are accessible stored in memory 206, that when executed by processor unit 204, receives focus at a tab target of a set of tab targets of a control area containing a set of controls that is hidden on display 214, such as that of client 110 of network data processing system 100 of Figure 1, selectively identifies a control in the set of controls to form an identified control, shows the set of controls on display 214 and passes focus to the identified control. Processor unit 204 further yields a function call to hide the set of controls and enable the set of tab targets to form a yielded function call, determines whether a next control gains the focus and responsive to a determination that the next control gains the focus, cancels the yielded function.

[0039] In an alternative embodiment, program code 218 containing the computer-implemented process may be stored within computer readable media 220 as computer program product 222 or on a server such as server 104 or storage 108 accessible through a network such as network 102 in network data processing system 100 of Figure 1. In another illustrative embodiment, the process for ensuring hidden controls are accessible may be implemented in an apparatus comprising a communications fabric, a memory connected to the communications fabric, wherein the memory contains computer executable program code, a communications unit connected to the communications fabric, an input/output unit connected to the communications fabric, a display connected to the communications fabric, and a processor unit connected to the communications fabric. The processor unit of the apparatus executes the computer executable program code to direct the apparatus to perform the process.

[0040] With reference to Figure 3, a block diagram of an embodiment of a user interface portion with hidden controls is presented. User interface portion 300 is an example of a typical current implementation of a process for handling tabbed invocation of hidden controls in a user interface portion.

[0041] Interactive Web applications, such as those using asynchronous JavaScript and XML
based (Ajax) often have controls that only appear when a user hovers a mouse over a given area referred to as a hot spot shown as hover area 302. To meet accessibility requirements, the application often ensures the user traversing the page using the tab key can focus upon the controls.

[0042] A commonly used implementation places controls 306 that are usually hidden, inside wrapper 304, which accepts focus. Whether to accept focus is managed by assigning an attribute associated with wrapper 304, a tabindex, a value of 0. Upon receiving focus, wrapper 304 shows controls 306 and transfers focus to a first child control.

[0043] A problem with this implementation arises when a reverse traversal, initiated by a shift +
tab key combination, skips all controls except the first control. Since it is impossible to determine why/how wrapper 304 received focus, wrapper 304 must arbitrarily pass focus on to the first child. It is impossible to reverse traverse off the controls since a shift + tab from the first control will pass focus to wrapper 304 which will immediately pass focus back to the child.
A further difficulty arises when determining when to hide controls 306 again.
A determination may be made by listening for an onblur event on the last control, but this solution breaks down when the user clicks elsewhere on the page without ever reaching the last child.

[0044] With reference to Figure 4 a block diagram of an embodiment of a user interface portion with hidden controls, in accordance with one embodiment of the disclosure is presented. User interface portion 400 is similar to user interface portion 300 of Figure 3.

[0045] However user interface portion 400 does not have a wrapper as depicted in user interface portion 300 of Figure 3. Rather a pair of tab targets, tab target 402 and tab target 404 bracket a set of controls in the form of controls 406. Controls 406, tab target 402 and tab target 404 are further contained within hover area 408.

[0046] Tab target 402 represents a front tab target and tab target 404 represents a back tab target.
The pair of tab targets provides access to controls 406 and is used to aid in determining which control of controls 406 should receive focus. Although the controls are shown in a linear arrangement other arrangements for a set of controls containing more than one control may be used with a boundary of tab targets.

[0047] With reference to Figure 5 a block diagram of an embodiment of an event sequence using the hidden controls of Figure 4, in accordance with one embodiment of the disclosure is presented. Event sequence 500 is an example of a process using controls 406, tab target 402 and tab target 404 of Figure 4. The example embodiment provides a capability so that controls 406 will have a correct traversal order as if the controls were never hidden. The example embodiment also ensures that the controls will be hidden again as expected when they lose focus.
[0048] Instead of using a single wrapper to accept and transfer focus, invisible targets represented by tab target 518 and tab target 520 that accept focus are placed before and after the controls 510-516 that are initially hidden. Each of tab target 518 and tab target 520 is capable of accepting focus by setting tabindex to 0 to cause controls 510-516 to be shown. Focus is then transferred to a respective first or last control accordingly. While controls 510-516 are in focus, tab target 518 and tab target 520 on each end of the controls are made un-focusable by setting tabindex to -1 to ensure that a user can traverse out of the control area.
When the control area containing controls 510-516 is vacated, controls 510-516 are hidden and tab target 518 and tab target 520 are re-enabled by setting tabindex to 0 for future traversal. While focus is on any of controls 510-516, event listeners listening specifically for an onblur event are used to detect when focus is lost to ensure controls 510-516 are hidden again as required.

[00491 A set of event listeners shown as event listener 502, event listener 504, event listener 506, and event listener 508 is associated with a set of respective controls 510-516 represented by control 510, control 512, control 514, and control 516. Each control has a set of event listeners associated with the control, but only one listener is represented in the figure. One event listener is listening to the onblur event to detect when focus is lost and one event listener is listening to an onfocus event to detect when focus is gained. The onfocus listeners are only used to prevent the hiding of the controls when set in motion by the onblur listeners.

[00501 The set of respective controls is further bracketed by tab target 518 representing a front tab target and tab target 520 representing a back tab target. The tab targets are required to have onfocus listeners as well to detect when focus is gained so it can be passed onto control 510 or control 516 as appropriate. Tab target 518 has an associated event listener 546 and tab target 520 has an associated event listener 544.The set of event listeners observe the set of respective controls and tab targets contained within user interface portion 522 of a display.

[00511 Process 500 is initiated when a tab target receives focus, which results in tab targets being set to unfocusable as in sequence 524 and in controls 510-516 being made visible. The tab targets are made unfocusable to ensure a tab operation does not cause the process to be stuck in a process loop when a user inadvertently tabs to a location of a tab target from one of controls 510-516.

[00521 Selecting a front tab target shown as tab target 518 causes focus to be passed from the front tab target to a first control as in sequence 526. When a back tab target such as tab target 520 is selected, focus is passed to a last control as in control 516 in the set of controls 510-516.
[00531 When a user moves focus off control 510 towards another object such as control 512, an event listener, such as the onblur listener of event listener 502, detects leaving control 510 in the form of an onblur event, as in sequence 528. Upon receiving the onblur event for control 510, event listener 502 will yield a call to a function that will hide controls 510-516 and enable focus of tab target 518 and tab target 520 as in sequence 530. When a function is "yielded" the function is placed on a queue containing instructions to be executed. The action of the yielded function will not actually be performed until all other currently running instructions have finished. Because the "blur" of one node is in the same event chain as the "focus" of the next node, the onfocus event for 512 will execute before the function posted to the queue in sequence 530 and will be able to cancel the yielded function. Sequence 532 illustrates passage of focus from control 510 to control 512. A respective event listener, such as event listener 504 detects arrival as an onfocus event in sequence 534 and cancels the yielded call to hide controls 510-516 in sequence 536.

[00541 Sequence 538 depicts focus leaving control area containing controls 510-516. As in sequence 528, the onblur event listener for control 512 will yield a call to a function to hide the controls and enable the tab targets in sequence 540. When no onfocus event is received for any of controls 510-516, the yielded call will execute. Tab targets are set to focusable and controls 510-516 are hidden as in sequence 540. Focus has therefore been applied selectively to an appropriate control while ensuring that a change in focus does not inappropriately change the display state of the controls.

[00551 With reference to Figure 6 a flowchart of an overview of a process using the event listeners and controls of Figure 5, in accordance with one embodiment of the disclosure is presented. Process 600 is an example of the process of using the event listeners, controls and tab targets of process 500 of Figure 5.

[0056] Process 600 starts (step 602) and receives focus at a tab target of a control area containing a set of controls that are hidden (step 604). The control area is a portion of a user interface displayed to a user containing objects of tab targets and controls. Tab targets have a focus state that may be controlled between a focusable state and an unfocusable state.
Controls have a display state that may be controlled between a visible state and a hidden state. Controls that are hidden are inherently unfocusable and controls that are visible are inherently focusable. Process 600 selectively identifies a control in the control area to form an identified control (step 608). In one example a pair of tab targets brackets a set of controls. A first tab target represents a front tab target at the beginning of the set of controls. A corresponding last tab target represents a back tab target after the set of controls. When the front tab target receives focus, focus is passed to the first control of the set of controls. When the back tab target receives focus, focus is passed to the last control of the set of controls. A determination regarding which control receives focus therefore may be reliably performed with consistent and predictable results.
Process 600 shows the set of controls (step 610). Process 600 passes focus to the identified control (step 612).

[0057] Monitor the identified control for a loss of focus using an onblur event listener (step 614).
Monitoring is performed on a continuing basis. Monitoring awaits an occurrence of a change in focus event indicating a movement from the current "in-focus" control to another control or leaving the control area completely. Process 600 yields a function call to respond to the loss of focus under an assumption that focus is not being passed to a next control (step 616). A next control is another control in the set of controls rather than an adjacent control. Process 600 determines whether focus passes to another control by awaiting the occurrence of an onfocus event on any of the controls in the set of controls in the control area (step 618). When an onfocus event occurs a "yes" result is obtained. When a determination is made that no onfocus event occurs, a "no" result is obtained.

[0058] When a "yes" result is obtained in step 618, process 600 cancels the yielded call from step 616 (step 620). Process 600 then loops backs to step 614 to monitor as before treating the control that has received focus as the identified control.

[00591 When "no" result is obtained in step 618, process 600 hides the set of controls of the control area (step 622). Process 600 has determined that focus is leaving the control area and prepares the area for the loss of focus. Process 600 sets each tab target to a focusable state (step 624) and terminates thereafter (step 626). Tab targets have thus been restored to their initial state ready for another processing sequence.

[00601 With reference to Figure 7 a flowchart of a detail process using the hidden controls of Figure 5, in accordance with one embodiment of the disclosure is presented.
Process 700 is a detailed view of process 600 using the structures of Figure 5.

[00611 Process 700 begins (step 702) and initializes a control area with a set of objects comprising a set of controls that are hidden having a front tab target and a back tab target (step 704). For example, during initialization a document object model may be created having structures similar to those of Figure 4. The tab targets are created as SPAN
elements with no content and a tabindex value of 0. This ensures that the tab targets will not create anything on the display page, but will receive focus during regular traversal. Initially, the controls should be set to a state of display: none or visibility: hidden to remain hidden. Both display: none and visibility: hidden result in hiding the controls, but the implementations can have different effects on the layout of the page.

[0062] Process 700 receives focus at a tab target of the control area (step 706). Set each tab target to not be focusable is performed (step 708). For example, when focus occurs on one of the tab targets the tabindex of both tab targets is set to a value of -1 to make the tab targets un-focusable. This ensures that traversal out of the control area later will not get stuck on either of the tab targets located at each end of the set of controls and processing will therefore continue to the rest of the application. Selectively identify a control in the control area to form an identified control is performed (step 710). Selective identification is performed to identify the appropriate control based on the tab target initially receiving focus. Show the set of controls is performed (step 712). The hidden controls in the set of controls of the control area are made visible to the user. Show the set of controls is accomplished by removing the display: none or visibility:

hidden style from the controls in the set. The hidden controls should be focusable when visible since the previously hidden controls are actual controls.

[00631 Identification of a control to receive focus is based on which tab target receives focus.
When the front tab target receives focus, focus is passed to the first control of the set of controls.
When the back tab target receives focus, focus is passed to the last control of the set of controls.
Pass focus to the identified control is performed (step 714).

[00641 A function is created to help manage events associated with passing focus within and out of the control area. For example, a function named onblurcontrol, is defined to set the tabindex of both front and back tab targets to 0 to make the tab targets focusable once focus has left the control area. The onblurcontrol function also hides the controls again by assigning a display:
none or visibility: hidden state to the controls.

[00651 To ensure that the controls are hidden correctly when the user tabs or clicks away from the controls, monitor the identified control for a loss of focus using an onblur event listener is performed (step 716). Monitoring is performed on a continual basis to be aware of focus loss and focus gain events. Since the user can click away while focused on any one of the controls (or tab away from either the first or last control), an onblur event is handled for every focusable element in the hidden area. Since tabbing from one control to the next control (within the hidden area) causes an onblur event for the departed control, the scenario must be detected and actions triggered by the event must be cancelled, so the controls are not hidden too early. Addition of an onfocus listener for each control is necessary to determine when focus is lost at one control and gained at a next control in the control area.

[00661 When an onblur event is received for the identified control, a call to the onblurcontrol function is yielded (step 718). This means that a timeout of 0 milliseconds is set to give an onfocus event a chance to fire. A reference to the timeout object is held for future use. Process 700 determines whether an onfocus event occurs by awaiting the occurrence of an onfocus event (step 720). Since onblur and onfocus events occur in the same event chain, the yielded function call to onblurcontrol will not have a chance to execute in between onblur and onfocus events.

When an onfocus event is received for any of the controls before the yielded call to onblurcontrol executes a "yes" result is obtained. When no onfocus event is received and the onblurcontrol function executes a "no" result is obtained. When a "yes" result is obtained in step 720, process 700 cancels the yielded call to onblurcontrol before the function has a chance to execute (step 722). Process 700 loops back to step 716 to continue monitoring as before. This prevents the call to onblurcontrol from executing on a traversal between controls, while still ensuring that the user cannot leave the control area without having the controls hidden again.
[0067] When a "no" result is obtained in step 720, process 700 hides the set of controls of the control area (step 724). The set of controls are hidden because a determination was made that focus leaves the control area rather than being transferred to another control within the control area. Process 700 sets each tab target to a focusable state (step 726) and terminates thereafter (step 728).

[0068] Thus an embodiment provides a capability for ensuring hidden controls are accessible that receives focus at a tab target of a set of tab targets of a control area containing a set of controls that is hidden, selectively identifies a control in the set of controls to form an identified control, shows the set of controls, and passes the focus to the identified control. The embodiment further responsive to a loss of focus yields a function call to hide the set of controls and enable the set of tab targets to form a yielded function call, determines whether a next control gains the focus and responsive to a determination that the next control gains the focus, cancels the yielded function.

[0069] The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing a specified logical function. It should also be noted that, in some alternative implementations, the functions noted in the block might occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.

[00701 The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed.
The description of the present invention has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the invention in the form disclosed.
Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the invention. The embodiment was chosen and described in order to best explain the principles of the invention and the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.

[00711 The invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, and other software media that may be recognized by one skilled in the art.

[00721 It is important to note that while the present invention has been described in the context of a fully functioning data processing system, those of ordinary skill in the art will appreciate that the processes of the present invention are capable of being distributed in the form of a computer readable medium of instructions and a variety of forms and that the present invention applies equally regardless of the particular type of signal bearing media actually used to carry out the distribution. Examples of computer readable media include recordable-type media, such as a floppy disk, a hard disk drive, a RAM, CD-ROMs, DVD-ROMs, and transmission-type media, such as digital and analog communications links, wired or wireless communications links using transmission forms, such as, for example, radio frequency and light wave transmissions. The computer readable media may take the form of coded formats that are decoded for actual use in a particular data processing system.

[0073] A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus.
The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution.

[0074] Input/output or VO devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers.
[00104]Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modems, and Ethernet cards are just a few of the currently available types of network adapters.

[0075] The description of the present invention has been presented for purposes of illustration and description, and is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art. The embodiment was chosen and described in order to best explain the principles of the invention, the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.

Claims (20)

CLAIMS:
What is claimed is:
1. A computer-implemented process for ensuring hidden controls are accessible, the computer-implemented process comprising:
receiving focus at a tab target of a set of tab targets of a control area containing a set of controls that is hidden;
selectively identifying a control in the set of controls to form an identified control;
showing the set of controls;
passing the focus to the identified control;
responsive to a loss of focus, yielding a function call to hide the set of controls and enable the set of tab targets to form a yielded function call;
determining whether a next control gains the focus;
responsive to a determination that the next control gains the focus, cancelling the yielded function.
2. The computer-implemented process of claim 1 wherein receiving focus at a tab target of a control area further comprises:
initializing the control area with the set of controls having the set of targets containing a front tab target and a back tab target; and setting the front tab target and the back tab target to not be focusable upon entering the control area.
3. The computer-implemented process of claim 1 wherein determining whether a next control gains focus the further comprises:
monitoring the identified control for a loss of focus; and monitoring all controls in the group for a gain of focus.
4. The computer-implemented process of claim 3 wherein monitoring the identified control for a loss of focus further comprises:
determining whether a loss of focus occurs by listening for an onblur event.
5. The computer-implemented process of claim 3 wherein monitoring all controls in the group for a gain of focus comprises:
determining whether a gain of focus occurs by listening for an onfocus event.
6. The computer-implemented process of claim 1 wherein showing the set of controls further comprises:
removing display:none or visibility:hidden settings from the set of controls.
7. The computer-implemented process of claim 1 wherein responsive to a determination that the focus is not gained by the next control comprises:
hiding the set of controls; and setting the front tab target and the back tab target to be focusable.
8. A computer program product for ensuring hidden controls are accessible, the computer program product comprising:
a computer recordable-type media containing computer executable program code stored thereon, the computer executable program code comprising:
computer executable program code for receiving focus at a tab target of a set of tab targets of a control area containing a set of controls that is hidden;
computer executable program code for selectively identifying a control in the set of controls to form an identified control;
computer executable program code for showing the set of controls;
computer executable program code for passing the focus to the identified control;
computer executable program code responsive to a loss of focus, for yielding a function call to hide the set of controls and enable the set of tab targets to form a yielded function call;
computer executable program code for determining whether a next control gains the focus;
computer executable program code responsive to a determination that the next control gains the focus, for cancelling the yielded function.
9. The computer program product of claim 8 wherein computer executable program code for receiving focus at a tab target of a control area further comprises:
computer executable program code for initializing the control area with the set of controls having the set of targets containing a front tab target and a back tab target;
and computer executable program code for setting the front tab target and the back tab target to not be focusable upon entering the control area.
10. The computer program product of claim 8 wherein computer executable program code for determining whether a next control gains focus further comprises:
computer executable program code for monitoring the identified control for a loss of focus; and computer executable program code for monitoring all controls in the group for a gain of focus.
11. The computer program product of claim 10 wherein computer executable program code for monitoring the identified control for a loss of focus further comprises:
computer executable program code for determining whether a loss of focus occurs by for listening for an onblur event.
12. The computer program product of claim 10 wherein computer executable program code for monitoring all controls in the group for a gain of focus comprises:
computer executable program code for determining whether a gain of focus occurs by listening for an onfocus event.
13. The computer program product of claim 10 wherein computer executable program code for showing the set of controls further comprises:
computer executable program code for removing display:none or visibility:hidden settings from each control in the set of controls.
14. The computer program product of claim 8 wherein computer executable program code responsive to a determination that the focus is not gained by the next control comprises:

computer executable program code for hiding the set of controls; and computer executable program code for setting the front tab target and the back tab target to be focusable.
15. An apparatus for ensuring hidden controls are accessible, the apparatus comprising:
a communications fabric;
a memory connected to the communications fabric, wherein the memory contains computer executable program code;
a communications unit connected to the communications fabric;
an input/output unit connected to the communications fabric;
a display connected to the communications fabric; and a processor unit connected to the communications fabric, wherein the processor unit executes the computer executable program code to direct the apparatus to:
receive focus at a tab target of a set of tab targets of a control area containing a set of controls that is hidden;
selectively identify a control in the set of controls to form an identified control;
show the set of controls;
pass the focus to the identified control;
responsive to a loss of focus, yield a function call to hide the set of controls and enable the set of tab targets to form a yielded function call;
determine whether a next control gains the focus;
responsive to a determination that the next control gains the focus, cancel the yielded function.
16. The apparatus of claim 15 wherein the processor unit further executes the computer executable program code to receive focus at a tab target of a control area to direct the apparatus to:
initialize the control area with the set of controls having the set of targets containing a front tab target and a back tab target; and set the front tab target and the back tab target to not be focusable upon entering the control area.
17. The apparatus of claim 15 wherein the processor unit further executes the computer executable program code to determine whether a next control gains focus to direct the apparatus to:
monitor the identified control for a loss of focus; and monitor all controls in the group for a gain of focus.
18. The apparatus of claim 17 wherein the processor unit further executes the computer executable program code to monitor the identified control for a loss of focus to direct the apparatus to:
determine whether a loss of focus occurs by listening for an onblur event.
19. The apparatus of claim 17 wherein the processor unit further executes the computer executable program code to monitor all controls in the group for a gain of focus to direct the apparatus to:

determine whether a gain of focus occurs by listening for an onfocus event.
20. The apparatus of claim 15 wherein the processor unit further executes the computer executable program code responsive to a determination that the focus is not gained by the next control to direct the apparatus to:
hide the set of controls; and set the front tab target and the back tab target to be focusable.
CA2693935A 2010-02-22 2010-02-22 Ensuring hidden controls are accessible Abandoned CA2693935A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CA2693935A CA2693935A1 (en) 2010-02-22 2010-02-22 Ensuring hidden controls are accessible

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CA2693935A CA2693935A1 (en) 2010-02-22 2010-02-22 Ensuring hidden controls are accessible

Publications (1)

Publication Number Publication Date
CA2693935A1 true CA2693935A1 (en) 2011-08-22

Family

ID=44502214

Family Applications (1)

Application Number Title Priority Date Filing Date
CA2693935A Abandoned CA2693935A1 (en) 2010-02-22 2010-02-22 Ensuring hidden controls are accessible

Country Status (1)

Country Link
CA (1) CA2693935A1 (en)

Similar Documents

Publication Publication Date Title
US9588754B2 (en) Dynamic web application notifications including task bar overlays
EP2580683B1 (en) Creating and launching a web application with credentials
US9021469B2 (en) Web application pinning including task bar pinning
EP2580679B1 (en) Web application transitioning and transient web applications
EP2580685B1 (en) Web application home button
EP2580684B1 (en) Creating task sessions
US9164671B2 (en) Web application navigation domains
US20110307810A1 (en) List integration
US8812974B2 (en) Combined properties dialog from different sources
CA2693935A1 (en) Ensuring hidden controls are accessible

Legal Events

Date Code Title Description
FZDE Discontinued

Effective date: 20130222

FZDE Discontinued

Effective date: 20130222