1. Field of the Invention
The present invention generally relates to web portal technology. More particularly, the present invention provides portal friendly user interface widgets that can detect environmental factors in a portal page and automatically adjust the markup they produce based on the detected environmental factors.
2. Related Art
Web portals are very user friendly because they allow the end user to pick which views (i.e., portlets) are combined on a portal page as well as how those portlets are arranged. After picking the portlets for a portal page and arranging the portlets, the user then has control over the state of each portlet in the portal page. Examples of states that a portlet can be placed in are Minimized, Maximized, Normal, Help, and Configure. In the Minimized state, the portlet renders minimal output or no output at all in the portal page. In the Maximized state, the portlet is the only portlet rendered in the portal page, or the portlet is rendered using more space compared to other portlets in the portal page. A portlet can typically generate richer content when its window state is in the Maximized state. In the Normal state, the portlet is arranged with other portlets in the portal page. In the Help state, the portlet provides a help page for users to obtain more information about the portlet. In the Configure state, the portlet provides a page for portal administrators to configure the portlet for a user or group of users. Other states, if supported, can also used (e.g., a Print state that provides a printer friendly version of the contents of the portlet).
Portal developers face a significant challenge in creating portlet code because the code must be capable of generating content markup that takes all of these portal capabilities into account. For example, if a user has put together a crowded portal page with a two column layout, then that portal page typically will look very busy since each portlet has limited screen real estate. An example of such a “busy” portal page 10 is illustrated in
Currently, much of the portlet code created by portal developers does not take the full range of possible portal page states into account. These portal developers often design their code for the single most likely type of view their portlets will have in a portal page and disregard the other potential views. Taking these shortcuts diminishes the usability of the portlets, but is often necessary because adjusting the portlet markup requires the developer to write a lot of extra code that detects the portal page state and then interacts heavily with the underlying widgets that make up the portlets, adjusting their properties and data. As such, there is a need for portal friendly user interface widgets that can detect environmental factors in a portal page and automatically adjust the markup they produce based on the detected environmental factors.
In general, the present invention provides portal friendly user interface widgets that can detect environmental factors in a portal page and automatically adjust the markup they produce based on the detected environmental factors.
A first aspect of the present invention is directed to a portal friendly widget, comprising: a system for detecting at least one environmental factor in a portal page; and a system for automatically adjusting markup produced by the portal friendly widget based on the at least one detected environmental factor.
A second aspect of the present invention is directed to a method for adjusting markup in a portal page containing a portal friendly widget, comprising: detecting at least one environmental factor in the portal page; and automatically adjusting markup produced by the portal friendly widget based on the at least one detected environmental factor.
A third aspect of the present invention is directed to a program product stored on a recordable medium for adjusting markup in a portal page containing a portal friendly widget, which when executed, comprises: program code for detecting at least one environmental factor in the portal page; and program code for automatically adjusting markup produced by the portal friendly widget based on the at least one detected environmental factor.
A fourth aspect of the present invention is directed to a system for deploying an application for adjusting markup in a portal page containing a portal friendly widget, comprising: a computer infrastructure being operable to: detect at least one environmental factor in the portal page; and automatically adjust markup produced by the portal friendly widget based on the at least one detected environmental factor.
A fifth aspect of the present invention provides computer software embodied in a propagated signal for adjusting markup in a portal page containing a portal friendly widget, the computer software comprising instructions to cause a computer system to perform the following functions: detect at least one environmental factor in the portal page; and automatically adjust markup produced by the portal friendly widget based on the at least one detected environmental factor.
These and other features of this invention will be more readily understood from the following detailed description of the various aspects of the invention taken in conjunction with the accompanying drawings in which:
The drawings are merely schematic representations, not intended to portray specific parameters of the invention. The drawings are intended to depict only typical embodiments of the invention, and therefore should not be considered as limiting the scope of the invention. In the drawings, like numbering represents like elements.
As indicated above, the present invention provides portal friendly user interface widgets that can detect environmental factors in a portal page and automatically adjust the markup they produce based on the detected environmental factors. It is assumed for the purposes of this description that the reader has an understanding of at least web portal technology (including portals, portlets, widgets, etc.) and Java.
A portal is an application that aggregates portlets together in a presentable format. Beyond merely being a presentation layer, a portal typically allows users to customize their presentation, including what portlets to display. A portal can also provide a convenient single sign-on mechanism for users.
A portlet is an individual web component that is made accessible to users via a portal interface. Typically, a single portlet generates only a fragment of the markup that a user sees from his or her browser. Users issue requests against portlets from the portal page. The portal in turn forwards those requests to a portlet container, which manages the lifecycle of a portlet.
A portlet container sits between a portal and its portlets. A portlet container provides the run-time environment to portlets, much in the same way a servlet container provides the environment for servlets. The portlet container manages portlets by invoking their lifecycle methods. The portlet container forwards requests to the appropriate portlet. When a portlet generates a response, the portlet container sends the response to the portal to be rendered to the user. The sequence of events for constructing a portal view is illustrated in
A widget is an element of a graphical user interface that displays information or provides a specific way for an user to interact with an application. Widgets include, for example, icons, pull-down menus, buttons, selection boxes, progress indicators, on-off check marks, scroll bars, windows, window edges (that let you resize the window), toggle buttons, forms, tables, and many other devices for displaying information and for inviting, accepting, and responding to user actions.
The present invention provides a new type of user interface widget called a “portal friendly widget.” Each portal friendly widget has the built-in capability to detect important environmental factors in a portal page and to automatically adjust the markup it produces based on the detected environmental factors. Examples of environmental factors that a portal friendly widget can detect include the state of the portlet that contains the portal friendly widget (e.g., minimized, maximized, normal, print, etc.) in a portal page, the number of portlets on a portal page, and the arrangement of portlets on a portal page. Other environmental factors are also possible.
A portal friendly widget can detect the state of a portlet by querying the PortletRequest object that is passed to the portlet in its doView method. Other techniques for detecting the state of the portlet containing the portlet friendly widget are also possible. The number and arrangement of portlets on a portal page are typically set up by a portal administrator. The portal administrator will have a set of portlets installed on a portal server from which he or she can choose. The portal administrator will then create a portal page and arrange the portlets as desired. This information can be provided to the portal friendly widget by the portal administrator or by the developer of the portal friendly widget. Other techniques for obtaining this information are also possible. End users can also add portlets to their portal pages and move the portlets after an administrator has installed them.
Based on the detected environmental factors, a portal friendly widget can automatically adjust the markup it produces in many different ways. For example, a portal friendly widget can adjust font size and/or typeface, add or remove decorative images, adjust the color palette used by the widget, enable or disable certain widget features (such as filtering controls in a portal friendly table widget), add or remove certain widget features, truncate certain parts of the data being presented (such as clipping the text in all nodes of a portal friendly tree widget at a certain number of characters), add or remove certain data; and provide an alternate method to view certain parts of the data being presented (such as making the contents of a wide table cell available via mouse fly-over in a tooltip instead of in-line). Many other markup adjustments are also possible. The markup adjustments can be provided, for example, to emphasize important data in the portlet friendly widget and to remove unimportant data in response to a reduction in size of a portlet.
The specific adjustments to the markup produced by a portal friendly widget in response to detected environmental factors are set up in advance by the developer of the portal friendly widget. For example, the developer of a portal friendly widget may designate that the font used by a portal friendly widget should be reduced from 12 point to 9 point whenever the portlet containing the portal friendly widget undergoes a state change from Maximized to Normal (and vice versa) in a portal page, that some/all of the images displayed by the portal friendly widget are removed whenever the portlet containing the portal friendly widget is included in a two column portal page, that certain features of the portal friendly widget are disabled wherever the portlet containing the portal friendly widget is included with three or more other portlets in a portal page, etc. As will be apparent to one skilled in the art, a wide variety of different/additional adjustments can be made to the markup produced by a portal friendly widget in response to detected environmental factors.
A portlet 20 including a simple example of a portal friendly “table” widget 22 in accordance with the present invention is depicted in
In
A portlet 40 including another example of a portal friendly table widget 42 is depicted in
The portlet 40 is displayed in its Normal state in a portal page in
The portal friendly widgets of the present invention provide many advantages over the prior art. For example, portlet friendly widgets save development time because a portal developer does not have to write extra code to check for environmental factors and manually adjust widget properties. Portlet code written by a developer is also more portable across portal containers that provide portal friendly widgets already tuned to their specific environment. Since portal friendly widgets make efficient use of screen real estate, the end user can see more information on a page without scrolling. Portal friendly widgets can also help a crowded portal page look much less busy by limiting the amount of flashiness they provide or function they expose. Further, since the environmental factors detected by portal friendly widgets only affect the rendering of the widget and not the data it contains, the portlet code does not need to perform the expensive operations of changing the underlying data model. Also, once the environmental factors have been determined by the portal friendly widgets in one portlet they can be shared with all other portlets in the page. Another advantage is that more device and display types can be supported without application code changes.
Referring now to
I/O interfaces 108 may comprise any system for exchanging information to/from an external source. External devices/resources 110 may comprise any known type of external device, including speakers, a CRT, LCD screen, handheld device, keyboard, mouse, voice recognition system, speech output system, printer, monitor/display, facsimile, pager, etc. Bus 106 provides a communication link between each of the components in computer system 100 and likewise may comprise any known type of transmission link, including electrical, optical, wireless, etc.
Storage unit 112 can be any system capable of providing storage for information necessary for the practice of the present invention. As such, storage unit 112 may reside at a single physical location, comprising one or more types of data storage, or may be distributed across a plurality of physical systems in various forms. In another embodiment, storage unit 112 may be distributed across, for example, a local area network (LAN), wide area network (WAN) or a storage area network (SAN), shown generically in
Shown in memory 104 of computer system 100 is a portal friendly widget system 120, which may be provided as computer program product. The portal friendly widget system 120 is used to produce and render portal friendly widgets 122, which can be stored, for example, in storage unit 112. The portal friendly widget system 120 includes a portal friendly widget coding system 124 for producing portal friendly widgets 122. Each portal friendly widget 122 includes an environmental detection system 28 (
It should be appreciated that the teachings of the present invention could be offered as a business method on a subscription or fee basis. For example, computer system 100 could be created, maintained, supported, and/or deployed by a service provider that offers the functions described herein for customers. That is, a service provider could provide portal friendly user interface widgets that can detect environmental factors in a portal page and automatically adjust the markup they produce based on the detected environmental factors as describe above. A service provider could also provide a user/developer with the necessary tools for creating portal friendly widgets. It should also be understood that the present invention can be realized in hardware, software, a propagated signal, or any combination thereof. Any kind of computer/server system(s)—or other apparatus adapted for carrying out the methods described herein—is suited. A typical combination of hardware and software could be a general purpose computer system with a computer program that, when loaded and executed, carries out the respective methods described herein. Alternatively, a specific use computer, containing specialized hardware for carrying out one or more of the functional tasks of the invention, could be utilized. The present invention can also be embedded in a computer program product or a propagated signal, which comprises all the respective features enabling the implementation of the methods described herein, and which—when loaded in a computer system—is able to carry out these methods. Computer program, propagated signal, software program, program, or software, in the present context mean any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: (a) conversion to another language, code or notation; and/or (b) reproduction in a different material form.
The foregoing description of the preferred embodiments of this 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 a person skilled in the art are intended to be included within the scope of this invention as defined by the accompanying claims.