Friday, January 8, 2010

Jetspeed UI in 2.2.1

With this blog post, I introduce the new Jetspeed portal user interface we are developing for the upcoming release of version 2.2.1. For the past several years, the Apache Jetspeed Portal has had two user interfaces:

1. The Portal Pipeline, a server-side, servlet based aggregation engine. The server-side rendering engine was and still is the most common user interface for Jetspeed portals. It has progressed over the years, including the addition of nice features like a multi-threaded aggregation engine, rendering each portlet in parallel on its own thread.

2. The Desktop Pipeline, a client-side, Javascript based aggregation engine. The client-side rendering engine was not the default, and didn't get as much attention as the server-side. That said, I think the desktop pipeline had much more interesting features, with Ajax rendering pipelines serving portlet content to handle parallel rendering requests from within the browser. The desktop pipeline, even though it ran in the browser, still supported the Java Portlet API, adhering to the requirements of action and render phases. It also had some interesting features including drag and drop moving of portlets in either grid or detached mode, and resizing the portlets and layouts.

With version 2.2.1 (still unreleased), we are working on a single rendering engine sharing the same pipeline and code base. This engine can be configured to render portlets on the server-side or client-side. We call this new rendering engine "Jetui", since the client-side code is based on the YUI Javascript library. Jetui already supports many of the drag and drop customization features of the Desktop pipeline, with the addition of several new features. Two interesting new additions are the toolbars: a Page and Space Navigator and a Toolbox.

In this blog I will introduce the Jetspeed Toolbox. The Toolbox is designed to make user customizations very easy in just one click. The toolbox contains three panels:

- Portlet Selector
- Layouts
- Themes

The Portlet Selector can be docked to the left or right side of the page, or it can float freely on top of the page. Portlets can be searched for using this tool, as all portlet metadata is automatically indexed in the portlet registry. Additionally, portlets can be categorized and filtered based on categories (see the drop down list). One click addition of portlets is now possible without ever leaving the page being customized. Portlets are also filtered by secure access. Only portlets that are configured to be viewable to the current user are displayed in the Jetspeed Toolbox.

An interesting new feature is portlet preview mode:

Selecting the theme for the current page or space is as easy as selecting the theme tab and then clicking on the theme. Jetspeed introduces several new themes in 2.2.1:

Page layouts, selected from the Layout tab, provide several default layouts (with more coming).

We are working on integrating the W3C Widgets alongside Java Portlets. Like portlets, widgets will be available for searching and adding from the Jetspeed Toolbar. I will discuss Widgets more in an upcoming blog.

In an upcoming blog, I will talk more about how to use templates to configure tools across pages...