Abstract:
Methods and systems, including computer program products, implementing techniques for customizing table layouts using keyboard controls. In one aspect, the techniques include displaying a table with one or more rows and columns of data, receiving keyboard input establishing input focus on a particular row or column of the table, and while the input focus is established on the particular row or column, receiving keyboard input customizing the layout of the particular row or column.

Description:
BACKGROUND  
       [0001]     The present invention relates to data processing by a digital computer, and more particularly to keyboard controls in computer applications.  
         [0002]     Keyboard controls allow for computer applications to be controlled through the use of a keyboard. Each keyboard control specifies one or more keystrokes that, when entered, invoke an operation within the system.  
         [0003]     Some computer applications provide keyboard controls for navigating tables displayed by the computer application. However, these computer applications typically do not provide keyboard controls for customizing the layout of a table, for example, for rearranging the order of the columns of the table, or for resizing the width of a particular column of the table. Typically, to perform a table layout customization in these computer applications, the user must manipulate the table using a mouse or stylus, or interact with a dialog box separate from the table to make choices from a list of options displayed in the dialog box.  
       SUMMARY OF THE INVENTION  
       [0004]     The present invention provides methods and systems, including computer program products, implementing techniques for customizing table layouts using keyboard controls. In one aspect, the techniques include displaying a table with one or more rows and columns of data, receiving keyboard input establishing input focus on a particular row or column of the table, and while the input focus is established on the particular row or column, receiving keyboard input customizing the layout of the particular row or column.  
         [0005]     Particular implementations can include one or more of the following features.  
         [0006]     The techniques can further include, prior to establishing input focus on a particular row or column, receiving keyboard input navigating between rows or columns of the table until the particular row or column is reached.  
         [0007]     The techniques can further include, while input focus remains on the particular row or column, receiving keyboard input invoking additional functionality associated with the particular row or column. The additional functionality can include any one of a help function, a filter function, a data processing function, a column removal or a column addition function.  
         [0008]     Customizing the layout can include any one or more of renaming, resizing, reordering, or sorting the particular row or column.  
         [0009]     Establishing input focus on a particular row or column can include visually marking the particular row or column with a marking that distinguishes the row or column from other rows or columns of the table.  
         [0010]     Each row or column can have a header area. Establishing input focus on a particular row or column can include establishing input focus on the header area for the particular row or column.  
         [0011]     The invention can be implemented to realize one or more of the following advantages. The keyboard controls for customizing table layout allow users who cannot operate a mouse or stylus to perform table layout customizations using a keyboard. The keyboard input can be provided directly to the table itself. No additional dialog boxes are required. One implementation of the invention provides all of the above advantages.  
         [0012]     Details of one or more implementations of the invention are set forth in the accompanying drawings and in the description below. Further features, aspects, and advantages of the invention will become apparent from the description, the drawings, and the claims. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0013]     Like reference numbers and designations in the various drawings indicate like elements.  
         [0014]      FIG. 1  illustrates a system in accordance with one implementation of the invention.  
         [0015]      FIG. 2  illustrates a table.  
         [0016]      FIG. 3  illustrates establishing input focus on a column of a table.  
         [0017]      FIG. 4  illustrates navigating between columns of a table.  
         [0018]      FIG. 5  illustrates a method in accordance with one implementation of the invention.  
         [0019]      FIG. 6  illustrates operations that customize the layout of a row or column of a table.  
         [0020]      FIG. 7  illustrates additional functionality that can be invoked on a row or column of a table.  
     
    
     DETAILED DESCRIPTION  
       [0021]     As shown in  FIG. 1 , a system  100  in accordance with one implementation of the invention includes a user interface  110 . The user interface  110  includes one or more user interface elements. The user interface elements include a table  120 .  
         [0022]     As shown in  FIG. 2 , the table  120  includes one or more rows  210  and columns  220 . Each row  210  or column  220  can have a row header  230  or column header  240  that identifies the row  210  or column  220 .  
         [0023]     The system  100  also includes a set of keyboard controls  130 . Each keyboard control  130  specifies one or more keystrokes that, when entered  140  while input focus  150  is on the table  120 , invoke a particular operation on the table  120 .  
         [0024]     The set of keyboard controls  130  include the following keyboard controls:  
         [0025]     Keyboard controls  140  that establish input focus on a particular row or column of the table. For example,  FIG. 3  shows input focus being shifted from a particular cell  310  of a table  300  to a particular column  320  of the table  300 .  
         [0026]     Keyboard controls  150  that navigate between rows or columns of the table. For example,  FIG. 4  shows navigating between columns  410 ,  420 ,  430  of a table  400 .  
         [0027]     Keyboard controls  160  that customize the layout of a particular row or column of the table. As shown in  FIG. 6 , customizing the layout of a row or column of the table includes one or more of the following operations: renaming a column header or row header  610 , resizing a column or row  620 , rearranging the order of the row or column with respect to other rows or columns  630 , and sorting the contents of a column or row  640 .  
         [0028]     Keyboard controls  170  that invoke other functionality on the particular row or column of the table. As shown in  FIG. 7 , the additional functionality includes one or more of the following operations: filtering columns  710 , adding or removing columns from the table  720 , displaying help information for a column  730 , selecting and processing the contents of a column  740 .  
         [0029]     As shown in  FIG. 5 , during system operation, the system  100  displays the user interface  110  that includes the table  120  (step  510 ).  
         [0030]     The system  100  establishes input focus on the table  120  (step  520 ). Establishing input focus on the table  120  can involve shifting input focus away from another element of the user interface  110 .  
         [0031]     The system  100  then receives keyboard input entered while input focus is on the table (step  530 ). The keyboard input includes one or more keystrokes that cause input focus to be established on a particular row or column of the table.  
         [0032]     The system  100  can visually mark the row or column that has input focus (step  540 ). The system  100  can also visually mark the prior focus position with a different marking. This marking can be a dedicated color that is used throughout the entire user interface to represent inactive selections. As shown in  FIG. 3 , the column header  330  for the column  320  with input focus appears in a different color than the other column headers  340 . Also, the cell  310  that previously held the input focus, has a different background color than the other cells.  
         [0033]     While input focus is on the particular row or column, the system  100  receives keyboard input customizing the layout of the particular row or column (step  550 ).  
         [0034]     In response to the received keyboard input, the system  100  customizes the layout of the particular row or column (step  560 ). Customizing the layout of the particular row or column can include performing any one or more of the customization operations previously described.  
         [0035]     While input focus is on the particular row or column, the system  100  can receive keyboard input invoking additional functionality associated with the particular row or column (step  570 ). This action can occur instead of the action (step  550 ) of receiving keyboard input customizing the layout, or it can occur in addition.  
         [0036]     The keyboard input can include keystrokes that invoke the additional functionality directly. Alternatively, the keyboard input can include keystrokes that cause the system  100  to display a menu that lists the additional functionality available.  
         [0037]     The additional functionality can include any one or more of the additional functions previously described. One of these functions is a help function. Help information can be displayed as a small annotation beside the row or column; such annotations are commonly known as tool tips. Alternatively, the help information can be displayed in a separate help viewer program.  
         [0038]     The keyboard controls  130  can include one or more of the following keyboard controls. In the following description, [key1]+[key2] refers to holding down [key1] and then pressing [key2].  
         [0039]     Keyboard Controls to Establish Focus on Column or Row  
         [0040]     [Alt]+[Up] to focus the columns  
         [0041]     [Alt]+[Down] to unfocus the columns  
         [0042]     [Alt]+[Left] to focus the rows  
         [0043]     [Alt]+[Right] to unfocus the rows  
         [0044]     Alternatively, to unfocus the columns, [Alt]+[Up] can be pressed a second time. Interpretation of the other keystrokes can be similarly configured.  
         [0045]     When input focus is established on the rows or columns, it is initially established on a particular row or column. The following keyboard controls can be used to navigate to and establish input focus on a different row or column:  
         [0046]     [Home] to navigate to and establish input focus on the first row or column  
         [0047]     [End] to navigate to and establish input focus on the last row or column  
         [0048]     [Left] to navigate to and establish input focus on the preceding row or column  
         [0049]     [Right] to navigate to and establish input focus on the next row or column  
         [0050]     Optionally, the table can be scrolled horizontally or vertically to display additional rows or columns. Some columns can be fixed columns, meaning that, no matter how the table is scrolled, the position of the fixed column will remain the same. Columns that are not fixed will be referred to as scrollable columns. The following keyboard controls can be used to skip the fixed columns:  
         [0051]     [Home] to navigate to and establish input focus on the first scrollable column.  
         [0052]     [End] to navigate to and establish input focus on the last scrollable column.  
         [0053]     Pressing the [Home] or [End] keystroke a second time navigates to the next or previous scrollable column respectively.  
         [0054]     [Ctrl]+[Home] to navigate to and establish input focus on the first scrollable row.  
         [0055]     [Ctrl]+[End] to navigate to and establish input focus on the last scrollable row.  
         [0056]     Optionally, some columns of the table can be displayed in a read-only state and cannot be edited. The following keyboard controls can be used to skip the read-only columns.  
         [0057]     [Ctrl]+[Right] to navigate to and establish input focus on the next editable column  
         [0058]     [Ctrl]+[Left] to navigate to and establish input focus on the previous editable column  
         [0059]     Keyboard Controls to Rename a Column or Row Header  
         [0060]     To rename a column row or header, the following keyboard control can be used, while input focus is established on the row or column header to be renamed:  
         [0061]     [F2] to switch interaction mode from navigation mode to inline editing mode  
         [0062]     Keyboard Controls to Resize a Column or Row  
         [0063]     To resize a column or row, the following keyboard controls can be used, while input focus is established on the row or column to be resized:  
         [0064]     [Shift]+[Right] to increase the width of a column by a predetermined number of pixels or characters  
         [0065]     [Shift]+[Left] to decrease the width of a column by a predetermined number of pixels or characters  
         [0066]     [Shift]+[Ctrl]+[Right] to increase the width of a column by a single pixel or character  
         [0067]     [Shift]+[Ctrl]+[Left] to decrease the width of a column by a single pixel or character  
         [0068]     [Shift]+[Up] to increase the width of a row by a predetermined number of pixels or characters  
         [0069]     [Shift]+[Down] to decrease the width of a row by a predetermined number of pixels or characters  
         [0070]     [Shift]+[Ctrl]+[Up] to increase the width of a row by a single pixel or character  
         [0071]     [Shift]+[Ctrl]+[Down] to decrease the width of a row by a single pixel or character  
         [0072]     Keyboard Controls to Reposition a Column or Row  
         [0073]     To reposition a column or row, the following keyboard controls can be used, while input focus is established on the row or column to be repositioned:  
         [0074]     [Ctrl]+[Arrow Right] to move the focused column after the next column  
         [0075]     [Ctrl]+[Arrow Left] to move the focused column before the previous column  
         [0076]     [Ctrl]+[Arrow Down] to move the focused row after the next row  
         [0077]     [Ctrl]+[Arrow Up] to move the focused row before the previous row  
         [0078]     Keyboard Controls to Sort a Column  
         [0079]     To sort the contents of a column, the following keyboard controls can be used, while input focus is established on the column to be sorted:  
         [0080]     [Shift]+[Ctrl]+[Up] to sort the contents of the focused column in ascending order  
         [0081]     [Shift]+[Ctrl]+[Down] to sort the contents of the focused column in descending order  
         [0082]     Keyboard Controls to Invoke Additional Functionality  
         [0083]     [Ctrl]+[q] to display help information as a tool tip  
         [0084]     [Ctrl]+[F1] to display help information in a separate help viewer  
         [0085]     [Shift]+[F10] to display a menu of additional functionality  
         [0086]     [Enter] or [Spacebar] to activate a particular operation mapped to the spacebar. This operation can be the same operation as the operation that is mapped to a mouse click. For example, this operation can be a column sort operation. The same keystroke can be pressed a second time to resort the column data in a different order, for example, descending instead of ascending.  
         [0087]     The invention and all of the functional operations described in this specification 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 invention can be implemented as one or more computer program products, i.e., one or more computer programs tangibly embodied in an information carrier, e.g., in a machine-readable storage device or 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.  
         [0088]     The processes and logic flows described herein, including the method steps of the invention, can be performed by one or more programmable processors executing one or more computer programs to perform functions of the invention by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus of the invention can be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).  
         [0089]     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 processors 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 non-volatile 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 CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in special purpose logic circuitry.  
         [0090]     The invention 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 invention), 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.  
         [0091]     The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.  
         [0092]     The invention has been described in terms of particular implementations. Other implementations are within the scope of the following claims.