The subject invention relates generally to document navigation within a display space and in particular, to enhanced viewing and navigation of multiple documents in part by their organization on a user interface.
Aside from computer programs typically sold for general consumer use, various types of businesses, educational institutions, and even individuals can have specific needs when it comes to processing, storing, and accessing different types of information. To satisfy their needs, many of them often rely on customized applications that meet their specifications and often turn to program developers, who are called upon to design and/or create specialized applications. Over the past several years, the need for creating business-specific computing programs has increased due in large part to the many new types of services or businesses in the marketplace. However, despite the number of improvements that have been made to program development tools, conventional techniques continue to present challenges, obstacles, and/or inconveniences to developers, resulting in less efficiency during the creation and coding processes. For example, many programs are composed of thousands of files, and navigation through multiple files or documents can be rather cumbersome, particularly when working with a large number of resources at about the same time. Dozens of opened files, documents, pages, etc. can be difficult or time-consuming to locate when their positions on a menu, for example, are arbitrarily determined. Hence, conventional techniques have yet to provide users with an effective means for such viewing when working they are working with more than just a few open documents, files, pages, or sheets.
The following presents a simplified summary of the invention in order to provide a basic understanding of some aspects of the invention. This summary is not an extensive overview of the invention. It is not intended to identify key/critical elements of the invention or to delineate the scope of the invention. Its sole purpose is to present some concepts of the invention in a simplified form as a prelude to the more detailed description that is presented later.
The invention relates to a system and/or methodology that facilitate more efficient navigation of multiple open objects through the use of a tab channel navigation bar. More specifically, as an object is opened for viewing within a display space, a tab having the object's name thereon can be positioned to the left side of the display space or navigation bar, and in particular, to the left of any other object present on the navigation bar. The previously opened object(s) can then be shifted to the right in the navigation bar. Because the viewable length of the navigation bar can be limited (to mitigate scrolling of the bar to reveal hidden object names), a set number of objects can be viewed—depending on the length of each tab. When the display space becomes full, one or more previously opened files can be dropped from the right side of the navigation bar but can remain accessible by way of a drop down resource menu. As a result, the most relevant objects can remain in view on the left of the navigation bar—meanwhile the least relevant objects can be dropped from the viewable display space, thereby mitigating tedious searching (for an object) and improving a user's overall navigation experience.
According to one aspect of the invention, the navigation of objects including but not limited to files, documents, pages, sheets, abstract views, etc. can be accomplished in part by the use of object indicators such as tabs arranged within a tab channel. When a file, for instance, is opened by the user, the file's name and type can be presented via a tab to facilitate quick and easy recognition of the file and/or its content. Color and/or icons or symbols can be incorporated as well on the tabs to further distinguish between different states or types of files and/or to facilitate grouping of related files. The tabs can also comprise functional components to facilitate carrying out an action with respect to the file such as save, save as, close, rename, make static, make shifting, etc. For example, if a particular file has been modified, the user can simply click a designated part of the tab to save the file or to select a “save” action from a list of available options directly on the tab (e.g., right click on the tab to reveal an options menu for that tab). Color can also be used to denote a file's status such as whether a file has been modified but not saved, not modified. Other (file) states can be available and employed as well.
According to another aspect of the subject invention, the viewable display space for the objects can include a channel in which navigation between file tabs can be performed. A window to view the content of an active file tab can also be a part of the display space. Tabs of inactive files (e.g., not selected for viewing) may remain in view in the channel. As mentioned above, as newer or more relevant file tabs fill the channel, older or less relevant file tabs can be shifted to the right and can eventually drop off from the channel. Though they are no longer viewable in the channel, these files can still be accessed for viewing by accessing a file menu or resource list also located on the user interface. In other words, such files can be added back to the channel for tab navigation when selected for viewing by the user.
The resource menu or list can be populated as new files are opened. When a new file is opened, the file can append to the left side of the channel as well as to the menu list. The menu list can arrange such files in an ordered manner. For example, the files can be listed alphabetically. Thus, files which were once less relevant but may now be more relevant to the user can be easily and quickly found. In accordance with yet another aspect of the subject invention, when a file must be accessed from the menu list (because it was bumped from the channel), the file re-enters the channel to the left of any other files in the channel. Moreover, files present in the channel can be indicative of relevancy or usefulness to the user at any particular time.
To the accomplishment of the foregoing and related ends, certain illustrative aspects of the subject invention are described herein in connection with the following description and the annexed drawings. These aspects are indicative, however, of but a few of the various ways in which the principles of the subject invention may be employed and the subject invention is intended to include all such aspects and their equivalents. Other advantages and novel features of the subject invention may become apparent from the following detailed description of the subject invention when considered in conjunction with the drawings.
The subject invention is now described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the invention. It may be evident, however, that the invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate describing the subject invention.
As used in this application, the terms “component” and “system” are intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may 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 a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers.
The subject invention can incorporate various inference schemes and/or techniques in connection with navigating among a large number of objects (e.g., files, documents, pictures, figures, sheets, pages, clips, thumbnails, etc.) in a more efficient manner. For example, objects related by content, keywords, type, modified date/time, opened in the last w minutes, etc. can be (automatically) grouped into various collections as desired by a user. For better viewing and navigation of multiple collections, they can be separated into their respective viewing spaces (e.g., window, box . . . ) and made to float within the user's display screen.
As used herein, the term “inference” refers generally to the process of reasoning about or inferring states of the system, environment, and/or user from a set of observations as captured via events and/or data. Inference can be employed to identify a specific context or action, or can generate a probability distribution over states, for example. The inference can be probabilistic—that is, the computation of a probability distribution over states of interest based on a consideration of data and events. Inference can also refer to techniques employed for composing higher-level events from a set of events and/or data. Such inference results in the construction of new events or actions from a set of observed events and/or stored event data, whether or not the events are correlated in close temporal proximity, and whether the events and data come from one or several event and data sources.
The invention as described herein can be employed by any type of user, profession, and/or business for both personal and commercial benefit. For the ease of understanding, its utilization is discussed with respect to a software or application developer scenario.
In general, developers work with many, many files; and it may not be uncommon for a developer's project to encompass or involve a few hundred or a few thousand files. Due to the nature of creating new programs or improving older versions, developers can often find themselves constantly opening and navigating between several different files or file types at a time. Conventional “application tools” used by developers have been designed such that the application opens one file at a time per viewing window. Thus, when three files are opened, the developer or user typically must navigate between three windows. Other conventional techniques are designed according to a spatial model. Files are displayed in the order they are opened and can be moved around by the user. In either instance, the respective methods work well in applications where a user has only 3-4 files open. When just a few files are involved, these conventional techniques may be tolerable. However, when actively working with a large number of files as many developers do, this conventional technique becomes impracticable and ultimately yields a very poor user experience.
In general, when navigating among files, users often emphasize nine important file attributes:
More recent models attempted to accommodate each of these nine attributes by providing an arrow-type spatial navigation system where sometimes files were opened on the right hand side of the channel, shifting the contents left, and sometimes files were opened next to related files (e.g., source & designer relationship). In the end, all nine of the above attributes were mixed and jumbled which created an unpredictable and confusing mess. Developers were left with lists of open or closed files arranged in an arbitrary and indeterminate manner, making locating files on the user interface a painful if not impossible task.
To mitigate such inefficiencies, the subject invention is optimized given that in software development, the order a user open files can be arbitrary and can correlate to the order the user may need that file for your current task. In addition, there can be a “many to many” relationship between files and tasks, and trying to create a spatial relationship of the order files are opened is artificial and arbitrary; thus, the file that you are currently working on is probably the user's most important file. The last five files that the user worked on are equally the user's second most important file. Finally, all other open files are equally the user's next most important file. This feels erroneous at first, but at a broad level this generally holds true.
The subject invention also considers and understands that when the user opens or selects a file through any means, the behavior of the file tab channel should remain consistent. Whether a file is open or not, whether it is part of the user's solution or not, and what designers and editors have the file open is peripheral to the user model. Hence, when the user performs an action that opens a file, it is imperative that what happens is predictable and consistent.
Accordingly, the subject invention employs a tab channel that can display at least the file names of any recently viewed files. In general, files in the tab channel can be arranged according to their relevance to the user—whereby the most relevant files are maintained to the left of the channel. Relevancy can be determined in part by the most recently accessed or used files. Thus, users can readily navigate between their most relevant files via the tab channel. Files determined to be less relevant are gradually dropped off of the tab channel but remain easily accessible from an on-screen menu (e.g., drop-down menu). Further discussion on this and other aspects of the invention can be found with respect to
Referring now to
The system 100 includes an input component 110 that receives user input such as in the form of an object-open command (e.g., open file) or a object-select command (e.g., view file content), for example. The input can be processed for its content and communicated to a directional navigation component 120, by which placement of the object within the tab channel is determined. Operatively connected to the directional navigation component 120 is an object indicator component 130 that can be employed to determine the type(s) of content to include in the object tab. For instance, the tab can include at least one of the following: object name or object type. In addition, a color, icon, or symbol can be associated with the object to further characterize the content or some other quality or state of the object. For example, an object that has been modified but not saved can be given a red tab or an asterisk next to the name to readily indicate such information to the user.
Placement of objects in the tab channel can be determined based on the user's needs or preferences. In one approach, a first object can be opened and placed at the left side (e.g., left edge) of the channel. A second object can be subsequently opened and again placed at the left side of the channel, therefore pushing the first object to the right. The tab channel has a limited amount of tab space available; thus eventually, objects can fall off or be “removed” from the right side of the channel as additional objects are added to the channel.
Another approach involves a static region in the channel. The static region can include at least one object that the user wants to remain in the channel regardless of any other objects subsequently opened or introduced into the channel. Hence, files in the static regions remain fixed in the channel for more “permanent” availability or viewing. The remaining portion of the tab channel can be referred to as a shifting region. Objects visible in the shifting region can be considered temporary and thus, can change more frequently.
Looking again at
Referring now to
A static region may be located at the far left of the channel, thus any other file entering the channel 220 can enter immediately right of the static channel but to the left of any other file in the channel 220 (e.g., in the shifting region of the channel). Files introduced into the shifting region of the channel 220 push other files in the channel to the right in the order in which they were introduced into the channel 220.
When the file is initially opened, the directional navigation component 210 can also append the file to a resource menu component 230 which comprises at least a subset of all files opened by the user during a given session, at the present time, or over a period of time. The resource menu component 230 can maintain a list of files in an ordered manner. For example, the files can be organized alphabetically for easy reference. The files can also be organized alphabetically and then sub-grouped by topic, content, time/date last accessed, date/time last modified, etc. Though not depicted in the figure, the resource menu component 230 can include only open files not viewable in the tab channel 220. Otherwise, the resource menu component can maintain substantially all open files—including those still viewable in the tab channel 220.
Files found in the resource menu component 230 but not in the tab channel 220 can also be accessed for viewing by the user. When this occurs, the file can once again be introduced into the tab channel 220 at the left side and cause any other files in the channel to shift right. Moreover, the tab channel essentially comprises the most relevant and/or the most recently used files as determined by the user.
Various aspects of the subject invention as described above are further demonstrated by presenting a real world user scenario as shown in
Beginning with
In
Moving on,
Next, File E 1200 is opened as depicted in
As illustrated in the diagram 1400 in
Turning now to
Referring to
The drop-down menu 1730 includes an alphabetical list of all open files. Thus, there is no need for users to readily determine which files are open or closed or where they exist on a partially hidden or scrolling tab channel. When a file is chosen for viewing from the menu and the file is not in the tab channel, then the file is inserted into the tab channel at the left side (of any file(s) in the shifting region).
Various methodologies in accordance with the subject invention will now be described via a series of acts, it is to be understood and appreciated that the invention is not limited by the order of acts, as some acts may, in accordance with the invention, occur in different orders and/or concurrently with other acts from that shown and described herein. For example, those skilled in the art will understand and appreciate that a methodology could alternatively be represented as a series of interrelated states or events, such as in a state diagram. Moreover, not all illustrated acts may be required to implement a methodology in accordance with the invention.
Referring now to
In
Turning now to
Moreover, the more relevant files can be maintained to the left side of a tab channel and the less relevant files (as determined by the user) can be gradually moved to the right side of the tab channel. As the tab channel fills up, previously opened/accessed can ultimately be dropped off of the channel. Fortunately, such files are still readily accessible via a menu within the user's visible workspace. Thus, the user is not unduly inconvenienced by having to scroll across a large quantity of files to find a file that was opened earlier in the day. Rather, the file can simply be found on the menu—when no longer found in the tab channel.
In order to provide additional context for various aspects of the invention,
Generally, however, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular data types. The operating environment 2110 is only one example of a suitable operating environment and is not intended to suggest any limitation as to the scope of use or functionality of the subject invention. Other well known computer systems, environments, and/or configurations that may be suitable for use with the subject invention include but are not limited to, personal computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include the above systems or devices, and the like.
With reference to
The system bus 2118 can be any of several types of bus structure(s) including the memory bus or memory controller, a peripheral bus or external bus, and/or a local bus using any variety of available bus architectures including, but not limited to, 11-bit bus, Industrial Standard Architecture (ISA), Micro-Channel Architecture (MCA), Extended ISA (EISA), Intelligent Drive Electronics (IDE), VESA Local Bus (VLB), Peripheral Component Interconnect (PCI), Universal Serial Bus (USB), Advanced Graphics Port (AGP), Personal Computer Memory Card International Association bus (PCMCIA), and Small Computer Systems Interface (SCSI).
The system memory 2116 includes volatile memory 2120 and nonvolatile memory 2122. The basic input/output system (BIOS), containing the basic routines to transfer information between elements within the computer 2112, such as during start-up, is stored in nonvolatile memory 2122. By way of illustration, and not limitation, nonvolatile memory 2122 can include read only memory (ROM), programmable ROM (PROM), electrically programmable ROM (EPROM), electrically erasable ROM (EEPROM), or flash memory. Volatile memory 2120 includes random access memory (RAM), which acts as external cache memory. By way of illustration and not limitation, RAM is available in many forms such as synchronous RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), Synchlink DRAM (SLDRAM), and direct Rambus RAM (DRRAM).
Computer 2112 also includes removable/nonremovable, volatile/nonvolatile computer storage media.
It is to be appreciated that
A user enters commands or information into the computer 2112 through input device(s) 2136. Input devices 2136 include, but are not limited to, a pointing device such as a mouse, trackball, stylus, touch pad, keyboard, microphone, joystick, game pad, satellite dish, scanner, TV tuner card, digital camera, digital video camera, web camera, and the like. These and other input devices connect to the processing unit 2114 through the system bus 2118 via interface port(s) 2138. Interface port(s) 2138 include, for example, a serial port, a parallel port, a game port, and a universal serial bus (USB). Output device(s) 2140 use some of the same type of ports as input device(s) 2136. Thus, for example, a USB port may be used to provide input to computer 2112 and to output information from computer 2112 to an output device 2140. Output adapter 2142 is provided to illustrate that there are some output devices 2140 like monitors, speakers, and printers among other output devices 2140 that require special adapters. The output adapters 2142 include, by way of illustration and not limitation, video and sound cards that provide a means of connection between the output device 2140 and the system bus 2118. It should be noted that other devices and/or systems of devices provide both input and output capabilities such as remote computer(s) 2144.
Computer 2112 can operate in a networked environment using logical connections to one or more remote computers, such as remote computer(s) 2144. The remote computer(s) 2144 can be a personal computer, a server, a router, a network PC, a workstation, a microprocessor based appliance, a peer device or other common network node and the like, and typically includes many or all of the elements described relative to computer 2112. For purposes of brevity, only a memory storage device 2146 is illustrated with remote computer(s) 2144. Remote computer(s) 2144 is logically connected to computer 2112 through a network interface 2148 and then physically connected via communication connection 2150. Network interface 2148 encompasses communication networks such as local-area networks (LAN) and wide-area networks (WAN). LAN technologies include Fiber Distributed Data Interface (FDDI), Copper Distributed Data Interface (CDDI), Ethernet/IEEE 1102.3, Token Ring/IEEE 1102.5 and the like. WAN technologies include, but are not limited to, point-to-point links, circuit switching networks like Integrated Services Digital Networks (ISDN) and variations thereon, packet switching networks, and Digital Subscriber Lines (DSL).
Communication connection(s) 2150 refers to the hardware/software employed to connect the network interface 2148 to the bus 2118. While communication connection 2150 is shown for illustrative clarity inside computer 2112, it can also be external to computer 2112. The hardware/software necessary for connection to the network interface 2148 includes, for exemplary purposes only, internal and external technologies such as, modems including regular telephone grade modems, cable modems and DSL modems, ISDN adapters, and Ethernet cards.
What has been described above includes examples of the subject invention. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the subject invention, but one of ordinary skill in the art may recognize that many further combinations and permutations of the subject invention are possible. Accordingly, the subject invention is intended to embrace all such alterations, modifications, and variations that fall within the spirit and scope of the appended claims. Furthermore, to the extent that the term “includes” is used in either the detailed description or the claims, such term is intended to be inclusive in a manner similar to the term “comprising” as “comprising” is interpreted when employed as a transitional word in a claim.