GeneaPro and the Rich Client Platform

Ed Ridpath
  • Ed Ridpath
    Ed Ridpath

    Full doc is in CVS under doc/design

    The Eclipse Rich Client Platform (RCP) provides a number of useful functions that would otherwise have to be coded  in or added on later.  Specific requirements of the GeneaPro project that would be more easily provided by the RCP include help system,  flexible user interface (UI), preference support, and most importantly, a plug-in architecture that will allow a very modular approach to development and allows many third party extensions.

    A positive side effect of this modularity is that the plug-in modules can each be managed as individual projects, including separate licensing schemes.  For example, the base application can use the CPL, while plug-ins for reports, database support, place experts, etc. could be licensed using GPL or other open-source or even proprietary licenses.

    There are some limits to the RCP which need to be considered.  The first is that the UI, while somewhat flexible, does enforce a certain look and feel.  Another concern might be the extreme newness of this platform  while Eclipse has been using a version of this platform for years, version 3.0 was the first to break out a non-IDE RCP.  As well, RCP programming is Eclipse plug-in programming, period.  This is not as much of a limit as the GeneaPro project already uses Eclipse as it's standard IDE, but it is yet another environment to learn.

    I plan to pilot an RCP implementation of at least a base system, that should give us some idea of both the capabilty and the limits of using the RCP.

    • Ed Ridpath
      Ed Ridpath

      Well, I'm about 50% on the port of the current GeneaPro project to RCP - I'm walking very slowly through the RCP tutorials, and carefully moving stuff.  I think the jFace work I did earlier helped quite a bit.  What I have so far is an App, Perspective, a few views, help system and JDBC working. 

      I still have to port the GUI views and I would like to get Preferences working and also build a standalone version.  Further Customeizations would be nice. I've used this as an opportunity to refactor too.  I haven't checked this work into CVS - I won't until I'm certain it's the way we want to go.

    • Nick Charsley
      Nick Charsley

      Although It's a bit dry reading, I found the (125 odd pages) Eclipse User Interface Guidelines
      Version 2.1 ( a very interesting read.

      There was a lot in there that I think should be bourn in mind when we design the GUI. Although we have more freedom as out views and perspectives are designed to work without the rest of the Eclipse environment, if we have this as our guide then anybody who wishes to extend GeneaPro will at least have a reference to guide them to providing consistant look and feel.

      Nick (c)

      • Ed Ridpath
        Ed Ridpath


        I agree - this was a good read - not all directly applicable to a user apps like GeneaPro, but  I see no issue with using what does apply.  I personally like the Eclipse interface, and following those general standards and using the RCP would give a a very professional look and feel.

        We would still have open the application specific UI topics - kind of the overall how we present the various genealogical data to support the various tasks a genealogist does.  Once we figure out what we want to present, the RCP Views/Perspectives/Wizards/Editors/etc. can then be designed to support our best approach to the visualizing the data in the GUI.

    • Matthew Easlea
      Matthew Easlea


      thanks for this great project,

      my initial view is that this project could set a standard for accesing a database (using hibernate) from Eclipse RCP applications. I haven't been able to find any other sample projects / documenation regarding how to do this, so finding your project has been enlightening. I am about to start off builiding an RCP application that connects to a legacy database with about 30 tables. I'm going to see i can also use hibernate. Do you have any hints / tips regarding the process? What information sources have you used to guide your design or are you blazing your own path :)

      I've downloaded the latest version from CVS and each time i try to start the RCP product i'm getting an error about DatePartType table not existing. I've run the SQL dump script that i downloaded from CVS.

      Anyway, my mail

      • Tom Morris
        Tom Morris

        If you are working with an existing database, the Hibernate Synchronizer plugin for Eclipse is a reasonable way to get bootstrapped.  It'll create all the Hibernate mapping files and Java objects from your database.

        There have been a bunch of changes checked in to CVS recently, so I'm not sure what the state of the prototype is.  I think, but am not sure, that the SQL script is obsolete.  There is now a menu option to create a new database, but it might only work with HSQLDB databases.  It's likely that the instructions for running the prototype haven't kept up with the code.

        Ed has been doing all the coding, so he's best equipped to explain the current state of play.


      • Ed Ridpath
        Ed Ridpath

        You are welcome, I think we are all having some fun on this project.

        Yes, the MySQL script is out of date based on some schema changes, however, the 2 HSQLDB databases in net.sf.geneapro/sql can be copied to either your home directory (linux) or c:\eclipse (windows) and the current code will startup HSQLDB, set up the 2 databases, and go right into the admin view - no MySQL needed right now, although reflecting the schema changes is something that has to be done one way or another.

        The Create database wizard will allow you to point the HSQLDB, MySQL, or PostgreSQL, and selecting Create New empty _should_ give you an clean, empty database (and maybe wipe out one it you point to existing - be careful!) - of course the challenge then is to get data in - no prototypes yet of entering data, the test database we have has been directly entered using SQL.

        I can say the "secret" to getting this far was using Hibernate Syncronizer to take our existing MySQL schema and create the *.hbm and Java class files, and then we've done some tweaking and testing from there. 

        We do have a more ambitous model driven approach being researched now, as well.  Reading through the mailing list as the developers have worked on the project might help you get up to speed on many of the issues and changes as we've used RCP and Hibernate.