Eclipse RCP user interface

The objective is to have an Azureus-like front-end to the EDOS P2P system, with all features available: advanced queries, notification, downloads etc. Having a rich and easy to use UI is likely to considerably foster the real use of the platform.

Persons in charge: Roger, Per Øyvind, Jan Øyvind

Links:

Minimal requirements for the EDOS distribution system user interface

  • The current EDOS Web application includes a JSP interface for the Publisher and another one common to both Clients and Mirrors. We want to replace each JSP interface with an Eclipse RCP user interface.
  • Each RCP user interface must provide at least the functionalities of the current JSP interfaces.
  • Gabriel already programmed a RCP interface for the Publisher, available on the SVN server. This should be the first model for developing the Client/Mirror RCP user interface.
See software/distribution/gui/server/rcp in the SVN repository.

First priority: quickly develop a Client/Mirror RCP user interface providing only the functionalities of the current Client/Mirror JSP application. Improvements to both (Publisher and Client/Mirror) RCP user interfaces will be added afterwards.

Gabriel is the contact for any questions about developing the Eclipse RCP applications.

EDOS RCP implementation notes

ConfigurationView

This view makes it possible to edit the edos.resources.properties file, possibly with automatic detection of some properties. Then the user can launch or relaunch the initialization of the application, with the new configuration parameter values, hitting an "Initialize" button.

Initialization

See edos.distribution.physical.axml.InitServlet.

Content view

The content view displays the local content of the peer.

The view is analogue to an Eclipse Java project view, where the project is an EdosCdsProject, and the contents are DataUnits. Each project represents an edos.distribution.datamodel.data.Release instance, and the DataUnits represent edos.distribution.datamodel.daata.DataUnit instances, where each DataUnit can be either a Collection (folder), a Package (RPM file) or a utility (i.e. any other file).

The view interacts with the edos.distribution.physical.ContentManager instance.

  • the view should call ContentManager.getAllReleases and display the hierarchy of releases
  • for each release: call getBaseCollection to get the root folder, then iterate over getCollectionContent() to display the whole tree
There should be visual distinction for each DataUnit type (package, utility, etc.)

ChannelView

Channels are used for getting specific events (like release publishing by the publisher peer).

TODO: see how we can run a publisher and a simple peer on the same machine.

ChannelView is a view displaying the list of available channels.

  • it represents the interface to the Channel Manager
  • connect/disconect methods to channels
  • visual distinction between open/closed channels
  • subscribe/unsubscribe action implementation
  • a pannel for the received messages
  • download action implementation for the new Data Units published on the channel

RemoteContentView

displaying the list of the distant releases, i.e the releases available in the network of super peers.

The view interplays with the DisseminationManager

Call to IndexManager.getDistributionList() to get the list of names.

Call to DisseminationManager.getNewRelease(releaseName) to download.

QueryView

Managed by IndexManager.query(...) (which then delegates to Kadop etc.)

The view contains a form for building the queries.

The view contains:

  • a form for building the queries
The form is used for querying all metadata available in the following XML file metadata example:

<?xml version="1.0" encoding="UTF-8"?>

