CROSS REFERENCE TO RELATED APPLICATIONSThis application claims the benefit of U.S. Provisional Application Ser. No. 60/898,294 filed Jan. 30, 2007, which is incorporated herein by reference in its entirety.
COPYRIGHT NOTICEA portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
BACKGROUNDComputer users often work with multiple web browsers open at once and typically can have many other types of windows open while working with a variety of software applications. With many open windows on a display screen, the screen can become cluttered and be burdensome for the user to organize or find content easily.
BRIEF DESCRIPTION OF THE DRAWINGSThe accompanying drawings, which are incorporated in and constitute a part of the specification, illustrate various example systems, methods, and other example embodiments of various aspects of the invention. It will be appreciated that the illustrated element boundaries (e.g., boxes, groups of boxes, or other shapes) in the figures represent one example of the boundaries. One of ordinary skill in the art will appreciate that one element may be designed as multiple elements or that multiple elements may be designed as one element. An element shown as an internal component of another element may be implemented as an external component and vice versa. Furthermore, elements may not be drawn to scale.
FIG. 1 illustrates an example block diagram of one embodiment of a window management system.
FIG. 2 illustrates one embodiment of a window arrangement logic.
FIG. 3 illustrates an example display screen with tiled browser windows.
FIG. 4 illustrates an example display screen with cascaded browser windows.
FIG. 5 illustrates an example method associated with arranging windows based on type.
FIG. 6 illustrates an example method associated with arranging browser windows based on state.
FIG. 7 illustrates an example display of with a window preview feature.
FIG. 8 illustrates an example embodiment of a window preview logic.
FIG. 9 illustrates an example method that can be associated with a window preview.
FIG. 10 illustrates an example display of with a logged-in status feature.
FIG. 11 illustrates an example method associated with the logged-in status feature.
FIG. 12 illustrates an example computing environment in which example systems and methods illustrated herein can operate.
DETAILED DESCRIPTIONIn one embodiment, a window management system is provided to manage windows that are open on a computer desktop or display screen. The system is embodied as software and can be implemented as a feature in a web browser or can be delivered to a client device as a part of a web browser extension that is installed into the web browser. In one embodiment, an enterprise-ready web browser can be created via a productivity pack delivered as a browser extension. Using web browser extension management mechanisms, the browser extension described herein adds features and tools to a base web browser.
In one embodiment, the window management system provides an arrangement mechanism that can organize and arrange windows based on window type or other window attribute. For example, when multiple browser windows are open among a group of open windows, the present system can identify the browser windows and re-display the browser windows in a new arrangement such as bringing them into view above non-browser windows.
In another embodiment, a window preview feature is described herein that provides users with enhanced insight into the state of and/or the content within browser windows that may not be within the user's view.
In another embodiment, a Logged-In Status feature is provided that can determine and manage a list of domains that a user is logged into.
DEFINITIONSThe following includes definitions of selected terms employed herein. The definitions include various examples and/or forms of components that fall within the scope of a term and that may be used for implementation. The examples are not intended to be limiting. Both singular and plural forms of terms may be within the definitions.
As used in this application, the term “computer component” refers to a computer-related entity, either hardware, firmware, software, a combination thereof, or software in execution. For example, a computer component can be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and a computer. By way of illustration, both an application running on a server and the server can be computer components. One or more computer components can reside within a process and/or thread of execution and a computer component can be localized on one computer and/or distributed between two or more computers.
“Computer communication”, as used herein, refers to a communication between two or more computing devices (e.g., computer, personal digital assistant, cellular telephone, network device) and can be, for example, a network transfer, a file transfer, an applet transfer, an email, a hypertext transfer protocol (HTTP) transfer, and so on. A computer communication can occur across, for example, a wireless system (e.g., IEEE 802.11), an Ethernet system (e.g., IEEE 802.3), a token ring system (e.g., IEEE 802.5), a local area network (LAN), a wide area network (WAN), a point-to-point system, a circuit switching system, a packet switching system, and so on.
“Computer-readable medium”, as used herein, refers to a medium that embodies or stores signals, instructions and/or data. A computer-readable medium may take forms, including, but not limited to, non-volatile media and volatile media. Non-volatile media may include, for example, optical or magnetic disks and so on. Volatile media may include, for example, semiconductor memories, dynamic memory and the like. Common forms of a computer-readable medium include, but are not limited to, a floppy disk, a flexible disk, a hard disk, a magnetic tape, other magnetic medium, a CD-ROM, other optical medium, punch cards, paper tape, other physical medium with patterns of holes, a RAM, a ROM, an EPROM, a FLASH-EPROM, or other memory chip or card, a memory stick, digital signals, and other media from which a computer, a processor or other electronic device can read.
“Logic”, as used herein, includes but is not limited to hardware, firmware, software and/or combinations of each to perform a function(s) or an action(s), and/or to cause a function or action from another logic, method, and/or system. For example, based on a desired application or needs, logic may include a software controlled microprocessor, discrete logic like an application specific integrated circuit (ASIC), an analog circuit, a digital circuit, a programmed logic device, a memory device containing instructions, or the like. Logic may include one or more gates, combinations of gates, or other circuit components. Logic may also be fully embodied as software embodied in a tangible media. Where multiple logical logics are described, it may be possible to incorporate the multiple logical logics into one physical logic. Similarly, where a single logical logic is described, it may be possible to distribute that single logical logic between multiple physical logics.
An “operable connection”, or a connection by which entities are “operably connected”, is one in which signals, physical communications, and/or logical communications may be sent and/or received. Typically, an operable connection includes a physical interface, an electrical interface, and/or a data interface, but it is to be noted that an operable connection may include differing combinations of these or other types of connections sufficient to allow operable control. For example, two entities can be operably connected by being able to communicate signals to each other directly or through one or more intermediate entities like a processor, operating system, a logic, software, or other entity. Logical and/or physical communication channels can be used to create an operable connection.
“Signal”, as used herein, includes but is not limited to one or more electrical or optical signals, analog or digital signals, data, one or more computer or processor instructions, messages, a bit or bit stream, or other means that can be received, transmitted and/or detected.
“Software”, as used herein, includes but is not limited to, one or more computer or processor instructions that can be read, interpreted, compiled, and/or executed and that cause a computer, processor, or other electronic device to perform functions, actions and/or behave in a desired manner. The instructions may be embodied in various forms like routines, algorithms, modules, methods, threads, and/or programs including separate applications or code from dynamically linked libraries. Software may also be implemented in a variety of executable and/or loadable forms including, but not limited to, a stand-alone program, a function call (local and/or remote), a servelet, an applet, instructions stored in a memory, part of an operating system or other types of executable instructions. It will be appreciated by one of ordinary skill in the art that the form of software may be dependent on, for example, requirements of a desired application, the environment in which it runs, and/or the desires of a designer/programmer or the like. It will also be appreciated that computer-readable and/or executable instructions can be located in one logic and/or distributed between two or more communicating, co-operating, and/or parallel processing logics and thus can be loaded and/or executed in serial, parallel, massively parallel and other manners.
Suitable software for implementing the various components of the example systems and methods described herein include programming languages and tools like Java, Javascript, markup languages, Pascal, C#, C++, C, CGI, Perl, SQL, APIs, SDKs, assembly, firmware, microcode, and/or other languages and tools. Software, whether an entire system or a component of a system, may be embodied as an article of manufacture and maintained or provided as part of a computer-readable medium as defined previously. Another form of the software may include signals that transmit program code of the software to a recipient over a network or other communication medium. Thus, in one example, a computer-readable medium has a form of signals that represent the software/firmware as it is downloaded from a web server to a user. In another example, the computer-readable medium has a form of the software/firmware as it is maintained on the web server. Other forms may also be used.
“User”, as used herein, includes but is not limited to one or more persons, software components, computers or other devices, or combinations of these.
“Z-order” is an ordering of overlapping two-dimensional objects, such as windows in a graphical user interface (GUI) or shapes in a vector graphics editor. One of the features of a typical GUI is that windows may overlap, so that one window hides part or all of another window. When two windows overlap, their z-order determines which one appears on top of the other. In one implementation, objects with a higher z-order will be drawn and displayed on top of (and therefore obscure) objects with a lower z-order.
Some portions of the detailed descriptions that follow are presented in terms of algorithms and symbolic representations of operations on data bits within a memory. These algorithmic descriptions and representations are the means used by those skilled in the art to convey the substance of their work to others. An algorithm is here, and generally, conceived to be a sequence of operations that produce a result. The operations may include physical transformations of physical quantities (e.g. change data values, change states of a component, etc). Usually, though not necessarily, the physical quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated in a logic and the like.
It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. It should be borne in mind, however, that these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise, it is appreciated that throughout the description, terms like processing, transmitting, retrieving, communicating, calculating, determining, displaying, or the like, refer to actions and processes of a computer system, logic, processor, or similar electronic device that manipulates and transforms data represented as physical (electronic) quantities.
With reference toFIG. 1, an example block diagram of awindow management system100 is illustrated that provides features for acomputing device105 to manage windows on a computer desktop of adisplay screen110. In one embodiment, thewindow management system100 is embodied as software and can be implemented as a feature in aweb browser115. In another form, thesystem100 can be delivered by a web-based application to thecomputing device105 as a part of a web browser extension that is installed into theweb browser115. In the various embodiments described herein, thewindow management system100 can include a number of components like awindow arrangement logic120, awindow preview logic130, and/or a logged-instatus logic140.
As a brief explanation, thewindow arrangement logic120, in one embodiment, is configured to organize windows based on window type or other window attribute. For example, when multiple browser windows are open among a group of open windows, the system can identify browser windows and re-display the browser windows in a new arrangement. Regarding thewindow preview logic130, in one embodiment, thelogic130 is configured to provide the state of and/or the content within browser windows that may not be within a user's view. Regarding the logged-instatus logic140, in one embodiment, thelogic140 is configured to determine and manage a list of domains that a user is currently logged into. These components are described in more detail as follows.
With reference toFIG. 2, one embodiment of thewindow arrangement logic120 includes a graphical user interface200. The graphical user interface200 can be embodied as part of theweb browser application115 or as a browser extension configured to be installed as part of theweb browser application115. In another implementation, the graphical user interface200 can be part of a desktop application or other desired application programmed to provide the window arrangement features described herein and their equivalents. Accordingly, the graphical user interface200 can be embodied as processor executable instructions embodied on a computer-readable medium.
In one embodiment, the graphical user interface200 includes a window arrangement option205 and a window arrangement logic210. The arrangement option205 provides a selectable object for display on thedisplay screen110. For example, the arrangement option205 can be configured as a menu item, an icon, or other selectable object displayed on the display screen. When selected, the arrangement option205 is configured to initiate an arrangement of open windows having a selected window type. The selected window type can be a default type such as browser windows, and/or the arrangement option205 can allow a user to select a window type from a list of types (e.g. browser windows, application windows, windows with an error condition, or other types like icons, tabs, etc).
In response to the window arrangement option205 being selected, the arrangement logic210 re-displays the open windows having the selected window type (e.g. browser windows) in a selected arrangement on the display screen without re-displaying open windows not having the selected window type. Thus if “browser window” is the type being arranged, open browser windows would be identified from all open windows and then be re-displayed in the selected new arrangement. Non-browser windows (e.g. windows from other applications) would not be included in the re-display. If desired, browser alerts and/or browser source windows can also be excluded from the arrangement. In one example, the arrangement logic210 is configured to re-display the open windows having the selected window type (e.g. browser windows) on top of other windows. As such, the browser windows would be re-displayed in view (fully or partially) over non-browser windows in a tile or cascade arrangement, which will be described in further detail below.
To identify the window type, the arrangement logic210 can include logic to determine a window type of open windows. This can be performed by obtaining properties or attributes from each open window to determine its type. In one embodiment based on a Firefox® browser, the window type can be determined by getting a hook from a component called Windows Mediator, which is a mechanism for disclosing code associated with all open browser windows. A datasource for this is rdf:window-mediator and a list of currently open windows can be obtained. By getting a hook, the arrangement logic210 obtains a pointer to the window so that the window can be manipulated. The list of open windows can be enumerated to determine a collection of windows that are of the window-type of interest (e.g. the browser windows). The identified browser windows can then be manipulated as part of the selected arrangement action. It will be appreciated that an open window can include a window that has been minimized.
The selected arrangement can include a tile and/or cascade arrangement. Accordingly, the graphical user interface200 includes atiling logic215 and acascade logic220. For example, thetiling logic215 is configured to, based on an available display area, adjust a size and position of each open window having the selected window type to fit within the available display area in a tile arrangement (seeFIG. 3). The cascadinglogic220 is configured to, based on the available display area, adjust a size and position of each open window having the selected window type to fit within the available display area in a cascade arrangement (seeFIG. 4).
With reference toFIG. 3, one example of adisplay screen300 is shown where a number of browser windows have been arranged and re-displayed in a tile format. The browser windows are labeled as305,310,315, and320. Anexample sidebar325 is also shown. Non-browser windows are ignored and excluded from the arrangement and, if any are open, they are covered by the tiled browser windows. Thus, the available display area includes space occupied by non-browser windows. Using the tile option, a user can easily and automatically re-organize all open browser windows, which may be initially hidden from view by other windows and be difficult to locate.
In one embodiment, thetile logic215 can include a positioning algorithm that is executed to determine an optimal size/shape and display positions for the windows. Based on the number of browser windows and the available screen space, the browser windows can be adjusted and re-displayed in a tile arrangement based on their new size and position. Ordering options can also be applied like starting the display from the most recently accessed window to the last. The browser windows can be arranged in a left to right, top to bottom fashion. As previously stated, the browser windows would be arranged on top of the non-browser windows. This can be performed by changing the z-order of the windows.
With reference toFIG. 4, one example of adisplay screen400 is shown where a number of browser windows have been arranged and re-displayed in a cascade arrangement. The browser windows are labeled as405,410,415, and420. Anexample sidebar425 is also shown. For a cascade arrangement based on the identified open browser windows, thecascade logic220 determines an available display area and sizes and positions the windows accordingly. A cascade order can also be determined based on the most recently accessed window, and then browser windows are re-displayed in reverse order. Thus, the most recently accessed window is displayed last and is on top. Of course, other types of ordering can be used.
As one example of cascading, thecascade logic220 can be configured to determine a starting (x, y) screen coordinate and an (x, y) offset (e.g. a 20 pixel offset from the previous window origin point). At the starting screen coordinate, the first browser window is positioned (e.g. window405 inFIG. 4), then the (x, y) offset is applied (e.g. 20 pixels by 20 pixels) and the second browser window is positioned (e.g. window410). This continues until all of the browser windows are displayed.
In another example, the window arrangement logic210 can take into account whether a sidebar is present (e.g. sidebar325 inFIG. 3 orsidebar425 inFIG. 4). For example as part of the tile or cascade operation, the logic can verify if a sidebar is present on the display. Thesidebar325 or425 can be a floating sidebar (e.g. displayed in a separate browser window). If present, the floating sidebar can be positioned differently (e.g. to the right side of the display screen). Then the positioning algorithm can determine appropriate sizes/shapes of the remaining browser windows in the remaining display space without affecting the space of the sidebar. When asidebar325/425 is present, the available display space can be modified to exclude the area occupied by the sidebar. The premise being that thesidebar325/425 is desirable and should not be covered by the other windows during window arrangement.
Thesidebar325 or425 is a type of content interface that is primarily implemented to enable a set of functionally important tasks to be made available to a user on a persistent basis. A sidebar can include multiple content panes/windows that display customized content from web-based applications like an enterprise application. The content is separate from web page content, and is received by communicating with the web-based applications. Sidebars also permit task-oriented functionality via sidebar supports, as opposed to a subset or frequently-used set, as in a toolbar implementation. A fundamental difference between sidebar-type interfaces from toolbar-type interfaces is primarily one of context. A toolbar is primarily implemented to function as a swift, iconic access to frequently used commands in an application interface.
EXAMPLE METHODSExample methods may be better appreciated with reference to flow diagrams. For example,FIG. 5 illustrates one embodiment of amethod500 that relates to arranging open windows based on window type. In this example, browser windows are arranged, although other types can be used. While for purposes of simplicity of explanation, the illustrated methodologies are shown and described as a series of blocks, it is to be appreciated that the methodologies are not limited by the order of the blocks, as some blocks can occur in different orders and/or concurrently with other blocks from that shown and described. Moreover, less than all the illustrated blocks may be required to implement an example methodology. Blocks may be combined or separated into multiple components. Furthermore, additional and/or alternative methodologies can employ additional, not illustrated blocks. While the figures illustrate various actions occurring in serial, it is to be appreciated that various actions could occur concurrently, substantially in parallel, and/or at substantially different points in time.
It will be appreciated that the illustrated elements denote “processing blocks” that may be implemented in logic. In one example, the processing blocks may represent executable instructions that cause a computer, processor, and/or logic device to respond, to perform an action(s), to change states, to make decisions, and/or otherwise perform the method. Thus, the described methodologies can be implemented as processor executable instructions and/or operations provided by a computer-readable medium. In another example, the processing blocks may represent functions and/or actions performed by a computing device when executing the instructions. The diagram, as well as the other illustrated diagrams, are not intended to limit the implementation of the described examples. Rather, the diagrams illustrate functional information one skilled in the art could use to design, program, and generate software, or use a combination of hardware and software to perform the illustrated processing.
With reference toFIG. 5, themethod500 can be initiated in response to an instruction to arrange browser windows that are open on a display screen. It can be presumed that a plurality of windows are opened at any one time on the display screen, which include browser windows and non-browser windows. Upon initiation, themethod500 determines a window type for each open window (block505). As previously described, this can be performed by obtaining window properties and/or attributes of the window. Based on the window type, browser windows can be identified (block510). The identified browser windows are then re-displayed in a display arrangement according to the instruction to arrange in an available display area of the display screen while ignoring non-browser windows (block515).
For example, the browser windows are re-sized, re-positioned, and displayed on top of other windows based to a selected arrangement (e.g. tile or cascade). Thus, the instruction to arrange can include a tile instruction and the re-displaying would include tiling the selected browser windows in the available display area. If the instruction to arrange is a cascade instruction, then the re-displaying would include cascading the selected browser windows in the available display area. To re-display the identified browser windows to be on top of the non-browser windows, a z-order value of the identified browser windows are changed appropriately.
Themethod500 would, prior to the re-displaying, adjust window dimensions of the identified browser windows. In this operation, the window dimensions would be based on the display arrangement and the available display area.
In another embodiment ofmethod500, the method can provide arrangement based on window state. For example, themethod500 can determine a state of each of the browser windows and re-display the browser windows according to the state. For example, it may be helpful to know which windows have a error condition/state. Thus, the arrangement can be configured to identify error states and re-display windows with errors in view.
With reference toFIG. 6, one embodiment of amethod600 is shown that relates to arranging open windows that are browser windows and further based on a window state. Of course, the method can be implemented with other window types or states. The method will be described in the context of processing a plurality of windows that are open as part of a graphical user interface of a computing device.
Themethod600 can begin by providing an option to arrange browser windows that are open (block605). The option205 can be a selectable object displayed on a display screen. For example, the method displays the option as a menu item, an icon, or other selectable object on the display screen. The method then does not proceed until the option is selected (block610).
In response to the option being initiated, the method then determines a window type for each of the plurality of windows that are currently open by the computing device (block615). In this example, browser windows are the default window type that is set and that is the window type that the method is looking for. Thus, browser windows are identified from the plurality of windows based on the window type and non-browser windows are ignored (block620). Then a state of each of the browser windows is determined (block625). Based on the state of the browser windows, the browser windows are re-displayed on the display screen (block625).
As one example, the state can be set as an error state and browser windows having the error state are re-displayed on top of other windows. The re-displaying can also include filtering the browser windows based on the state and re-displaying only browser windows that have the selected state. Thus, browser windows that do not have an error state would not be re-displayed. The windows can also be ordered such that browser windows with errors are displayed on top followed by non-error browser windows. The re-display can include re-arranging the selected windows in a tile or cascade arrangement as previously described. The same ordering and filtering that can be applied to browser windows can also be applied to browser tabs within a browser tabset.
In one embodiment the browser extension is configured with window session management and state reporting features. For example, the browser extension can collect state information and allow browser windows to broadcast their state. Example states include error, ready to submit, saved, and processing. With this information, the browser window management system can organize web browser windows based on the state information provided by the Window Session Management System. Of course with other computer systems and/or operating systems, state information may reside in different locations. The extension can be configured to obtain the window state information from the appropriate location.
With reference again toFIG. 1, in another embodiment, thewindow management system100 can provide a feature that allows a user to hide or show the browser chrome of opened browser windows. By hiding or removing the chrome from the display, the area available for viewing web content can be increased. For example, the browser chrome can include a title bar, address bar, toolbar, status bar, window frames, menus, scroll bars, and other accessories around the borders of a window. The system can perform this feature in response to a user selected option and can be implemented through a single user action.
Window PreviewWith reference toFIG. 7, one embodiment of agraphical display700 is shown that includes a window preview option/feature (e.g. a preview icon705) generated by the window preview logic130 (fromFIG. 1). Users often work with multiple web browsers open at once and lack the tools to know the content and/or state of content in other browser windows that are not currently within their view (e.g. browser windows that are covered or otherwise obstructed from view by other displayed windows). Thewindow preview logic130 provides users with enhanced insight into the content and/or the state of content within other browser windows that may not be within the user's view.
In one embodiment, thewindow preview logic130 is configured to provide functions that allow an end-user to preview other web browser windows and tabs within tabsets hosted by those windows via a popup window. The functions can be implemented and made accessible from within a browser chrome within an active browser window by selecting the displayedpreview icon705. As a result, users do not have to visit other browser windows to see or get a sense for the content and/or state of the content within them. In this manner, the content and/or state of the content within other browser windows, which are typically inactive windows, can be seen without changing the active window.
As is understood, an “active window” is a window in which a user is currently working or directing input. An active window is typically at the top of the Z-order and is distinguished by the color of its title bar. An “inactive window” is a window in which a user's input is not currently being directed. An inactive window is typically distinguished by the color of its title bar, may be partially or entirely obscured from view by other windows, and/or may by minimized.
With reference toFIG. 8, one embodiment of thewindow preview logic130 is shown, which includes apreview option logic805 and apreview display logic810. The logic can be implemented as processor executable instructions embodied on a computer-readable medium or can be embodied as part of a web browser application, likebrowser115 as previously described with reference toFIG. 1. For example, the processor executable instructions can be embodied as a browser extension.
Thepreview option logic805 is configured to provide a preview option on a display screen. The preview option can be, for example, a selectable icon, tab, or menu option. The example ofFIG. 7 shows the preview option aspreview icon705. Thepreview option logic805 is configured to associate the preview option with an open browser window. If multiple windows are open, thelogic805 can be configured to determine open browser windows from a set of open windows, and provide a preview option for each of the open browser windows.
Thepreview display logic810 is configured to generate an image of contents from the open browser window and display the image within a pop-up window in response to the preview option being selected. This function provides a preview of the contents of the open browser window, which may be obscured from view. With the preview popup image, the contents of an unseen browser window can be viewed without making the browser window active or requiring the user to visit the browser window. In other words, the contents can be viewed without changing a display state of the open browser window.
Returning to the example inFIG. 7, in one embodiment, thepreview icon705 can be displayed in a toolbar and made as a selectable object. Thepreview icon705 is configured to be associated with or assigned to function with one of the currently open windows. When thepreview icon705 is selected, it triggers the opening of the pop-up preview window710 that displays apreview image715 of content from the associated window. In this manner, a user can quickly view the content of an inactive window that may be out of view without activating the inactive window.
In another embodiment, thewindow preview logic130 can provide and display within the preview window710 its own toolbar with one or morestateful proxy icons720. Theproxy icons720 are proxies for the other open windows or tabs within windows that may be out of view of the user at the current time. By moving a mouse cursor or other pointing device over aproxy icon720, a preview image (or snapshot) of the content in the associated browser window or tab is generated and displayed to the user. Of course, other ways to activate the icons can be implemented like using the keyboard to tab through the icons.
A rollover/tab action against an icon can also be configured to reveal and display one or more objects. For example, the objects can include a title of the web page and a brief description of the page content if the page provides it (e.g. title and description740), tools for navigating the history of pages viewed in that browser window/tab combination (e.g. history controls735), and/or an action to close that browser window or tab without having to visit the window first (e.g. a close window button745).
The proxy icon, which can be the target of the rollover/tab action as described above, is implemented to communicate the page state when the web page provides state information. For example, an icon in an error state can display a warning image to the user, thus giving notice that this window requires attention. For an asynchronous process window, an indeterminate progress animation can be displayed to indicate to the user that it is busy and cannot be interacted with. Thus, the preview feature provides a single point of access as a way to access many other windows. By rolling over apreview icon705 or aproxy icon720 of a window, stateful information about the window can be automatically retrieved.
In one embodiment, web pages can provide state information via meta tags delivered in their page headers. Thus, web pages can be designed to participate and operate with the present preview feature by having appropriate meta tags created. In this way, any web page can participate in the enhanced window state communication.
In another example, the preview logic can be configured to allow users to summon (e.g. activate/visit) a window or tab that they are previewing by clicking on either theproxy icon720 or thepreview image715 of the displayed preview window710. Another option can be provided that allows users to access frequently executed tasks via a menu item positioned off the preview window710. This feature can be accessed by an icon in the toolbar (e.g. frequent tasks menu730). Thefrequent tasks menu730 represents actions that are performed frequently from the page being previewed. For example, actions performed by the user can be recorded by the system and immediate access to the actions is provided via this menu option. One example of a frequent task can be when a user frequently runs expense reports. This task can be added to the menu of frequent tasks available from this page and provide a way for the user to launch a new window to execute the task. The task list can be derived from reading and interpreting meta tags posted to the page header.
The following is another example operation of the web page preview mechanism. When a user clicks thepreview icon705, the preview mechanism is triggered and the preview window710 is drawn/popped-up adjacent to the icon that was clicked. The preview window can include a toolbar across the top of the window. Beneath it, a thumbnail can be displayed that represents the window that is out of view. Controls can also be provided to manipulate that window from the preview without having to visit the window.
In one embodiment, thewindow preview logic130 can use Windows Mediator to look at all open browser windows, determine window types, discard windows of no importance based on the type (e.g. Javascript windows, BVP source windows, alert windows), and just bring back a set of open windows that contain content. Then for each window that has appropriate metatags attached to them (which allows the window to participate in this convention), the metatags are read and interpreted. From the metatags, status properties of a window can be determined. An icon is associated to each window and is displayed. In one example, the icon (or other type of preview option) can be displayed based on the status that is determined so that a representation of the status properties can be seen. An example status would be an error condition pre-save state where a user has not yet saved information they are working with. Of course, there are many types of status and even customized status types can be created for particular situations. The status can then be added to the metatags of a webpage.
In another embodiment, the preview logic and its interface can be configured to respond to the presence of a pointer. For example as the pointer rolls over a preview icon on the display screen, Windows Mediator is used to obtain information of the browser windows and create a thumbnail preview of the content within the browser window. In other words, the system obtains a hook (e.g. a pointer) to the browser window that is out of the user's view, creates a snapshot of the image, and creates a thumbnail. In one embodiment, rather than presenting the entire window as the thumbnail, which owing to image scaling would be small and hard to distinguish between other like windows, the preview feature takes the upper left quadrant of the window and only displays this portion. The assumption is that the upper left quadrant is where the distinguishing information of a window tends to reside. Of course, other portions can be displayed as well.
With reference toFIG. 9, one example of amethod900 is shown that can be implemented for the preview logic as described above. Themethod900 can be used to process windows as part of a graphical user interface of a computing device having a display screen and provide the preview functions. For example, the method can determine windows that are currently open (block905) and identify browser windows from the windows that are open (block910). Identifying information can be obtained for example from window header information, metatags, or the like. A selectable object can then be associated to each of the browser windows (block915). For example, the object is thepreview icon705 shownFIG. 7 or the like.
Themethod900 can then display, on the display screen, each of the selectable objects associated to the browser windows (block920). In response to one of the selectable objects being selected, the method can display a preview window showing contents of the browser window associated with the selected object. Optionally in other embodiments, themethod900 can perform actions/functions like those described with reference to thewindow preview logic130 and its components.
Logged-In StatusWhile operating with web sites within a web browser, users may be required to provide a username and password in order to access and work with the underlying systems. Once logged in, users do not have a simple way to determine all of the systems they are currently logged into. This lack of insight forces users to close all browser windows to ensure they are logged off all systems or else visit all systems web pages and manually log off each system. This is an inconvenience to users. If they fail to do so and leave their browser open and unattended, they expose their user accounts to misuse by others.
The logged-in status logic140 (shown inFIG. 1) provides a logged-In status feature that can determine and manage a list of domains that the user is logged into. In one embodiment, the feature can be embodied as software and can be delivered to a user as a part of the Enterprise Web Browser Extension or in a separate browser extension.
In one example, the logged-instatus logic140 can determine and display all of the domains that the user is currently logged-in to, based on authentications that have been successfully initiated within a current web browser session. With reference toFIG. 10, one example of a displayed logged-instatus window1000 is illustrated. For cookie-based authentication schemes, the logic enables the user to log out of a logged-in session without having to visit the underlying application to do so.
In one embodiment, as a user logs-in to different web systems and/or domains during a browser session, the system returns credentials (e.g. session cookies). The logged-instatus logic140 is configured to capture the domain of the session and store the information on the client-side. In this manner, a list of systems that are logged-into is created and stored. Upon a request from the user to view the logged-in list, the information from the stored list is retrieved and displayed to the user. Thestatus window1000 with a logged-in list is shown inFIG. 10 is one example.
The system can be configured to track various amounts of information related to each of the logged-in systems. For example, a minimum amount of data can be stored to reduce security issues. Data that can be tracked after a log-in can include a document title and cookie session ID. A pointer to the cookie can also be stored.
In another embodiment, an option can be provided with the displayed logged-in list that allows the user to log-out of a selected system. For example, next to each identifier shown for each logged-in system, a selectable “log out” option or link can be provided. In this manner, the system provides a convenient way to view all logged-in systems and selectively log out from one location.
With reference toFIG. 11, anexample method1100 is shown for providing a logged-in status. The method can be initiated, for example, by receiving an instruction from the user via an icon (e.g. a Logged In Status icon in browser chrome) to display the logged-in list (block1105). The system determines the logged-in domains of the user by reading and retrieving previously stored logged-in data from a stored location (block1110). A window/pop-up flyout (such as window1000) is opened and the list of logged-in domains is displayed to the user (block1115).
Optionally, a log-out link can be provided with each listed domain to allow a means for logging-out of the domain from the status window. If a log-out link is clicked or otherwise selected, the system begins a process to purge authentication information related to the corresponding domain. Optionally, the system can ask the user to confirm that he/she wants to logout of the domain. If user confirms the action, a log out request is sent to the domain, and the related domain is removed from the logged-instatus flyout window1000. Thus, the logged-instatus logic140 provides users with enhanced insight into the systems they are currently logged into and simple way to disconnect from those systems.
Firefox® ExampleAs previously described, one embodiment of the present window management system is to implement the system as a browser extension. The extension can be configured to add the features described herein to a Mozilla Firefox® browser (a web browser supported by the Mozilla Foundation) or other browser to give it additional functionality. The extension can add productivity tools, which are viewed as augmentations, so the tools and a user's browser can work with selected web sites, web services, or selected third party applications to improve customer productivity.
The extension mechanism implemented for the Mozilla Firefox® browser includes XUL. Of course, other types of mechanisms can be used to implement and/or install the present features into other types of browsers based on their applicable technologies. This will be readily understood by those of ordinary skill in the art. Of course, the features can be programmed directly into a browser application.
“XUL” (XML User-interface Language) is a cross-platform language for describing user interfaces of applications. XUL (pronounced zool) was created to make development of the Mozilla browser easier and faster. XUL is an XML language (Extensible Markup Language) so all features available to XML are also available to XUL. There are several ways that XUL applications are created. In the Firefox browser, an extension adds functionality to the browser itself, often in the form of extra toolbars, context menus, or user interface (UI) to customize the browser UI. This is accomplished by using a feature of XUL called an overlay, which allows the UI provided from one source, in this case the Firefox browser, to be merged together with the UI from the extension. Extensions may also be applied to other Mozilla based products such as Thunderbird.
In one example, the extensions are small packages of XUL files, Javascript, style sheets and/or images packed together into a single file. The file can be created by using a ZIP utility. When the user downloads an extension from a network location, it will be installed onto the user's machine. The extension will hook into the browser using a XUL specific feature called an overlay, which allows the XUL from the extension and the XUL in the browser to combine together. To the user, it may seem like the extension has modified the browser, but in reality, the code is separate, and the extension may be uninstalled easily. Of course, the present features can also be implemented as a software plug-in or other type of software update code.
FIG. 12 illustrates an example computing device in which example systems and methods described herein, and equivalents, can operate. The example computing device may be acomputer1200 that includes aprocessor1205, amemory1210, and input/output ports1215 operably connected by abus1220. In one example, thecomputer1200 may include a web browser application1225 (with extensions if present) configured to facilitate an enterprise-ready web browser with one or more of the window management features described herein such as thewindow arrangement logic120,window preview logic130, and/or logged-in status logic140 (shown inFIG. 1 and described throughout). Thebrowser1225 can be implemented similar to the browser and extensions described in the previous figures, and/or the other systems and methods described herein. Thecomputing device105 shown inFIG. 1 can be implemented ascomputer1200.
Generally describing an example configuration of thecomputer1200, theprocessor1205 can be a variety of various processors including dual microprocessor and other multi-processor architectures. Thememory1210 can include volatile memory and/or non-volatile memory. The non-volatile memory can include, but is not limited to, ROM, PROM, EPROM, EEPROM, and the like. Volatile memory can include, for example, RAM, synchronous RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), and direct RAM bus RAM (DRRAM).
Adisk1230 may be operably connected to thecomputer1200 via, for example, an input/output interface (e.g., card, device)1235 and the input/output port1215, or can be an internal component. Thedisk1230 can include, but is not limited to, devices like a magnetic disk drive, a solid state disk drive, a floppy disk drive, a tape drive, a Zip drive, a flash memory card, and/or a memory stick. Furthermore, thedisk1230 can include optical drives like a CD-ROM, a CD recordable drive (CD-R drive), a CD rewriteable drive (CD-RW drive), and/or a digital video ROM drive (DVD ROM). Thememory1210 can storeprocesses1240 and/ordata1245, for example. Thedisk1230 and/ormemory1210 can store an operating system that controls and allocates resources of thecomputer1200.
Thebus1220 can be a single internal bus interconnect architecture and/or other bus or mesh architectures. While a single bus is illustrated, it is to be appreciated thatcomputer1200 may communicate with various devices, logics, and peripherals using other busses that are not illustrated (e.g., PCIE, SATA, Infiniband, 1394, USB, Ethernet). Thebus1220 can be of a variety of types including, but not limited to, a memory bus or memory controller, a peripheral bus or external bus, a crossbar switch, and/or a local bus. The local bus can be of varieties including, but not limited to, an industrial standard architecture (ISA) bus, a microchannel architecture (MSA) bus, an extended ISA (EISA) bus, a peripheral component interconnect (PCI) bus, a universal serial (USB) bus, and a small computer systems interface (SCSI) bus.
Thecomputer1200 may interact with input/output devices via i/o interfaces1235 and input/output ports1215. Input/output devices can include, but are not limited to, a keyboard, a microphone, a pointing and selection device, cameras, video cards, thedisk1230, adisplay screen1250,network devices1255, and the like. The input/output ports1215 can include but are not limited to, serial ports, parallel ports, and USB ports.
Thecomputer1200 can operate in a network environment and thus may be connected to thenetwork devices1255 via the I/O interfaces1235, and/or the I/O ports1215. Through thenetwork devices1255, thecomputer1200 may interact with a network. Through the network, thecomputer1200 may be logically connected to remote computers. The networks with which thecomputer1200 may interact include, but are not limited to, a local area network (LAN), a wide area network (WAN), and other networks. Thenetwork devices1255 can connect to LAN technologies including, but not limited to, fiber distributed data interface (FDDI), copper distributed data interface (CDDI), Ethernet (IEEE 802.3), token ring (IEEE 802.5), wireless computer communication (IEEE 802.11), Bluetooth (IEEE 802.15.1), and the like. Similarly, thenetwork devices1255 can connect to WAN technologies including, but not limited to, point to point links, circuit switching networks like integrated services digital networks (ISDN), packet switching networks, and digital subscriber lines (DSL).
While example systems, methods, and so on have been illustrated by describing examples, and while the examples have been described in considerable detail, it is not the intention of the applicants to restrict or in any way limit the scope of the appended claims to such detail. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the systems, methods, and so on described herein. Additional advantages and modifications will readily appear to those skilled in the art. Therefore, the invention is not limited to the specific details, the representative apparatus, and illustrative examples shown and described. Thus, this application is intended to embrace alterations, modifications, and variations that fall within the scope of the appended claims. Furthermore, the preceding description is not meant to limit the scope of the invention. Rather, the scope of the invention is to be determined by the appended claims and their equivalents.
To the extent that the term “includes” or “including” is employed in the detailed description or the claims, it is intended to be inclusive in a manner similar to the term “comprising” as that term is interpreted when employed as a transitional word in a claim. Furthermore, to the extent that the term “or” is employed in the detailed description or claims (e.g., A or B) it is intended to mean “A or B or both”. When the applicants intend to indicate “only A or B but not both” then the term “only A or B but not both” will be employed. Thus, use of the term “or” herein is the inclusive, and not the exclusive use. See, Bryan A. Garner, A Dictionary of Modern Legal Usage 624 (2d. Ed. 1995).