+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
~~~~~~~~~~~~~~~~~~~~~~~~
|