Skip to main content
  • Log in
  • Manage Cookies
projects.eclipse.org
Download
  • Projects
  • Working Groups
  • Members
  • Community
    • Marketplace
    • Events
    • Planet Eclipse
    • Newsletter
    • Videos
    • Blogs
  • Participate
    • Report a Bug
    • Forums
    • Mailing Lists
    • Wiki
    • IRC
    • Research
  • Eclipse IDE
    • Download
    • Learn More
    • Documentation
    • Getting Started / Support
    • How to Contribute
    • IDE and Tools
    • Newcomer Forum
  • More
      • Community

      • Marketplace
      • Events
      • Planet Eclipse
      • Newsletter
      • Videos
      • Blogs
      • Participate

      • Report a Bug
      • Forums
      • Mailing Lists
      • Wiki
      • IRC
      • Research
      • Eclipse IDE

      • Download
      • Learn More
      • Documentation
      • Getting Started / Support
      • How to Contribute
      • IDE and Tools
      • Newcomer Forum
  1. Home
  2. Projects
  3. Eclipse Science
  4. Eclipse Rich Beans
  5. Eclipse Rich Beans
  6. Creation Review

Eclipse Rich Beans Creation Review

Type: 
Creation
State: 
Successful
End Date of the Review Period: 

Reviews run for a minimum of one week. The outcome of the review is decided on this date. This is the last day to make comments or ask questions about this review.

Wednesday, November 4, 2015
Project: 
Eclipse Rich Beans
Proposal: 

Eclipse Rich Beans

Parent Project: 
Eclipse Technology
Background: 

Diamond Light Source are part of the Eclipse Science Working Group and have developed several Eclipse RCP products both for user interface and for data analysis and acquisition servers. This project has come from that development work and exists already. It has some overlap with other Eclipse projects, but we don't think this should be an issue and the ecosystem is richer with multiple solutions!

Scope: 

The scope is to provide a set of widgets for scientific and numeric data which allow values to be entered and validated. The project provides data binding to java beans and automatic generation of user interface made up of the widget set. The project scope is also to edit beans with huge arrays of values and complex bean trees.

Not in the scope:

  1. Serialization: RichBeans is agnostic as to whether XML, JSON or any other technology be used. It is just widgets<->beans
Description: 

This project allows user interface to be created from beans or graphs of beans. The user interface available has standard widgets which have few dependencies to reuse. For instance there are widgets for editing numbers with bounds validation, units and that allow expressions of other boxes. There are widgets for entering a range of values and expanding out bean graphs to complete Design of Experiments work.

The API will be simple to use, have great widgets for science and be fast for huge field lists. So even though it is a minnow in the world of models, data binding and UI generation, it has some strong points.

 

 

Screenshots from three of the examples:

UI

BEAN GRAPH

public class ExampleBean {

 

       private List<ExampleItem> items;

//…

 

public class ExampleItem {

      

       public enum ItemChoice {

             XY, POLAR;

 

             public static Map<String, ItemChoice> names() {

                    final Map<String,ItemChoice> ret = new HashMap<String,ItemChoice>(2);

                    ret.put("X-Y Graph", XY);

                    ret.put("Polar",     POLAR);

                    return ret;

             }

       }

 

       private String     itemName;

       private ItemChoice choice = ItemChoice.XY;

       private Double x,y;

       private double r,theta;

//…

 

public class ExampleBean {

 

       private List<ExampleItem> items;

      

//…

 

public class ExampleItem {

      

       private String     itemName;

       private ItemChoice choice = ItemChoice.XY;

       private Double x,y;

       private double r,theta;

      

       private List<OptionItem> options;

 

//…

 

public class OptionItem {

 

    private String optionName;

       private boolean showAxes, showTitle, showLegend, showData;

       private static int count = 0;

 

//…

 

So more than 200,000 fields are linked and editable in a speedy fashion!

public class ExampleBean {

 

       private List<ExampleItem> items;

 

//… Example has 2000 items

 

 

public class ExampleItem {

      

       private String     itemName;

       private ItemChoice choice = ItemChoice.XY;

       private Double x,y;

       private double r,theta;

      

       private double d0, d1,d2,d3,d4,d5,d6,d7,d8, d9;

       private double d10, d11,d12,d13,d14,d15,d16,d17,d18, d19;

