The disclosure relates to the grouping of windows based on user-defined contexts.
When working in an environment, such as an Integrated Development Environment (IDE) or web browser environment, a plurality of windows are often opened and displayed to a user. Depending on the environment, the windows may comprise, for example, elements such as programs, files, web pages, etc. Often, users may have a large number of windows open at any given time, making it difficult to navigate through the windows in an efficient and organized manner.
Aspects of the invention are directed to the grouping of windows based on user-defined contexts.
A first aspect of the invention provides a computer-implemented method of grouping windows based on user-defined contexts, the method comprising: assigning a user-defined context to a plurality of elements in an environment; grouping the plurality of elements into at least one group based on the user-defined context assigned to each of the plurality of elements; and displaying a context window tab corresponding to each group of elements.
A second aspect of the invention provides a computer system comprising: a component configured to group windows based on user-defined contexts by: assigning a user-defined context to a plurality of elements in an environment;
grouping the plurality of elements into at least one group based on the user-defined context assigned to each of the plurality of elements; and displaying a context window tab corresponding to each group of elements.
A third aspect of the invention provides a computer program comprising program code embodied in at least one computer-readable medium, which when executed, enables a computer system to implement a method of grouping windows based on user-defined contexts, the method comprising: assigning a user-defined context to a plurality of elements in an environment; grouping the plurality of elements into at least one group based on the user-defined context assigned to each of the plurality of elements; and displaying a context window tab corresponding to each group of elements.
A fourth aspect of the invention provides a method of generating a computer system for grouping windows based on user-defined contexts, the method comprising:
providing a computer system operable to: assign a user-defined context to a plurality of elements in an environment; group the plurality of elements into at least one group based on the user-defined context assigned to each of the plurality of elements; and display a context window tab corresponding to each group of elements.
Other aspects of the invention provide methods, systems, program products, and methods of using and generating each, which include and/or implement some or all of the actions described herein. The illustrative aspects of the invention are designed to solve one or more of the problems herein described and/or one or more other problems not discussed.
These and other features of the disclosure will be more readily understood from the following detailed description of the various aspects of the invention taken in conjunction with the accompanying drawings that depict various aspects of the invention.
The drawings are intended to depict only typical aspects of the invention, and therefore should not be considered as limiting the scope of the invention. In the drawings, like numbering represents like elements between the drawings.
As indicated above, aspects of the invention are directed to the grouping of windows based on user-defined contexts. As used herein, unless otherwise noted, the term “set” means one or more (i.e., at least one) and the phrase “any solution” means any now known or later developed solution.
Turning to the drawings,
In this example, a user searches for a specific class in a programming language in order to verify different ways that the class may have been implemented/coded. To this extent, the user performs a file search for the class and opens files containing this class. This class comprises a first context, referred to as “context1” by the user. Initially, as depicted in
In the process of searching for the class (i.e., context1), the user discovers additional content relevant to the class. The additional relevant content comprises a second context and is referred to as “context2” by the user. After opening a file (file3) associated with context2 the user continues the search for both context1 and context2. This results in the user opening an additional file (file4) associated with context1 and an additional file (file5) associated with context2. As depicted in
Each window tab 18 displays the name of a corresponding file (file1-file5) that has been opened, but does not provide any indication of the context (e.g., context1, context2) that the user has associated with the file. As such, to track the context associated with a given file, the user has to select the window tab 18 corresponding to the file to display the contents of the file in the content pane 12.
In accordance with an embodiment, UI 10 includes an additional user functionality called “group by context,” which allows the user to organize window tabs associated with open files according to user-defined contexts. The “group by context” function can be selected, for example, by right clicking on a selected window tab 18, via a menu item 19 (e.g., “Context”) in the control menu 16 (see
As depicted in
An example of a context list 29 containing contexts previously defined by the user is depicted in
In this example, the user assigns a new context to file1, namely context1, using the “add new” option 26. The newly added context (context1) is appended to the context list 29 containing contexts previously defined by the user (see
Continuing with the above example, as shown in
The user continues the above process and selects the window tabs 18 associated with the remaining files (file2-file5), in any desired order, and assigns an existing context (e.g., context1) from the context list 29 or a new context (e.g., context2) to each of the files. As a result, UI 10 now appears as shown in
Each file may be assigned a plurality of different contexts. For example, if a file has been assigned to both context1 and context2, the file will be displayed under both the context1 window tab 301 and the context2 window tab 302 in
In some environments, it may be possible to simultaneously select a plurality of the window tabs 18. In such a case, the above process can be used to assign the same new or existing user-defined context to a selected plurality of files at the same time.
In an embodiment, the files associated with each context window tab 30 are listed from top down in the order in which they were originally opened by the user. Other listing orders are also possible. For example, the files can be listed in alphabetical order, in the order in which context was assigned, etc. Further, although the window tabs 18 associated with the files are no longer visible in the content pane 14, in another embodiment, the window tabs 18 may be displayed in conjunction with the context window tabs 30. Further, in an embodiment, the listing order of the context window tabs 30 can be changed using, for example, a select and drag operation and/or the like.
The files associated with a context window tab 30 can be selectively displayed (e.g., as drop-down tabs, a file list, etc.) to a user. For example, the files associated with a given context window tab 30 can be displayed in response to a user selection of the context window tab 30. A particular file associated with the selected context window tab 30 can then be selected by the user for display in the content pane 14. To this extent, as depicted in phantom in
Referring now to
Each window tab 46 displays the name of a corresponding URL (URL1-URL5) that has been opened, but does not provide any indication of the context (e.g., contextAA, contextBB) that the user has associated with the URL. As such, to track the context associated with a given URL, the user has to select the window tab 46 corresponding to the URL to display the corresponding web page in the content pane 42.
As depicted in
An example of a context list 59 containing contexts previously defined by the user is depicted in
In this web browser environment example, the user assigns a new context, namely contextAA, to URL1, using the “add new” option 56. The newly added context (contextAA) is appended to the context list 59 containing contexts previously defined by the user. Once added, the new context (contextAA) is available to the user via the “use existing” context menu option 58.
Continuing this example, as shown in
The user continues the context assignment process by selecting the window tabs 46 associated with the remaining URLs (URL2-URL5), in any desired order, and assigning an existing context (e.g., contextAA) from the context list 59 or a new context (e.g., contextBB) to each of the URLs. As a result, the web browser 40 now appears as shown in
Each URL may be assigned a plurality of different contexts. For example, if an URL has been assigned to both contextAA and contextBB, the URL will be displayed under both the contextAA window tab 601 and the contextBB window tab 602 in
In some environments, it may be possible to select a plurality of the window tabs 46 simultaneously. In such a case, the above process can be used to assign the same new or existing user-defined context to a selected plurality of URLS at the same time.
In an embodiment, the URLs associated with each context window tab 60 are listed from top down in the order in which they were originally opened by the user. Other listing orders are also possible. For example, the URLs can be listed in alphabetical order, in the order in which context was assigned, etc. Further, although the window tabs 46 associated with the URLs are no longer visible in the content pane 42, in another embodiment, the window tabs 46 may be displayed in conjunction with the context window tabs 60. Further, in an embodiment, the listing order of the context window tabs 60 can be changed using, for example, a select and drag operation and/or the like.
The URLs associated with a context window tab 60 can be selectively displayed (e.g., as drop-down tabs, an URL list, etc.) to a user. For example, the URLs associated with a given context window tab 60 can be displayed in response to a user selection of the context window tab 60. A particular URL associated with the selected context window tab 60 can then be selected by the user in order to display the associated web page in the content pane 42. To this extent, as depicted in phantom in
At S1, the environment (e.g., IDE, web browser, etc.) is opened. At S2, elements in the environment (e.g., file(s) in an IDE, URL(s) in a web browser, etc.) are opened by a user.
At S3, if the user decides to assign a context to an element in the environment (YES, S3), flow passes to S4. Otherwise (NO, S3), the process ends. At S4, if the user decides to use an existing context (YES, S4), flow passes to S5. If the user decides to define a new context (NO, S4), flow passes to S6. Thereafter, if the user needs to assign a user-defined context to another element (YES, S7), flow passes back to S3. If not (NO, S7), the process ends.
At S5, the user selects and assigns an existing user-defined context to an element. For example, the user may be presented with one or more context lists (see, e.g., context list 29,
Turning back to
By way of example, to create a new context 74 for inclusion in the context list 72 depicted in
A new context can be defined and added to a context list with or without being concurrently assigned to an element, depending on which button 86, 88 is actuated by the user in the “create new context” dialog box 80. For instance, actuation of the “create context” button 86 results in the creation of a new context, while actuation of the “create & assign” button results in the creation of a new context and the assignment of the new context to an element.
According to an embodiment, metadata can be associated with each element that has been assigned a user-defined context. The metadata may comprise an identifier (e.g., name) of the context, a description of the context, the date/time at which the context was assigned, any previous contexts that may have been assigned, the user that created the context, the user that assigned the context, etc. The metadata can be used to perform a search of elements by context, thereby allowing a user to easily and quickly retrieve a result set of elements associated with a given context. For example, as shown in
A user-defined context can include metadata, pointers, links, etc., for identifying the elements that have been assigned to the user-defined context. To this extent, a user can open an existing user-defined context (e.g., via a context menu item, etc.) and determine and/or retrieve the elements that have been assigned to that context. This type of relationship is depicted in
The context menu item in the control menu (see, e.g., context menu item 19,
The computer system 102 is shown including a processing component 104 (e.g., one or more processors), a storage component 106 (e.g., a storage hierarchy), an input/output (I/O) component 108 (e.g., one or more I/O interfaces and/or devices), and a communications pathway 110. In general, the processing component 104 executes program code, such as the context program 130, which is at least partially fixed in the storage component 106. While executing program code, the processing component 104 can process data, which can result in reading and/or writing transformed data from/to the storage component 106 and/or the I/O component 108 for further processing. The pathway 110 provides a communications link between each of the components in the computer system 102. The I/O component 108 can comprise one or more human I/O devices, which enable a human user 112 to interact with the computer system 102 and/or one or more communications devices to enable a system user 112 to communicate with the computer system 102 using any type of communications link. To this extent, the context program 130 can manage a set of interfaces (e.g., graphical user interface(s), application program interface, etc.) that enable human and/or system users 112 to interact with the context program 130. Further, the context program 130 can manage (e.g., store, retrieve, create, manipulate, organize, present, etc.) data, such as context lists 140, contexts 142, etc., using any solution.
In any event, the computer system 102 can comprise one or more general purpose computing articles of manufacture (e.g., computing devices) capable of executing program code, such as the context program 130, installed thereon. As used herein, it is understood that “program code” means any collection of instructions, in any language, code or notation, that cause a computing device having an information processing capability to perform a particular function either directly or after any combination of the following: (a) conversion to another language, code or notation; (b) reproduction in a different material form; and/or (c) decompression. To this extent, the context program 130 can be embodied as any combination of system software and/or application software.
Further, the context program 130 can be implemented using a set of modules 132. In this case, a module 132 can enable the computer system 102 to perform a set of tasks used by the context program 130, and can be separately developed and/or implemented apart from other portions of the context program 130. As used herein, the term “component” means any configuration of hardware, with or without software, which implements the functionality described in conjunction therewith using any solution, while the term “module” means program code that enables the computer system 102 to implement the functionality described in conjunction therewith using any solution. When fixed in a storage component 108 of a computer system 102 that includes a processing component 104, a module is a substantial portion of a component that implements the functionality. Regardless, it is understood that two or more components, modules, and/or systems may share some/all of their respective hardware and/or software. Further, it is understood that some of the functionality discussed herein may not be implemented or additional functionality may be included as part of the computer system 102.
When the computer system 102 comprises multiple computing devices, each computing device may have only a portion of context program 130 fixed thereon (e.g., one or more modules 132). However, it is understood that the computer system 102 and context program 130 are only representative of various possible equivalent computer systems that may perform a process described herein. To this extent, in other embodiments, the functionality provided by the computer system 102 and context program 130 can be at least partially implemented by one or more computing devices that include any combination of general and/or specific purpose hardware with or without program code. In each embodiment, the hardware and program code, if included, can be created using standard engineering and programming techniques, respectively.
Regardless, when the computer system 102 includes multiple computing devices, the computing devices can communicate over any type of communications link. Further, while performing a process described herein, the computer system 102 can communicate with one or more other computer systems using any type of communications link. In either case, the communications link can comprise any combination of various types of wired and/or wireless links; comprise any combination of one or more types of networks; and/or utilize any combination of various types of transmission techniques and protocols.
The computer system 102 can obtain or provide data, such as context lists 140 and contexts 142 using any solution. For example, the computer system 102 can generate and/or be used to generate context lists 140 and contexts 142, retrieve context lists 140 and contexts 142, from one or more data stores, receive context lists 140 and contexts 142, from another system, send context lists 140 and contexts 142 to another system, etc.
While shown and described herein as a method and system for grouping windows based on user-defined contexts, it is understood that aspects of the invention further provide various alternative embodiments. For example, in one embodiment, the invention provides a computer program fixed in at least one computer-readable medium, which when executed, enables a computer system to group windows based on user-defined contexts. To this extent, the computer-readable medium includes program code, such as the context program 130 (
In another embodiment, the invention provides a method of providing a copy of program code, such as the context program 130 (
In still another embodiment, the invention provides a method of generating a system for grouping windows based on user-defined contexts. In this case, a computer system, such as the computer system 102 (
It is understood that aspects of the invention can be implemented as part of a business method that performs a process described herein on a subscription, advertising, and/or fee basis. That is, a service provider could offer to group windows based on user-defined contexts as described herein. In this case, the service provider can manage (e.g., create, maintain, support, etc.) a computer system, such as the computer system 102 (
The foregoing description of various aspects of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed, and obviously, many modifications and variations are possible. Such modifications and variations that may be apparent to an individual in the art are included within the scope of the invention as defined by the accompanying claims.