]> source.dussan.org Git - vaadin-framework.git/commitdiff
Update general Component documentation pr8137/r3
authorPekka Hyvönen <pekka@vaadin.com>
Wed, 4 Jan 2017 09:48:45 +0000 (11:48 +0200)
committerIlia Motornyi <elmot@vaadin.com>
Wed, 4 Jan 2017 09:48:45 +0000 (11:48 +0200)
Part of vaadin/framework8-issues#538

30 files changed:
documentation/addons/addons-overview.asciidoc
documentation/application/application-lifecycle.asciidoc
documentation/components/components-checkbox.asciidoc
documentation/components/components-combobox.asciidoc
documentation/components/components-customfield.asciidoc
documentation/components/components-features.asciidoc
documentation/components/components-fields.asciidoc
documentation/components/components-grid.asciidoc
documentation/components/components-interfaces.asciidoc
documentation/components/components-label.asciidoc
documentation/components/components-selection.asciidoc
documentation/components/components-textfield.asciidoc
documentation/components/img/features-locale-selection.png [deleted file]
documentation/components/img/features-visible-simple.png [deleted file]
documentation/components/img/field-interface-hi.png [deleted file]
documentation/components/img/field-interface-lo.png [deleted file]
documentation/components/img/table-cellstylegenerator1.png [deleted file]
documentation/components/img/table-column-collapsing.png [deleted file]
documentation/components/img/table-column-resize.png [deleted file]
documentation/components/img/table-columnformatting.png [deleted file]
documentation/components/img/table-components.png [deleted file]
documentation/components/img/table-editable3.png [deleted file]
documentation/components/img/table-example1.png [deleted file]
documentation/components/img/table-example2.png [deleted file]
documentation/components/img/table-footer.png [deleted file]
documentation/components/img/table-generatedcolumns1.png [deleted file]
documentation/components/img/table-generatedcolumns2.png [deleted file]
documentation/components/img/treetable-basic.png [deleted file]
documentation/components/original-drawings/field-interface.svg [deleted file]
documentation/datamodel/datamodel-forms.asciidoc

index 8e3a3d7761b965a790578329c2d58c39004b46e3..a2c36d87845bd29a06e1a9a61987a8f6072170e5 100644 (file)
@@ -27,8 +27,8 @@ The _widget set_ needs to be compiled into the application widget set.
 Adding the dependency in Maven projects and compiling the widget set is described in <<addons-maven#addons.maven, "Using Add-ons in a Maven Project">>.
 The section also describes how to use the online compilation and CDN services during development.
 
-For Eclipse projects that use Ivy for dependency management, see <<addons-eclipse#addons.eclipse, "Installing Add-ons in Eclipse with Ivy">>.
-You can also download and install add-ons from a ZIP-package, as described in <<addons-downloading#addons.downloading, "Downloading Add-ons from Vaadin Directory">>.
+For Eclipse projects that use Ivy for dependency management, see <<dummy/../../../framework/addons/addons-eclipse.asciidoc#addons.eclipse, "Installing Add-ons in Eclipse with Ivy">>.
+You can also download and install add-ons from a ZIP-package, as described in <<dummy/../../../framework/addons/addons-downloading.asciidoc#addons.downloading, "Downloading Add-ons from Vaadin Directory">>.
 
 == Add-on Licenses
 
index 614b0db58931c2a8e22d7b17221e5c5f64652ded..657198f71b5e1a619c01be15ba8584be047da6a7 100644 (file)
@@ -235,10 +235,6 @@ one returns a UI (otherwise they return null). You can add a UI provider to a
 session most conveniently by implementing a custom servlet and adding the UI
 provider to sessions in a [interfacename]#SessionInitListener#.
 
-You can find an example of custom UI providers in
-<<dummy/../../../mobile/mobile-features#mobile.features.fallback,"Providing a
-Fallback UI">>.
-
 
 [[application.lifecycle.ui.preserving]]
 === Preserving UI on Refresh
index 186f4c5338368d5da584e9ae26051f1c02858194..6cbb46f893d891790ee7b78b2a2b44d75158a7df 100644 (file)
@@ -45,8 +45,6 @@ The result is shown in <<figure.components.checkbox.basic>>.
 .An Example of a Check Box
 image::img/checkbox-example1.png[width=35%, scaledwidth=50%]
 
-For an example on the use of check boxes in a table, see
-<<dummy/../../../framework/components/components-table#components.table,"Table">>.
 
 == CSS Style Rules
 
index b5eb92de7e7019c4d71c669b8ecc09aa716fa3a6..ccd75a3dc5d3e1559d6522a99578891657b9cfc8 100644 (file)
@@ -24,12 +24,6 @@ Components">>.
 .The [classname]#ComboBox# Component
 image::img/combobox-basic.png[width=35%, scaledwidth=50%]
 
-[classname]#ComboBox# supports adding new items when the user presses
-kbd:[Enter].
-ifdef::web[]
-See <<dummy/../../../framework/components/components-selection#components.selection.newitems,"Allowing Adding New Items">>.
-endif::web[]
-
 [[components.combobox.filtering]]
 == Filtered Selection
 
@@ -73,6 +67,57 @@ containing the input string. As shown in <<figure.components.combobox.filter>>
 below, when we type some text in the input area, the drop-down list will show
 all the matching items.
 
+[[components.combobox.newitems]]
+== Allowing Adding New Items
+
+[classname]#ComboBox# allows the user to add new items, when the user types
+in a value and presses kbd:[Enter]. You need to enable this with
+[methodname]#setNewItemHandler()#.
+
+Adding new items is not possible if the selection component is read-only. An
+attempt to do so may result in an exception.
+
+
+=== Handling New Items
+
+Adding new items is handled by a [interfacename]#NewItemHandler#, which gets the
+item caption string as parameter for the [methodname]#accept(String)# method.
+
+
+[source, java]
+----
+// List of planets
+List<Planet> planets = new ArrayList<>();
+planets.add(new Planet(1, "Mercury"));
+planets.add(new Planet(2, "Venus"));
+planets.add(new Planet(3, "Earth"));
+planets.add(new Planet(4, "Mars"));
+
+ComboBox<Planet> select =
+    new ComboBox<>("Select or Add a Planet");
+select.setItems(planets);
+
+// Use the name property for item captions
+select.setItemCaptionGenerator(Planet::getName);
+
+// Allow adding new items and add
+// handling for new items
+select.setNewItemHandler(inputString -> {
+
+    // Create a new bean - can't set all properties
+    Planet newPlanet = new Planet(planets.size(), inputString);
+    planets.add(newPlanet);
+
+    // Update combobox content
+    select.setItems(planets);
+
+    // Remember to set the selection to the new item
+    select.select(newPlanet);
+
+    Notification.show("Added new planet called " +
+                      inputString);
+});
+----
 
 [[components.combobox.css]]
 == CSS Style Rules
index 9a05b4aa33e3ca09af7f6a96801bf64c9a5ab08a..589f4446c32f84601d2d5edf6a8005eb19c78a5d 100644 (file)
@@ -8,7 +8,7 @@ layout: page
 = Composite Fields with [classname]#CustomField#
 
 The [classname]#CustomField# is a way to create composite components as with [classname]#CustomComponent#, except that it implements the [interfacename]#Field# interface and inherits [classname]#AbstractField#, described in <<dummy/../../../framework/components/components-fields#components.fields,"Field Components">>.
-A field allows editing a property value in the Vaadin data model, and can be bound to data with field groups, as described in <<dummy/../../../framework/datamodel/datamodel-itembinding#datamodel.itembinding, "Creating Forms by Binding Fields to Items">>.
+A field allows editing a property value in the Vaadin data model, and can be bound to data with field groups, as described in <<dummy/../../../framework/datamodel/datamodel-forms#datamodel.forms, "Binding Data to Forms">>.
 The field values are buffered and can be validated with validators.
 
 A composite field class must implement the [methodname]#getType()# and [methodname]#initContent()# methods.
index 28b7ea2093eb6958a70ff1a873d7d4dec8f1c38c..e72ee2179e778db410227a7418feec1a9f0ff604 100644 (file)
@@ -70,7 +70,6 @@ around a component.
 ----
 .v-caption {}
   .v-captiontext {}
-  .v-caption-clearelem {}
   .v-required-field-indicator {}
 ----
 
@@ -78,10 +77,8 @@ A caption is be rendered inside an HTML element that has the
 [literal]#++v-caption++# CSS style class. The containing layout may enclose a
 caption inside other caption-related elements.
 
-Some layouts put the caption text in a [literal]#++v-captiontext++# element. A
-[literal]#++v-caption-clearelem++# is used in some layouts to clear a CSS
-[literal]#++float++# property in captions. An optional required indicator in
-field components is contained in a separate element with
+Some layouts put the caption text in a [literal]#++v-captiontext++# element.
+An optional required indicator in field components is contained in a separate element with
 [literal]#++v-required-field-indicator++# style.
 
 
@@ -143,9 +140,6 @@ The result is shown in <<figure.components.tooltip.richtext>>.
 .A Rich Text Tooltip
 image::img/tooltip-richtext-withpointer-hi.png[width=40%, scaledwidth=75%]
 
-Notice that the setter and getter are defined for all field components implementing the
-[classname]#HasValue# interface, not for all components.
-
 
 [[components.features.enabled]]
 == Enabled
@@ -182,10 +176,8 @@ A disabled component is automatically put in read-only like state. No client
 interaction with a disabled component is sent to the server and, as an important
 security feature, the server-side components do not receive state updates from
 the client in the disabled state. This feature exists in all built-in
-components in Vaadin and is automatically handled for all [classname]#HasValue#
-components that have a value. For custom widgets, you need to make
-sure that the disabled state is checked on the server-side for all
-safety-critical variables.
+components in the Framework meaning all client to server RPC calls are ignored
+for disabled components.
 
 === CSS Style Rules
 
@@ -203,11 +195,8 @@ have to join the style class names with a dot as done in the example below.
 
 This would make the border of all disabled text fields dotted.
 
-// TODO This may change to $v-button-disabled-opacity
 In the Valo theme, the opacity of disabled components is specified with the
