+1 
     
    
    
      
      
      
      
      
        Good
            point, thankyou ;). Yes the document text is below, planning
            to put the code on our dawn-eclipse next week. 
          
          
        
        Primary
            tabs 
        
        BASICS 
        This
            proposal is in the Project Proposal Phase (as defined in
            the Eclipse Development Process)
            and is written to declare its intent and scope. We solicit
            additional participation and input from the community.
            Please add your feedback in the comments section. 
        Parent
              Project:  
        Technology Project 
        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 which allow values to be entered and
              validated in a standard way.
 
          - 
            Provide
              a service which synchronizes these widgets with beans,
              including complex object trees.
 
          - 
            Provide
              a mechanism to auto-generate user interface components
              from beans using the standard widget set including
              'on-the-fly' user interface generation
 
          - 
            Provide
              a mechanism for design of experiments (DOE
              https://en.wikipedia.org/wiki/Design_of_experiments) to be
              carried out with beans by allowing some fields to be
              ranges
 
          - 
            Provide
              a very simple to reuse design with many examples
 
         
        
          Not
            in the scope: 
        
          - 
            Serialization:
              Rich Beans is agnostic as to whether XML, JSON or any
              other technology be used. It is just widgets<->beans
 
         
        Description:  
        
          This
            project will allow user interface to be created from beans
            or graphs of beans. The user interface will have standard
            widgets which are already used in DAWNSci and other RCP
            products from Diamond Light Source but that which may be
            used by users of the Rich Beans API. 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. 
        
            
        
          This
            kind of thing already exists in other Eclipse project but
            Eclipse is described as an ecosystem and not a monoculture 
        
          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 = newHashMap<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 an RCP project truly open source. 
        Licenses:  
        Eclipse Public License 1.0 
        Legal
              Issues:  
        The
            code exists and is licensed already as EPL. It might have
            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' and have packages
            org.eclipse.richbeans 
        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.
 
         
          
        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/ 
        HIDEPEOPLE 
        Project
              Leads:  
        Matthew Gerring 
        Committers:  
        Colin
            Palmer 
        James Mudd 
        Baha El-Kassaby 
        Mentors:  
        Marcel Bruch 
        Jay Billings 
        HIDESOURCE CODE 
        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  
        
          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 
        Source
              Repository Type:  
        GitHub 
        Source
              Repositories:  
        https://github.com/DawnScience/dawn-eclipse 
          
          
        From: science-iwg-bounces@xxxxxxxxxxx
            [mailto:science-iwg-bounces@xxxxxxxxxxx]
            On Behalf Of Jonah Graham 
            Sent: 28 July 2015 14:25 
            To: Science Industry Working Group 
            Subject: Re: [science-iwg] Eclipse Rich Beans
            proposal 
          
        Hi Matt, 
        I can't seem to access the document on the Eclipse website.
          Any help would be appreciated. 
        Thanks,  
          Jonah 
        
          
            
              Hello, 
                
              We
                (Diamond guys) are thinking of releasing the widget
                library we use for parts of DAWN and GDA as a separate
                eclipse project. It features automatic data binding
                using reflection and has scientific widgets for editing
                bean trees. We are currently adding on-the-fly
                generation by linking to a library called metawidgets. I
                have not submitted the proposal yet (maybe next week),
                but it is here: 
                
              https://projects.eclipse.org/proposals/eclipse-rich-beans 
                
              My
                question is what do you think? I suspect you will find
                this project more intuitive to understand than what
                DAWNSci does! I know this kind of thing already exists
                in Eclipse but it is an ecosystem after all and not a
                monocultureJ
                 
                
              To
                put its point over positively; the API is, I think,
                simple to use, has better widgets for science and is
                fast for huge field lists. So even though it is a minnow
                in the world of models and data binding, it has some
                strong points. 
                
              Matt 
                
              And
                some screenshots from the examples (not very jazzy,
                there are some nicer widgets). These ones sync to JSON
                but obviously exporting the beans to a specific format
                is a detail the library is agnostic to: 
              
                
                  
                    | 
                       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
                        with in 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 
                        
                     | 
                   
                
               
                
                
                
             
              
            --  
            This e-mail and any attachments may contain confidential,
              copyright and or privileged material, and are for the use
              of the intended addressee only. If you are not the
              intended addressee or an authorised recipient of the
              addressee please notify us of receipt by returning the
              e-mail and do not use, copy, retain, distribute or
              disclose the information in or attached to the e-mail. 
              Any opinions expressed within this e-mail are those of the
              individual and not necessarily of Diamond Light Source
              Ltd.
               
              Diamond Light Source Ltd. cannot guarantee that this
              e-mail or any attachments are free from viruses and we
              cannot accept liability for any damage which you may
              sustain as a result of software viruses which may be
              transmitted in or with the message. 
              Diamond Light Source Limited (company no. 4375679).
              Registered in England and Wales with its registered office
              at Diamond House, Harwell Science and Innovation Campus,
              Didcot, Oxfordshire, OX11 0DE, United Kingdom 
                
           
           
            _______________________________________________ 
            science-iwg mailing list 
            science-iwg@xxxxxxxxxxx 
            To change your delivery options, retrieve your password, or
            unsubscribe from this list, visit 
            https://dev.eclipse.org/mailman/listinfo/science-iwg 
         
       
        
      --  
      This e-mail and any attachments may contain
        confidential, copyright and or privileged material, and are for
        the use of the intended addressee only. If you are not the
        intended addressee or an authorised recipient of the addressee
        please notify us of receipt by returning the e-mail and do not
        use, copy, retain, distribute or disclose the information in or
        attached to the e-mail. 
        Any opinions expressed within this e-mail are those of the
        individual and not necessarily of Diamond Light Source Ltd.  
        Diamond Light Source Ltd. cannot guarantee that this e-mail or
        any attachments are free from viruses and we cannot accept
        liability for any damage which you may sustain as a result of
        software viruses which may be transmitted in or with the
        message. 
        Diamond Light Source Limited (company no. 4375679). Registered
        in England and Wales with its registered office at Diamond
        House, Harwell Science and Innovation Campus, Didcot,
        Oxfordshire, OX11 0DE, United Kingdom 
          
       
      
       
      _______________________________________________
science-iwg mailing list
science-iwg@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/science-iwg 
     
     
    -- 
~~~~~~~~~~~~~~~~~~~~~~~~
OpenChrom - the open source alternative for chromatography / mass spectrometry
Dr. Philip Wenig » Founder » philip.wenig@xxxxxxxxxxxxx » http://www.openchrom.net
~~~~~~~~~~~~~~~~~~~~~~~~ 
  
 |