This disclosure generally relates to methods and systems for displaying and interacting with information in a display of a computing device.
Generally, web browsers do not have the ability to create a window that a user can interact with or watch for updates while working on other tasks. For example, if a user wants to start an online chat session with another use while working on a document, the user would need to have the document editing application and the chat window share the screen space, so the user can watch for new chat messages while not working on the document. This is not an optimal solution, however, because the screen space is under utilized, and because the user has to manage the window positions and sizes of the windows to arrange them properly within the screen, which can be cumbersome. Users can have a document editing application in full screen and periodically return to a chat window to look for updates, but this is not optimal because the user has to switch contexts often. Similar issues may arise, for example, if a user wants to watch a show on a video application while doing work in a document or spreadsheet editing application.
According to one general aspect, a system and method may enable an application to show and manage interactive content displays, in a way that draws the attention of a user more prominently than other content, and that allows multiple interactive content displays to be shown simultaneously without interfering with each other.
According to one general aspect, a method for managing information displayed on a computing device includes automatically creating, using an application executed by a processor of the computing device, an interactive content display panel, wherein the interactive content display panel includes a graphical user interface element associated with HTML content. The interactive content display panel is displayed in front of all other windows displayed in a work area of a display of the computing device. The displaying includes automatically adjusting the size the interactive content display panel, based on updates to the HTML content, and automatically positioning the interactive content display panel in the display, based on the automatic adjustment of the size of the interactive content display panel and based on available space in the work area of the display.
According to another general aspect, a system includes a display, a memory configured to store executable code, and a processor operably coupled to the memory, The processor may be configured to execute the code to automatically create, using an application executed by a processor of the computing device, an interactive content display panel, wherein the interactive content display panel includes a graphical user interface element associated with HTML content; and display the interactive content display panel in front of all other windows displayed in a work area of a display of the computing device, wherein the displaying includes: automatically adjusting the size the interactive content display panel, based on updates to the HTML content; and automatically positioning the interactive content display panel in the display, based on the automatic adjustment of the size of the interactive content display panel and based on available space in the work area of the display.
According to another general aspect, a non-transitory computer readable medium has recorded and stored thereon instructions that, when executed by a processor of a computer system, cause the computer system to automatically create, using an application executed by a processor of the computing device, an interactive content display panel, wherein the interactive content display panel includes a graphical user interface element associated with HTML content; and display the interactive content display panel in front of all other windows displayed in a work area of a display of the computing device, wherein the displaying includes: automatically adjusting the size the interactive content display panel, based on updates to the HTML content; and automatically positioning the interactive content display panel in the display, based on the automatic adjustment of the size of the interactive content display panel and based on available space in the work area of the display.
The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features will be apparent from the description and drawings, and from the claims.
Like reference symbols in the various drawings indicate like elements.
A browser extension or web application may open small pop-up windows that a user wants to keep visible while using a different application or browsing a different web site. Examples may include separate chat sessions, a calculator, a media player, a stock/sport/news ticker, a task list, or a scratchpad. Scattered pop-up windows, however, are difficult for the user to keep track of. Accordingly, interactive content display panels may be automatically placed along a portion of a display screen (e.g., the bottom) and may operate such that they are always on “top” or in front of other windows.
Additionally, a user generally prefers easy control of chat windows (i.e., finding them, moving them out of the way, etc.). Window management of separate chat pop-ups windows, however, is time consuming. Accordingly, it may save time for users if all panels can be minimized or maximized together.
As shown in the example of
The web browser 140 executed by a client device can receive code (e.g., HTML code) from a remote server (e.g., a remote server that hosts a website) and can execute the received code on the client device for the benefit of a user of the client device.
In various implementations, the web browser 140 may include or be associated with one or more web applications. In this context, a “web application” may be configured to perform a single task or multiple tasks for a user. In such an implementation, the web application may be configured to be executed or interpreted by the web browser 140. This is compared with native applications that include machine executable code and are configured to be executed directly by a processor or via the operating system of the client device, whereas a web application may be incapable of execution or display without the aid of the web browser. Thus, web applications can be run inside the browser 140 with a dedicated user interface, and typically provide functionality and an experience that is more rich and interactive than a standalone website but less cumbersome and monolithic than a desktop application. Examples of web applications include games, photo editors, and video players that are run inside the browser.
Web applications can be “hosted applications” or “packaged applications.” Hosted applications may include at least a portion of a web site that itself includes web pages, plus some metadata that may be especially pertinent to the web application or to the user of the web application to allow the web application to perform some particular functionality for the user. Packaged applications can be thought of as web applications whose code is bundled, so that the user can download all of the content of the web application for execution by the browser. A packaged web application may not need to have network access to perform its functionality for the user, and rather may be executed successfully by the browser locally on the computing device without access to a network. Packaged web applications have the option of using Extension APIs, allowing packaged applications to change the way the browser behaves or looks.
In various implementations, the web browser may include or be configured to interact with one or more browser extensions. In this context, a “browser extension” may include one or more web pages packaged or grouped together as a definable whole, and configured to extend the functionality to the web browser. Thus, extensions also provide extra functionality to a browser, but generally, unlike applications, there is little or no user interface component to the functionality provided by an extension. Instead, web extensions extend the functionality of the browser and the websites being viewed in it. For example, web extensions can extend the functionality of the browser by adding a new button to the address bar, such as an ever-present currency converter. Buttons like this can also apply to the current website being viewed—for example, clicking the currency converter button can convert all prices on the website presented to a user into a currency chosen by the user. In another example, an extension can be installed so that when a user hovers a cursor over a thumbnail image on a webpage executed by a browser a larger-size version of the image is displayed until the user moves the cursor away from the image. In another example, and extension may be installed to embed a “mail this” button next to every link in every page. Compared to web applications, extensions cut across websites and web applications. Extensions are usually in effect across all websites (though some are site-specific). Web applications do not combine with other applications in this way. Rather, web applications run standalone, like any regular website.
When installable web applications are “installed” by the user, the web applications may be added to and integrated with the user's web browser. Installation can include adding a shortcut to an application launcher area of the browser 140. An installation also allows web applications to obtain increased privileges without having to prompt the user for each one individually. Special user interface treatments may apply for the web application's tabs or windows. “Installing” a web application may include integration with: a client's operating system's task and window managers for easy window switching, a taskbar or quick-launch system, interoperating system notification(s), or persistently running background processes. Uninstallation allows for easy removal or deactivation of an installed application from the user's browser or system, and may include revoking all associated privileges. A server-side flag can be used to disable applications remotely. “Installation” may include a user action (e.g., selection of a link or icon), fetching the data to be installed (e.g., downloading data), and processing the data so that the application appears locally (e.g., in an application launcher).
Task bar 120 may include icons, such as icons 122, 124, and 126, which may correspond to applications, web applications, browser extensions, or start up menus of a computing device's operating system. For example, icon “browser” 126 may correspond to browser 140, such that when icon “browser” 126 is selected, browser window 140 may be minimized or opened. Similarly, icon “tasks” 122 may correspond to an interactive content display panel related to tasks, (e.g., panel window 170, discussed in more detail below), and icon “Talk” 124 may correspond to an interactive content display panel for a chat application (e.g., panel 180, discussed in more detail below). Interactive content display panels do not need to be associated with any icons in a task bar, however, and may operate without an associated icon.
Interactive content display panels 150, 160, 170, and 180 (which may also be referred to as simply “panels” throughout this disclosure) are movable graphical user interface elements that may include content, such as any web content that appears within browser 140. Such content may include JavaScript, text, HTML, images, icons, or other content.
Interactive content display panels 150, 160, 170, and 180 are movable and adjustable, and may be automatically created, positioned, sized, and adjusted directly by a processor of a computing device, or by any application executed by the processor, for example by browser 140. A chat application, game, notepad, calculator, media player, word processing application, email application, or any other application may automatically create interactive content display panels. The location of interactive content display panels 150, 160, 170, and 180, as shown in
Automatic Sizing of Panels
In some implementations, interactive content display panels 150, 160, 170, and 180 can be automatically sized or adjusted based upon the content (e.g., HTML content) within the panels. For example, interactive content display panel 180 may include a person with whom a user chatted (e.g., “Melanie”) and a date and time of the most recent chat (e.g., “1:00 PM on Wednesday”). As illustrated in
Alternatively or additionally, the size of panels 150, 160, 170, and 180 can change based upon changes in the work area 110. For example, when the resolution of the work area 110 changes (e.g., by a user adjusting the resolution), the size of the panels 150, 160, 170, and 180 can be automatically adjusted based upon the new resolution.
In some implementations, panels 150, 160, 170, and 180 may be minimized to only a few pixels (e.g., 6 pixels) such that they are virtually invisible to a user. Yet, the panels may still have rich interaction while in any minimized state, even if in a few pixels in size, such that they may indicate activity or display a title bar when a user hovers a cursor over a panel or otherwise selects the panel.
As discussed above, in some implementations, the content of an interactive content display panel can be HTML content. The width of the HTML content of a panel may be determined and used as the width of the panel. In implementations where a panel's width is automatically determined based upon content within the panel, a minimum and maximum width can be used to ensure that the panel has at least a minimum and less than a maximum width, regardless of the content within the panel. A vertical height of a panel can also be automatically adjusted or controlled based upon the content of the panel. In some implementations, how a panel is sized is configurable. For example, a configuration option can indicate that the panels are or are not to be auto-sized.
Panel Overflow
A panel overflow mechanism may handle a situation where too many panels are available to fit within work area 110. As example, if the screen size of display 100 is reduced, panels 150, 160, 170, and 180 can be made smaller. As another example, panels 150, 160, 170, and 180 can be made accessible through the use of a horizontal or vertical scrollbar, such as horizontal scrollbar 190 shown in
Alternatively or additionally, panels may be made available via an icon overflow strip 192. The icon overflow strip 192 may include icons such as icons 193, 194, 195, 196, and 197, representing various panels, as well as an additional icon or text (e.g., “+4”) representing additional panels (such as a number of panels) not shown in the icon overflow strip 192. In some implementations, the icon overflow strip may be positioned along the left edge of the display screen 100 or work area 110, starting from the bottom, although the position of icon overflow strip 192 is modifiable and the icon overflow strip may be positioned anywhere in display area 100. The icon overflow icon strip 192 may be used to show any or all overflow panels that do not fit within the work area 110. As described in more detail below with respect to
Panel Movement
Individual panels can be moved, expanded, minimized, closed, or otherwise adjusted, through interaction with the individual panel. For example, a user may minimize panel 180 by clicking minimize icon 182, or may close panel 180 by clicking close icon 184. In some implementations, a single operation can be performed on two or more panels. For example, all panels can be moved, minimized, expanded, or closed at the same time. In this example, a user can expand all of the panels at once instead of individually expanding each panel. As another example, two or more panels can be selected at a time. An operation can be performed on the selected panel(s). For example, three panels can be selected and then the selected panels can be moved, expanded, minimized, closed, etc., as a group.
Automatic Creation of Panels and Rate of Creation
In some implementations, panels 150, 160, 170, and 180 can be created without user input by various applications, such as, but not limited to, web browser 140, email clients, an operating system, etc. For example, panel 150 may have been automatically created by a notepad web application, and panel 180 may have been automatically created by a chat application. To avoid a large number of panels from being created within a short period of time, the rate of panel creation can be limited. The rate limit can be based upon an originating application of a panel. For example, browser 140 can be limited to creating one panel per second. In such a way, the browser may limit spam or malicious programs.
In another implementation, the rate limit of panel creation can be based upon an originating source that is creating the panels. For example, a particular website can create multiple panels. The panels created by this website can be rate limited (e.g., two panels per second). Multiple rate levels can also be used. For example, a web browser, such as browser 140, can be limited to creating one panel every second and can also be limited to creating ten panels in thirty seconds. In addition, the rate of panel closing can be used to limit the creation of panels. For example, if five panels have been created by a web browser and closed within ten seconds, further creation of panels by the web browser can be limited. In one implementation, the creation of panels is limited such that a web browser can continue to create panels at the limited rate or at a lesser rate. In another implementation, an application can be restricted from creating any further panels once a predetermined limit has been reached.
In yet another implementation, a window manager plugin may be available to manage certain types of panels. The window manager plugin may be provided with an installation of browser 140. The window manager plugin may be written by any third party to provide other features, for example, for managing interactive content display panels.
Panel Bar
In another implementation, a group of panels can be grouped together when expanded. The grouping can be identified through a visual indication such as a shared background color, icon in a title bar, or other visual indication of the grouping. A user can manually add a panel to a group of panels or to the panel bar 202, at any time.
In some implementations, panels can also be grouped based on an application, browser extension, or web application representing the origin of the panel. In another implementation, the size of a panel is not reduced prior to being docked. Instead, multiple panels can be docked, which results in a horizontal panel bar that is larger than a viewable portion of the user interface or work area. To allow access to any of the panels, a horizontal scroll bar 220 can be used. In other implementations, for example where panel bar 202 is arranged vertically, a vertical scroll bar (not shown) can be used. In some implementations, when a panel is closed, other panels may slide to new positions automatically.
In some implementations, as described above with respect to
The use of a web browser herein is used as an illustrative example of applications that may be used in the various implementations. However, other applications may be used as well. As shown in
In one implementation, in order to view the information contained within a collapsed panel, such as the “Tasks” panel 430, the user can manually collapse one or more of the currently expanded panels 410 and 420, and manually expand the “Tasks” panel 430. The user can do this, for example, by clicking on the “Tasks” panel 430 to manually toggle its display state from a collapsed to an expanded state, and by clicking on the “Inbox” panel 420 to manually toggle its display state from an expanded to a collapsed state. Alternatively, as disclosed herein, when a user manually expands a panel, the operating system and/or application (e.g., browser) can automatically collapse other panels that are displayed in their expanded state. For example, when the user clicks on the “Tasks” panel 430 to manually expand it, the operating system and/or browser can automatically collapse the “Contacts” and “Inbox” panels 410 and 420 to maximize the screen area in the window 400 that can be used to display the information elements under the “Tasks” panel 430. Moreover, as the user scrolls down the window 400, the operating system and/or browser can receive information about the user's movement within the user interface and/or browser window 400 and can use that information to automatically expand and collapse one or more of the panels 410-440.
As shown in
In addition to automatically collapsing panels based on the user's actions within the user interface, the operating system and/or browser can automatically expand panels. For example, as the user scrolls down through the “Contact” 410 and “Inbox” 420 panels, the operating system and/or browser can use information regarding the position of the scroll bar within the window 400 to determine whether any information elements under the “Tasks” panel 430 have become displayable. When at least one such information element becomes displayable, the operating system and/or browser can automatically expand the “Tasks” panel 430 to display that information element beneath the title of the “Tasks” panel. In one implementation, when determining which information elements under a panel are currently displayable within the window 400, the operating system and/or browser can reserve screen space to display the titles of the other panels. For example, when determining which information elements under the “Tasks” panel 430 are currently displayable, the operating system and/or browser can reserve screen space to display at least the titles of the “Contacts” 410, “Inbox” 420, and “Drafts” 440 panels.
The operating system and/or browser can also automatically expand the “Tasks” panel 430 whenever the user has scrolled past the title of that panel. For example, when the operating system and/or browser determines that the user has scrolled past the title of the “Tasks” panel 430, the operating system and/or browser can automatically expand the “Tasks” panel 430 to reveal one or more information elements under the panel. In one implementation, the operating system and/or browser can automatically expand the “Tasks” panel 430 to reveal as many information elements under the “Tasks” panel 430 as possible, beginning with the first information element.
The process described above, i.e., of automatically expanding and contracting an application's panels to facilitate a user's view of information stored in an application, is not limited to application based panels such as the web-based email application's panels described above. Instead, the process can be used to automatically expand and contract other types of panels that can be displayed within any user interface such as a desktop display. A panel may be moved to different locations and may be docked to an edge of the desktop display, e.g., to a panel bar. Panels may also be displayed or positioned in any other suitable way, e.g., aligned in parallel with but not directly against an edge of a desktop display. Desktop user interface panels can contain applications, notifications, browser histories, document lists, music play lists, chat histories and user generated content such as pop-up windows. For example, a Talk application (which may be a chat application), can be docked as a panel in a desktop user interface on a computer display. When expanded, the “Talk” panel can reveal a list of chats the user has had with other users using the “Talk” application, as well as metadata about the chats (e.g., with whom they were conducted), and the content of the chats themselves. Similarly, the “Docs” application (which may be a word processing application) can be docked as a panel to the side of a desktop user interface on a computer display. When expanded, the “Docs” panel can reveal a list of documents the user has created, reviewed or edited using the “Docs” application or any other document creation and viewing application. The documents in the list can be stored locally on the user's computer, or remotely on a network or cloud-based server.
In general, the operating system and/or browser can automatically expand and collapse desktop user interface panels based on a user's activity within or movement through the desktop user interface. For example, as explained above, the operating system and/or browser can determine whether to automatically expand or collapse a panel based on the position and movement of a scroll bar within the user interface or based on the position and movement of a cursor representing a pointing device (e.g., a mouse) within the user interface. The operating system and/or browser can receive information about the current position of a scroll bar or cursor within the user interface, and can automatically expand one or more panels to reveal the information elements that are contained within those panels as described above. For example, if a user selects (e.g., clicks on) a panel with a pointing device, the operating system and/or application (e.g., browser) can expand that panel to reveal its information elements to the user. In doing so, the operating system and/or browser can automatically collapse other panels to reveal more content from the panel selected by the user. Similarly, as a user scrolls through the desktop user interface, the operating system and/or browser can determine from the position of the scroll bar when at least one information element within a panel becomes displayable, and can automatically expand the panel when such a determination is made.
The operating system and/or application (e.g., browser) can also automatically collapse one or more panels based on the position and movement of a scroll bar or cursor representing a pointing device within the user interface. For example, the operating system and/or browser can automatically collapse all panels except for a panel the user selects (e.g., clicks on) with a pointing device. The operating system and/or browser can also determine, based on the position of a scroll bar within the user interface, when none of the information elements within a panel are currently displayable within the user interface, and can automatically collapse the panel when such a determination is made. Similarly, as described above, the operating system and/or browser can automatically collapse a panel when a user has scrolled through all of the information elements that are contained within that panel.
As shown in
As shown in
According to an example implementation, a panel may be moved to different locations within a display area. For example, a panel may be associated with (or coupled to) and disassociated from (or decoupled from) web pages, and may be converted from a panel to a tabbed web page (and vice versa). Also, a panel may be docked to a panel bar and may be undocked from the panel bar, for example. Panels may include elements, such as elements or portions of a web page, that may be selected by a user, e.g. via a mouse or pointing device, and moved to different locations. Panels may include, as some examples, applications, web pages, a task list, a buddy list or contact list, a chat roster, an email application (e.g., Email web based email application), a video search and display application window, social media applications, a window for a text or document and other user generated content, a pop-up window, a weather panel that provides weather information, etc. A panel, at least in some cases, may be displayed as a small window or mini web page that is smaller than a full-size web page or window when displayed.
For example, a browser may recognize and display a panel within a tabbed page, or may move (e.g., based upon user input) the panel to a different page or application, and the user may associate (or couple or embed) the panel to the new page or application. In another example, a user interested in a particular panel in a tabbed page that is crowded with less useful information can select the panel of interest, and dock it to the left of the browser (e.g., dock it to a vertical panel bar on the desktop), dock it to a horizontal panel bar on a desktop or dashboard at the bottom of a desktop interface, or elevate (or move) the panel to its own tab (e.g., displaying the panel as its own tabbed page) within the browser. These are merely illustrative examples and are not meant to limit the implementations described in this disclosure.
A panel, e.g., in the case of a web page, may include an associated block of HTML (Hypertext Markup Language) code (or code provided in another language) with an attribute of “extractable” (or “movable”), for example, which may indicate to the web browser that this panel and associated HTML code may be disassociated (or decoupled or extracted) from other web pages or windows, and moved to other locations, and may even be associated (or coupled) to a new web page, window or application, for example.
In an example implementation, a movable panel may be associated with (or coupled to or embedded within) a page or window where the panel is provided at a fixed location. For example, when a panel is associated with a web page, the panel may cover up a portion of the web page where it resides, and the panel may be provided at a static or fixed location such that the panel may move with the associated web page. The panel may be disassociated (or decoupled) from the page or window, e.g., when a user selects a “pop-out” (or disassociate) area or portion of the panel, which may cause the panel to pop-out or be disassociated (or extracted) from the page or window, allowing the panel to move with respect to the page or window, fore example. In other example implementations, a panel may be disassociated (or decoupled) by a user selecting a “pop-out” menu option using a mouse, keyboard or other pointing device, or by simply selecting the panel and dragging the panel to a new location. Similarly, a panel may be associated with (or coupled to) a web page by selecting a “pop-in” (or associate) area or button of the panel, by selecting a “pop-in” menu option, or by simply dragging and dropping the panel onto the web page or application to which the panel is being associated with.
A panel may exist as part of a web page (associated with the web page), or as a disassociated panel. A panel may also be docked to a panel bar, which may be located anywhere on a desktop, e.g., horizontal panel bar at an upper or lower edge, or a vertical panel bar. Also, panels may be created or opened based on an address or link or URL (Uniform Resource Locator). For example, a panel may be opened or created by typing in the address or link to the panel in an application (such as a web browser), or by selecting or clicking on a link to the panel. Once created or opened, the panel may be moved to various locations, associated with a web page, docked to a panel bar, converted to a tabbed web page, etc.
Panel 620A may include an area or region, such as a pop-out area 622 (or pop-out button) that may allow a user to pop-out or disassociate (or decouple) the panel 620A from the web page 600, and allow the panel to move with respect to web page 600. Panel 620A may include a draggable area 621, where a user may select this draggable area 621 to drag or move the panel 620A to a different location, e.g., via a drag-and-drop operation, for example once the panel 620A has been popped-out or decoupled. Similarly, panel 610A may include a pop-out area 612 to allow a user to pop-out or disassociate the panel from web page 600, and a draggable area 611 that may allow a user to select to move the panel 610A via a drag-and-drop operation once the panel 610A has been popped-out or decoupled. Panels 610A and 620A may be smaller than the tabbed web page 600 or the browser window 603.
Alternatively, a panel may be associated or disassociated from a web page or application based on a selection of a menu option for the panel, e.g., an associate (or “pop-in”) menu option, or a disassociate (or “pop-out”) menu option. In another example implementation, it may not be necessary to disassociate a panel from a web page using a pop-out area or a pop-out menu command. Rather, the panel may be disassociated from a web page when the panel is selected and dragged using a pointing device, for example. In this example, therefore, a separate disassociate (or pop-out) operation is not necessary, as the panel may simply be dragged and dropped to a new location. Similarly, in one example implementation, a panel may be associated with a web page or application by dragging and dropping the panel onto the web page or application window.
In an example implementation, when a panel is associated with a web page, the web page or browser window, the panel may be (or may be considered to be) a part of the browser window or web page, and the web page may control the panel, e.g., adjust or control its size, location, appearance, and may control other qualities of the panel. Once the panel has been disassociated from a web page, communication may still occur between the (previously associated) web page and the panel, but the web page may not typically control the panel. For example, after disassociating a chat roster panel from an email web page, communication may still occur between the chat roster and the email application (e.g., to perform updates on one based on changes to the other), but the chat roster characteristics may not typically be controlled by the email application.
In an example implementation, a user may select pop-out area 612 to pop-out or disassociate (or decouple) the panel 610A from web page 600. The user may then select the draggable area 611 to drag the panel 610A (via a drag-and-drop operation) outside of the browser window 603 and web page 600 to a new location 610B on display area 660. The panel may be placed at a desired location on the desktop, and may then be associated with a different web page, may be docked to a panel bar or the desktop, or may be converted to a tabbed web page, as examples.
In another example implementation, a user may select pop-out area 622 of panel 620A to pop-out or disassociate the panel 620A from web page 600. The user may then select the draggable area 621 and pull or drag the information element (as shown by line 623) up to a tab strip 504 of the browser 603 and tabbed web page 600 where one or more tabs are located, or will be located. This may cause the browser to automatically display the panel 520A as a tabbed web page, e.g., at the same level as tabbed page 500. For example, dragging the panel to the tab strip 604 and dropping the panel over or near the tab strip 604 may cause the panel 620A to be converted to a tabbed web page, e.g., where the size of the panel 620A may be increased in size and a tab 627 (in this example, “Weather”) for such web page may be added to the tab strip 604.
Alternatively or additionally, a panel may be converted to a tabbed web page by clicking on a panel or by selecting a “convert to tabbed web page” menu option for the panel. As noted, converting a panel to a tabbed web page may include, for example, increasing a size (or adjusting a size) of the panel and adding a tab to the tab strip for the panel. In various implementations, tabbed web pages may be converted back into smaller panels as well. Further, a panel may be moved between application windows.
In this manner, the panel 720C may be displayed at a first location within a boundary of a first application window (e.g., within web page 761). The panel 720C may be moved, e.g., via a drag-and-drop operation in accordance with user input (e.g., based on user motion/movement of a mouse or other pointing device), to a second location (shown as 720D) within a boundary of a second application window, e.g., within web page 763.
The user may then select the “pop-in” area 722 of the panel 720D to pop-in (or associate) the panel 720D to the ESPN web page 763 (e.g., where the panel 720D may not move without popping it out again). The area 722 may, in an example implementation, toggle the panel between pop-out (disassociate or decouple) and pop-in (associate or couple).
The docking may include the processor or browser reducing a size of the docked panel to allow the panel bar 810A to accommodate a plurality of panels, and then attaching the reduced panel to the panel bar. For example, as more panels are docked or attached to the panel bar 810A (e.g., more docked panels squeezed into a same size panel bar), the size (e.g., width) of each panel docked to the horizontal panel bar 810A may be decreased. Thus, the size of the panel 820E may be decreased or reduced for docking the panel to the panel bar. For example, panel 820F that is docked to the panel bar 810A may be smaller than the panel 820E that is not docked to the panel bar. One skilled in the art will understand that panel bar 810A may be vertical or grouped in any type of configuration within a display area 800.
Computing device 1000 includes a processor 1002, memory 1004, a storage device 1006, a high-speed interface 1008 connecting to memory 1004 and high-speed expansion ports 1010, and a low speed interface 1012 connecting to low speed bus 1014 and storage device 1006. Each of the components 1002, 1004, 1006, 1008, 1010, and 1012, are interconnected using various busses, and may be mounted on a common motherboard or in other manners as appropriate. The processor 1002 can process instructions for execution within the computing device 1000, including instructions stored in the memory 1004 or on the storage device 1006 to display graphical information for a GUI on an external input/output device, such as display 1016 coupled to high speed interface 1008. In other implementations, multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory. Also, multiple computing devices 1000 may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).
The memory 1004 stores information within the computing device 1000. In one implementation, the memory 1004 is a volatile memory unit or units. In another implementation, the memory 1004 is a non-volatile memory unit or units. The memory 1004 may also be another form of computer-readable medium, such as a magnetic or optical disk.
The storage device 1006 is capable of providing mass storage for the computing device 1000. In one implementation, the storage device 1006 may be or contain a computer-readable medium, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations. A computer program product can be tangibly embodied in an information carrier. The computer program product may also contain instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer- or machine-readable medium, such as the memory 1004, the storage device 1006, or memory on processor 1002.
The high speed controller 1008 manages bandwidth-intensive operations for the computing device 1000, while the low speed controller 1012 manages lower bandwidth-intensive operations. Such allocation of functions is exemplary only. In one implementation, the high-speed controller 1008 is coupled to memory 1004, display 1016 (e.g., through a graphics processor or accelerator), and to high-speed expansion ports 1010, which may accept various expansion cards (not shown). In the implementation, low-speed controller 1012 is coupled to storage device 1006 and low-speed expansion port 1014. The low-speed expansion port, which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet) may be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter.
The computing device 1000 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a standard server 1020, or multiple times in a group of such servers. It may also be implemented as part of a rack server system 1024. In addition, it may be implemented in a personal computer such as a laptop computer 1022. Alternatively, components from computing device 1000 may be combined with other components in a mobile device (not shown), such as device 1050. Each of such devices may contain one or more of computing device 1000, 1050, and an entire system may be made up of multiple computing devices 1000, 1050 communicating with each other.
Computing device 1050 includes a processor 1052, memory 1064, an input/output device such as a display 1054, a communication interface 1066, and a transceiver 1068, among other components. The device 1050 may also be provided with a storage device, such as a microdrive or other device, to provide additional storage. Each of the components 1050, 1052, 1064, 1054, 1066, and 1068, are interconnected using various buses, and several of the components may be mounted on a common motherboard or in other manners as appropriate.
The processor 1052 can execute instructions within the computing device 1050, including instructions stored in the memory 1064. The processor may be implemented as a chipset of chips that include separate and multiple analog and digital processors. The processor may provide, for example, for coordination of the other components of the device 1050, such as control of user interfaces, applications run by device 1050, and wireless communication by device 1050.
Processor 1052 may communicate with a user through control interface 1058 and display interface 1056 coupled to a display 1054. The display 1054 may be, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display) or an OLED (Organic Light Emitting Diode) display, or other appropriate display technology. The display interface 1056 may comprise appropriate circuitry for driving the display 1054 to present graphical and other information to a user. The control interface 1058 may receive commands from a user and convert them for submission to the processor 1052. In addition, an external interface 1062 may be provided in communication with processor 1052, so as to enable near area communication of device 1050 with other devices. External interface 1062 may provide, for example, for wired communication in some implementations, or for wireless communication in other implementations, and multiple interfaces may also be used.
The memory 1064 stores information within the computing device 1050. The memory 1064 can be implemented as one or more of a computer-readable medium or media, a volatile memory unit or units, or a non-volatile memory unit or units. Expansion memory 1074 may also be provided and connected to device 1050 through expansion interface 1072, which may include, for example, a SIMM (Single In Line Memory Module) card interface. Such expansion memory 1074 may provide extra storage space for device 1050, or may also store applications or other information for device 1050. Specifically, expansion memory 1074 may include instructions to carry out or supplement the processes described above, and may include secure information also. Thus, for example, expansion memory 1074 may be provided as a security module for device 1050, and may be programmed with instructions that permit secure use of device 1050. In addition, secure applications may be provided via the SIMM cards, along with additional information, such as placing identifying information on the SIMM card in a non-hackable manner.
The memory may include, for example, flash memory and/or NVRAM memory, as discussed below. In one implementation, a computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer- or machine-readable medium, such as the memory 1064, expansion memory 1074, or memory on processor 1052, that may be received, for example, over transceiver 1068 or external interface 1062.
Device 1050 may communicate wirelessly through communication interface 1066, which may include digital signal processing circuitry where necessary. Communication interface 1066 may provide for communications under various modes or protocols, such as GSM voice calls, SMS, EMS, or MMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others. Such communication may occur, for example, through radio-frequency transceiver 1068. In addition, short-range communication may occur, such as using a Bluetooth, WiFi, or other such transceiver (not shown). In addition, GPS (Global Positioning System) receiver module 1070 may provide additional navigation- and location-related wireless data to device 1050, which may be used as appropriate by applications running on device 1050.
Device 1050 may also communicate audibly using audio codec 1060, which may receive spoken information from a user and convert it to usable digital information. Audio codec 1060 may likewise generate audible sound for a user, such as through a speaker, e.g., in a handset of device 1050. Such sound may include sound from voice telephone calls, may include recorded sound (e.g., voice messages, music files, etc.) and may also include sound generated by applications operating on device 1050.
The computing device 1050 may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a cellular telephone 1080. It may also be implemented as part of a smart phone 1082, personal digital assistant, or other similar mobile device.
Various implementations of the systems and techniques described here can be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof. These various implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and can be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the terms “machine-readable medium” “computer-readable medium” refers to any computer program product, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term “machine-readable signal” refers to any signal used to provide machine instructions and/or data to a programmable processor.
To provide for interaction with a user, the systems and techniques described here can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a keyboard and a pointing device (e.g., a mouse or a trackball) by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user can be received in any form, including acoustic, speech, or tactile input.
The systems and techniques described here can be implemented in a computing system that includes a back end component (e.g., as a data server), or that includes a middleware component (e.g., an application server), or that includes 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 systems and techniques described here), or any combination of such back end, middleware, or 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”), a wide area network (“WAN”), and the Internet.
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.
A number of implementations have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the invention.
In addition, the logic flows depicted in the figures do not require the particular order shown, or sequential order, to achieve desirable results. In addition, other steps may be provided, or steps may be eliminated, from the described flows, and other components may be added to, or removed from, the described systems. Accordingly, other implementations are within the scope of the following claims.