-`$v-disabled-opacity`
-ifndef::web[parameter.]
-ifdef::web[parameter, as described in <<dummy/../../../framework/themes/themes-valo#themes.valo.variables,"Common Settings">>]
+`$v-disabled-opacity` parameter.
 
 [[components.features.icon]]
 == Icon
@@ -294,7 +283,6 @@ date.setLocale(new Locale("de", "DE"));
 date.setResolution(Resolution.DAY);
 layout.addComponent(date);
 ----
-See the http://demo.vaadin.com/book-examples-vaadin7/book#component.features.locale.simple[on-line example, window="_blank"].
 
 The resulting date field is shown in <<figure.components.features.locale.simple>>.
 
@@ -302,7 +290,7 @@ The resulting date field is shown in <<figure.components.features.locale.simple>
 .Set locale for [classname]#InlineDateField#
 image::img/features-locale-simple.png[width=40%, scaledwidth=60%]
 
-ifdef::web[]
+
 [[components.features.locale.get]]
 === Getting the Locale
 
@@ -331,7 +319,6 @@ Button cancel = new Button() {
 };
 layout.addComponent(cancel);
 ----
-See the http://demo.vaadin.com/book-examples-vaadin7/book#component.features.locale.get-attach[on-line example, window="_blank"].
 
 However, it is normally a better practice to use the locale of the current UI to
 get the localized resource right when the component is created.
@@ -349,73 +336,17 @@ Button cancel =
     new Button(bundle.getString(MyAppCaptions.CancelKey));
 layout.addComponent(cancel);
 ----
-See the http://demo.vaadin.com/book-examples-vaadin7/book#component.features.locale.get-ui[on-line example, window="_blank"].
-endif::web[]
 
-ifdef::web[]
+
 [[component.features.locale.selecting]]
 === Selecting a Locale
 
-A common task in many applications is selecting a locale. This is done in the
-following example with a [classname]#ComboBox#, which gets the available locales
-in Java.
-
-
-[source, java]
-----
-// The locale in which we want to have the language
-// selection list
-Locale displayLocale = Locale.ENGLISH;
-
-// All known locales
-final Locale[] locales = Locale.getAvailableLocales();
-
-// Allow selecting a language. We are in a constructor of a
-// CustomComponent, so preselecting the current
-// language of the application can not be done before
-// this (and the selection) component are attached to
-// the application.
-ComboBox<Locale> select = new ComboBox<>("Select a language") {
-    @Override
-    public void attach() {
-        super.attach();
-        setValue(getLocale());
-    }
-};
-
-select.setItems(Arrays.asList(locales));
-select.setCaptionGenerator(locale -> locale.getDisplayName(displayLocale));
-select.setValue(getLocale());
-
-layout.addComponent(select);
-
-// Locale code of the selected locale
-Label localeCode = new Label("");
-layout.addComponent(localeCode);
-
-// A date field which language the selection will change
-InlineDateField date =
-    new InlineDateField("Calendar in the selected language");
-date.setResolution(Resolution.DAY);
-layout.addComponent(date);
-
-// Handle language selection
-select.onValueChange(locale -> {
-    date.setLocale(locale);
-    localeCode.setValue("Locale code: " +
-                        locale.getLanguage() + "_" +
-                        locale.getCountry());
-});
-----
-See the http://demo.vaadin.com/book-examples-vaadin7/book#component.features.locale.selection[on-line example, window="_blank"].
-
-The user interface is shown in <<figure.components.features.locale.selection>>.
-
-[[figure.components.features.locale.selection]]
-.Selecting a locale
-image::img/features-locale-selection.png[]
-
-endif::web[]
+A common task in many applications is selecting a locale.
+The locale can be set for the [classname]#UI# or single [classname]#Component#.
+By default each component uses the locale from the [classname]#UI# it has been
+attached to. Setting a locale to a [classname]#Component# only applies the locale
+to that component and its children. Note, that updating the locale for a component
+does not update its children, thus any child component that uses the locale should be updated manually.
 
 
 [[components.features.readonly]]
@@ -424,20 +355,17 @@ endif::web[]
 ((("read-only property")))
 ((("Component interface", "read-only")))
 The property defines whether the value of a component can be changed. The
-property is only applicable to [classname]#HasValue# components implementing the `HasValue` interface, as they have a
-value that can be edited by the user.
+property is only applicable to components implementing the [interfacename]#HasValue# interface.
 
 [source, java]
 ----
 TextField readwrite = new TextField("Read-Write");
 readwrite.setValue("You can change this");
 readwrite.setReadOnly(false); // The default
-layout.addComponent(readwrite);
 
 TextField readonly = new TextField("Read-Only");
 readonly.setValue("You can't touch this!");
 readonly.setReadOnly(true);
-layout.addComponent(readonly);
 ----
 
 The resulting read-only text field is shown in
@@ -467,10 +395,6 @@ and some of such changes could be acceptable, such as change in the scroll bar
 position of a [classname]#ListSelect#. Custom components should check the read-only
 state for variables bound to business data.
 
-////
-TODO: Note this also in the Advanced: Security section.
-Possibly also in the GWT chapter.
-////
 
 === CSS Style Rules
 
@@ -562,13 +486,6 @@ invisible.setVisible(false);
 layout.addComponent(invisible);
 ----
 
-The resulting invisible component is shown in
-<<figure.components.features.visible.simple>>.
-
-[[figure.components.features.visible.simple]]
-.An invisible component
-image::img/features-visible-simple.png[]
-
 If you need to make a component only cosmetically invisible, you should use a
 custom theme to set it [literal]#++display: none++# style. This is mainly useful
 for some special components that have effects even when made invisible in CSS.
@@ -579,10 +496,6 @@ invisible by setting all its font and other attributes to be transparent. In
 such cases, the invisible content of the component can be made visible easily in
 the browser.
 
-A component made invisible with the __visible__ property has no particular CSS
-style class to indicate that it is hidden. The element does exist though, but
-has [literal]#++display: none++# style, which overrides any CSS styling.
-
 
 [[components.features.sizeable]]
 == Sizing Components
@@ -601,9 +514,6 @@ The size of a component can be set with [methodname]#setWidth()# and
 [methodname]#setHeight()# methods. The methods take the size as a floating-point
 value. You need to give the unit of the measure as the second parameter for the
 above methods.
-ifdef::web[]
-The available units are listed in <<components.features.sizeable.units.table>>.
-endif::web[]
 
 [source, java]
 ----
@@ -622,8 +532,7 @@ mycomponent.setHeight("400px");
 ----
 
 The "[literal]#++100%++#" percentage value makes the component take all
-available size in the particular direction (see the description of
-[parameter]#Unit.PERCENTAGE# in the table below). You can also use the
+available size in the particular direction. You can also use the
 shorthand method [methodname]#setSizeFull()# to set the size to 100% in both
 directions.
 
@@ -631,31 +540,11 @@ The size can be __undefined__ in either or both dimensions, which means that the
 component will take the minimum necessary space. Most components have undefined
 size by default, but some layouts have full size in horizontal direction. You
 can set the height, width, or both as undefined with the methods [methodname]#setWidthUndefined()#,
-[methodname]#setHeightUndefined()#, and [methodname]#setHeightUndefined()#, respectively.
+[methodname]#setHeightUndefined()#, and [methodname]#setSizeUndefined()#, respectively.
 
 Always keep in mind that _a layout with undefined size may not contain components with defined relative size_, such as "full size", except in some special cases.
 See <<dummy/../../../framework/layout/layout-settings#layout.settings.size,"Layout Size">> for details.
 
-ifdef::web[]
-The <<components.features.sizeable.units.table>> table lists the available units and their codes defined in the [interfacename]#Sizeable# interface.
-
-[[components.features.sizeable.units.table]]
-.Size units
-[cols="5,2,10", options="header"]
-|===============
-|Constant|Unit|Description
-|[parameter]#Unit.PIXELS#|px|The _pixel_ is the basic hardware-specific measure of one physical display pixel.
-|[parameter]#Unit.POINTS#|pt|The _point_ is a typographical unit, which is usually defined as 1/72 inches or about 0.35 mm. However, on displays the size can vary significantly depending on display metrics.
-|[parameter]#Unit.PICAS#|pc|The _pica_ is a typographical unit, defined as 12 points, or 1/7 inches or about 4.233 mm. On displays, the size can vary depending on display metrics.
-|[parameter]#Unit.EM#|em|A unit relative to the used font, the width of the upper-case "M" letter.
-|[parameter]#Unit.EX#|ex|A unit relative to the used font, the height of the lower-case "x" letter.
-|[parameter]#Unit.MM#|mm|A physical length unit, millimeters on the surface of a display device. However, the actual size depends on the display, its metrics in the operating system, and the browser.
-|[parameter]#Unit.CM#|cm|A physical length unit, _centimeters_ on the surface of a display device. However, the actual size depends on the display, its metrics in the operating system, and the browser.
-|[parameter]#Unit.INCH#|in|A physical length unit, _inches_ on the surface of a display device. However, the actual size depends on the display, its metrics in the operating system, and the browser.
-|[parameter]#Unit.PERCENTAGE#|%|A relative percentage of the available size. For example, for the top-level layout [parameter]#100%# would be the full width or height of the browser window. The percentage value must be between 0 and 100.
-|===============
-endif::web[]
-
 If a component inside [classname]#HorizontalLayout# or [classname]#VerticalLayout# has full size in the namesake direction of the layout, the component will expand to take all available space not needed by the other components.
 See <<dummy/../../../framework/layout/layout-settings#layout.settings.size,"Layout Size">> for details.
 
index 45325b91461052a14604d59ce7e34f66f490b72e..e1075fc6cf6c268452ea800a65917f3c3e4f9f30 100644 (file)
@@ -19,59 +19,54 @@ and the important interfaces and base classes.
 .Field components
 image::img/field-diagram-hi.png[width=80%, scaledwidth=100%]
 
-Field components are built upon the framework defined in the [classname]#Field#
-interface and the [classname]#AbstractField# base class.
-[classname]#AbstractField# is the base class for all field components. In
-addition to the component features inherited from
+Field components are built upon the framework defined in the [classname]#HasValue#
+interface.
+[classname]#AbstractField# is the base class for all field components,
+except those components that allow the user to select a value.
+(see <<dummy/../../../framework/components/components-selection.asciidoc#components.selection,"Selection Components">>).
+
+In addition to the component features inherited from
 [classname]#AbstractComponent#, it implements the features defined in the
-[classname]#HasValue# and [classname]#Component.Focusable# interfaces.
+[interfacename]#HasValue# and [classname]#Component.Focusable# interfaces.
 
 [[figure.components.fields.hasvalue]]
 .Field components having values
 image::img/field-interface-v8-hi.png[width=60%, scaledwidth=100%]
 
-The description of the field interfaces and base classes is broken down in the
-following sections.
+The description of the [interfacename]#HasValue# interface and field components extending [classname]#AbstractField] is broken down in the following sections.
 
 [[components.fields.field]]
-== The [classname]#Field# Interface
-
-The [classname]#Field# interface inherits the [classname]#Component#
-superinterface and also the [classname]#HasValue# interface to have a value for
-the field. [classname]#AbstractField# is the only class implementing the
-[classname]#Field# interface directly. The relationships are illustrated in
-<<figure.components.fields.field>>.
+== The [interfacename]#HasValue# Interface
 
-[[figure.components.fields.field]]
-.[classname]#Field# interface inheritance
-image::img/field-interface-hi.png[width=60%, scaledwidth=100%]
+The [interfacename]#HasValue# interface marks a component that has a user editable value.
+The type parameter in the interface is the type of the value that the component is editing.
 
-You can set the field value with the [methodname]#setValue()# and read with the
+You can set the value with the [methodname]#setValue()# and read it with the
 [methodname]#getValue()# method defined in the [classname]#HasValue# interface.
-The actual value type depends on the component.
 
-The [classname]#Field# interface defines a number of properties, which you can
+The [classname]#HasValue# interface defines a number of properties, which you can
 access with the corresponding setters and getters.
 
-[methodname]#required#:: When enabled, a required indicator (usually the asterisk * character) is
-displayed on the left, above, or right the field, depending on the containing
-layout and whether the field has a caption. If such fields are validated but are
-empty and the [methodname]#requiredError# property (see below) is set, an error
-indicator is shown and the component error is set to the text defined with the
-error property. Without validation, the required indicator is merely a visual
-guide.
 
-[methodname]#requiredError#:: Defines the error message to show when a value is required, but none is entered.
-The error message is set as the component error for the field and is usually
-displayed in a tooltip when the mouse pointer hovers over the error indicator.
+[methodname]#readOnly#:: Set the component to be read-only, meaning that the value is not editable.
 
-[[components.fields.valuechanges]]
-== Handling Field Value Changes
+[methodname]#requiredIndicatorVisible#:: When enabled, a required indicator
+(the asterisk * character) is displayed on the left, above, or right the field,
+depending on the containing layout and whether the field has a caption.
+When the component is used in a form (see <<dummy/../../../framework/datamodel/datamodel-forms.asciidoc#datamodel.forms.validation,"Validation">>),
+it can be set to be required, which will automatically show the required indicator,
+and validate that the value is not empty. Without validation, the required indicator
+is merely a visual guide.
+
+[methodname]#emptyValue#:: The initial empty value of the component.
+
+[methodname]#clear#:: Clears the value to the empty value.
 
-[classname]#Field# provides [methodname]#addValueChangeListener# method for listening to changes to the field value. This method takes a [interfacename]#EventListener# that gets
-a [classname]#ValueChange# event instance containing information about the event.
 
-This method returns a [classname]#Registration# object that can be used to later
+[[components.fields.valuechanges]]
+== Handling Value Changes
+
+[interfacename]#HasValue# provides [methodname]#addValueChangeListener# method for listening to changes to the field value. This method returns a [classname]#Registration# object that can be used to later
 remove the added listener if necessary.
 
 [source, java]
@@ -79,7 +74,6 @@ remove the added listener if necessary.
 TextField textField = new TextField();
 Label echo = new Label();
 
-// Add a more complex listener
 textField.addValueChangeListener(event -> {
     String origin = event.isUserOriginated()
         ? "user"
@@ -91,6 +85,7 @@ textField.addValueChangeListener(event -> {
 });
 ----
 
+
 [[components.fields.databinding]]
 == Binding Fields to Data
 
@@ -114,16 +109,18 @@ Binder<Person> binder = new Binder<>();
 
 // Bind nameField to the Person.name property
 // by specifying its getter and setter
-binder.forField(nameField)
-    .bind(Person::getName, Person::setName);
+binder.bind(nameField, Person::getName, Person::setName);
 
 // Bind an actual concrete Person instance.
 // After this, whenever the user changes the value
 // of nameField, p.setName is automatically called.
 Person p = new Person();
-binder.bind(p;
+binder.bind(p);
 ----
 
+For more information on data binding, see <<dummy/../../../framework/datamodel/datamodel-forms.asciidoc#datamodel.forms,"Binding Data to Forms">>
+
+
 == Validating Field Values
 
 User input may be syntactically or semantically invalid.
@@ -131,40 +128,24 @@ User input may be syntactically or semantically invalid.
 automatically checking the validity of the input before storing it to the data
 object. You can add validators to fields by calling the [methodname]#withValidator#
 method on the [interfacename]#Binding# object returned by [methodname]#Binder.forField#.
+There are several built-in validators in the Framework, such as the [classname]#StringLengthValidator# used below.
 
 [source, java]
 ----
 binder.forField(nameField)
-    .withValidator(new StringLengthValidator(2, 20,
-        "Name must be between 2 and 20 characters long"))
+    .withValidator(new StringLengthValidator(
+        "Name must be between 2 and 20 characters long",
+        2, 20))
     .bind(Person::getName, Person::setName);
 ----
 
-Failed validation is indicated with the error indicator of the field, described in
+Failed validation is by default indicated with the error indicator of the field, described in
 <<dummy/../../../framework/application/application-errors#application.errors.error-indicator,"Error
 Indicator and Message">>. Hovering mouse on the field displays the error message
 returned by the validator. If any value in a set of bound fields fails validation,
 none of the field values are saved into the bound property until the validation
 passes.
 
-[[components.fields.validation.builtin]]
-=== Built-in Validators
-
-Vaadin includes the following built-in validators. The property value type is
-indicated.
-
-[classname]#RangeValidator#: [classname]#Comparable#::
-Checks that the given [interfacename]#Comparable# value is at or between two given values.
-
-[classname]#StringLengthValidator#: [classname]#String#::
-Checks that the length of the input string is at or between two given lengths.
-
-[classname]#RegexpValidator#: [classname]#String#::
-Checks that the value matches the given regular expression.
-
-[classname]#EmailValidator#: [classname]#String#::
-Checks that the string value is a syntactically valid email address.
-The validated syntax is close to the RFC 822 standard regarding email addresses.
 
 === Implementing Custom Validators
 
@@ -177,7 +158,7 @@ whether or not the given input was valid.
 ----
 class MyValidator implements Validator<String> {
     @Override
-    public Result<String> apply(String input) {
+    public Result<String> apply(String value, ValueContext context) {
         if(input.length() == 6) {
             return Result.ok(input);
         } else {
@@ -211,8 +192,7 @@ Field values are always of some particular type. For example,
 a data source, the type of the source property can be something different,
 say an [classname]#Integer#. __Converters__ are used for converting the values
 between the presentation and the model. Their usage is described in
-<<dummy/../../../framework/datamodel/datamodel-properties#datamodel.properties.converter,"Converting
-Between Model and Presentation Types">>.
+<<dummy/../../../framework/datamodel/datamodel-forms.asciidoc#datamodel.forms.conversion,"Conversion">>.
 
 
 (((range="endofrange", startref="term.components.fields")))
index 2366961e0333f9f00f2f916462f182a1835a139a..c379584e01bf956e52989ac5227f3d5af72a4550 100644 (file)
@@ -924,8 +924,7 @@ grid.setEditorBinder(binder);
 
 To use bean validation as in the example above, you need to include an
 implementation of the Bean Validation API in the classpath, as described in
-<<dummy/../../../framework/datamodel/datamodel-itembinding#datamodel.itembinding.beanvalidation,"Bean
-Validation">>.
+<<dummy/../../../framework/datamodel/datamodel-forms.asciidoc#datamodel.forms.beans,"Binding Beans to Forms">>.
 
 
 ifdef::web[]
index 263366b944646d7ec0d3d817948733924f55cf93..c183d77c8b6f76197b269de125e414d709eb9918 100644 (file)
@@ -92,15 +92,8 @@ described in <<components.interfaces.abstractcomponent>>.
 
 [classname]#AbstractComponent# is the base class for all user interface
 components. It is the (only) implementation of the [classname]#Component#
-interface, implementing all the methods defined in the interface.
-
-[classname]#AbstractComponent# has a single abstract method,
-[methodname]#getTag()#, which returns the serialization identifier of a
-particular component class. It needs to be implemented when (and only when)
-creating entirely new components. [classname]#AbstractComponent# manages much of
-the serialization of component states between the client and the server.
-Creation of new components and serialization is described in
-<<dummy/../../../framework/gwt/gwt-overview.asciidoc#gwt.overview,"Integrating
-with the Server-Side">>.
+interface, implementing all the methods defined in the interface. When
+creating a new component, you should extend [classname]#AbstractComponent# or
+one of its subclasses.
 
 (((range="endofrange", startref="term.components.interfaces.abstractcomponent")))
index ee2113fa84d85d740fa94fc62cae27badab8611c..71efc6bf9e49691b8551e60b56bea0607aabf8a2 100644 (file)
@@ -72,7 +72,7 @@ panel.setContent(
 As the size of the [classname]#Panel# in the above example is fixed and the
 width of [classname]#Label# is the default undefined, the [classname]#Label#
  will overflow the layout horizontally and be truncated.
-<<figure.components.label>>.
+//<<figure.components.label>>.
 
 ////
 // TODO update figure to match new label settings in Vaadin Framwork 8
index 0b42116a828c00cbc53d3212ce60a41e5c2acf43..2e7b8859e6655e81f0866b4a479d617d12079f4d 100644 (file)
@@ -11,9 +11,7 @@ For a better overview on how selection works, see link:../datamodel/datamodel-se
 
 Vaadin offers many alternative ways for selecting one or more items. The core
 library includes the following selection components, all based on either
-`AbstractSingleSelect` or `AbstractMultiSelect` class:
-
-// TODO Only use section numbers here, prefixed with "Section", not include section title
+[classname]#AbstractSingleSelect# or [classname]#AbstractMultiSelect# class:
 
 [classname]#ComboBox# (<<components-combobox#components.combobox,"ComboBox">>)::
 A drop-down list with a text box, where the user can type text to find matching items.
@@ -74,13 +72,12 @@ ComboBox<Planet> select = new ComboBox<>("My Select");
 // Add an items to the ComboBox
 select.setItems(planets);
 
-select.setItemCaptionGenerator(planet -> planet.getName());
-// or even select.setItemCaptionGenerator(Planet::getName);
+select.setItemCaptionGenerator(Planet::getName);
 
 // Select the first
 select.setSelectedItem(planets.get(0));
 // or
-select.setValue(planets.get(0));
+// select.setValue(planets.get(0));
 ----
 
 In addition to a caption, an item can have an icon. The icon is set with
@@ -93,78 +90,8 @@ retrieved with [methodname]#toString()# method from the item. This is useful
 for simple objects like String or Integers, but also for objects that have
 human readable output for [methodname]#toString()# .
 
-[source, java]
-----
-ComboBox<Planet> select = new ComboBox<>("Inner Planets");
-
-// A class that implements toString()
-class Planet implements Serializable {
-    String planetName;
-
-    Planet(String name) {
-        planetName = name;
-    }
-
-    public String toString () {
-        return "The Planet " + planetName;
-    }
-}
-
-// Use such objects as items
-List<Planet> planets = new ArrayList<>();
-planets.add(new Planet("Mercury"));
-planets.add(new Planet("Venus"));
-planets.add(new Planet("Earth"));
-
-select.setItems(planets);
-----
-
 Using a field of a item as caption: the caption is retrieved using the
-[interfacename]#ItemCaptionGenerator# typically given as Java 8 lambda.
-
-[source, java]
-----
-// A class that implements toString()
-class Planet implements Serializable {
-    Integer id;
-    String planetName;
-
-    Planet(Integer id, String name) {
-        this.id = id
-        this.planetName = name;
-    }
-
-    public String toString () {
-        return "The Planet " + planetName;
-    }
-
-    public Integer getId () {
-        return id;
-    }
-
-
-    public String getName () {
-        return planetName;
-    }
-
-}
-
-// Put some example data
-List<Planet> planets = new ArrayList<>();
-planets.add(new Planet(1, "Mercury"));
-planets.add(new Planet(2, "Venus"));
-planets.add(new Planet(3, "Earth"));
-planets.add(new Planet(4, "Mars"));
-
-// Create a selection component
-ComboBox<Planet> select =
-    new ComboBox<>("Planets");
-
-// Set the caption generator to read the
-// caption directly from the 'name'
-// property of the bean
-select.setItemCaptionGenerator(Planet::getName);
-----
+[interfacename]#ItemCaptionGenerator# typically given as a lambda or a method reference.
 
 
 [[components.selection.item-icons]]
@@ -178,67 +105,14 @@ support images inside the native [literal]#++select++#
 elements.
 
 
-[[components.selection.newitems]]
-== Allowing Adding New Items
-
-[classname]#ComboBox# allows the user to add new items, when the user types
-in a value and presses kbd:[Enter]. You need to enable this with
-[methodname]#setNewItemHandler()#.
-
-Adding new items is not possible if the selection component is read-only. An
-attempt to do so may result in an exception.
-
-[[components.selection.newitems.handling]]
-=== Handling New Items
-
-Adding new items is handled by a [interfacename]#NewItemHandler#, which gets the
-item caption string as parameter for the [methodname]#accept(String)# method.
-
-ifdef::web[]
-
-[source, java]
-----
-// List of planets
-List<Planet> planets = new ArrayList<>();
-planets.add(new Planet(1, "Mercury"));
-planets.add(new Planet(2, "Venus"));
-planets.add(new Planet(3, "Earth"));
-planets.add(new Planet(4, "Mars"));
-
-ComboBox<Planet> select =
-    new ComboBox<>("Select or Add a Planet");
-select.setItems(planets);
-
-// Use the name property for item captions
-select.setItemCaptionGenerator(Planet::getName);
-
-// Allow adding new items and add
-// handling for new items
-select.setNewItemHandler(inputString -> {
-
-    // Create a new bean - can't set all properties
-    Planet newPlanet = new Planet(0, inputString);
-    planets.add(newPlanet);
-
-    // Update combobox content
-    select.setItems(planets);
-
-    // Remember to set the selection to the new item
-    select.select(newPlanet);
-
-    Notification.show("Added new planet called " +
-                      inputString);
-});
-
-
 [[components.selection.getset]]
 == Getting and Setting Selection
 
 For a better overview on how selection works, see link:../datamodel/datamodel-selection.asciidoc[Selecting items]
 
 You can get selected the item with [methodname]#getValue()# of the
-[classname]#HasValue# interface that returns either a single selected item
-(case of `SingleSelect`) or a collection of selected items (case of `MultiSelect`).
+[interfacename]#HasValue# interface that returns either a single selected item
+(case of [interfacename]#SingleSelect#) or a collection of selected items (case of [interfacename]#MultiSelect#).
 You can select an item with the corresponding [methodname]#setValue()# method.
 
 The [classname]#ComboBox# and [classname]#NativeSelect# will show empty
@@ -246,14 +120,14 @@ selection when no actual item is selected.
 
 
 [[components.selection.valuechange]]
-== Handling Selection Changes
+== Handling Selection Events
 
-You can access the currently selected item with the [methodname]#getValue()# (`SingleSelect`) or
-[methodname]#getSelectedItems()# (`MultiSelect`) method of the component. Also, when
-handling selection changes with a
+You can access the currently selected item with the [methodname]#getValue()# ([interfacename]#SingleSelect#) or
+[methodname]#getSelectedItems()# ([interfacename]#MultiSelect#) method of the component. Also, when
+handling selection events with a
 [classname]#SelectionListener#, the
 [classname]#SelectionEvent# will have the selected items of the event. Single- and Multiselect
-components have their own more specific listener and event types, `SingleSelectionListener` for `SingleSelectionEvent` and `MultiSelectionListener` for `MultiSelectionEvent` respectively. Both can be added with the `addSelectionListener` method.
+components have their own more specific listener and event types, [interfacename]#SingleSelectionListener# for [classname]#SingleSelectionEvent# and [interfacename]#MultiSelectionListener# for [classname]#MultiSelectionEvent# respectively. Both can be added with the [methodname]#addSelectionListener# method.
 
 
 [source, java]
@@ -262,7 +136,7 @@ components have their own more specific listener and event types, `SingleSelecti
 ComboBox<String> select = new ComboBox<>("My Select");
 select.setItems("Io", "Europa", "Ganymedes", "Callisto");
 
-// Handle selection change
+// Handle selection event
 select.addSelectionListener(event ->
     layout.addComponent(new Label("Selected " +
         event.getSelectedItem().orElse("none")));
@@ -276,10 +150,6 @@ The result of user interaction is shown in
 image::img/select-selected1.png[width=30%, scaledwidth=40%]
 
 
-----
-endif::web[]
-
-
 [[components.selection.multiple]]
 == Multiple Selection
 
@@ -290,12 +160,12 @@ Some selection components, such as [classname]#CheckBoxGroup#,
 they extend [classname]#AbstractMultiSelect# class.
 
 
-Multiselect components use the `MultiSelect` interface which extends `HasValue`.
-This provides more fine grained API for selection. You can get and set the selection with the [methodname]#MultiSelect.getSelectedItems()# and
-[methodname]#SelectionModel.Multi.selectItems()# methods.
+Multiselect components use the [interfacename]#MultiSelect# interface which extends [interfacename]#HasValue#.
+This provides more fine grained API for selection. You can get and set the selection with the [methodname]#getSelectedItems()# and
+[methodname]#select()# methods.
 
-A change in the selection will trigger a [classname]#SelectionChange#, which
-you can handle with a [classname]#SelectionChangeListener#. The
+A change in the selection will trigger a [classname]#SelectionEvent#, which
+you can handle with a [classname]#SelectionListener#. The
 following example shows how to handle selection changes with a listener.
 
 
index 1b543ed2ff6a8bbd63cbc2ccc9157b8d1fe46721..b0f00368db2ad9339ff19a875ab5da36a21f80dd 100644 (file)
@@ -49,8 +49,7 @@ See the http://demo.vaadin.com/book-examples-vaadin7/book#component.textfield.in
 
 [classname]#TextField# edits [classname]#String# values, but you can use [classname]#Binder#
 to bind it to any property type that has a proper converter, as described in
-<<dummy/../../../framework/datamodel/datamodel-properties#datamodel.properties.converter,"Converting
-Between Property Type and Representation">>.
+<<dummy/../../../framework/datamodel/datamodel-forms.asciidoc#datamodel.forms.conversion,"Conversion">>.
 
 Much of the API of [classname]#TextField# is defined in
 [classname]#AbstractTextField#, which allows different kinds of text input
diff --git a/documentation/components/img/features-locale-selection.png b/documentation/components/img/features-locale-selection.png
deleted file mode 100644 (file)
index c791aa2..0000000
Binary files a/documentation/components/img/features-locale-selection.png and /dev/null differ
diff --git a/documentation/components/img/features-visible-simple.png b/documentation/components/img/features-visible-simple.png
deleted file mode 100644 (file)
index bb4efaf..0000000
Binary files a/documentation/components/img/features-visible-simple.png and /dev/null differ
diff --git a/documentation/components/img/field-interface-hi.png b/documentation/components/img/field-interface-hi.png
deleted file mode 100644 (file)
index 1b6579b..0000000
Binary files a/documentation/components/img/field-interface-hi.png and /dev/null differ
diff --git a/documentation/components/img/field-interface-lo.png b/documentation/components/img/field-interface-lo.png
deleted file mode 100644 (file)
index 906dab7..0000000
Binary files a/documentation/components/img/field-interface-lo.png and /dev/null differ
diff --git a/documentation/components/img/table-cellstylegenerator1.png b/documentation/components/img/table-cellstylegenerator1.png
deleted file mode 100644 (file)
index a23bc6d..0000000
Binary files a/documentation/components/img/table-cellstylegenerator1.png and /dev/null differ
diff --git a/documentation/components/img/table-column-collapsing.png b/documentation/components/img/table-column-collapsing.png
deleted file mode 100644 (file)
index 5142fe0..0000000
Binary files a/documentation/components/img/table-column-collapsing.png and /dev/null differ
diff --git a/documentation/components/img/table-column-resize.png b/documentation/components/img/table-column-resize.png
deleted file mode 100644 (file)
index 86af196..0000000
Binary files a/documentation/components/img/table-column-resize.png and /dev/null differ
diff --git a/documentation/components/img/table-columnformatting.png b/documentation/components/img/table-columnformatting.png
deleted file mode 100644 (file)
index d5549b8..0000000
Binary files a/documentation/components/img/table-columnformatting.png and /dev/null differ
diff --git a/documentation/components/img/table-components.png b/documentation/components/img/table-components.png
deleted file mode 100644 (file)
index e0071f9..0000000
Binary files a/documentation/components/img/table-components.png and /dev/null differ
diff --git a/documentation/components/img/table-editable3.png b/documentation/components/img/table-editable3.png
deleted file mode 100644 (file)
index 610699e..0000000
Binary files a/documentation/components/img/table-editable3.png and /dev/null differ
diff --git a/documentation/components/img/table-example1.png b/documentation/components/img/table-example1.png
deleted file mode 100644 (file)
index 3d091cf..0000000
Binary files a/documentation/components/img/table-example1.png and /dev/null differ
diff --git a/documentation/components/img/table-example2.png b/documentation/components/img/table-example2.png
deleted file mode 100644 (file)
index f6830ff..0000000
Binary files a/documentation/components/img/table-example2.png and /dev/null differ
diff --git a/documentation/components/img/table-footer.png b/documentation/components/img/table-footer.png
deleted file mode 100644 (file)
index fdc2c09..0000000
Binary files a/documentation/components/img/table-footer.png and /dev/null differ
diff --git a/documentation/components/img/table-generatedcolumns1.png b/documentation/components/img/table-generatedcolumns1.png
deleted file mode 100644 (file)
index 11e7931..0000000
Binary files a/documentation/components/img/table-generatedcolumns1.png and /dev/null differ
diff --git a/documentation/components/img/table-generatedcolumns2.png b/documentation/components/img/table-generatedcolumns2.png
deleted file mode 100644 (file)
index 0e0b42e..0000000
Binary files a/documentation/components/img/table-generatedcolumns2.png and /dev/null differ
diff --git a/documentation/components/img/treetable-basic.png b/documentation/components/img/treetable-basic.png
deleted file mode 100644 (file)
index 36caa81..0000000
Binary files a/documentation/components/img/treetable-basic.png and /dev/null differ
diff --git a/documentation/components/original-drawings/field-interface.svg b/documentation/components/original-drawings/field-interface.svg
deleted file mode 100644 (file)
index 205bbe1..0000000
+++ /dev/null
@@ -1,1222 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>\r
-<!-- Created with Inkscape (http://www.inkscape.org/) -->\r
-<svg\r
-   xmlns:dc="http://purl.org/dc/elements/1.1/"\r
-   xmlns:cc="http://creativecommons.org/ns#"\r
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\r
-   xmlns:svg="http://www.w3.org/2000/svg"\r
-   xmlns="http://www.w3.org/2000/svg"\r
-   xmlns:xlink="http://www.w3.org/1999/xlink"\r
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"\r
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"\r
-   width="744.09448"\r
-   height="1052.3622"\r
-   id="svg2475"\r
-   sodipodi:version="0.32"\r
-   inkscape:version="0.46"\r
-   sodipodi:docname="field-interface.svg"\r
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"\r
-   inkscape:export-filename="/home/magi/itmill/doc/cheatsheet/vaadin-cheatsheet.png"\r
-   inkscape:export-xdpi="300.01001"\r
-   inkscape:export-ydpi="300.01001"\r
-   version="1.0">\r
-  <sodipodi:namedview\r
-     id="base"\r
-     pagecolor="#ffffff"\r
-     bordercolor="#666666"\r
-     borderopacity="1.0"\r
-     gridtolerance="10000"\r
-     guidetolerance="10"\r
-     objecttolerance="10"\r
-     inkscape:pageopacity="0.0"\r
-     inkscape:pageshadow="2"\r
-     inkscape:zoom="1.6970563"\r
-     inkscape:cx="543.70494"\r
-     inkscape:cy="597.63673"\r
-     inkscape:document-units="mm"\r
-     inkscape:current-layer="layer1"\r
-     showgrid="true"\r
-     inkscape:window-width="1680"\r
-     inkscape:window-height="1026"\r
-     inkscape:window-x="1280"\r
-     inkscape:window-y="0"\r
-     inkscape:snap-nodes="true"\r
-     inkscape:snap-bbox="true"\r
-     units="mm"\r
-     inkscape:snap-global="true">\r
-    <inkscape:grid\r
-       spacingy="1mm"\r
-       spacingx="1mm"\r
-       empspacing="5"\r
-       units="mm"\r
-       enabled="true"\r
-       visible="true"\r
-       id="grid4674"\r
-       type="xygrid"\r
-       dotted="false" />\r
-  </sodipodi:namedview>\r
-  <defs\r
-     id="defs2477">\r
-    <linearGradient\r
-       id="linearGradient4410">\r
-      <stop\r
-         style="stop-color:#ffffff;stop-opacity:0;"\r
-         offset="0"\r
-         id="stop4412" />\r
-      <stop\r
-         style="stop-color:#ffffff;stop-opacity:1;"\r
-         offset="1"\r
-         id="stop4414" />\r
-    </linearGradient>\r
-    <marker\r
-       inkscape:stockid="Arrow1Lstart"\r
-       orient="auto"\r
-       refY="0"\r
-       refX="0"\r
-       id="Arrow1Lstart"\r
-       style="overflow:visible">\r
-      <path\r
-         id="path5210"\r
-         d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z"\r
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"\r
-         transform="matrix(0.8,0,0,0.8,10,0)" />\r
-    </marker>\r
-    <marker\r
-       style="overflow:visible"\r
-       id="DotS"\r
-       refX="0"\r
-       refY="0"\r
-       orient="auto"\r
-       inkscape:stockid="DotS">\r
-      <path\r
-         transform="matrix(0.2,0,0,0.2,1.48,0.2)"\r
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"\r
-         d="M -2.5,-1 C -2.5,1.76 -4.74,4 -7.5,4 C -10.26,4 -12.5,1.76 -12.5,-1 C -12.5,-3.76 -10.26,-6 -7.5,-6 C -4.74,-6 -2.5,-3.76 -2.5,-1 z"\r
-         id="path3636" />\r
-    </marker>\r
-    <marker\r
-       inkscape:stockid="TriangleOutS"\r
-       orient="auto"\r
-       refY="0"\r
-       refX="0"\r
-       id="TriangleOutS"\r
-       style="overflow:visible">\r
-      <path\r
-         id="path3717"\r
-         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"\r
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"\r
-         transform="scale(0.2,0.2)" />\r
-    </marker>\r
-    <inkscape:path-effect\r
-       copytype="single_stretched"\r
-       pattern="M 349.202,225.086 L 405.895,331.386 L 370.462,338.472 "\r
-       prop_scale="1"\r
-       id="path-effect2503"\r
-       effect="skeletal" />\r
-    <inkscape:path-effect\r
-       prop_scale="1"\r
-       id="path-effect2499"\r
-       effect="skeletal" />\r
-    <inkscape:path-effect\r
-       pattern-nodetypes="cc"\r
-       pattern="M 432.28346,272.83462 L 403.93701,216.14171"\r
-       prop_scale="1"\r
-       id="path-effect2497"\r
-       effect="skeletal" />\r
-    <marker\r
-       style="overflow:visible"\r
-       id="Arrow1Send"\r
-       refX="0"\r
-       refY="0"\r
-       orient="auto"\r
-       inkscape:stockid="Arrow1Send">\r
-      <path\r
-         transform="matrix(-0.2,0,0,-0.2,-1.2,0)"\r
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"\r
-         d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z"\r
-         id="path3641" />\r
-    </marker>\r
-    <marker\r
-       style="overflow:visible"\r
-       id="Arrow1Lend"\r
-       refX="0"\r
-       refY="0"\r
-       orient="auto"\r
-       inkscape:stockid="Arrow1Lend">\r
-      <path\r
-         transform="matrix(-0.8,0,0,-0.8,-10,0)"\r
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"\r
-         d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z"\r
-         id="path3629" />\r
-    </marker>\r
-    <inkscape:perspective\r
-       sodipodi:type="inkscape:persp3d"\r
-       inkscape:vp_x="0 : 526.18109 : 1"\r
-       inkscape:vp_y="0 : 1000 : 0"\r
-       inkscape:vp_z="744.09448 : 526.18109 : 1"\r
-       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"\r
-       id="perspective3487" />\r
-    <marker\r
-       style="overflow:visible"\r
-       id="Arrow2Sendp"\r
-       refX="0"\r
-       refY="0"\r
-       orient="auto"\r
-       inkscape:stockid="Arrow2Sendp">\r
-      <path\r
-         transform="matrix(-0.3,0,0,-0.3,0.69,0)"\r
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z"\r
-         style="font-size:12px;fill:#f39300;fill-rule:evenodd;stroke:#f39300;stroke-width:0.625;stroke-linejoin:round"\r
-         id="path28139" />\r
-    </marker>\r
-    <marker\r
-       style="overflow:visible"\r
-       id="TriangleOutSK"\r
-       refX="0"\r
-       refY="0"\r
-       orient="auto"\r
-       inkscape:stockid="TriangleOutSK">\r
-      <path\r
-         transform="scale(0.2,0.2)"\r
-         style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"\r
-         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"\r
-         id="path36611" />\r
-    </marker>\r
-    <marker\r
-       style="overflow:visible"\r
-       id="TriangleOutSH"\r
-       refX="0"\r
-       refY="0"\r
-       orient="auto"\r
-       inkscape:stockid="TriangleOutSH">\r
-      <path\r
-         transform="scale(0.2,0.2)"\r
-         style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"\r
-         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"\r
-         id="path36614" />\r
-    </marker>\r
-    <marker\r
-       style="overflow:visible"\r
-       id="TriangleOutSA"\r
-       refX="0"\r
-       refY="0"\r
-       orient="auto"\r
-       inkscape:stockid="TriangleOutSA">\r
-      <path\r
-         transform="scale(0.2,0.2)"\r
-         style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"\r
-         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"\r
-         id="path36617" />\r
-    </marker>\r
-    <marker\r
-       style="overflow:visible"\r
-       id="TriangleOutSKF"\r
-       refX="0"\r
-       refY="0"\r
-       orient="auto"\r
-       inkscape:stockid="TriangleOutSKF">\r
-      <path\r
-         transform="scale(0.2,0.2)"\r
-         style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"\r
-         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"\r
-         id="path36620" />\r
-    </marker>\r
-    <marker\r
-       style="overflow:visible"\r
-       id="TriangleOutS9"\r
-       refX="0"\r
-       refY="0"\r
-       orient="auto"\r
-       inkscape:stockid="TriangleOutS9">\r
-      <path\r
-         transform="scale(0.2,0.2)"\r
-         style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"\r
-         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"\r
-         id="path36623" />\r
-    </marker>\r
-    <marker\r
-       style="overflow:visible"\r
-       id="Arrow2SendpA"\r
-       refX="0"\r
-       refY="0"\r
-       orient="auto"\r
-       inkscape:stockid="Arrow2SendpA">\r
-      <path\r
-         transform="matrix(-0.3,0,0,-0.3,0.69,0)"\r
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z"\r
-         style="font-size:12px;fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:0.625;stroke-linejoin:round"\r
-         id="path3396" />\r
-    </marker>\r
-    <marker\r
-       style="overflow:visible"\r
-       id="Arrow2Sendpg"\r
-       refX="0"\r
-       refY="0"\r
-       orient="auto"\r
-       inkscape:stockid="Arrow2Sendpg">\r
-      <path\r
-         transform="matrix(-0.3,0,0,-0.3,0.69,0)"\r
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z"\r
-         style="font-size:12px;fill:#fcc988;fill-rule:evenodd;stroke:#fcc988;stroke-width:0.625;stroke-linejoin:round"\r
-         id="path3360" />\r
-    </marker>\r
-    <filter\r
-       id="filter2780"\r
-       inkscape:label="White Halo"\r
-       width="1.1"\r
-       height="1.1">\r
-      <feMorphology\r
-         id="feMorphology2782"\r
-         operator="dilate"\r
-         radius="3"\r
-         result="result0" />\r
-      <feFlood\r
-         id="feFlood2786"\r
-         flood-color="rgb(255,255,255)"\r
-         flood-opacity="1"\r
-         in="result0"\r
-         result="result3" />\r
-      <feComposite\r
-         id="feComposite2623"\r
-         in="result3"\r
-         in2="result0"\r
-         operator="in"\r
-         result="result4" />\r
-      <feMerge\r
-         id="feMerge2629">\r
-        <feMergeNode\r
-           inkscape:collect="always"\r
-           id="feMergeNode2631"\r
-           in="result4" />\r
-        <feMergeNode\r
-           inkscape:collect="always"\r
-           id="feMergeNode2633"\r
-           in="SourceGraphic" />\r
-      </feMerge>\r
-    </filter>\r
-    <marker\r
-       inkscape:stockid="TriangleOutSn"\r
-       orient="auto"\r
-       refY="0"\r
-       refX="0"\r
-       id="TriangleOutSn"\r
-       style="overflow:visible">\r
-      <path\r
-         id="path4441"\r
-         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"\r
-         style="fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:1pt;marker-start:none"\r
-         transform="scale(0.2,0.2)" />\r
-    </marker>\r
-    <marker\r
-       inkscape:stockid="TriangleOutS9F"\r
-       orient="auto"\r
-       refY="0"\r
-       refX="0"\r
-       id="TriangleOutS9F"\r
-       style="overflow:visible">\r
-      <path\r
-         id="path4444"\r
-         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"\r
-         style="fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:1pt;marker-start:none"\r
-         transform="scale(0.2,0.2)" />\r
-    </marker>\r
-    <marker\r
-       inkscape:stockid="TriangleOutSI"\r
-       orient="auto"\r
-       refY="0"\r
-       refX="0"\r
-       id="TriangleOutSI"\r
-       style="overflow:visible">\r
-      <path\r
-         id="path4447"\r
-         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"\r
-         style="fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:1pt;marker-start:none"\r
-         transform="scale(0.2,0.2)" />\r
-    </marker>\r
-    <marker\r
-       inkscape:stockid="TriangleOutSO"\r
-       orient="auto"\r
-       refY="0"\r
-       refX="0"\r
-       id="TriangleOutSO"\r
-       style="overflow:visible">\r
-      <path\r
-         id="path4450"\r
-         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"\r
-         style="fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:1pt;marker-start:none"\r
-         transform="scale(0.2,0.2)" />\r
-    </marker>\r
-    <marker\r
-       inkscape:stockid="TriangleOutSW"\r
-       orient="auto"\r
-       refY="0"\r
-       refX="0"\r
-       id="TriangleOutSW"\r
-       style="overflow:visible">\r
-      <path\r
-         id="path4453"\r
-         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"\r
-         style="fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:1pt;marker-start:none"\r
-         transform="scale(0.2,0.2)" />\r
-    </marker>\r
-    <marker\r
-       inkscape:stockid="TriangleOutSB"\r
-       orient="auto"\r
-       refY="0"\r
-       refX="0"\r
-       id="TriangleOutSB"\r
-       style="overflow:visible">\r
-      <path\r
-         id="path4456"\r
-         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"\r
-         style="fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:1pt;marker-start:none"\r
-         transform="scale(0.2,0.2)" />\r
-    </marker>\r
-    <marker\r
-       inkscape:stockid="TriangleOutSZ"\r
-       orient="auto"\r
-       refY="0"\r
-       refX="0"\r
-       id="TriangleOutSZ"\r
-       style="overflow:visible">\r
-      <path\r
-         id="path4459"\r
-         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"\r
-         style="fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:1pt;marker-start:none"\r
-         transform="scale(0.2,0.2)" />\r
-    </marker>\r
-    <marker\r
-       style="overflow:visible"\r
-       id="DotSq"\r
-       refX="0"\r
-       refY="0"\r
-       orient="auto"\r
-       inkscape:stockid="DotSq">\r
-      <path\r
-         transform="matrix(0.2,0,0,0.2,1.48,0.2)"\r
-         style="fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:1pt;marker-start:none;marker-end:none"\r
-         d="M -2.5,-1 C -2.5,1.76 -4.74,4 -7.5,4 C -10.26,4 -12.5,1.76 -12.5,-1 C -12.5,-3.76 -10.26,-6 -7.5,-6 C -4.74,-6 -2.5,-3.76 -2.5,-1 z"\r
-         id="path5853" />\r
-    </marker>\r
-    <marker\r
-       inkscape:stockid="TriangleOutSBO"\r
-       orient="auto"\r
-       refY="0"\r
-       refX="0"\r
-       id="TriangleOutSBO"\r
-       style="overflow:visible">\r
-      <path\r
-         id="path7501"\r
-         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"\r
-         style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"\r
-         transform="scale(0.2,0.2)" />\r
-    </marker>\r
-    <marker\r
-       style="overflow:visible"\r
-       id="DotSu"\r
-       refX="0"\r
-       refY="0"\r
-       orient="auto"\r
-       inkscape:stockid="DotSu">\r
-      <path\r
-         transform="matrix(0.2,0,0,0.2,1.48,0.2)"\r
-         style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none;marker-end:none"\r
-         d="M -2.5,-1 C -2.5,1.76 -4.74,4 -7.5,4 C -10.26,4 -12.5,1.76 -12.5,-1 C -12.5,-3.76 -10.26,-6 -7.5,-6 C -4.74,-6 -2.5,-3.76 -2.5,-1 z"\r
-         id="path9463" />\r
-    </marker>\r
-    <filter\r
-       height="1.1"\r
-       width="1.1"\r
-       inkscape:label="Black Halo"\r
-       id="filter10694">\r
-      <feMorphology\r
-         result="result0"\r
-         radius="3"\r
-         operator="dilate"\r
-         id="feMorphology10696" />\r
-      <feFlood\r
-         result="result3"\r
-         in="result0"\r
-         flood-opacity="1"\r
-         flood-color="rgb(0,0,0)"\r
-         id="feFlood10698" />\r
-      <feComposite\r
-         result="result4"\r
-         operator="in"\r
-         in2="result0"\r
-         in="result3"\r
-         id="feComposite10700" />\r
-      <feMerge\r
-         id="feMerge10702">\r
-        <feMergeNode\r
-           in="result4"\r
-           id="feMergeNode10704"\r
-           inkscape:collect="always" />\r
-        <feMergeNode\r
-           in="SourceGraphic"\r
-           id="feMergeNode10706"\r
-           inkscape:collect="always" />\r
-      </feMerge>\r
-    </filter>\r
-    <marker\r
-       inkscape:stockid="TriangleOutSu"\r
-       orient="auto"\r
-       refY="0"\r
-       refX="0"\r
-       id="TriangleOutSu"\r
-       style="overflow:visible">\r
-      <path\r
-         id="path8127"\r
-         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"\r
-         style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"\r
-         transform="scale(0.2,0.2)" />\r
-    </marker>\r
-    <marker\r
-       inkscape:stockid="TriangleOutSI8"\r
-       orient="auto"\r
-       refY="0"\r
-       refX="0"\r
-       id="TriangleOutSI8"\r
-       style="overflow:visible">\r
-      <path\r
-         id="path8130"\r
-         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"\r
-         style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"\r
-         transform="scale(0.2,0.2)" />\r
-    </marker>\r
-    <marker\r
-       inkscape:stockid="TriangleOutSr"\r
-       orient="auto"\r
-       refY="0"\r
-       refX="0"\r
-       id="TriangleOutSr"\r
-       style="overflow:visible">\r
-      <path\r
-         id="path8133"\r
-         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"\r
-         style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"\r
-         transform="scale(0.2,0.2)" />\r
-    </marker>\r
-    <marker\r
-       inkscape:stockid="TriangleOutSM"\r
-       orient="auto"\r
-       refY="0"\r
-       refX="0"\r
-       id="TriangleOutSM"\r
-       style="overflow:visible">\r
-      <path\r
-         id="path8136"\r
-         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"\r
-         style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"\r
-         transform="scale(0.2,0.2)" />\r
-    </marker>\r
-    <marker\r
-       inkscape:stockid="TriangleOutSb"\r
-       orient="auto"\r
-       refY="0"\r
-       refX="0"\r
-       id="TriangleOutSb"\r
-       style="overflow:visible">\r
-      <path\r
-         id="path8139"\r
-         d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"\r
-         style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"\r
-         transform="scale(0.2,0.2)" />\r
-    </marker>\r
-    <marker\r
-       id="marker18095"\r
-       orient="auto"\r
-       markerHeight="5.7450776"\r
-       markerWidth="4.6297302">\r
-      <g\r
-         id="g11064"\r
-         transform="matrix(0.5,0,0,0.5,-185.64298,-257.19655)">\r
-        <path\r
-           sodipodi:nodetypes="csccccccsccssssssssssssssccc"\r
-           id="path11050"\r
-           d="M 370,508.65625 C 369.13933,508.715 368.39056,509.27755 368.09375,510.09375 C 367.82399,510.83551 368.03605,511.62868 368.53125,512.21875 L 366.78125,512.21875 C 366.73884,512.21408 366.69882,512.22093 366.65625,512.21875 L 366.65625,516.59375 L 366.78125,516.59375 L 368.53125,516.59375 C 367.85229,517.45345 367.83424,518.70924 368.625,519.5 C 369.47591,520.35091 370.89909,520.35091 371.75,519.5 L 375.09375,516.125 C 375.12672,516.09552 375.15802,516.06422 375.1875,516.03125 C 375.21972,516.01191 375.25101,515.99105 375.28125,515.96875 C 375.28162,515.96839 375.49976,515.68796 375.5,515.6875 C 375.50005,515.68741 375.49338,515.64282 375.5,515.625 C 375.5011,515.62203 375.53002,515.62832 375.53125,515.625 C 375.57039,515.57293 375.58228,515.57321 375.625,515.5 C 375.76199,515.26524 375.79184,515.12809 375.78125,515.15625 C 375.81807,515.06473 375.79977,515.04374 375.8125,515 C 375.82311,514.98978 375.83353,514.97936 375.84375,514.96875 C 375.90379,514.74477 375.93181,514.45186 375.90625,514.1875 C 375.89266,513.98387 375.84739,513.88985 375.84375,513.875 C 375.84389,513.86458 375.84389,513.85417 375.84375,513.84375 C 375.86975,513.94071 375.85901,513.85978 375.75,513.59375 C 375.69753,513.46336 375.66014,513.37439 375.625,513.3125 C 375.57262,513.22275 375.49154,513.05015 375.28125,512.84375 L 371.75,509.3125 C 371.29355,508.82579 370.66491,508.60087 370,508.65625 z"\r
-           style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" />\r
-        <path\r
-           sodipodi:nodetypes="cccscccsssssssscccsccc"\r
-           id="path11035"\r
-           d="M 366.65625,515.40625 L 371.28125,515.40625 L 369.46875,517.21875 C 369.0718,517.6157 369.0718,518.2593 369.46875,518.65625 C 369.8657,519.0532 370.5093,519.0532 370.90625,518.65625 L 374.34375,515.1875 L 374.4375,515.125 C 374.44343,515.11918 374.43171,515.09972 374.4375,515.09375 C 374.49291,515.03659 374.5526,514.97676 374.59375,514.90625 C 374.62239,514.85717 374.63663,514.80216 374.65625,514.75 C 374.66861,514.71928 374.67831,514.68783 374.6875,514.65625 C 374.71862,514.54015 374.73024,514.43132 374.71875,514.3125 C 374.71489,514.25466 374.70138,514.21285 374.6875,514.15625 C 374.6766,514.1156 374.67237,514.07059 374.65625,514.03125 C 374.63982,513.99042 374.61578,513.94505 374.59375,513.90625 C 374.5483,513.82838 374.50015,513.74899 374.4375,513.6875 L 370.90625,510.15625 C 370.69734,509.93349 370.39809,509.8184 370.09375,509.84375 C 369.69897,509.8707 369.35398,510.12813 369.21875,510.5 C 369.08351,510.87187 369.18349,511.28826 369.46875,511.5625 L 371.34375,513.40625 L 366.65625,513.40625"\r
-           style="fill:#49c2f1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />\r
-      </g>\r
-    </marker>\r
-    <marker\r
-       id="marker44971"\r
-       orient="auto"\r
-       markerHeight="5.7450781"\r
-       markerWidth="4.6297355">\r
-      <g\r
-         id="g18059"\r
-         transform="matrix(0.5,0,0,0.5,-185.64299,-257.19655)">\r
-        <path\r
-           sodipodi:nodetypes="csccccccsccssssssssssssssccc"\r
-           id="path18061"\r
-           d="M 370,508.65625 C 369.13933,508.715 368.39056,509.27755 368.09375,510.09375 C 367.82399,510.83551 368.03605,511.62868 368.53125,512.21875 L 366.78125,512.21875 C 366.73884,512.21408 366.69882,512.22093 366.65625,512.21875 L 366.65625,516.59375 L 366.78125,516.59375 L 368.53125,516.59375 C 367.85229,517.45345 367.83424,518.70924 368.625,519.5 C 369.47591,520.35091 370.89909,520.35091 371.75,519.5 L 375.09375,516.125 C 375.12672,516.09552 375.15802,516.06422 375.1875,516.03125 C 375.21972,516.01191 375.25101,515.99105 375.28125,515.96875 C 375.28162,515.96839 375.49976,515.68796 375.5,515.6875 C 375.50005,515.68741 375.49338,515.64282 375.5,515.625 C 375.5011,515.62203 375.53002,515.62832 375.53125,515.625 C 375.57039,515.57293 375.58228,515.57321 375.625,515.5 C 375.76199,515.26524 375.79184,515.12809 375.78125,515.15625 C 375.81807,515.06473 375.79977,515.04374 375.8125,515 C 375.82311,514.98978 375.83353,514.97936 375.84375,514.96875 C 375.90379,514.74477 375.93181,514.45186 375.90625,514.1875 C 375.89266,513.98387 375.84739,513.88985 375.84375,513.875 C 375.84389,513.86458 375.84389,513.85417 375.84375,513.84375 C 375.86975,513.94071 375.85901,513.85978 375.75,513.59375 C 375.69753,513.46336 375.66014,513.37439 375.625,513.3125 C 375.57262,513.22275 375.49154,513.05015 375.28125,512.84375 L 371.75,509.3125 C 371.29355,508.82579 370.66491,508.60087 370,508.65625 z"\r
-           style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" />\r
-        <path\r
-           sodipodi:nodetypes="cccscccsssssssscccsccc"\r
-           id="path18063"\r
-           d="M 366.65625,515.40625 L 371.28125,515.40625 L 369.46875,517.21875 C 369.0718,517.6157 369.0718,518.2593 369.46875,518.65625 C 369.8657,519.0532 370.5093,519.0532 370.90625,518.65625 L 374.34375,515.1875 L 374.4375,515.125 C 374.44343,515.11918 374.43171,515.09972 374.4375,515.09375 C 374.49291,515.03659 374.5526,514.97676 374.59375,514.90625 C 374.62239,514.85717 374.63663,514.80216 374.65625,514.75 C 374.66861,514.71928 374.67831,514.68783 374.6875,514.65625 C 374.71862,514.54015 374.73024,514.43132 374.71875,514.3125 C 374.71489,514.25466 374.70138,514.21285 374.6875,514.15625 C 374.6766,514.1156 374.67237,514.07059 374.65625,514.03125 C 374.63982,513.99042 374.61578,513.94505 374.59375,513.90625 C 374.5483,513.82838 374.50015,513.74899 374.4375,513.6875 L 370.90625,510.15625 C 370.69734,509.93349 370.39809,509.8184 370.09375,509.84375 C 369.69897,509.8707 369.35398,510.12813 369.21875,510.5 C 369.08351,510.87187 369.18349,511.28826 369.46875,511.5625 L 371.34375,513.40625 L 366.65625,513.40625"\r
-           style="fill:#d9d9cd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />\r
-      </g>\r
-    </marker>\r
-    <marker\r
-       id="marker52016"\r
-       orient="auto"\r
-       markerHeight="5.7450786"\r
-       markerWidth="4.6297302">\r
-      <g\r
-         id="g52010"\r
-         transform="matrix(0.5,0,0,0.5,-185.64299,-257.19655)">\r
-        <path\r
-           sodipodi:nodetypes="csccccccsccssssssssssssssccc"\r
-           id="path52012"\r
-           d="M 370,508.65625 C 369.13933,508.715 368.39056,509.27755 368.09375,510.09375 C 367.82399,510.83551 368.03605,511.62868 368.53125,512.21875 L 366.78125,512.21875 C 366.73884,512.21408 366.69882,512.22093 366.65625,512.21875 L 366.65625,516.59375 L 366.78125,516.59375 L 368.53125,516.59375 C 367.85229,517.45345 367.83424,518.70924 368.625,519.5 C 369.47591,520.35091 370.89909,520.35091 371.75,519.5 L 375.09375,516.125 C 375.12672,516.09552 375.15802,516.06422 375.1875,516.03125 C 375.21972,516.01191 375.25101,515.99105 375.28125,515.96875 C 375.28162,515.96839 375.49976,515.68796 375.5,515.6875 C 375.50005,515.68741 375.49338,515.64282 375.5,515.625 C 375.5011,515.62203 375.53002,515.62832 375.53125,515.625 C 375.57039,515.57293 375.58228,515.57321 375.625,515.5 C 375.76199,515.26524 375.79184,515.12809 375.78125,515.15625 C 375.81807,515.06473 375.79977,515.04374 375.8125,515 C 375.82311,514.98978 375.83353,514.97936 375.84375,514.96875 C 375.90379,514.74477 375.93181,514.45186 375.90625,514.1875 C 375.89266,513.98387 375.84739,513.88985 375.84375,513.875 C 375.84389,513.86458 375.84389,513.85417 375.84375,513.84375 C 375.86975,513.94071 375.85901,513.85978 375.75,513.59375 C 375.69753,513.46336 375.66014,513.37439 375.625,513.3125 C 375.57262,513.22275 375.49154,513.05015 375.28125,512.84375 L 371.75,509.3125 C 371.29355,508.82579 370.66491,508.60087 370,508.65625 z"\r
-           style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" />\r
-        <path\r
-           sodipodi:nodetypes="cccscccsssssssscccsccc"\r
-           id="path52014"\r
-           d="M 366.65625,515.40625 L 371.28125,515.40625 L 369.46875,517.21875 C 369.0718,517.6157 369.0718,518.2593 369.46875,518.65625 C 369.8657,519.0532 370.5093,519.0532 370.90625,518.65625 L 374.34375,515.1875 L 374.4375,515.125 C 374.44343,515.11918 374.43171,515.09972 374.4375,515.09375 C 374.49291,515.03659 374.5526,514.97676 374.59375,514.90625 C 374.62239,514.85717 374.63663,514.80216 374.65625,514.75 C 374.66861,514.71928 374.67831,514.68783 374.6875,514.65625 C 374.71862,514.54015 374.73024,514.43132 374.71875,514.3125 C 374.71489,514.25466 374.70138,514.21285 374.6875,514.15625 C 374.6766,514.1156 374.67237,514.07059 374.65625,514.03125 C 374.63982,513.99042 374.61578,513.94505 374.59375,513.90625 C 374.5483,513.82838 374.50015,513.74899 374.4375,513.6875 L 370.90625,510.15625 C 370.69734,509.93349 370.39809,509.8184 370.09375,509.84375 C 369.69897,509.8707 369.35398,510.12813 369.21875,510.5 C 369.08351,510.87187 369.18349,511.28826 369.46875,511.5625 L 371.34375,513.40625 L 366.65625,513.40625"\r
-           style="fill:#f39300;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />\r
-      </g>\r
-    </marker>\r
-    <marker\r
-       id="marker64887"\r
-       orient="auto"\r
-       markerHeight="5.745079"\r
-       markerWidth="4.6297255">\r
-      <g\r
-         id="g64855"\r
-         transform="matrix(0.5,0,0,0.5,-185.64299,-257.19655)">\r
-        <path\r
-           sodipodi:nodetypes="csccccccsccssssssssssssssccc"\r
-           id="path64857"\r
-           d="M 370,508.65625 C 369.13933,508.715 368.39056,509.27755 368.09375,510.09375 C 367.82399,510.83551 368.03605,511.62868 368.53125,512.21875 L 366.78125,512.21875 C 366.73884,512.21408 366.69882,512.22093 366.65625,512.21875 L 366.65625,516.59375 L 366.78125,516.59375 L 368.53125,516.59375 C 367.85229,517.45345 367.83424,518.70924 368.625,519.5 C 369.47591,520.35091 370.89909,520.35091 371.75,519.5 L 375.09375,516.125 C 375.12672,516.09552 375.15802,516.06422 375.1875,516.03125 C 375.21972,516.01191 375.25101,515.99105 375.28125,515.96875 C 375.28162,515.96839 375.49976,515.68796 375.5,515.6875 C 375.50005,515.68741 375.49338,515.64282 375.5,515.625 C 375.5011,515.62203 375.53002,515.62832 375.53125,515.625 C 375.57039,515.57293 375.58228,515.57321 375.625,515.5 C 375.76199,515.26524 375.79184,515.12809 375.78125,515.15625 C 375.81807,515.06473 375.79977,515.04374 375.8125,515 C 375.82311,514.98978 375.83353,514.97936 375.84375,514.96875 C 375.90379,514.74477 375.93181,514.45186 375.90625,514.1875 C 375.89266,513.98387 375.84739,513.88985 375.84375,513.875 C 375.84389,513.86458 375.84389,513.85417 375.84375,513.84375 C 375.86975,513.94071 375.85901,513.85978 375.75,513.59375 C 375.69753,513.46336 375.66014,513.37439 375.625,513.3125 C 375.57262,513.22275 375.49154,513.05015 375.28125,512.84375 L 371.75,509.3125 C 371.29355,508.82579 370.66491,508.60087 370,508.65625 z"\r
-           style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" />\r
-        <path\r
-           sodipodi:nodetypes="cccscccsssssssscccsccc"\r
-           id="path64859"\r
-           d="M 366.65625,515.40625 L 371.28125,515.40625 L 369.46875,517.21875 C 369.0718,517.6157 369.0718,518.2593 369.46875,518.65625 C 369.8657,519.0532 370.5093,519.0532 370.90625,518.65625 L 374.34375,515.1875 L 374.4375,515.125 C 374.44343,515.11918 374.43171,515.09972 374.4375,515.09375 C 374.49291,515.03659 374.5526,514.97676 374.59375,514.90625 C 374.62239,514.85717 374.63663,514.80216 374.65625,514.75 C 374.66861,514.71928 374.67831,514.68783 374.6875,514.65625 C 374.71862,514.54015 374.73024,514.43132 374.71875,514.3125 C 374.71489,514.25466 374.70138,514.21285 374.6875,514.15625 C 374.6766,514.1156 374.67237,514.07059 374.65625,514.03125 C 374.63982,513.99042 374.61578,513.94505 374.59375,513.90625 C 374.5483,513.82838 374.50015,513.74899 374.4375,513.6875 L 370.90625,510.15625 C 370.69734,509.93349 370.39809,509.8184 370.09375,509.84375 C 369.69897,509.8707 369.35398,510.12813 369.21875,510.5 C 369.08351,510.87187 369.18349,511.28826 369.46875,511.5625 L 371.34375,513.40625 L 366.65625,513.40625"\r
-           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />\r
-      </g>\r
-    </marker>\r
-    <marker\r
-       id="marker4057"\r
-       orient="auto"\r
-       markerHeight="5.745079"\r
-       markerWidth="4.6297302">\r
-      <g\r
-         id="g51986"\r
-         transform="matrix(0.5,0,0,0.5,-185.64299,-257.19655)">\r
-        <path\r
-           sodipodi:nodetypes="csccccccsccssssssssssssssccc"\r
-           id="path51988"\r
-           d="M 370,508.65625 C 369.13933,508.715 368.39056,509.27755 368.09375,510.09375 C 367.82399,510.83551 368.03605,511.62868 368.53125,512.21875 L 366.78125,512.21875 C 366.73884,512.21408 366.69882,512.22093 366.65625,512.21875 L 366.65625,516.59375 L 366.78125,516.59375 L 368.53125,516.59375 C 367.85229,517.45345 367.83424,518.70924 368.625,519.5 C 369.47591,520.35091 370.89909,520.35091 371.75,519.5 L 375.09375,516.125 C 375.12672,516.09552 375.15802,516.06422 375.1875,516.03125 C 375.21972,516.01191 375.25101,515.99105 375.28125,515.96875 C 375.28162,515.96839 375.49976,515.68796 375.5,515.6875 C 375.50005,515.68741 375.49338,515.64282 375.5,515.625 C 375.5011,515.62203 375.53002,515.62832 375.53125,515.625 C 375.57039,515.57293 375.58228,515.57321 375.625,515.5 C 375.76199,515.26524 375.79184,515.12809 375.78125,515.15625 C 375.81807,515.06473 375.79977,515.04374 375.8125,515 C 375.82311,514.98978 375.83353,514.97936 375.84375,514.96875 C 375.90379,514.74477 375.93181,514.45186 375.90625,514.1875 C 375.89266,513.98387 375.84739,513.88985 375.84375,513.875 C 375.84389,513.86458 375.84389,513.85417 375.84375,513.84375 C 375.86975,513.94071 375.85901,513.85978 375.75,513.59375 C 375.69753,513.46336 375.66014,513.37439 375.625,513.3125 C 375.57262,513.22275 375.49154,513.05015 375.28125,512.84375 L 371.75,509.3125 C 371.29355,508.82579 370.66491,508.60087 370,508.65625 z"\r
-           style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" />\r
-        <path\r
-           sodipodi:nodetypes="cccscccsssssssscccsccc"\r
-           id="path51990"\r
-           d="M 366.65625,515.40625 L 371.28125,515.40625 L 369.46875,517.21875 C 369.0718,517.6157 369.0718,518.2593 369.46875,518.65625 C 369.8657,519.0532 370.5093,519.0532 370.90625,518.65625 L 374.34375,515.1875 L 374.4375,515.125 C 374.44343,515.11918 374.43171,515.09972 374.4375,515.09375 C 374.49291,515.03659 374.5526,514.97676 374.59375,514.90625 C 374.62239,514.85717 374.63663,514.80216 374.65625,514.75 C 374.66861,514.71928 374.67831,514.68783 374.6875,514.65625 C 374.71862,514.54015 374.73024,514.43132 374.71875,514.3125 C 374.71489,514.25466 374.70138,514.21285 374.6875,514.15625 C 374.6766,514.1156 374.67237,514.07059 374.65625,514.03125 C 374.63982,513.99042 374.61578,513.94505 374.59375,513.90625 C 374.5483,513.82838 374.50015,513.74899 374.4375,513.6875 L 370.90625,510.15625 C 370.69734,509.93349 370.39809,509.8184 370.09375,509.84375 C 369.69897,509.8707 369.35398,510.12813 369.21875,510.5 C 369.08351,510.87187 369.18349,511.28826 369.46875,511.5625 L 371.34375,513.40625 L 366.65625,513.40625"\r
-           style="fill:#49c2f1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />\r
-      </g>\r
-    </marker>\r
-    <marker\r
-       id="marker72805"\r
-       orient="auto"\r
-       markerHeight="4.5568175"\r
-       markerWidth="4.0334239">\r
-      <path\r
-         sodipodi:nodetypes="cccscccsssssssscccsccc"\r
-         id="path18057"\r
-         d="M -2.0167119,0.50456824 L 0.29578813,0.50456824 L -0.61046187,1.4108182 C -0.80893187,1.6092982 -0.80893187,1.9310982 -0.61046187,2.1295682 C -0.41198187,2.3280482 -0.090181874,2.3280482 0.10828813,2.1295682 L 1.8270381,0.39519824 L 1.8739181,0.36394824 C 1.8768781,0.36103824 1.8710181,0.35130824 1.8739181,0.34831824 C 1.9016181,0.31973824 1.9314681,0.28982824 1.9520381,0.25456824 C 1.9663581,0.23002824 1.9734781,0.20252824 1.9832881,0.17644824 C 1.9894681,0.16108824 1.9943181,0.14535824 1.9989181,0.12956824 C 2.0144781,0.07151824 2.0202881,0.01710824 2.0145381,-0.04230176 C 2.0126081,-0.07122176 2.0058581,-0.09213176 1.9989181,-0.12043176 C 1.9934681,-0.14075176 1.9913481,-0.16326176 1.9832881,-0.18293176 C 1.9750781,-0.20334176 1.9630581,-0.22603176 1.9520381,-0.24543176 C 1.9293181,-0.28436176 1.9052381,-0.32406176 1.8739181,-0.35480176 L 0.10828813,-2.1204318 C 0.003838126,-2.2318118 -0.14579187,-2.2893518 -0.29796187,-2.2766818 C -0.49535187,-2.2632018 -0.66784187,-2.1344918 -0.73546187,-1.9485518 C -0.80308187,-1.7626218 -0.75309187,-1.5544218 -0.61046187,-1.4173018 L 0.32703813,-0.49543176 L -2.0167119,-0.49543176"\r
-         style="fill:#f39300;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />\r
-    </marker>\r
-    <marker\r
-       id="marker72808"\r
-       orient="auto"\r
-       markerHeight="4.5568123"\r
-       markerWidth="4.0334177">\r
-      <path\r
-         sodipodi:nodetypes="cccscccsssssssscccsccc"\r
-         id="path72801"\r
-         d="M -2.016709,0.50457301 L 0.29579105,0.50457301 L -0.61045895,1.410823 C -0.80893895,1.609293 -0.80893895,1.931093 -0.61045895,2.129573 C -0.41198895,2.328043 -0.090188953,2.328043 0.10829105,2.129573 L 1.827041,0.39519301 L 1.873911,0.36394301 C 1.876881,0.36103301 1.871021,0.35130301 1.873911,0.34832301 C 1.901621,0.31974301 1.931461,0.28982301 1.952041,0.25457301 C 1.966361,0.23003301 1.973481,0.20252301 1.983291,0.17644301 C 1.989471,0.16108301 1.994321,0.14536301 1.998911,0.12957301 C 2.014471,0.071523013 2.020281,0.017103013 2.014541,-0.042306987 C 2.012611,-0.071226987 2.005851,-0.092126987 1.998911,-0.12042699 C 1.993461,-0.14075699 1.991351,-0.16325699 1.983291,-0.18292699 C 1.975071,-0.20334699 1.963051,-0.22602699 1.952041,-0.24542699 C 1.929311,-0.28436699 1.905241,-0.32405699 1.873911,-0.35480699 L 0.10829105,-2.120427 C 0.003831047,-2.231807 -0.14578895,-2.289357 -0.29795895,-2.276677 C -0.49534895,-2.263207 -0.66784895,-2.134487 -0.73545895,-1.948557 C -0.80307895,-1.762617 -0.75308895,-1.554427 -0.61045895,-1.417307 L 0.32704105,-0.49542699 L -2.016709,-0.49542699"\r
-         style="fill:#d9d9cd;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />\r
-    </marker>\r
-    <marker\r
-       style="overflow:visible"\r
-       id="DotSuN"\r
-       refX="0"\r
-       refY="0"\r
-       orient="auto"\r
-       inkscape:stockid="DotSuN">\r
-      <path\r
-         transform="matrix(0.2,0,0,0.2,1.48,0.2)"\r
-         style="fill:#f39300;fill-rule:evenodd;stroke:#f39300;stroke-width:1pt;marker-start:none;marker-end:none"\r
-         d="M -2.5,-1 C -2.5,1.76 -4.74,4 -7.5,4 C -10.26,4 -12.5,1.76 -12.5,-1 C -12.5,-3.76 -10.26,-6 -7.5,-6 C -4.74,-6 -2.5,-3.76 -2.5,-1 z"\r
-         id="path81580" />\r
-    </marker>\r
-    <radialGradient\r
-       inkscape:collect="always"\r
-       xlink:href="#linearGradient4410"\r
-       id="radialGradient4181"\r
-       cx="-61.679379"\r
-       cy="-342.53549"\r
-       fx="-61.679379"\r
-       fy="-342.53549"\r
-       r="240.94489"\r
-       gradientTransform="matrix(1,-3.7478987e-8,1.1023234e-8,0.2941177,5.335063e-6,-121.8624)"\r
-       gradientUnits="userSpaceOnUse" />\r
-  </defs>\r
-  <metadata\r
-     id="metadata2480">\r
-    <rdf:RDF>\r
-      <cc:Work\r
-         rdf:about="">\r
-        <dc:format>image/svg+xml</dc:format>\r
-        <dc:type\r
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />\r
-      </cc:Work>\r
-    </rdf:RDF>\r
-  </metadata>\r
-  <g\r
-     id="layer1"\r
-     inkscape:groupmode="layer"\r
-     inkscape:label="Layer 1">\r
-    <rect\r
-       style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:2.83464575, 2.83464575;stroke-dashoffset:3.68503947;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"\r
-       id="rect4436"\r
-       width="499.60629"\r
-       height="237.40158"\r
-       x="198.4252"\r
-       y="322.44092"\r
-       ry="3.7880721" />\r
-    <g\r
-       transform="translate(204.60668,263.00299)"\r
-       id="g2802">\r
-      <rect\r
-         ry="3.7880721"\r
-         y="208.55002"\r
-         x="172.42705"\r
-         height="35.93816"\r
-         width="110.42418"\r
-         id="rect2804"\r
-         style="opacity:1;fill:#f39300;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />\r
-      <flowRoot\r
-         transform="translate(227.07111,229.7651)"\r
-         id="flowRoot2806"\r
-         style="font-size:12px;font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold Italic"\r
-         xml:space="preserve"><flowRegion\r
-           id="flowRegion2808" /><flowPara\r
-           id="flowPara2812">AbstractField</flowPara></flowRoot>    </g>\r
-    <path\r
-       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;marker-start:none;marker-mid:none;marker-end:url(#marker18095);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"\r
-       d="M 502.24448,489.52209 L 487.45791,489.52209"\r
-       id="path3832"\r
-       inkscape:connector-type="polyline"\r
-       inkscape:connection-end="#g2802"\r
-       inkscape:connection-start="#g3808" />\r
-    <g\r
-       transform="translate(488.07123,234.404)"\r
-       id="g3808">\r
-      <rect\r
-         style="opacity:1;fill:#49c2f1;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"\r
-         id="rect3810"\r
-         width="77.952736"\r
-         height="35.433075"\r
-         x="14.173247"\r
-         y="237.40155"\r
-         ry="3.7880721" />\r
-      <flowRoot\r
-         xml:space="preserve"\r
-         style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"\r
-         id="flowRoot3812"\r
-         transform="translate(52.923584,259.59409)"><flowRegion\r
-           id="flowRegion3814" /><flowPara\r
-           id="flowPara3818">Button</flowPara></flowRoot>    </g>\r
-    <path\r
-       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;marker-start:none;marker-mid:none;marker-end:url(#marker18095);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"\r
-       d="M 594.37048,489.58243 L 580.19721,489.56634"\r
-       id="path3834"\r
-       inkscape:connector-type="polyline"\r
-       inkscape:connection-start="#g3820"\r
-       inkscape:connection-end="#g3808" />\r
-    <g\r
-       transform="translate(580.19723,234.5086)"\r
-       id="g3820">\r
-      <rect\r
-         style="opacity:1;fill:#49c2f1;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"\r
-         id="rect3822"\r
-         width="77.952736"\r
-         height="35.433075"\r
-         x="14.173247"\r
-         y="237.40155"\r
-         ry="3.7880721" />\r
-      <flowRoot\r
-         xml:space="preserve"\r
-         style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"\r
-         id="flowRoot3824"\r
-         transform="translate(54.586428,258.88009)"><flowRegion\r
-           id="flowRegion3826" /><flowPara\r
-           id="flowPara3830">CheckBox</flowPara></flowRoot>    </g>\r
-    <g\r
-       transform="translate(488.57632,283.75775)"\r
-       id="g3836">\r
-      <rect\r
-         style="opacity:1;fill:#49c2f1;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"\r
-         id="rect3838"\r
-         width="77.952736"\r
-         height="35.433075"\r
-         x="14.173247"\r
-         y="237.40155"\r
-         ry="3.7880721" />\r
-      <flowRoot\r
-         xml:space="preserve"\r
-         style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"\r
-         id="flowRoot3840"\r
-         transform="translate(53.349584,258.36409)"><flowRegion\r
-           id="flowRegion3842" /><flowPara\r
-           id="flowPara3846">TextField</flowPara></flowRoot>    </g>\r
-    <path\r
-       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;marker-start:none;marker-mid:none;marker-end:url(#marker18095);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"\r
-       d="M 594.16798,539.05919 L 580.7023,539.01211"\r
-       id="path3866"\r
-       inkscape:connector-type="polyline"\r
-       inkscape:connection-start="#g3848"\r
-       inkscape:connection-end="#g3836" />\r
-    <g\r
-       transform="translate(583.33557,296.5446)"\r
-       id="g3848">\r
-      <rect\r
-         style="opacity:1;fill:#49c2f1;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"\r
-         id="rect3850"\r
-         width="99.41507"\r
-         height="35.433071"\r
-         x="10.832414"\r
-         y="224.97185"\r
-         ry="3.7880721" />\r
-      <text\r
-         xml:space="preserve"\r
-         style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"\r
-         x="59.819889"\r
-         y="246.23169"\r
-         id="text3860"\r
-         sodipodi:linespacing="125%"><tspan\r
-           sodipodi:role="line"\r
-           id="tspan3862"\r
-           x="59.819889"\r
-           y="246.23169">RichTextArea</tspan></text>\r
-    </g>\r
-    <path\r
-       inkscape:connection-end="#g2802"\r
-       inkscape:connector-type="polyline"\r
-       id="path2641"\r
-       d="M 432.28346,552.75588 L 432.22373,507.49117"\r
-       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#f39300;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;marker-start:none;marker-mid:none;marker-end:url(#marker52016);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"\r
-       sodipodi:nodetypes="cc" />\r
-    <path\r
-       sodipodi:nodetypes="cc"\r
-       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;marker-start:none;marker-mid:none;marker-end:url(#marker18095);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"\r
-       d="M 460.62992,552.75588 L 460.82677,506.98608"\r
-       id="path2679"\r
-       inkscape:connector-type="polyline" />\r
-    <g\r
-       id="g5008"\r
-       transform="translate(316.15294,225.23928)">\r
-      <rect\r
-         ry="3.7880721"\r
-         y="238.7607"\r
-         x="204.7132"\r
-         height="14.173233"\r
-         width="67.322838"\r
-         id="rect5010"\r
-         style="opacity:1;fill:#49c2f1;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.77165353;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />\r
-      <flowRoot\r
-         xml:space="preserve"\r
-         style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"\r
-         id="flowRoot5012"\r
-         transform="translate(24.523539,102.7123)"><flowRegion\r
-           id="flowRegion5014"><use\r
-             transform="translate(1.467046,-91.03536)"\r
-             x="0"\r
-             y="0"\r
-             xlink:href="#rect4654"\r
-             id="use5016"\r
-             width="744.09448"\r
-             height="1052.3622" /></flowRegion><flowPara\r
-           id="flowPara5018">ClickEvent</flowPara></flowRoot>    </g>\r
-    <g\r
-       id="g5020"\r
-       transform="translate(316.46063,210.7839)">\r
-      <rect\r
-         ry="3.7880721"\r
-         y="238.7607"\r
-         x="204.7132"\r
-         height="14.173233"\r
-         width="67.322838"\r
-         id="rect5022"\r
-         style="opacity:1;fill:#49c2f1;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.77165353;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />\r
-      <flowRoot\r
-         xml:space="preserve"\r
-         style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"\r
-         id="flowRoot5024"\r
-         transform="translate(24.523539,102.7123)"><flowRegion\r
-           id="flowRegion5026"><use\r
-             transform="translate(1.467046,-91.03536)"\r
-             x="0"\r
-             y="0"\r
-             xlink:href="#rect4654"\r
-             id="use5028"\r
-             width="744.09448"\r
-             height="1052.3622" /></flowRegion><flowPara\r
-           id="flowPara5030">ClickListener</flowPara></flowRoot>    </g>\r
-    <path\r
-       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;marker-start:none;marker-mid:none;marker-end:url(#marker18095);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"\r
-       d="M 407.48031,552.75588 L 406.8395,508.04991"\r
-       id="path8616"\r
-       inkscape:connector-type="polyline"\r
-       sodipodi:nodetypes="cc" />\r
-    <path\r
-       sodipodi:nodetypes="cc"\r
-       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"\r
-       d="M 503.34646,538.87584 L 460.82677,538.87584"\r
-       id="path49768"\r
-       inkscape:connector-type="polyline" />\r
-    <g\r
-       transform="translate(486.87623,708.04121)"\r
-       id="g6776"\r
-       style="fill-opacity:1;fill:url(#radialGradient4181)">\r
-      <rect\r
-         style="opacity:1;fill:url(#radialGradient4181);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:2.83464575, 2.83464575;stroke-dashoffset:3.68503947;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"\r
-         id="rect3392"\r
-         width="481.88977"\r
-         height="127.55907"\r
-         x="-274.2778"\r
-         y="-275.75778"\r
-         ry="3.7880721" />\r
-    </g>\r
-    <g\r
-       id="g2870"\r
-       transform="translate(177.07986,143.37191)">\r
-      <rect\r
-         ry="3.7880721"\r
-         y="181.8969"\r
-         x="205.84985"\r
-         height="35.433067"\r
-         width="99.212601"\r
-         id="rect2872"\r
-         style="opacity:1;fill:#d9d9cd;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />\r
-      <flowRoot\r
-         xml:space="preserve"\r
-         style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"\r
-         id="flowRoot2874"\r
-         transform="translate(41.217308,55.775189)"><flowRegion\r
-           id="flowRegion2876"><use\r
-             transform="translate(1.467046,-91.03536)"\r
-             x="0"\r
-             y="0"\r
-             xlink:href="#rect4654"\r
-             id="use2878"\r
-             width="744.09448"\r
-             height="1052.3622" /></flowRegion><flowPara\r
-           id="flowPara2880">Property</flowPara></flowRoot>    </g>\r
-    <g\r
-       id="g2886"\r
-       transform="translate(157.67586,119.82696)">\r
-      <rect\r
-         ry="3.7880721"\r
-         y="235.59096"\r
-         x="182.48161"\r
-         height="17.716534"\r
-         width="49.6063"\r
-         id="rect2888"\r
-         style="opacity:1;fill:#d9d9cd;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.77165353;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />\r
-      <flowRoot\r
-         xml:space="preserve"\r
-         style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"\r
-         id="flowRoot2890"\r
-         transform="translate(-7.1061187,101.2329)"><flowRegion\r
-           id="flowRegion2892"><use\r
-             transform="translate(1.467046,-91.03536)"\r
-             x="0"\r
-             y="0"\r
-             xlink:href="#rect4654"\r
-             id="use2894"\r
-             width="744.09448"\r
-             height="1052.3622" /></flowRegion><flowPara\r
-           id="flowPara2896">Editor</flowPara></flowRoot>    </g>\r
-    <g\r
-       id="g3740"\r
-       transform="translate(292.32154,119.82696)">\r
-      <rect\r
-         ry="3.7880721"\r
-         y="235.59096"\r
-         x="182.48161"\r
-         height="17.716536"\r
-         width="102.75591"\r
-         id="rect3742"\r
-         style="opacity:1;fill:#d9d9cd;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.77165353;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />\r
-      <flowRoot\r
-         xml:space="preserve"\r
-         style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"\r
-         id="flowRoot3744"\r
-         transform="translate(19.725317,101.70214)"><flowRegion\r
-           id="flowRegion3746"><use\r
-             transform="translate(1.467046,-91.03536)"\r
-             x="0"\r
-             y="0"\r
-             xlink:href="#rect4654"\r
-             id="use3748"\r
-             width="744.09448"\r
-             height="1052.3622" /></flowRegion><flowPara\r
-           id="flowPara3750">ValueChangeListener</flowPara></flowRoot>    </g>\r
-    <path\r
-       inkscape:connector-type="polyline"\r
-       id="path3776"\r
-       d="M 411.42023,403.72853 L 376.4354,374.02028"\r
-       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:2.83464575;stroke-linecap:round;stroke-linejoin:round;marker-start:none;marker-mid:none;marker-end:url(#marker44971);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"\r
-       inkscape:connection-end="#g2886"\r
-       inkscape:connection-start="#g2854" />\r
-    <flowRoot\r
-       style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"\r
-       id="flowRoot2485"\r
-       xml:space="preserve"><flowRegion\r
-         id="flowRegion2487"><rect\r
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"\r
-           y="238.07646"\r
-           x="262.85715"\r
-           height="120"\r
-           width="184.28572"\r
-           id="rect2489" /></flowRegion><flowPara\r
-         id="flowPara2491" /></flowRoot>    <g\r
-       transform="translate(-3.5714286,23.214286)"\r
-       id="g3178" />\r
-    <g\r
-       id="g2492"\r
-       transform="translate(77.952761,177.16534)">\r
-      <rect\r
-         ry="3.7880721"\r
-         y="230.31496"\r
-         x="163.1725"\r
-         height="35.433071"\r
-         width="99.032219"\r
-         id="rect4654"\r
-         style="opacity:1;fill:#d9d9cd;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />\r
-      <flowRoot\r
-         xml:space="preserve"\r
-         style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"\r
-         id="flowRoot4664"\r
-         transform="translate(-2.7125132,103.67242)"><flowRegion\r
-           id="flowRegion4666"><use\r
-             transform="translate(1.467046,-91.03536)"\r
-             x="0"\r
-             y="0"\r
-             xlink:href="#rect4654"\r
-             id="use4668"\r
-             width="744.09448"\r
-             height="1052.3622" /></flowRegion><flowPara\r
-           id="flowPara4670">Component</flowPara></flowRoot>    </g>\r
-    <path\r
-       inkscape:connector-type="polyline"\r
-       id="path2866"\r
-       d="M 389.76378,422.57131 L 340.15748,423.88527"\r
-       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;marker-start:none;marker-mid:none;marker-end:url(#marker44971);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"\r
-       inkscape:connection-start="#g2854"\r
-       inkscape:connection-end="#g2492" />\r
-    <path\r
-       inkscape:connection-end="#g2870"\r
-       inkscape:connector-type="polyline"\r
-       id="path2882"\r
-       d="M 432.34049,403.72853 L 432.47899,360.70187"\r
-       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;marker-start:none;marker-mid:none;marker-end:url(#marker44971);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"\r
-       inkscape:connection-start="#g2854" />\r
-    <path\r
-       inkscape:connection-start="#g2854"\r
-       inkscape:connection-end="#g3740"\r
-       inkscape:connector-type="polyline"\r
-       id="path5048"\r
-       d="M 461.38218,403.72853 L 510.17682,374.02028"\r
-       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:2.83464575;stroke-linecap:round;stroke-linejoin:round;marker-start:none;marker-mid:none;marker-end:url(#marker44971);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />\r
-    <g\r
-       id="g5034"\r
-       transform="translate(123.70837,158.11296)">\r
-      <rect\r
-         ry="3.7880721"\r
-         y="235.59096"\r
-         x="182.48161"\r
-         height="17.716537"\r
-         width="62.31395"\r
-         id="rect5036"\r
-         style="opacity:1;fill:#d9d9cd;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.77165353;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />\r
-      <flowRoot\r
-         xml:space="preserve"\r
-         style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"\r
-         id="flowRoot5038"\r
-         transform="translate(-0.8622551,101.2329)"><flowRegion\r
-           id="flowRegion5040"><use\r
-             transform="translate(1.467046,-91.03536)"\r
-             x="0"\r
-             y="0"\r
-             xlink:href="#rect4654"\r
-             id="use5042"\r
-             width="744.09448"\r
-             height="1052.3622" /></flowRegion><flowPara\r
-           id="flowPara5044">Focusable</flowPara></flowRoot>    </g>\r
-    <path\r
-       inkscape:connection-end="#g5034"\r
-       inkscape:connection-start="#g2854"\r
-       sodipodi:nodetypes="cc"\r
-       inkscape:connector-type="polyline"\r
-       id="path5050"\r
-       d="M 389.76378,412.9879 L 369.38976,408.9355"\r
-       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:2.83464575;stroke-linecap:round;stroke-linejoin:round;marker-start:none;marker-mid:none;marker-end:url(#marker44971);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />\r
-    <g\r
-       id="g2854"\r
-       transform="translate(223.64137,170.66298)">\r
-      <rect\r
-         ry="3.7880721"\r
-         y="233.06555"\r
-         x="166.12241"\r
-         height="35.433075"\r
-         width="85.039375"\r
-         id="rect2856"\r
-         style="opacity:1;fill:#d9d9cd;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />\r
-      <flowRoot\r
-         xml:space="preserve"\r
-         style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"\r
-         id="flowRoot2858"\r
-         transform="translate(-6.2480473,106.19782)"><flowRegion\r
-           id="flowRegion2860"><use\r
-             transform="translate(1.467046,-91.03536)"\r
-             x="0"\r
-             y="0"\r
-             xlink:href="#rect4654"\r
-             id="use2862"\r
-             width="744.09448"\r
-             height="1052.3622" /></flowRegion><flowPara\r
-           id="flowPara2864">Field</flowPara></flowRoot>    </g>\r
-    <path\r
-       inkscape:connection-end="#g2854"\r
-       inkscape:connection-start="#g2802"\r
-       inkscape:connector-type="polyline"\r
-       id="path2868"\r
-       d="M 432.25575,471.55301 L 432.27367,439.16161"\r
-       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#f39300;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;marker-start:none;marker-mid:none;marker-end:url(#marker52016);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />\r
-    <g\r
-       id="g3752"\r
-       transform="translate(292.32154,100.30776)">\r
-      <rect\r
-         ry="3.7880721"\r
-         y="235.59096"\r
-         x="182.48161"\r
-         height="17.716536"\r
-         width="102.75591"\r
-         id="rect3754"\r
-         style="opacity:1;fill:#d9d9cd;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.77165353;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />\r
-      <flowRoot\r
-         xml:space="preserve"\r
-         style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"\r
-         id="flowRoot3756"\r
-         transform="translate(19.725317,101.70214)"><flowRegion\r
-           id="flowRegion3758"><use\r
-             transform="translate(1.467046,-91.03536)"\r
-             x="0"\r
-             y="0"\r
-             xlink:href="#rect4654"\r
-             id="use3760"\r
-             width="744.09448"\r
-             height="1052.3622" /></flowRegion><flowPara\r
-           id="flowPara3762">ValueChangeEvent</flowPara></flowRoot>    </g>\r
-    <g\r
-       id="g3764"\r
-       transform="translate(157.67587,100.30776)">\r
-      <rect\r
-         ry="3.7880721"\r
-         y="235.59096"\r
-         x="182.48161"\r
-         height="17.716534"\r
-         width="49.6063"\r
-         id="rect3766"\r
-         style="opacity:1;fill:#d9d9cd;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.77165353;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />\r
-      <flowRoot\r
-         xml:space="preserve"\r
-         style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"\r
-         id="flowRoot3768"\r
-         transform="translate(-7.1061187,101.2329)"><flowRegion\r
-           id="flowRegion3770"><use\r
-             transform="translate(1.467046,-91.03536)"\r
-             x="0"\r
-             y="0"\r
-             xlink:href="#rect4654"\r
-             id="use3772"\r
-             width="744.09448"\r
-             height="1052.3622" /></flowRegion><flowPara\r
-           id="flowPara3774">Viewer</flowPara></flowRoot>    </g>\r
-    <g\r
-       id="g8538"\r
-       transform="translate(18.028345,180.41896)">\r
-      <rect\r
-         ry="3.7880721"\r
-         y="235.59096"\r
-         x="182.48161"\r
-         height="17.716534"\r
-         width="49.6063"\r
-         id="rect8540"\r
-         style="opacity:1;fill:#d9d9cd;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.77165353;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />\r
-      <flowRoot\r
-         xml:space="preserve"\r
-         style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"\r
-         id="flowRoot8542"\r
-         transform="translate(-7.1061187,101.2329)"><flowRegion\r
-           id="flowRegion8544"><use\r
-             transform="translate(1.467046,-91.03536)"\r
-             x="0"\r
-             y="0"\r
-             xlink:href="#rect4654"\r
-             id="use8546"\r
-             width="744.09448"\r
-             height="1052.3622" /></flowRegion><flowPara\r
-           id="flowPara8548">Event</flowPara></flowRoot>    </g>\r
-    <flowRoot\r
-       style="font-size:12px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Helvetica LT Std;-inkscape-font-specification:Helvetica LT Std Light"\r
-       id="flowRoot8724"\r
-       xml:space="preserve"><flowRegion\r
-         id="flowRegion8726"><rect\r
-           style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-family:Helvetica LT Std;-inkscape-font-specification:Helvetica LT Std Light"\r
-           y="752.14441"\r
-           x="39.286312"\r
-           height="22.868153"\r
-           width="29.904507"\r
-           id="rect8728" /></flowRegion><flowPara\r
-         id="flowPara8730" /></flowRoot>    <g\r
-       transform="matrix(0.5,0,0,0.5,103.34299,0.7940752)"\r
-       id="g18053" />\r
-    <g\r
-       id="g80473"\r
-       transform="translate(18.601067,201.51847)">\r
-      <rect\r
-         ry="3.7880721"\r
-         y="235.59096"\r
-         x="182.48161"\r
-         height="17.716534"\r
-         width="49.6063"\r
-         id="rect80475"\r
-         style="opacity:1;fill:#d9d9cd;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.77165353;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />\r
-      <flowRoot\r
-         xml:space="preserve"\r
-         style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"\r
-         id="flowRoot80477"\r
-         transform="translate(-7.1061187,101.2329)"><flowRegion\r
-           id="flowRegion80479"><use\r
-             transform="translate(1.467046,-91.03536)"\r
-             x="0"\r
-             y="0"\r
-             xlink:href="#rect4654"\r
-             id="use80481"\r
-             width="744.09448"\r
-             height="1052.3622" /></flowRegion><flowPara\r
-           id="flowPara80483">Listener</flowPara></flowRoot>    </g>\r
-  </g>\r
-</svg>\r
index 47974986d70cc3290beb615ec8315fc66e8a2305..7d3301ae4c01cea9baec195da1d16a97d98f82a7 100644 (file)
@@ -97,6 +97,7 @@ binder.bind(nameField,
 `Binder` supports checking the validity of the user's input and converting the values between the type used in business objects and the bound UI components.
 These to concepts go hand in hand since validation can be based on a converted value, and being able to convert a value is a kind of validation.
 
+[[datamodel.forms.validation]]
 === Validation
 
 An application typically has some restrictions on exactly what kinds of values the user is allowed to enter into different fields.
@@ -198,6 +199,7 @@ returnBinding.bind(Trip::getReturnDate, Trip::setReturnDate);
 departing.addValueChangeListener(event -> returnBinding.validate());
 ----
 
+[[datamodel.forms.conversion]]
 === Conversion
 
 You can also bind application data to a UI field component even though the types do not match.
@@ -411,6 +413,7 @@ Button saveButton = new Button("Save", event -> {
 When using the `setBean` method, the business object instance will be updated whenever the user changes the value in any bound field.
 If some other part of the application is also using the same instance, then that part might show changes before the user has clicked the save button.
 
+[[datamodel.forms.beans]]
 == Binding Beans to Forms
 
 The business objects used in an application are in most cases implemented as Java beans or POJOs.