The disclosed implementations relate to graphical user interfaces.
A database is a collection of information with a defined structure, such as a telephone directory or library catalogue. A database application that handles, organizes, and sorts database information is commonly referred to as a Database Management System (DBMS). A DBMS enables users to perform data management tasks, such as creating and editing databases.
One popular database application is FileMaker Pro®, developed by FileMaker® (Santa Clara, Calif.). FileMaker Pro® is a type of DBMS that includes a database engine that is integrated with forms or layouts used to access and modify the database. Users can build custom interfaces by dragging objects (e.g., tab controls, text fields, images, control buttons, etc.) from a tool panel into a layout.
One purpose of the tab control 100 is to show only the tab panel 102 associated with the selected tab 106. For example, if a user clicks on the tab 106, the “Classes” tab panel 102, including its associated objects 104 (e.g., text fields), is displayed. The “Student” and “Grades” tab panels are hidden behind the “Classes” tab panel 102, except for their respective tabs which remain visible in the tab strip 108. Thus, the tab control 100 simplifies entering and viewing data by allowing a user to group related objects on different tab panels in the same layout.
In conventional applications and development environments, a designer is only able to place objects in the tab panel 102. The portion 110 of the tab control 100 that is used to display the tab strip 108 is typically left blank and cannot be used to display objects. Given the limited space available for customizing a layout, such wasted space in the tab control may be undesirable to many users.
A tab control includes a tab and a tab region including the tab. The tab region is capable of displaying one or more objects when the tab is activated. The disclosed improved tab control provides one or more advantages over conventional tab controls, including but not limited to providing user interface designers more flexibility over the appearance of a tab control and how it presents information in a layout.
Conceptually, one might think of the tab control 200 as an electronic rolodex, or a stack of tab cards, like libraries use to catalog their books. When a different card (tab) is brought to the front of the stack, one then sees the contents of that card (tab panel).
The active region 202 represents the boundaries of the displayable and/or active portion of the tab control 200. Any objects within the boundaries of the active region 202 will be displayed and/or made active when the tab panel 204 is activated (e.g., selected by a user). This includes any object placed in the tab region 210. Thus, the displayable and/or active portion of the tab control 200 is the entire active region 202, including the tab region 210, and not just the tab 206 and tab panel 204, as is typically displayed in conventional tab controls.
In some implementations, whether or not a particular object in a layout will be displayed in the tab panel 204 is determined by a set of stacking order rules. For example, if the tab control 200 is moved or dragged over another object in the layout that is below the tab control 200 in a stacking order, the object will not become part of the tab control 200. If the object is above the tab control 200 in the stacking order, then it will become part of the tab control 200, provided the object is entirely enclosed by the tab control 200. It should be apparent that more or fewer rules can be used to determine whether a particular object in a layout belongs to a particular active region 202.
Although
Displayed in the tab region 302a (next to the “Grades” tab) is an object 303. In this example, the object 303 is a text object for displaying the number of the student whose name and address are displayed in the tab panel 304a (i.e., “59 of 2083”). In some implementations, the tab region 302a can also include one or more interactive objects 305, such as, for example, buttons for scrolling forward and backward through student records. In this example, the objects 303, 305 are only displayed when the tab region 302a is activated (e.g., the tab 306a is clicked by a user). Any objects in the tab regions associated with tabs 306b, 306c are hidden from the user and/or deactivated. Thus, the tab regions associated with each tab 306a, 306b and 306c, can include different numbers and types of objects.
It should be apparent that a designer can place one or more objects anywhere in the tab region 302a and the objects become part of the content that is displayed when the tab 306a is activated. For example, in
Referring to
An important advantage of the improved tab control 300 is that the tab regions 302a and 302b can be used to augment the tab control 300 with one or more objects that can be selectively activated and/or displayed to provide the user with additional functionality and/or flexibility in organizing and displaying data.
In some implementations, when the tab control is drawn a dialogue user interface (UI) is automatically displayed which enables a user to select various attributes for the tab control, including but not limited to the number, location (e.g., vertical, horizontal, etc.) and appearance of tabs (e.g., color, transparency, font, alignment, pen thickness, style, the shape of the tabs, the placement an size of the tabs, etc.). Once the attributes are selected the tab control can be rendered in the layout 400. If the user wants to re-edit the tab control, then the user can invoke the dialogue UI by selecting the appropriate button in the tool panel 404, or selecting an edit option from a menu or other user interface element.
The user can create and place different numbers and types of objects (or drag existing objects) into the tab panels of the tab control and the tab region 210. For example, a text tool 410 can be selected from the tool panel 404 and used to create a text object in the layout 400. The text object can then be dragged to the tab region 210.
The term “computer-readable medium” refers to any medium that participates in providing instructions to a processor 502 for execution, including without limitation, non-volatile media (e.g., optical or magnetic disks), volatile media (e.g., memory) and transmission media. Transmission media includes, without limitation, coaxial cables, copper wire and fiber optics. Transmission media can also take the form of acoustic, light or radio frequency waves.
The computer-readable medium 510 further includes an operating system 512 (e.g., Mac OS®, Windows®, Linux, etc.), a DBMS 514, a database 516 and layout objects 518. Layout objects 518 include but are not limited to tab control 520 and other objects 522 (e.g., text objects, etc.).
The operating system 512 can be multi-user, multiprocessing, multitasking, multithreading, real-time and the like. The operating system 512 performs basic tasks, including but not limited to: recognizing input from input devices 508; sending output to the display device 504; keeping track of files and directories on computer-readable mediums 510 (e.g., memory or a storage device); controlling peripheral devices (e.g., disk drives, printers, etc.); and managing traffic on the one or more buses 508. The DBMS 514 provides the development environment for creating custom layouts using improved tab controls 520, as described with respect to
Various modifications can be made to the disclosed implementations and still be within the scope of the following claims.