Embodiments of the invention generally relate to protecting a user interface component from accidental operation, and in particular to requiring user input or other user investment before allowing a user to operate a user interface component.
With the ever-increasing use of computer programs and websites to perform binding user transactions, many important or irreversible actions can be performed by a simple click of a button, check of a checkbox, selection of a menu item, or other user interface action. Such actions include sending an incomplete email, permanently deleting important files, paying for an item that a user was only considering, and accidentally transferring ownership of a resource. While it would be beneficial to be able to simply undo such actions, some of these operations are, by necessity, irrevocable. Therefore a user can often easily press the wrong button, regardless of the UI design.
Previous solutions to avoid accidental operation of user interface components often involve displaying a confirmation dialog when a user invokes the user interface component before allowing the user to proceed with the action. For example, if a user clicks a “purchase” button, the user may be presented with a box that asks the user “Do you wish to proceed with this purchase?,” and includes a “Yes” button that the user can click to proceed and a “No” button that the user can click to cancel the action. However, if the user doesn't read the message or reflexively clicks “Yes,” then the action will be carried out even if the user did not want to proceed (or didn't realize the consequences of clicking “Yes”).
In accordance with the disclosed subject matter, systems, methods, and non-transitory computer-readable media are provided for protecting a user interface component from accidental operation. Generally, buttons or other user interface components can be hidden behind an electronic scratch-card style cover, or presented in an inactive state (e.g., grayed out). The user interface component only becomes operable after sufficient action by the user. For example, the button is only revealed after a user scratches off a sufficient amount of the cover, or scratches off a sufficient amount of the inactive user interface component.
The disclosed subject matter includes a computerized method for protecting a user interface component from accidental operation. The method includes displaying, by a computing device, a user interface component that cannot be operated, wherein the user interface component comprises an area and the user interface component is associated with an action that can be invoked when the user interface component can be operated. The method includes receiving, by the computing device, data indicative of an interaction with the user interface component. The method includes modifying, by the computing device, a portion of the area of the user interface component based on the user interaction. The method includes determining, by the computing device, whether the modified portion is greater than a predetermined threshold. The method includes, if the modified portion is greater than the predetermined threshold, activating, by the computing device, the user interface component such that the user interface component can be operated to invoke the associated action.
The disclosed subject matter further includes a computing device including a database and a processor in communication with the database, and configured to run a module stored in memory that is configured to cause the processor to display a user interface component that cannot be operated, wherein the user interface component comprises an area and the user interface component is associated with an action that can be invoked when the user interface component can be operated. The module stored in memory is configured to cause the processor to receive data indicative of an interaction with the user interface component. The module stored in memory is configured to cause the processor to modify a portion of the area of the user interface component based on the user interaction. The module stored in memory is configured to cause the processor to determine whether the modified portion is greater than a predetermined threshold. The module stored in memory is configured to cause the processor to, if the modified portion is greater than the predetermined threshold, activate the user interface component such that the user interface component can be operated to invoke the associated action.
The disclosed subject matter further includes a non-transitory computer readable medium. The non-transitory computer readable medium has executable instructions operable to cause an apparatus to display a user interface component that cannot be operated, wherein the user interface component comprises an area and the user interface component is associated with an action that can be invoked when the user interface component can be operated. The instructions are operable to cause the apparatus to receive data indicative of an interaction with the user interface component. The instructions are operable to cause the apparatus to modify a portion of the area of the user interface component based on the user interaction. The instructions are operable to cause the apparatus to determine whether the modified portion is greater than a predetermined threshold. The instructions are operable to cause the apparatus to, if the modified portion is greater than the predetermined threshold, activate the user interface component such that the user interface component can be operated to invoke the associated action.
The techniques described herein can protect accidental invocation of a user interface component (e.g., a button press, a menu selection, etc.) such that dangerous operations require more investment from the user than trivial operations. The amount of investment can be configured for a desired application by requiring more work to be done depending on how dangerous the operation is, such as by having larger covers that must be “scratched away” to expose an active user interface component and/or to require more of the cover to be cleared before exposing the user interface component. The techniques described herein can allow dangerous user interface components to sit alongside less dangerous user interface components without the typical danger that a miss-press will result in undesired and often irreversible consequences. Additionally, if three dangerous user interface components (e.g., buttons) are in a row, the user must work to reveal a single button and then activate it, removing the risk of a single miss-press (or a reflexive “Ok” on the pop-up dialog or related workflow).
These and other capabilities of the disclosed subject matter will be more fully understood after a review of the following figures, detailed description, and claims. It is to be understood that the phraseology and terminology employed herein are for the purpose of description and should not be regarded as limiting.
Various objectives, features, and advantages of the disclosed subject matter can be more fully appreciated with reference to the following detailed description of the disclosed subject matter when considered in connection with the following drawings, in which like reference numerals identify like elements.
In the following description, numerous specific details are set forth regarding the systems and methods of the disclosed subject matter and the environment in which such systems and methods may operate, etc., in order to provide a thorough understanding of the disclosed subject matter. It will be apparent to one skilled in the art, however, that the disclosed subject matter may be practiced without such specific details, and that certain features, which are well known in the art, are not described in detail in order to avoid unnecessary complication of the disclosed subject matter. In addition, it will be understood that the embodiments provided below are exemplary, and that it is contemplated that there are other systems and methods that are within the scope of the disclosed subject matter.
The techniques described herein provide for protected user interface components that require a pre-configured amount of investment from the user (e.g., interaction with the component) before allowing the user to invoke the user interface component. Requiring the user investment helps to avoid or prevent a user from accidentally operating the user interface component. The user interface components can include, for example, buttons, checkboxes, menu items, lists, and/or other user interface components. While some of the examples described herein are described using a button and a protective cover, one of skill in the art can appreciate that any type of user interface component can be protected from accidental operation using the techniques described herein.
The communication network 106 can include a network or combination of networks that can accommodate public or private data communication. For example, the network 106 can include a local area network (LAN), a cellular network, a telephone network, a computer network, a packet switching network, a line switching network, a wide area network (WAN), any number of networks that can be referred to as an Intranet, and/or the Internet. Such networks may be implemented with any number of hardware and software components, transmission media and network protocols.
The processors (e.g., in the computing device 102 and/or the web server 104) can be configured to implement the functionality described herein using computer executable instructions stored in a temporary and/or permanent non-transitory memory. The memory can be flash memory, a magnetic disk drive, an optical drive, a programmable read-only memory (PROM), a read-only memory (ROM), or any other memory or combination of memories. The processor can be a general purpose processor and/or can also be implemented using an application specific integrated circuit (ASIC), programmable logic array (PLA), field programmable gate array (FPGA), and/or any other integrated circuit. Similarly, database 108 may also be flash memory, a magnetic disk drive, an optical drive, a programmable read-only memory (PROM), a read-only memory (ROM), or any other memory or combination of memories. The web server 104 can execute an operating system that can be any operating system, including a typical operating system such as Windows, Windows XP, Windows 7, Windows 8, Windows Mobile, Windows Phone, Windows RT, Mac OS X, Linux, VXWorks, Android, Blackberry OS, iOS, Symbian, or other OSs. While not shown, the web server 104 can include a processor and/or memory in addition to the database 108.
The components of system 100 can include interfaces (not shown) that can allow the components to communicate with each other and/or other components, such as other devices on one or more networks, server devices on the same or different networks, or user devices either directly or via intermediate networks. The interfaces can be implemented in hardware to send and receive signals from a variety of mediums, such as optical, copper, and wireless, and in a number of different protocols some of which may be non-transient.
The software in the computing device 102 and/or web server 104 can be divided into a series of tasks that perform specific functions. These tasks can communicate with each other as desired to share control and data information throughout the computing device (e.g., via defined Application Programmer Interfaces (“APIs”)). A task can be a software process that performs a specific function related to system control or session processing. In some embodiments, three types of tasks can operate within the computing devices: critical tasks, controller tasks, and manager tasks. The critical tasks can control functions that relate to the server's ability to process calls such as server initialization, error detection, and recovery tasks. The controller tasks can mask the distributed nature of the software from the user and perform tasks such as monitoring the state of subordinate manager(s), providing for intra-manager communication within the same subsystem (as described below), and enabling inter-subsystem communication by communicating with controller(s) belonging to other subsystems. The manager tasks can control system resources and maintain logical mappings between system resources.
Individual tasks that run on processors in the application cards can be divided into subsystems. A subsystem can be a software element that either performs a specific task or is a culmination of multiple other tasks. A single subsystem can include critical tasks, controller tasks, and manager tasks. Some of the subsystems that run on the computing device can include a system initiation task subsystem, a high availability task subsystem, a shared configuration task subsystem, and a resource management subsystem.
The system initiation task subsystem can be responsible for starting a set of initial tasks at system startup and providing individual tasks as needed. The high availability task subsystem can work in conjunction with the recovery control task subsystem to maintain the operational state of the computing device by monitoring the various software and hardware components of the computing device. Recovery control task subsystem can be responsible for executing a recovery action for failures that occur in the computing device and receives recovery actions from the high availability task subsystem. Processing tasks can be distributed into multiple instances running in parallel so if an unrecoverable software fault occurs, the entire processing capabilities for that task are not lost. User session processes can be sub-grouped into collections of sessions so that if a problem is encountered in one sub-group users in another sub-group will preferably not be affected by that problem.
A shared configuration task subsystem can provide the computing device with an ability to set, retrieve, and receive notification of server configuration parameter changes and is responsible for storing configuration data for the applications running within the computing device. A resource management subsystem can be responsible for assigning resources (e.g., processor and memory capabilities) to tasks and for monitoring the task's use of the resources.
In some embodiments, the computing device can reside in a data center and form a node in a cloud computing infrastructure. The computing device can also provide services on demand such as Kerberos authentication, HTTP session establishment and other web services, and other services. A module hosting a client can be capable of migrating from one server to another server seamlessly, without causing program faults or system breakdown. A computing device in the cloud can be managed using a management system.
The cover 202 is representative of the location where the user interface component (not shown) resides in the user interface 200. The cover 202 includes a message 204 that states “Scratch to Reveal Pay Button.” The message 204 is intended to be illustrative only. For example, the message need not refer to the hidden user interface component (e.g., the pay button, for this example). As another example, the message can include instructions on how to reveal the hidden user interface component. For example, the message can include a set of one or more keystrokes or key press operations that can be entered to reveal the hidden user interface component (e.g., rather than scratching away the cover). The key press can be, for example, holding down multiple keys at once to reveal the button (e.g., pressing both the left and right arrows, typing shift three times in a row, etc.).
Conceptually, the cover 202 can be thought of as being displayed over a hidden user interface component such that the user interface component is not displayed since it is behind the cover. A user must electronically “scratch away” the cover to until the hidden user interface component is sufficiently revealed for the web server 104 to activate the user interface component. The computerized implementation can be configured to only draw or display the cover 202 (e.g., rather than graphically drawing the user interface component and then drawing the cover 202 over the interface component).
Referring to the cursor 302, any type of input can be used to expose the hidden user interface component. For example, the input can be a mouse cursor (e.g., cursor 302), an input device on a touch pad (e.g., a stylus, a user's finger, etc.), and/or any other type of input to the computing device 102. In some embodiments, the cursor need only be moved over the cover 202 (e.g., without a mouse button being pressed during the movement). In some embodiments, a mouse button must be pressed while the cursor is moved over the cover.
One of skill in the art can appreciate that the path of the cursor 304 is meant to be illustrative only. For example, the user can begin the erasure process from within the cover 202 rather than on the side as shown in
In some embodiments, the cover 202 is a modified version of the user interface component. For example, a button can first be displayed as inactive and being grayed out, and as the user scratches away the grayed out button, the active button begins to shine through (or appears when a sufficient amount of the grayed out button is scratched away). In some embodiments, the cover 202 is not located over the user interface component, but instead is located separately from the user interface component. The user interface component can first be displayed as an inactive user interface component (e.g., such that even if a user attempts to invoke the user interface component, it does not result in any action), but after sufficient user interaction with the cover 202 the button can be re-displayed as an active user interface component (e.g., such that the user can invoke the user interface component). In some embodiments, the cover is a message keystrokes the user must press to invoke the component.
In some embodiments, the techniques can be implemented at the direction of the web server 104. For example, the computing device 102 can transmit the user interactions to the web server. The web server 104 can process the received data, and transmit data to the computing device 102. The user interface displayed in the computing device 102 can be updated in response to data transmitted from the web server 104. The computerized method 500 is described below using the computing device 102 for exemplary purposes only. One of skill in the art can appreciate that the computing device 102 and/or the web server 104, and/or other devices (not shown) can be used to implement the techniques described herein.
In some embodiments, the techniques described herein are implemented using, for example, a JavaScript program that is downloaded from the web server 104 to a web browser being executed by the computing device 102. In some embodiments, the cover 202 and the underlying user interface control can be implemented using a drawing canvas to display the graphics, and a drawing program to reflect interactions with the cover 202. For example, the JavaScript program can implement the user interface component as a control on a canvas that is initially transparent to the user. The cover 202 can be displayed as a set of pixels on the canvas. As interactions are received with the cover 202 (e.g., as explained with respect to
Referring to step 502, displaying the user interface component can include displaying an inactive user interface component, can include displaying a cover (e.g., the cover 202 shown in
Referring to step 504, the computing device 102 receives data indicative of an interaction with the user interface component. The computing device 102 can receive data indicative of a mouse cursor interaction with the user interface component (e.g., a computer mouse), data generated by interaction of an input device with a touch pad or touch screen (e.g., a stylus, a user's finger, etc.), computer keyboard entries (e.g., one or more keyboard keystrokes), and/or any other type of input to the computing device 102. For example, referring to
Referring to step 506, the computing device modifies a portion of the area of the user interface component based on the user interaction. In some embodiments, the computing device 102 modifies a cover that is displayed over, or in place of, the user interface component. For example, referring to
In some embodiments, the interaction is not with the user interface component itself. For example, if the computing device 102 is configured to receive a keystroke sequence to activate the user interface component, upon receipt of the proper keystroke sequence, the computing device 102 can modify the user interface component accordingly (e.g., by removing a cover and displaying the user interface component, or by displaying an active user interface component in place of an inactive user interface component).
Referring to step 508, the computing device determines whether the user interaction from step 504 is sufficient to activate the user interface component based on the threshold. For example, the threshold can be a required percentage of the user interface component surface area that must be erased (e.g., as shown in
In some embodiments, the area of the cover 202 that needs to be scratched off before invoking the user interface component (e.g., as described with respect to step 208 of
In some embodiments, the size of the cover 202 can be configured for the particular application. For example, the size of the cover 202 can be configured based on the action being protected. How large the cover 202 is can therefore affect the amount of user interaction required to scratch away the cover. In some embodiments, various combinations of features can be combined to achieve the desired functionality for the particular application (e.g., the size of the cover 202, the area of the cover 202 required to be scratched away before invoking the user interface component, etc.). For example, a button for sending an email could be a small cover with 50% clearance needed to reveal the send button. As another example, a button for firing rocket boosters on a spacecraft could be a 5 inch square with 95% clearance required (e.g., an early launch step may be “start revealing the fire button”).
If the user interaction is not sufficient, the user interface component remains inactive until the user's interaction is sufficient to prevent accidental invocation of the user interface component. The computing device 102 can receive a new percentage for a user interface component and update the threshold. For example, if a system administrator determines that a particular button does not need to be protected as much as it was originally configured (e.g., to improve a user experience), the system administrator can reconfigure the user interface component accordingly.
The subject matter described herein can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structural means disclosed in this specification and structural equivalents thereof, or in combinations of them. The subject matter described herein can be implemented as one or more computer program products, such as one or more computer programs tangibly embodied in an information carrier (e.g., in a machine readable storage device), or embodied in a propagated signal, for execution by, or to control the operation of, data processing apparatus (e.g., a programmable processor, a computer, or multiple computers). A computer program (also known as a program, software, software application, or code) can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file. A program can be stored in a portion of a file that holds other programs or data, in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network.
The processes and logic flows described in this specification, including the method steps of the subject matter described herein, can be performed by one or more programmable processors executing one or more computer programs to perform functions of the subject matter described herein by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus of the subject matter described herein can be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processor of any kind of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. Information carriers suitable for embodying computer program instructions and data include all forms of nonvolatile memory, including by way of example semiconductor memory devices, (e.g., EPROM, EEPROM, and flash memory devices); magnetic disks, (e.g., internal hard disks or removable disks); magneto optical disks; and optical disks (e.g., CD and DVD disks). The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
To provide for interaction with a user, the subject matter described herein can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, (e.g., a mouse or a trackball), by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well. For example, feedback provided to the user can be any form of sensory feedback, (e.g., visual feedback, auditory feedback, or tactile feedback), and input from the user can be received in any form, including acoustic, speech, or tactile input.
The subject matter described herein can be implemented in a computing system that includes a back end component (e.g., a data server), a middleware component (e.g., an application server), or a front end component (e.g., a client computer having a graphical user interface or a web browser through which a user can interact with an implementation of the subject matter described herein), or any combination of such back end, middleware, and front end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), e.g., the Internet.
It is to be understood that the disclosed subject matter is not limited in its application to the details of construction and to the arrangements of the components set forth in the following description or illustrated in the drawings. The disclosed subject matter is capable of other embodiments and of being practiced and carried out in various ways. Also, it is to be understood that the phraseology and terminology employed herein are for the purpose of description and should not be regarded as limiting.
As such, those skilled in the art will appreciate that the conception, upon which this disclosure is based, may readily be utilized as a basis for the designing of other structures, methods, and systems for carrying out the several purposes of the disclosed subject matter. It is important, therefore, that the claims be regarded as including such equivalent constructions insofar as they do not depart from the spirit and scope of the disclosed subject matter.
Although the disclosed subject matter has been described and illustrated in the foregoing exemplary embodiments, it is understood that the present disclosure has been made only by way of example, and that numerous changes in the details of implementation of the disclosed subject matter may be made without departing from the spirit and scope of the disclosed subject matter, which is limited only by the claims which follow.