<package_metadata>
  <NAME>perl</NAME>
  <VERSION>5.8.8</VERSION>
  <RELEASE>4mdk</RELEASE>
  <EPOCH>2</EPOCH>
  <SERIAL>2</SERIAL>
  <SUMMARY>The Perl programming language</SUMMARY>
  <DESCRIPTION>Perl is a high-level programming language with roots in C, sed, awk and shell scripting. Perl is good at handling processes and files, and is especially good at handling text. Perl's hallmarks are practicality and efficiency. While it is used to do a lot of different things, Perl's most common applications (and what it excels at) are probably system administration utilities and web programming. A large proportion of the CGI scripts on the web are written in Perl. You need the perl package installed on your system so that your system can handle Perl scripts. You need perl-base to have a full perl.</DESCRIPTION>
  <BUILDTIME>1146648759</BUILDTIME>
  <BUILDHOST>n1.mandriva.com</BUILDHOST>
  <SIZE>19646645</SIZE>
  <DISTRIBUTION>Mandriva Linux</DISTRIBUTION>
  <VENDOR>Mandriva</VENDOR>
  <LICENSE>GPL or Artistic</LICENSE>
  <COPYRIGHT>GPL or Artistic</COPYRIGHT>
  <PACKAGER>Rafael Garcia-Suarez <rgarciasuarez@mandriva.com></PACKAGER>
  <GROUP>Development/Perl</GROUP>
  <URL>http://www.perl.org/</URL>
  <OS>linux</OS>
  <ARCH>i586</ARCH>
  <SOURCERPM>perl-5.8.8-4mdk.src.rpm</SOURCERPM>
  <ARCHIVESIZE>19924508</ARCHIVESIZE>
  <RPMVERSION>4.4.5</RPMVERSION>
  <PAYLOADFORMAT>cpio</PAYLOADFORMAT>
  <PAYLOADCOMPRESSOR>gzip</PAYLOADCOMPRESSOR>
  <PAYLOADFLAGS>9</PAYLOADFLAGS>
  <PLATFORM>i586-mandriva-linux-gnu</PLATFORM>
  <SOURCEPKGID>fc0246727a9ee644d527d7dca90d0160</SOURCEPKGID>
</package_metadata>

It should be possible to launch a download action for each DataUnit returned by the query, using the method DisseminationManager.getDataUnit(DataUnitID)

Help

The help pages the Eclipse InfoCenter help system (see example in the Eclipse RCP book)

Packaging/branding of the application

using the Eclipse product feature.

PublicationView

This view should be available only on the publisher.

This view lets the user publish a new release to the system.

PublisherChannelView

This view makes it possible to create new channels.

UI Notification

Note by Dan: Just one remark about the RCP GUIs: I think an important architectural issue is the way the GUI and the EDOS peer communicate. For now, in the Publisher GUI, the EDOS peer provides some web services to return information needed by the GUI for display. But we also need a notification mechanism, i.e. web services provided by the GUI, to be called by the peer when some change in the EDOS data requires a refresh in the GUI. I think this issue should be considered in a second step for the design and implementation of the EDOS RCP GUIs.

UI customization

See http://www.richclient2.eu/2007_04_16/customizing-the-ui-in-small-rcp-projects/

Other notes

Internationalization

The user interface should be i18n.

Threads

All the non trivial actions launched from the UI should be run in threads. See the Eclipse jobs API, with ProgressMonitor. The EDOS backend will have to report progress to the ProgressMonitor.

Layout

What configuration options should be available from the GUI, and preferred layout etc. for this?

Stéphane: this is to be discussed.

Keyboard controls

Once the UI will reach a stable level, all actions should be available from the keyboard.

What new EDOS features, that are not in the web interface, should we implement? Are they documented anywhere?

Stéphane: we'll discuss this.

Sandbox

The idea to first implement psew in the EDOS context, then the views may be abstracted so that they can be used for different data models using similar concepts.

Package organization proposal:

  • edos.cds.rcp.actions
  • edos.cds.rcp.channels
  • edos.cds.rcp.browsing
  • edos.cds.rcp.publication
  • edos.cds.rcp.query
  • edos.cds.rcp.configuration
  • ...
Notes:
  • see how views are packaged in Eclipse implementation.
  • in a second step, we could consider generalizing the rcp application for EDOS into a generic semantic P2P app, PSEW: PSEW would be a generic application for dealing with metadata in P2P.
  • in some sense there is an anlogy between an "EdosProject" and a "JavaProject".
A EdosProject contains data that will be indexed by the P2P system, typically:
  • RPM files with metadata
Version 1.36 last modified by StephaneLauriere on 05/07/2007 at 22:25

Comments 0

No comments for this document

Attachments 0

No attachments for this document

Creator: StephaneLauriere on 2007/01/23 12:19
Copyright EDOS Consortium
1.1.1