Computer systems provide both applications and system controls that allow configuration, control, and trouble-shooting of the computer systems. These collections of configuration, control, and trouble-shooting (or diagnostic-related) interfaces are collections of information, generally started by running a separate applet accessible through a centralized interface. The common interface in computing systems running Microsoft Corporation's Windows Operating System is known as the “control panel”. In the Apple Corporation operating system, the common interface is known as “system preferences.”
An illustrative common interface 201 is shown in
The control panel of
The following presents a simplified summary in order to provide a basic understanding of some aspects of the invention. The summary is not an extensive overview of the invention. It is neither intended to identify key or critical elements of the invention nor to delineate the scope of the invention. The following summary merely presents some concepts of the invention in a simplified form as a prelude to the more detailed description below.
Aspects of the invention provide for a framework for a task-based control panel supporting sub panels. A control panel once instantiated obtains and retains state information regarding a user's computer. The state information may be retained during navigation of the control panel to various sub panels. In some aspects of the invention, a common browser frame may be used to support the navigations among the control panel and sub panels.
A more complete understanding of the present invention and the advantages thereof may be acquired by referring to the following description in consideration of the accompanying drawings, in which like reference numbers indicate like features.
In the following description of various illustrative embodiments, reference is made to the accompanying drawings, which form a part hereof, and in which are shown by way of illustration various embodiments in which the invention may be practiced. It is to be understood that other embodiments may be utilized and structural and functional modifications may be made, without departing from the scope and spirit of the present invention.
It is noted that various connections are set forth between elements in the following description. It is noted that these connections in general and, unless specified otherwise, may be direct or indirect and that this specification is not intended to be limiting in this respect.
The following description is separated into the following sections to assist the reader:
illustrative operating environment; control panel user interface; navigation of the control panel interface; and a framework for control panels.
Illustrative Operating Environment
The invention is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to, personal computers (PCs); server computers; hand-held and other portable devices such as personal digital assistants (PDAs), tablet PCs or laptop PCs; multiprocessor systems; microprocessor-based systems; set top boxes; programmable consumer electronics; network PCs; minicomputers; mainframe computers; distributed computing environments that include any of the above systems or devices; and the like.
Aspects of the invention may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The invention may also be operational with distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
With reference to
Computer 110 typically includes a variety of computer-readable media. Computer readable media can be any available media that can be accessed by computer 110 such as volatile, nonvolatile, removable, and non-removable media. By way of example, and not limitation, computer-readable media may include computer storage media and communication media. Computer storage media may include volatile, nonvolatile, removable, and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, random-access memory (RAM), read-only memory (ROM), electrically-erasable programmable ROM (EEPROM), flash memory or other memory technology, compact-disc ROM (CD-ROM), digital video disc (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by computer 110. Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency (RF) (e.g., BLUETOOTH, WiFi, UWB), optical (e.g., infrared) and other wireless media. Any single computer-readable medium, as well as any combinations of multiple computer-readable media are intended to be included within the scope of the term computer-readable medium.
System memory 130 includes computer storage media in the form of volatile and/or nonvolatile memory such as ROM 131 and RAM 132. A basic input/output system (BIOS) 133, containing the basic routines that help to transfer information between elements within computer 110, such as during start-up, is typically stored in ROM 131. RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 120. By way of example, and not limitation,
Computer 110 may also include other computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in
Computer 110 may also include a digitizer 185 to allow a user to provide input using a stylus 186. Digitizer 185 may either be integrated into monitor 184 or another display device, or be part of a separate device, such as a digitizer pad. Computer 110 may also include other peripheral output devices such as speakers 189 and a printer 188, which may be connected through an output peripheral interface 187.
Computer 110 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 180. Remote computer 180 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to computer 110, although only a memory storage device 181 has been illustrated in
When used in a LAN networking environment, computer 110 is coupled to the LAN 171 through a network interface or adapter 170. When used in a WAN networking environment, computer 110 may include a modem 172 or another device for establishing communications over WAN 173, such as the Internet. Modem 172, which may be internal or external, may be connected to system bus 121 via user input interface 160 or another appropriate mechanism. In a networked environment, program modules depicted relative to computer 110, or portions thereof, may be stored remotely such as in remote storage device 181. By way of example, and not limitation,
The term software is used to describe computer-executable code, stored on a computer readable medium or in memory, used to pass instructions to a computer. It may include code contained in executable applications, dynamically linked code libraries, script files, and so forth. A single piece of software may include a single file storing all executable code, or a collection of files storing bits and pieces of code. Installed software may include code, programs, applications, and so forth executable by a computer.
Control Panel User Interface
A task-based control panel allows users to operate a common or singular control panel for interaction with the features supported by the control panel In particular, aspects of a task-based control panel include one or more of the following:
A namespace uniquely identifies a set of names so that there is no ambiguity when objects having different origins but the same names are mixed together. Using, for instance, Extensible Markup Language (XML), an XML namespace is a collection of element type and attribute names. These element types and attribute names are uniquely identified by the name of the unique XML namespace of which they are a part. In an XML document, any element type or attribute name can thus have a two-part name consisting of the name of its namespace and then its local (functional) name.
Layout 301 includes view selection region 302 which displays a list or collection of software information views. The views may be displayed as textual view names, as icons, or some other meaningful representation. They may be displayed as a list, as a tree, or in any other fashion. Configurable view region 303 displays a list, a form, or other representation of information about information about the user's computer (including but not limited to hardware, software, network status and connections, past usage, and the like). View region 303 may include headline 309 which may provide an explanation of the currently displayed view, instructions on interacting with the view, and possibly other content related to the view such as graphics and icons. The remaining contents of view region 303 may include information related to software, including icons, filenames, user-friendly names, publishers, memory and disk sizes, important dates, and so forth. A user-friendly name may be a name associated with software which provides meaning as to the contents and function of a collection of code. This may be a descriptive file name, a deployment name for a collection of related files, or any other name which is understandable by a layperson unfamiliar with computers.
Configurable view region 303 may be accompanied by preview region 304. Preview region 304 may provide information about a presently displayed information view. This may include comments or instructions related to the view, summary information such as total size of software installed or running, free disk space, and so forth. When a particular item within configurable view region 303 is selected, the contents of preview region 304 may change in order to display more information about the selected item. This may include an application icon, a filename, a user-friendly name, a publisher, a version, a drive or network location, support information, memory size, date of installation, time of launch, and other relevant information.
Configurable view region 303 may also be accompanied by commands region 305, which may include actions related to the currently displayed information view. When a particular information view is selected in the view selection region 302, the commands region 305 is updated to display buttons, links, or other interactive controls. The controls display for a user the available commands which are associated with the current view. The commands may enable a user to control or otherwise interact with the software being displayed in configurable view region 304. When a particular item is selected, a user may be able to click on a command in the commands region 305, controlling or otherwise interacting with the software represented by the selected item.
In addition to the regions described above, layout 301 may also include navigation buttons 306, location bar 307, and search bar 308. Navigation buttons 306 may be used to simplify navigating between the various information views by enabling users to quickly go back or forward between views. Location bar 307 may be used to display a location for the current information view to put the view in context or to provide alternative paths to the information. Location bar 307 may also used for navigation. Location bar 307 may sometimes be referred to as a breadcrumb bar as it may provide users with a step by step route to the presently displayed information view, e.g., by presenting a file path and file name, a menu hierarchy, a metadata hierarchy, or the like. Search bar 308 may provide alternative means for accessing information about a particular piece of software. For example, a user may input the name of a piece of software into search bar 308. The name entered may be used to search a list of installed or installable software, and the user may then be taken to a particular view showing information about that software.
Navigation of the Control Panel Interface
Control panel 406 shows one approach to providing the information to a user. Here, each set of information is provided in its own separate frame (for instance, printer control frame 407, display frame 408, application control frame 409, network configuration frame 410, and other control frame(s) 411. Alternatively, this information may be provided to control panel 412 that functionally includes page logic 413 that receives the information 401-405 and provides it to a common browser frame 414. One advantage of having a common browser frame is that the user is presented with a common interface at a known location. In other words, new control panels are prevented from opening at disparate locations across a display or displays.
For instance, while navigating a “Users and Groups” control panel (or sub panel as the case may be), one may navigate to a “Parental Controls” control panel (or sub panel) in order to easily configure access recently established in the “Users and Groups” control panel. This may be accomplished by providing a link in a first control panel to a second control panel. Alternatively, links to all control panels may be displayed in a navigation pane associated with a given control panel.
More particularly,
In some cases, a developer may wish to limit or control how the links function. For instance, the links may be unidirectional links. Task 4419 may include unidirectional links to task 3418 (under the same parent control panel page 415) and to task 6422 (under a different parent control panel page 420). The different unidirectional links may be used to control flow between the pages so that users do not become confused on what task they are actually performing. For instance, one does not want a user to inadvertently apply settings for one user to all users. To a further degree, one may have links to control panels, not to task pages, to aid user understanding of what the user is doing. For instance, Task 6422, a child of the Parental Controls control panel page, includes a unidirectional link to Users and Groups control panel 415. Of course, the various unidirectional and bidirectional links described above may be used in various combinations as relevant to the various control panel pages and the desires of the developers.
While navigating about the hub and down spokes of task pages, state information may be maintained. State information helps the user by keeping at least some information readily available or populating control panel pages and/or tasks with information already known. Various navigation scenarios include:
State information may be always maintained. However, it may be beneficial to discard state information when the state information has become stale or no longer relevant to a user's current navigations or tasks.
Hub control panel page 1441 includes a navigation bar 443, a main section 442, and a link section 444. Here, the user interface and content of the hub control panel page 1 is directed to the control panel 1 with associated options (if relevant), tasks 1-N (if relevant), and any other user interface (if relevant). Navigation may be similar to that appearing in browsers, for example, clicking on task 1445 takes a user to Task 1 control panel page 446.
Task 1 control panel page 446 main include a navigation bar 448, a main portion 447, and one or more links 449. Here, the user interface of page 446 is directed to the task 1. It may include a text receiving region (for example purposes only—other UI elements may used as well or in place of the text receiving region), options 1-2451-452, and regions to accept or discard changes (buttons 453 and 454).
In step 501, the system receives an input to display a control panel. The input may originate from a user or may originate from an application that requests the control panel to be displayed. This request can be to show a main hub control panel (for example, page 414 or page 435). Alternatively, the request can be to any other sub-page (sub-hub page or spoke/task page) in the control panel. Next, in step 502, the system displays a control panel with current state data in a browser frame. Here, the user is presented with a number of options. For instance, the user may modify information in the control panel as shown in step 503. Also, the user may indicate that he wants to navigate to a child of the control panel (also referred to as a sub panel) as shown in step 505. Alternatively, step 505 may be an input from another aspect of the system to display the child panel. Accordingly, step 505 is shown as the more general “receive selection of child panel”. Further, the user a change focus away from the control panel in step 510. Focus may include the window or sub-window where key strokes are directed if one types. It may or may not be the top level window (as some windows may be assigned a top level status. Changing focus may include navigating to another place, or that a browser frame was closed, or another application was brought to the front (or top level status), and the like. Any one of the above or other changes in focus may result in the loss of state information. Preferably, the loss of state information will only occur when a user navigated to a new place or closed the browser frame.
Step 510 may also result from another aspect of the system requesting modification of the focus. Accordingly step 510 is shown as the more general “receive selection changing focus away from control panel”.
With respect to step 503, the system received information that modifies state data associated with the control panel. For instance, assigning a printer to be the default printer for a computer system or assigning or modifying access rights to a user. In step 504, the system updates the state information. Next, in step 502, the control panel is displayed again with the updated state data.
With respect to step 505, a selection of a child control panel has been received. Next in step 506, the system obtains current state data relating to the content of the child panel. Next in step 507, the state data relating to the child panel is displayed in the browser. Here, at least three different operations may then occur. First, the user may browse to another child panel as shown in step 505. Alternatively, the user may modify information shown in the control panel in step 508. If information in step 508 was modified, then the state information is updated regarding the control panel and the updated control panel is displayed with modified state information in step 507. Moreover, the system it may receive a selection that changes focus away from the control panel in step 510.
If the user changes focus (or navigates away) from the control panel, then the system discards the state data (including any modification to the state data) in step 511.
The process as shown in
A Framework for Control Panels
The following describes a framework for control panels. The framework provides at least one way of managing different control panel pages so as to provide a common user interface for users. For instance, control panels may be separated into task pages and grouped under a single parent control panel. In other words, a task page belongs to one and only one control panel. Each of these pages may be accessible by any user or only by administrators.
The framework helps navigation between control panels as well as aids developers in creating new control panels that may combine functionality of other control panels or provide new functionality.
When a user navigates inside a browser to a task page in a control panel, that navigation may be performed in the same frame. Examples of this behavior include clicking a link in the control panel homepage or another control panel task page or navigating using a navigation bar.
Frames allows multiple, separately controllable sets of content be displayed on a common web page. In other aspects of the present invention, frame may be replaced by or used in conjunction with separate or separable windows.
When a user opens a control panel task page from another application, either a new browser window may open or an existing window may be reused. If another page within that control panel (for instance, the rectangle 601) is already open, that browser window can be activated to accept new navigations instead of opening a new window. In one aspect, a control panel should always be ready to handle a navigation action within its pages, even if a direct link does not exist in its current user interface.
It is appreciated that two windows on the same control panel page may open at the same time. An outgrowth of this concurrent display is that one page may be out of date in comparison to the other page. In this regard, updated state information may be stored upon navigation so that lack of synchronization between pages is minimized. For example, if a user list is visible in two “Users and Groups” control panel windows, and then add a user through one of the windows. Once one navigates in or refreshes the still window, the system may obtain the updated state information and reflect all users properly.
Users may be provided with the ability to modify at least some system settings. This may apply to all users or just administrators. For example, users may be barred from modifying network connections. In other situations, some users may have administrator privileges and may modify additional settings. For instance, when first opening a control panel page, the user may be prevented from making modifications. However, upon selecting an unlock function (for instance, by clicking and unlock button), the user it may be able to modify sittings in the control panel window. The unlock function may reside solely with the current display of the control panel, or may travel with the user during navigation. To provide higher security, the unlock function may reside only with the current display and may be locked upon navigation away from or closing of the control panel window.
A control panel's state information may only persist while in that control panel. If one navigates somewhere else and returns, the control panel may not retain the previous state information. For instance, if one is on a “Users and Groups” control panel and modifying an account, clicking on a link to navigate to a “Parental Controls” control panel and then return may result in the loss of state to about the account that one is changing. When attempting to navigate directly to a page, one may be redirected to a top level or higher level page when no state information has been set.
A navigation bar may be modified so that it only provides access to the control panel itself, instead of to a particular task page within the control panel. For example, if one was at an Access Times task page of a Parental Control control page, direct navigation to other pages may or may not be limited. For instance, if a navigation bar shows the following:
then clicking the navigation bar of the control panel itself (here, “Parental Controls”) will jump to the homepage of the control panel. This may be because state information may not be set for a Parental Controls page or other page. Referring the user to a higher level page ensures that correct state information is obtained and set for subsequent control pages or task pages.
Some pages may implement their own internal navigation mechanisms including but not limited to, task links, command links, buttons, and the like.
Links may exist to the middle of a control panel. For instance, users may jump directly to a specific task page of the control panel by clicking a link. The users do not need to access a specific page by typing in a reference in the navigation bar as described above. If navigating to a specific page, for instance using a form populating results to a page, the framework may or may not provide support for allowing the new information to be forwarded. A control panel may accept parameters nonetheless. This ability may be implemented through a separate channel.
As aspects of the present invention are implemented through the use of a browser, navigation is possible without always waiting for new information to be updated. In short, one may navigate to another page at run time without leaving an intermediate page in the history. For example, if a help topic jumped directly to the “create password” page but the page determined that a password was already set up, it could forward the user to the main hub page without leaving the create password page in the history. Leaving the “create password” page in history would be confusing as the password had already been set up.
Each control panel page instance (CNewCplPage) carries information between a markup language control panel logic 807 and underlying pages (Files A-C) 801-803. Here, the CNewCplPage can be implemented in browser 808.
Control Panel Logic CNewControlPanelLogic 807 is has the logic for the actual control panel (what settings to show, how the user can modify them, and the like). The CNewControlPanelLogic 807 maintains the state information while the browser is navigating in the control panel's namespace. If no state information is needed, one may eliminate the control panel logic 807 and put this functionality in the control panel page instances 804-806. The control panel page instances 804-806 may handle all initializations, initializations of specific pages, and handling events associated with a user's interaction with browser 808. Further, if one has logic piece 807, the page instances may defer some of this responsibility to that logic piece 807.
Files A-C 801-803 may include the new control panel files in a markup language. For instance, the pages may be in XML or any other markup language that may be used to control document display and functionality. Additional files may be used including an XML (or any other mark up language) definition file that allows interpretation of the files A-C 801-803.
While the invention has been described with respect to specific examples including presently preferred modes of carrying out the invention, those skilled in the art will appreciate that there are numerous variations and permutations of the above described systems and methods that fall within the spirit and scope of the invention as set forth in the appended claims. A claim element should not be interpreted as being in means-plus-function format unless the phrase “means for”, “step for”, or “steps for” is included in that element. Also, numerically-labeled steps in method claims are for labeling purposes only and should not be interpreted as requiring a particular ordering of steps.