       private double d20, d21,d22,d23,d24,d25,d26,d27,d28, d29;

       private double d30, d31,d32,d33,d34,d35,d36,d37,d38, d39;

       private double d40, d41,d42,d43,d44,d45,d46,d47,d48, d49;

       private double d50, d51,d52,d53,d54,d55,d56,d57,d58, d59;

       private double d60, d61,d62,d63,d64,d65,d66,d67,d68, d69;

       private double d70, d71,d72,d73,d74,d75,d76,d77,d78, d79;

       private double d80, d81,d82,d83,d84,d85,d86,d87,d88, d89;

       private double d90, d91,d92,d93,d94,d95,d96,d97,d98, d99;

 

//… Example has 100 fields

 

 

 

Why Here?: 

This project is of interest to multiple members of the Science Working Group and it will directly address requirements of those members - and others in the community - that results in tighter integration and reuse across the projects.

Diamond Light Source are a member and supporter of the Eclipse Foundation and currently see this as the best route to making a project truly open source.

Initial Contribution: 

Bundle names (copywright Diamond Light Source):

  1. org.eclipse.richbeans.api
  2. org.eclipse.richbeans.widgets
  3. org.eclipse.richbeans.reflection
  4. org.eclipse.richbeans.generator
  5. org.eclipse.richbeans.examples
  6. org.eclipse.richbeans.validation
  7. org.eclipse.richbeans.doe 
  8. org.eclipse.richbeans.xml

What they do

  1.  API no dependency interface plugin for services and other interfaces.
  2. Bunch of widgets 
  3. Implementation of bean to UI and UI to bean service used to do data binding using reflection
  4. Automatic generation of user interface, might depend on metawidgets, http://metawidget.org/, EPL licensed code 
  5. Examples of how to use
  6. Validation plugin for checking beans are legal and UI in legal state
  7. Design of expriments plugin for expanding beans that use DOE annotations
  8. Helpers for XML
Legal Issues: 

The code exists and is licensed already as EPL. It has some Apache dependencies. The name rich beans is owned by: www.richbeans.com of India but we hope that the project will be known as 'Eclipse Rich Beans' or perhaps 'ERB' (pronounced herb?) and have packages org.eclipse.richbeans.

 

Known non-Eclipse dependencies:

  1. com.fasterxml.jackson   Apache 2 licensed JSON mapper used in examples (could use other JSON or just XML if a problem as just for examples)
  2. org.apache.commons.logging    - Orbit, Apache 2
  3. org.apache.commons.beanutils - Orbit, Apache 2

Possible non-Eclipse dependencies:

  1.  Metawidgets https://github.com/metawidget/metawidget   - claims to be EPL licensed but project might not have been checked.
Licenses: 
Eclipse Public License 1.0
Project Scheduling: 
  • Initial contribution Autumn 2015 - September or October ideally
  • This project exists and once we have made it ready for release and passed the IP checking, it could be part of the Eclipse Release Train (unlike the DAWNSci project which follows release with the synchrotron software release train).

 

Future Work: 

We plan to increase the auto-generation capability by using the metawidgets project more. Currently the UI generation is by statically generated classes at compile time and does not support bean graphs. Metawidgets are dynamic and support nesting and would work better with our widget set.  http://metawidget.org/

People
Project Leads: 
Matthew Gerring
Committers: 
Colin Palmer
James Mudd
Baha El-Kassaby
Matthew Gerring
Mentors: 
Marcel Bruch
  • Sign in to post comments.
  • Sign in to post comments.
Incubating - Eclipse Rich Beans

Related Projects

Project Hierarchy:

  • Eclipse Science
  • Eclipse Rich Beans

Eclipse Foundation

  • About Us
  • Contact Us
  • Donate
  • Members
  • Governance
  • Code of Conduct
  • Logo and Artwork
  • Board of Directors

Legal

  • Privacy Policy
  • Terms of Use
  • Copyright Agent
  • Eclipse Public License
  • Legal Resources

Useful Links

  • Report a Bug
  • Documentation
  • How to Contribute
  • Mailing Lists
  • Forums
  • Marketplace

Other

  • IDE and Tools
  • Projects
  • Working Groups
  • Research@Eclipse
  • Report a Vulnerability
  • Service Status

Copyright © Eclipse Foundation. All Rights Reserved.

Back to the top