aboutsummaryrefslogtreecommitdiffstats
path: root/documentation/datamodel
diff options
context:
space:
mode:
authorIlia Motornyi <elmot@vaadin.com>2015-12-03 14:59:05 +0000
committerVaadin Code Review <review@vaadin.com>2015-12-03 14:59:12 +0000
commit2af72ba9636bec70046394c41744f89ce4572e35 (patch)
treeccb3dc2d2239585f8c3f79eb5f131ff61ca9ce86 /documentation/datamodel
parent8aa5fabe89f2967e966a64842a608eceaf80d08f (diff)
downloadvaadin-framework-2af72ba9636bec70046394c41744f89ce4572e35.tar.gz
vaadin-framework-2af72ba9636bec70046394c41744f89ce4572e35.zip
Revert "Merge branch 'documentation'"7.6.0.beta2
This reverts commit f6874bde3d945c8b2d1b5c17ab50e2d0f1f8ff00. Change-Id: I67ee1c30ba3e3bcc3c43a1dd2e73a822791514bf
Diffstat (limited to 'documentation/datamodel')
-rw-r--r--documentation/datamodel/chapter-datamodel.asciidoc20
-rw-r--r--documentation/datamodel/datamodel-container.asciidoc834
-rw-r--r--documentation/datamodel/datamodel-itembinding.asciidoc377
-rw-r--r--documentation/datamodel/datamodel-items.asciidoc194
-rw-r--r--documentation/datamodel/datamodel-overview.asciidoc72
-rw-r--r--documentation/datamodel/datamodel-properties.asciidoc399
-rw-r--r--documentation/datamodel/img/beanitem-nested-beans.pngbin3142 -> 0 bytes
-rw-r--r--documentation/datamodel/img/beanitemcontainer-nested-beans.pngbin18032 -> 0 bytes
-rw-r--r--documentation/datamodel/img/datamodel-interfaces-hi.pngbin170869 -> 0 bytes
-rw-r--r--documentation/datamodel/img/datamodel-interfaces-lo.pngbin41890 -> 0 bytes
-rw-r--r--documentation/datamodel/img/datamodel-whitebg.pngbin287119 -> 0 bytes
-rw-r--r--documentation/datamodel/original-drawings/beanitem-doublebinding.svg1026
-rw-r--r--documentation/datamodel/original-drawings/datamodel-interfaces.svg1321
13 files changed, 0 insertions, 4243 deletions
diff --git a/documentation/datamodel/chapter-datamodel.asciidoc b/documentation/datamodel/chapter-datamodel.asciidoc
deleted file mode 100644
index c28e5b716b..0000000000
--- a/documentation/datamodel/chapter-datamodel.asciidoc
+++ /dev/null
@@ -1,20 +0,0 @@
-[[datamodel]]
-== Binding Components to Data
-
-((("Vaadin Data Model", id="term.datamodel", range="startofrange")))
-
-
-This chapter describes the Vaadin Data Model and shows how you can use it to
-bind components directly to data sources, such as database queries.
-
-
-include::datamodel-overview.asciidoc[leveloffset=+2]
-
-include::datamodel-properties.asciidoc[leveloffset=+2]
-
-include::datamodel-items.asciidoc[leveloffset=+2]
-
-include::datamodel-itembinding.asciidoc[leveloffset=+2]
-
-include::datamodel-container.asciidoc[leveloffset=+2]
-(((range="endofrange", startref="term.datamodel")))
diff --git a/documentation/datamodel/datamodel-container.asciidoc b/documentation/datamodel/datamodel-container.asciidoc
deleted file mode 100644
index 8f88e7c8bf..0000000000
--- a/documentation/datamodel/datamodel-container.asciidoc
+++ /dev/null
@@ -1,834 +0,0 @@
----
-title: Collecting Items in Containers
-order: 5
-layout: page
----
-
-[[datamodel.container]]
-= Collecting Items in Containers
-
-((("[classname]#Container#", id="term.datamodel.container", range="startofrange")))
-
-
-The [classname]#Container# interface is the highest containment level of the
-Vaadin data model, for containing items (rows) which in turn contain properties
-(columns). Containers can therefore represent tabular data, which can be viewed
-in a [classname]#Table# or some other selection component, as well as
-hierarchical data.
-
-The items contained in a container are identified by an __item identifier__ or
-__IID__, and the properties by a __property identifier__ or __PID__.
-
-[[datamodel.container.intro]]
-== Basic Use of Containers
-
-The basic use of containers involves creating one, adding items to it, and
-binding it as a container data source of a component.
-
-[[datamodel.container.intro.default]]
-=== Default Containers and Delegation
-
-Before saying anything about creation of containers, it should be noted that all
-components that can be bound to a container data source are by default bound to
-a default container. For example, [classname]#Table# is bound to a
-[classname]#IndexedContainer#, [classname]#Tree# to a
-[classname]#HierarchicalContainer#, and so forth.
-
-All of the user interface components using containers also implement the
-relevant container interfaces themselves, so that the access to the underlying
-data source is delegated through the component.
-
-
-----
-// Create a table with one column
-Table table = new Table("My Table");
-table.addContainerProperty("col1", String.class, null);
-
-// Access items and properties through the component
-table.addItem("row1"); // Create item by explicit ID
-Item item1 = table.getItem("row1");
-Property property1 = item1.getItemProperty("col1");
-property1.setValue("some given value");
-
-// Equivalent access through the container
-Container container = table.getContainerDataSource();
-container.addItem("row2");
-Item item2 = container.getItem("row2");
-Property property2 = item2.getItemProperty("col1");
-property2.setValue("another given value");
-----
-
-
-[[datamodel.container.intro.creating]]
-=== Creating and Binding a Container
-
-A container is created and bound to a component as follows:
-
-
-----
-// Create a container of some type
-Container container = new IndexedContainer();
-
-// Initialize the container as required by the container type
-container.addContainerProperty("name", String.class, "none");
-container.addContainerProperty("volume", Double.class, 0.0);
-
-... add items ...
-
-// Bind it to a component
-Table table = new Table("My Table");
-table.setContainerDataSource(container);
-----
-
-Most components that can be bound to a container allow passing it also in the
-constructor, in addition to using [methodname]#setContainerDataSource()#.
-Creation of the container depends on its type. For some containers, such as the
-[classname]#IndexedContainer#, you need to define the contained properties
-(columns) as was done above, while some others determine them otherwise. The
-definition of a property with [methodname]#addContainerProperty()# requires a
-unique property ID, type, and a default value. You can also give
-[parameter]#null#.
-
-Vaadin has a several built-in in-memory container implementations, such as
-[classname]#IndexedContainer# and [classname]#BeanItemContainer#, which are easy
-to use for setting up nonpersistent data storages. For persistent data, either
-the built-in [classname]#SQLContainer# or the [classname]#JPAContainer# add-on
-container can be used.
-
-
-[[datamodel.container.intro.adding]]
-=== Adding Items and Accessing Properties
-
-Items can be added to a container with the [methodname]#addItem()# method. The
-parameterless version of the method automatically generates the item ID.
-
-
-----
-// Create an item
-Object itemId = container.addItem();
-----
-
-Properties can be requested from container by first requesting an item with
-[methodname]#getItem()# and then getting the properties from the item with
-[methodname]#getItemProperty()#.
-
-
-----
-// Get the item object
-Item item = container.getItem(itemId);
-
-// Access a property in the item
-Property<String> nameProperty =
- item.getItemProperty("name");
-
-// Do something with the property
-nameProperty.setValue("box");
-----
-
-You can also get a property directly by the item and property ids with
-[methodname]#getContainerProperty()#.
-
-
-----
-container.getContainerProperty(itemId, "volume").setValue(5.0);
-----
-
-
-[[datamodel.container.intro.givenid]]
-=== Adding Items by Given ID
-
-Some containers, such as [classname]#IndexedContainer# and
-[classname]#HierarchicalContainer#, allow adding items by a given ID, which can
-be any [classname]#Object#.
-
-
-----
-Item item = container.addItem("agivenid");
-item.getItemProperty("name").setValue("barrel");
-Item.getItemProperty("volume").setValue(119.2);
-----
-
-Notice that the actual item __is not__ given as a parameter to the method, only
-its ID, as the interface assumes that the container itself creates all the items
-it contains. Some container implementations can provide methods to add
-externally created items, and they can even assume that the item ID object is
-also the item itself. Lazy containers might not create the item immediately, but
-lazily when it is accessed by its ID.
-
-
-
-[[datamodel.container.inner]]
-== Container Subinterfaces
-
-The [classname]#Container# interface contains inner interfaces that container
-implementations can implement to fulfill different features required by
-components that present container data.
-
-[interfacename]#Container.Filterable#:: Filterable containers allow filtering the contained items by filters, as
-described in <<datamodel.container.filtered>>.
-
-[interfacename]#Container.Hierarchical#:: Hierarchical containers allow representing hierarchical relationships between
-items and are required by the [classname]#Tree# and [classname]#TreeTable#
-components. The [classname]#HierarchicalContainer# is a built-in in-memory
-container for hierarchical data, and is used as the default container for the
-tree components. The [classname]#FilesystemContainer# provides access to
-browsing the content of a file system. Also [classname]#JPAContainer# is
-hierarchical, as described in
-<<dummy/../../../framework/jpacontainer/jpacontainer-usage#jpacontainer.usage.hierarchical,"Hierarchical
-Container">>.
-
-[interfacename]#Container.Indexed#:: An indexed container allows accessing items by an index number, not just their
-item ID. This feature is required by some components, especially
-[classname]#Table#, which needs to provide lazy access to large containers. The
-[classname]#IndexedContainer# is a basic in-memory implementation, as described
-in <<datamodel.container.indexedcontainer>>.
-
-[interfacename]#Container.Ordered#:: An ordered container allows traversing the items in successive order in either
-direction. Most built-in containers are ordered.
-
-[interfacename]#Container.SimpleFilterable#:: This interface enables filtering a container by string matching with
-[methodname]#addContainerFilter()#. The filtering is done by either searching
-the given string anywhere in a property value, or as its prefix.
-
-[interfacename]#Container.Sortable#:: A sortable container is required by some components that allow sorting the
-content, such as [classname]#Table#, where the user can click a column header to
-sort the table by the column. Some other components, such as
-[classname]#Calendar#, may require that the content is sorted to be able to
-display it properly. Depending on the implementation, sorting can be done only
-when the [methodname]#sort()# method is called, or the container is
-automatically kept in order according to the last call of the method.
-
-
-
-See the API documentation for a detailed description of the interfaces.
-
-
-[[datamodel.container.indexedcontainer]]
-== [classname]#IndexedContainer#
-
-The [classname]#IndexedContainer# is an in-memory container that implements the
-[interfacename]#Indexed# interface to allow referencing the items by an index.
-[classname]#IndexedContainer# is used as the default container in most selection
-components in Vaadin.
-
-The properties need to be defined with [methodname]#addContainerProperty()#,
-which takes the property ID, type, and a default value. This must be done before
-any items are added to the container.
-
-
-----
-// Create the container
-IndexedContainer container = new IndexedContainer();
-
-// Define the properties (columns)
-container.addContainerProperty("name", String.class, "noname");
-container.addContainerProperty("volume", Double.class, -1.0d);
-
-// Add some items
-Object content[][] = { {"jar", 2.0}, {"bottle", 0.75},
- {"can", 1.5}};
-for (Object[] row: content) {
- Item newItem = container.getItem(container.addItem());
- newItem.getItemProperty("name").setValue(row[0]);
- newItem.getItemProperty("volume").setValue(row[1]);
-}
-----
-
-New items are added with [methodname]#addItem()#, which returns the item ID of
-the new item, or by giving the item ID as a parameter as was described earlier.
-Note that the [classname]#Table# component, which has
-[classname]#IndexedContainer# as its default container, has a conveniency
-[methodname]#addItem()# method that allows adding items as object vectors
-containing the property values.
-
-The container implements the [interfacename]#Container.Indexed# feature to allow
-accessing the item IDs by their index number, with [methodname]#getIdByIndex()#,
-etc. The feature is required mainly for internal purposes of some components,
-such as [classname]#Table#, which uses it to enable lazy transmission of table
-data to the client-side.
-
-
-[[datamodel.container.beancontainer]]
-== [classname]#BeanContainer#
-
-The [classname]#BeanContainer# is an in-memory container for JavaBean objects.
-Each contained bean is wrapped inside a [classname]#BeanItem# wrapper. The item
-properties are determined automatically by inspecting the getter and setter
-methods of the class. This requires that the bean class has public visibility,
-local classes for example are not allowed. Only beans of the same type can be
-added to the container.
-
-The generic has two parameters: a bean type and an item identifier type. The
-item identifiers can be obtained by defining a custom resolver, using a specific
-item property for the IDs, or by giving item IDs explicitly. As such, it is more
-general than the [classname]#BeanItemContainer#, which uses the bean object
-itself as the item identifier, making the use usually simpler. Managing the item
-IDs makes [classname]#BeanContainer# more complex to use, but it is necessary in
-some cases where the [methodname]#equals()# or [methodname]#hashCode()# methods
-have been reimplemented in the bean.
-
-
-----
-// Here is a JavaBean
-public class Bean implements Serializable {
- String name;
- double energy; // Energy content in kJ/100g
-
- public Bean(String name, double energy) {
- this.name = name;
- this.energy = energy;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public double getEnergy() {
- return energy;
- }
-
- public void setEnergy(double energy) {
- this.energy = energy;
- }
-}
-
-void basic(VerticalLayout layout) {
- // Create a container for such beans with
- // strings as item IDs.
- BeanContainer<String, Bean> beans =
- new BeanContainer<String, Bean>(Bean.class);
-
- // Use the name property as the item ID of the bean
- beans.setBeanIdProperty("name");
-
- // Add some beans to it
- beans.addBean(new Bean("Mung bean", 1452.0));
- beans.addBean(new Bean("Chickpea", 686.0));
- beans.addBean(new Bean("Lentil", 1477.0));
- beans.addBean(new Bean("Common bean", 129.0));
- beans.addBean(new Bean("Soybean", 1866.0));
-
- // Bind a table to it
- Table table = new Table("Beans of All Sorts", beans);
- layout.addComponent(table);
-}
-----
-See the http://demo.vaadin.com/book-examples-vaadin7/book#datamodel.container.beancontainer.basic[on-line example, window="_blank"].
-
-To use explicit item IDs, use the methods [methodname]#addItem(Object, Object)#,
-[methodname]#addItemAfter(Object, Object, Object)#, and
-[methodname]#addItemAt(int, Object, Object)#.
-
-It is not possible to add additional properties to the container, except
-properties in a nested bean.
-
-[[datamodel.container.beancontainer.nestedproperties]]
-=== Nested Properties
-
-((("nested bean properties", id="term.datamodel.container.beancontainer.nestedproperties", range="startofrange")))
-
-
-If you have a nested bean with an 1:1 relationship inside a bean type contained
-in a [classname]#BeanContainer# or [classname]#BeanItemContainer#, you can add
-its properties to the container by specifying them with
-[methodname]#addNestedContainerProperty()#. The feature is defined at the level
-of [classname]#AbstractBeanContainer#.
-((("[methodname]#addNestedContainerProperty()#")))
-
-As with the bean in a bean container, also a nested bean must have public
-visibility or otherwise an access exception is thrown. An intermediate reference
-from a bean in the bean container to a nested bean may have a null value.
-
-For example, let us assume that we have the following two beans with the first
-one nested inside the second one.
-
-
-----
-/** Bean to be nested */
-public class EqCoord implements Serializable {
- double rightAscension; /* In angle hours */
- double declination; /* In degrees */
-
- ... setters and getters for the properties ...
-}
-
-/** Bean referencing a nested bean */
-public class Star implements Serializable {
- String name;
- EqCoord equatorial; /* Nested bean */
-
- ... setters and getters for the properties ...
-}
-----
-See the http://demo.vaadin.com/book-examples-vaadin7/book#datamodel.container.beanitemcontainer.nestedbean[on-line example, window="_blank"].
-
-After creating the container, you can declare the nested properties by
-specifying their property identifiers with the
-[methodname]#addNestedContainerProperty()# in dot notation.
-
-
-----
-// Create a container for beans
-BeanItemContainer<Star> stars =
- new BeanItemContainer<Star>(Star.class);
-
-// Declare the nested properties to be used in the container
-stars.addNestedContainerProperty("equatorial.rightAscension");
-stars.addNestedContainerProperty("equatorial.declination");
-
-// Add some items
-stars.addBean(new Star("Sirius", new EqCoord(6.75, 16.71611)));
-stars.addBean(new Star("Polaris", new EqCoord(2.52, 89.26417)));
-
-// Here the nested bean reference is null
-stars.addBean(new Star("Vega", null));
-----
-See the http://demo.vaadin.com/book-examples-vaadin7/book#datamodel.container.beanitemcontainer.nestedbean[on-line example, window="_blank"].
-
-If you bind such a container to a [classname]#Table#, you probably also need to
-set the column headers. Notice that the entire nested bean itself is still a
-property in the container and would be displayed in its own column. The
-[methodname]#toString()# method is used for obtaining the displayed value, which
-is by default an object reference. You normally do not want this, so you can
-hide the column with [methodname]#setVisibleColumns()#.
-((("[methodname]#setVisibleColumns()#")))
-
-
-----
-// Put them in a table
-Table table = new Table("Stars", stars);
-table.setColumnHeader("equatorial.rightAscension", "RA");
-table.setColumnHeader("equatorial.declination", "Decl");
-table.setPageLength(table.size());
-
-// Have to set explicitly to hide the "equatorial" property
-table.setVisibleColumns("name",
- "equatorial.rightAscension", "equatorial.declination");
-----
-See the http://demo.vaadin.com/book-examples-vaadin7/book#datamodel.container.beanitemcontainer.nestedbean[on-line example, window="_blank"].
-
-The resulting table is shown in
-<<figure.datamodel.container.beancontainer.nestedproperties>>.
-
-[[figure.datamodel.container.beancontainer.nestedproperties]]
-.[classname]#Table# Bound to a [classname]#BeanContainer# with Nested Properties
-image::img/beanitemcontainer-nested-beans.png[]
-
-The bean binding in [classname]#AbstractBeanContainer# normally uses the
-[classname]#MethodProperty# implementation of the [classname]#Property#
-interface to access the bean properties using the setter and getter methods. For
-nested properties, the [classname]#NestedMethodProperty# implementation is used.
-((("[classname]#MethodProperty#")))
-((("[classname]#NestedMethodProperty#")))
-
-(((range="endofrange", startref="term.datamodel.container.beancontainer.nestedproperties")))
-
-ifdef::web[]
-[[datamodel.container.beancontainer.idresolver]]
-=== Defining a Bean ID Resolver
-
-If a bean ID resolver is set using [methodname]#setBeanIdResolver()# or
-[methodname]#setBeanIdProperty()#, the methods [methodname]#addBean()#,
-[methodname]#addBeanAfter()#, [methodname]#addBeanAt()# and
-[methodname]#addAll()# can be used to add items to the container. If one of
-these methods is called, the resolver is used to generate an identifier for the
-item (must not return [parameter]#null#).
-
-Note that explicit item identifiers can also be used when a resolver has been
-set by calling the [methodname]#addItem*()# methods - the resolver is only used
-when adding beans using the [methodname]#addBean*()# or
-[methodname]#addAll(Collection)# methods.
-
-endif::web[]
-
-
-[[datamodel.container.beanitemcontainer]]
-== [classname]#BeanItemContainer#
-
-[classname]#BeanItemContainer# is a container for JavaBean objects where each
-bean is wrapped inside a [classname]#BeanItem# wrapper. The item properties are
-determined automatically by inspecting the getter and setter methods of the
-class. This requires that the bean class has public visibility, local classes
-for example are not allowed. Only beans of the same type can be added to the
-container.
-
-[classname]#BeanItemContainer# is a specialized version of the
-[classname]#BeanContainer# described in <<datamodel.container.beancontainer>>.
-It uses the bean itself as the item identifier, which makes it a bit easier to
-use than [classname]#BeanContainer# in many cases. The latter is, however,
-needed if the bean has reimplemented the [methodname]#equals()# or
-[methodname]#hashCode()# methods.
-
-Let us revisit the example given in <<datamodel.container.beancontainer>> using
-the [classname]#BeanItemContainer#.
-
-
-----
-// Create a container for the beans
-BeanItemContainer<Bean> beans =
- new BeanItemContainer<Bean>(Bean.class);
-
-// Add some beans to it
-beans.addBean(new Bean("Mung bean", 1452.0));
-beans.addBean(new Bean("Chickpea", 686.0));
-beans.addBean(new Bean("Lentil", 1477.0));
-beans.addBean(new Bean("Common bean", 129.0));
-beans.addBean(new Bean("Soybean", 1866.0));
-
-// Bind a table to it
-Table table = new Table("Beans of All Sorts", beans);
-----
-See the http://demo.vaadin.com/book-examples-vaadin7/book#datamodel.container.beanitemcontainer.basic[on-line example, window="_blank"].
-
-It is not possible to add additional properties to a
-[classname]#BeanItemContainer#, except properties in a nested bean, as described
-in <<datamodel.container.beancontainer>>. ((("nested bean
-properties")))
-
-
-ifdef::web[]
-[[datamodel.container.iterating]]
-== Iterating Over a Container
-
-As the items in a [classname]#Container# are not necessarily indexed, iterating
-over the items has to be done using an [classname]#Iterator#. The
-[methodname]#getItemIds()# method of [classname]#Container# returns a
-[classname]#Collection# of item identifiers over which you can iterate. The
-following example demonstrates a typical case where you iterate over the values
-of check boxes in a column of a [classname]#Table# component. The context of the
-example is the example used in
-<<dummy/../../../framework/components/components-table#components.table,"Table">>.
-
-
-----
-// Collect the results of the iteration into this string.
-String items = "";
-
-// Iterate over the item identifiers of the table.
-for (Iterator i = table.getItemIds().iterator(); i.hasNext();) {
- // Get the current item identifier, which is an integer.
- int iid = (Integer) i.next();
-
- // Now get the actual item from the table.
- Item item = table.getItem(iid);
-
- // And now we can get to the actual checkbox object.
- Button button = (Button)
- (item.getItemProperty("ismember").getValue());
-
- // If the checkbox is selected.
- if ((Boolean)button.getValue() == true) {
- // Do something with the selected item; collect the
- // first names in a string.
- items += item.getItemProperty("First Name")
- .getValue() + " ";
- }
-}
-
-// Do something with the results; display the selected items.
-layout.addComponent (new Label("Selected items: " + items));
-----
-
-Notice that the [methodname]#getItemIds()# returns an __unmodifiable
-collection__, so the [classname]#Container# may not be modified during
-iteration. You can not, for example, remove items from the
-[classname]#Container# during iteration. The modification includes modification
-in another thread. If the [classname]#Container# is modified during iteration, a
-[classname]#ConcurrentModificationException# is thrown and the iterator may be
-left in an undefined state.
-
-endif::web[]
-
-[[datamodel.container.gpc]]
-== [classname]#GeneratedPropertyContainer#
-
-[classname]#GeneratedPropertyContainer# is a container wrapper that allows
-defining generated values for properties (columns). The generated properties can
-shadow properties with the same IDs in the wrapped container. Removing a
-property from the wrapper hides it.
-
-The container is especially useful with [classname]#Grid#, which does not
-support generated columns or hiding columns like [classname]#Table# does.
-
-[[datamodel.container.gpc.wrapping]]
-=== Wrapping a Container
-
-A container to be wrapped must be a [interfacename]#Container.Indexed#. It can
-optionally also implement [interfacename]#Container.Sortable# or
-[interfacename]#Container.Filterable# to enable sorting and filtering the
-container, respectively.
-
-For example, let us consider the following container with some regular columns:
-
-
-----
-IndexedContainer container = new IndexedContainer();
-container.addContainerProperty("firstname", String.class, null);
-container.addContainerProperty("lastname", String.class, null);
-container.addContainerProperty("born", Integer.class, null);
-container.addContainerProperty("died", Integer.class, null);
-
-// Wrap it
-GeneratedPropertyContainer gpcontainer =
- new GeneratedPropertyContainer(container);
-----
-
-
-[[datamodel.container.gpc.properties]]
-=== Generated Properties
-
-Now, you can add generated properties in the container with
-[methodname]#addGeneratedProperty()# by specifying a property ID and a
-[interfacename]#PropertyValueGenerator#. The method takes the ID of the
-generated property as first parameter; you can use a same ID as in the wrapped
-container to shadow its properties.
-
-You need to implement [methodname]#getType()#, which must return the class
-object of the value type of the property, and [methodname]#getValue()#, which
-returns the property value for the given item. The item ID and the property ID
-of the generated property are also given in case they are needed. You can access
-other properties of the item to compute the property value.
-
-
-----
-gpcontainer.addGeneratedProperty("lived",
- new PropertyValueGenerator<Integer>() {
- @Override
- public Integer getValue(Item item, Object itemId,
- Object propertyId) {
- int born = (Integer)
- item.getItemProperty("born").getValue();
- int died = (Integer)
- item.getItemProperty("died").getValue();
- return Integer.valueOf(died - born);
- }
-
- @Override
- public Class<Integer> getType() {
- return Integer.class;
- }
-});
-----
-
-You can access other items in the container, also their generated properties,
-although you should beware of accidental recursion.
-
-
-[[datamodel.container.gpc.using]]
-=== Using [classname]#GeneratedPropertyContainer#
-
-Finally, you need to bind the [classname]#GeneratedPropertyContainer# to the
-component instead of the wrapped container.
-
-
-----
-Grid grid = new Grid(gpcontainer);
-----
-
-When using [classname]#GeneratedPropertyContainer# in [classname]#Grid#, notice
-that generated columns are read-only, so you can not add grid rows with
-[methodname]#addRow()#. In editable mode, editor fields are not generated for
-generated columns.
-
-
-[[datamodel.container.gpc.sorting]]
-=== Sorting
-
-Even though the [classname]#GeneratedPropertyContainer# implements
-[interfacename]#Container.Sortable#, the wrapped container must also support it
-or otherwise sorting is disabled. Also, the generated properties are not
-normally sortable, but require special handling to enable sorting.
-
-
-
-[[datamodel.container.filtered]]
-== [classname]#Filterable# Containers
-
-((("Container", "Filterable", id="term.datamodel.container.filtered.filterable", range="startofrange")))
-
-
-((("[classname]#Filter# (in [classname]#Container#)", id="term.datamodel.container.filtered.filters", range="startofrange")))
-
-
-Containers that implement the [classname]#Container.Filterable# interface can be
-filtered. For example, the built-in [classname]#IndexedContainer# and the bean
-item containers implement it. Filtering is typically used for filtering the
-content of a [classname]#Table#.
-((("[classname]#IndexedContainer#")))
-((("[classname]#Table#")))
-
-Filters implement the [classname]#Filter# interface and you add them to a
-filterable container with the [methodname]#addContainerFilter()# method.
-Container items that pass the filter condition are kept and shown in the
-filterable component.
-((("[methodname]#addContainerFilter()#")))
-
-
-----
-Filter filter = new SimpleStringFilter("name",
- "Douglas", true, false);
-table.addContainerFilter(filter);
-----
-See the http://demo.vaadin.com/book-examples-vaadin7/book#datamodel.container.filter.basic[on-line example, window="_blank"].
-
-If multiple filters are added to a container, they are evaluated using the
-logical AND operator so that only items that are passed by all the filters are
-kept.
-
-[[datamodel.container.filtered.composite]]
-=== Atomic and Composite Filters
-
-Filters can be classified as __atomic__ and __composite__. Atomic filters, such
-as [classname]#SimpleStringFilter#, define a single condition, usually for a
-specific container property. Composite filters make filtering decisions based on
-the result of one or more other filters. The built-in composite filters
-implement the logical operators AND, OR, or NOT.
-
-For example, the following composite filter would filter out items where the
-[literal]#++name++# property contains the name "Douglas" somewhere __or__ where
-the [literal]#++age++# property has value less than 42. The properties must have
-[classname]#String# and [classname]#Integer# types, respectively.
-
-
-----
-
-filter = new Or(new SimpleStringFilter("name",
- "Douglas", true, false),
- new Compare.Less("age", 42));
-----
-
-
-[[datamodel.container.filtered.builtin]]
-=== Built-In Filter Types
-
-The built-in filter types are the following:
-
-[classname]#SimpleStringFilter#:: ((("[classname]#SimpleStringFilter#")))
-+
-Passes items where the specified property, that must be of [classname]#String#
-type, contains the given [parameter]#filterString# as a substring. If
-[parameter]#ignoreCase# is [parameter]#true#, the search is case insensitive. If
-the [parameter]#onlyMatchPrefix# is [parameter]#true#, the substring may only be
-in the beginning of the string, otherwise it may be elsewhere as well.
-
-[classname]#IsNull#:: ((("[classname]#IsNull# (filter)")))
-+
-Passes items where the specified property has null value. For in-memory
-filtering, a simple [literal]#++==++# check is performed. For other containers,
-the comparison implementation is container dependent, but should correspond to
-the in-memory null check.
-
-[classname]#Equal#,[classname]#Greater#,
- [classname]#Less#,
- [classname]#GreaterOrEqual#, and[classname]#LessOrEqual#:: ((("[classname]#Equal# (filter)")))
-((("[classname]#Greater# (filter)")))
-((("[classname]#Less# (filter)")))
-((("[classname]#GreaterOrEqual# (filter)")))
-((("[classname]#LessOrEqual# (filter)")))
-+
-The comparison filter implementations compare the specified property value to
-the given constant and pass items for which the comparison result is true. The
-comparison operators are included in the abstract [classname]#Compare# class.
-
-+
-For the [classname]#Equal# filter, the [methodname]#equals()# method for the
-property is used in built-in in-memory containers. In other types of containers,
-the comparison is container dependent and may use, for example, database
-comparison operations.
-
-+
-For the other filters, the property value type must implement the
-[classname]#Comparable# interface to work with the built-in in-memory
-containers. Again for the other types of containers, the comparison is container
-dependent.
-
-[classname]#And#and[classname]#Or#:: ((("[classname]#And# (filter)")))
-((("[classname]#Or# (filter)")))
-+
-These logical operator filters are composite filters that combine multiple other
-filters.
-
-[classname]#Not#:: ((("[classname]#Not# (filter)")))
-+
-The logical unary operator filter negates which items are passed by the filter
-given as the parameter.
-
-
-
-
-[[datamodel.container.filtered.custom]]
-=== Implementing Custom Filters
-
-A custom filter needs to implement the [classname]#Container.Filter# interface.
-
-A filter can use a single or multiple properties for the filtering logic. The
-properties used by the filter must be returned with the
-[methodname]#appliesToProperty()# method. If the filter applies to a
-user-defined property or properties, it is customary to give the properties as
-the first argument for the constructor of the filter.
-
-
-----
-class MyCustomFilter implements Container.Filter {
- protected String propertyId;
- protected String regex;
-
- public MyCustomFilter(String propertyId, String regex) {
- this.propertyId = propertyId;
- this.regex = regex;
- }
-
- /** Tells if this filter works on the given property. */
- @Override
- public boolean appliesToProperty(Object propertyId) {
- return propertyId != null &&
- propertyId.equals(this.propertyId);
- }
-----
-See the http://demo.vaadin.com/book-examples-vaadin7/book#datamodel.container.filter.custom[on-line example, window="_blank"].
-
-The actual filtering logic is done in the [methodname]#passesFilter()# method,
-which simply returns [literal]#++true++# if the item should pass the filter and
-[literal]#++false++# if it should be filtered out.
-
-
-----
- /** Apply the filter on an item to check if it passes. */
- @Override
- public boolean passesFilter(Object itemId, Item item)
- throws UnsupportedOperationException {
- // Acquire the relevant property from the item object
- Property p = item.getItemProperty(propertyId);
-
- // Should always check validity
- if (p == null || !p.getType().equals(String.class))
- return false;
- String value = (String) p.getValue();
-
- // The actual filter logic
- return value.matches(regex);
- }
-}
-----
-See the http://demo.vaadin.com/book-examples-vaadin7/book#datamodel.container.filter.custom[on-line example, window="_blank"].
-
-You can use such a custom filter just like any other:
-
-
-----
-c.addContainerFilter(
- new MyCustomFilter("Name", (String) tf.getValue()));
-----
-See the http://demo.vaadin.com/book-examples-vaadin7/book#datamodel.container.filter.custom[on-line example, window="_blank"].
-
-
-(((range="endofrange", startref="term.datamodel.container.filtered.filters")))
-(((range="endofrange", startref="term.datamodel.container.filtered.filterable")))
-
-(((range="endofrange", startref="term.datamodel.container")))
-
-
diff --git a/documentation/datamodel/datamodel-itembinding.asciidoc b/documentation/datamodel/datamodel-itembinding.asciidoc
deleted file mode 100644
index fd21b72267..0000000000
--- a/documentation/datamodel/datamodel-itembinding.asciidoc
+++ /dev/null
@@ -1,377 +0,0 @@
----
-title: Creating Forms by Binding Fields to Items
-order: 4
-layout: page
----
-
-[[datamodel.itembinding]]
-= Creating Forms by Binding Fields to Items
-
-Most applications in existence have forms of some sort. Forms contain fields,
-which you want to bind to a data source, an item in the Vaadin data model.
-[classname]#FieldGroup# provides an easy way to bind fields to the properties of
-an item. You can use it by first creating a layout with some fields, and then
-call it to bind the fields to the data source. You can also let the
-[classname]#FieldGroup# create the fields using a field factory. It can also
-handle commits. Notice that [classname]#FieldGroup# is not a user interface
-component, so you can not add it to a layout.
-
-[[datamodel.itembinding.simple]]
-== Simple Binding
-
-Let us start with a data model that has an item with a couple of properties. The
-item could be any item type, as described earlier.
-
-
-----
-// Have an item
-PropertysetItem item = new PropertysetItem();
-item.addItemProperty("name", new ObjectProperty<String>("Zaphod"));
-item.addItemProperty("age", new ObjectProperty<Integer>(42));
-----
-
-Next, you would design a form for editing the data. The [classname]#FormLayout#
-(
-<<dummy/../../../framework/layout/layout-formlayout#layout.formlayout,"FormLayout">>
-is ideal for forms, but you could use any other layout as well.
-
-
-----
-// Have some layout and create the fields
-FormLayout form = new FormLayout();
-
-TextField nameField = new TextField("Name");
-form.addComponent(nameField);
-
-TextField ageField = new TextField("Age");
-form.addComponent(ageField);
-----
-
-Then, we can bind the fields to the data as follows:
-
-
-----
-// Now create the binder and bind the fields
-FieldGroup binder = new FieldGroup(item);
-binder.bind(nameField, "name");
-binder.bind(ageField, "age");
-----
-
-The above way of binding is not different from simply calling
-[methodname]#setPropertyDataSource()# for the fields. It does, however, register
-the fields in the field group, which for example enables buffering or validation
-of the fields using the field group, as described in
-<<datamodel.itembinding.buffering>>.
-
-Next, we consider more practical uses for a [classname]#FieldGroup#.
-
-
-[[datamodel.itembinding.fieldfactory]]
-== Using a [interfacename]#FieldFactory# to Build and Bind Fields
-
-Using the [methodname]#buildAndBind()# methods, [classname]#FieldGroup# can
-create fields for you using a [interfacename]#FieldGroupFieldFactory#, but you
-still have to add them to the correct position in your layout.
-
-
-----
-// Have some layout
-FormLayout form = new FormLayout();
-
-// Now create a binder that can also create the fields
-// using the default field factory
-FieldGroup binder = new FieldGroup(item);
-form.addComponent(binder.buildAndBind("Name", "name"));
-form.addComponent(binder.buildAndBind("Age", "age"));
-----
-
-
-[[datamodel.itembinding.formclass]]
-== Binding Member Fields
-
-The [methodname]#bindMemberFields()# method in [classname]#FieldGroup# uses
-reflection to bind the properties of an item to field components that are member
-variables of a class. Hence, if you implement a form as a class with the fields
-stored as member variables, you can use this method to bind them super-easy.
-
-The item properties are mapped to the members by the property ID and the name of
-the member variable. If you want to map a property with a different ID to a
-member, you can use the [literal]#++@PropertyId++# annotation for the member,
-with the property ID as the parameter.
-
-For example:
-
-
-----
-// Have an item
-PropertysetItem item = new PropertysetItem();
-item.addItemProperty("name", new ObjectProperty<String>("Zaphod"));
-item.addItemProperty("age", new ObjectProperty<Integer>(42));
-
-// Define a form as a class that extends some layout
-class MyForm extends FormLayout {
- // Member that will bind to the "name" property
- TextField name = new TextField("Name");
-
- // Member that will bind to the "age" property
- @PropertyId("age")
- TextField ageField = new TextField("Age");
-
- public MyForm() {
- // Customize the layout a bit
- setSpacing(true);
-
- // Add the fields
- addComponent(name);
- addComponent(ageField);
- }
-}
-
-// Create one
-MyForm form = new MyForm();
-
-// Now create a binder that can also creates the fields
-// using the default field factory
-FieldGroup binder = new FieldGroup(item);
-binder.bindMemberFields(form);
-
-// And the form can be used in an higher-level layout
-layout.addComponent(form);
-----
-See the http://demo.vaadin.com/book-examples-vaadin7/book#datamodel.itembinding.formclass.extended[on-line example, window="_blank"].
-
-[[datamodel.itembinding.formclass.customcomponent]]
-=== Encapsulating in [classname]#CustomComponent#
-
-Using a [classname]#CustomComponent# can be better for hiding the implementation
-details than extending a layout. Also, the use of the [classname]#FieldGroup#
-can be encapsulated in the form class.
-
-Consider the following as an alternative for the form implementation presented
-earlier:
-
-
-----
-// A form component that allows editing an item
-class MyForm extends CustomComponent {
- // Member that will bind to the "name" property
- TextField name = new TextField("Name");
-
- // Member that will bind to the "age" property
- @PropertyId("age")
- TextField ageField = new TextField("Age");
-
- public MyForm(Item item) {
- FormLayout layout = new FormLayout();
- layout.addComponent(name);
- layout.addComponent(ageField);
-
- // Now use a binder to bind the members
- FieldGroup binder = new FieldGroup(item);
- binder.bindMemberFields(this);
-
- setCompositionRoot(layout);
- }
-}
-
-// And the form can be used as a component
-layout.addComponent(new MyForm(item));
-----
-See the http://demo.vaadin.com/book-examples-vaadin7/book#datamodel.itembinding.formclass.customcomponent[on-line example, window="_blank"].
-
-
-
-[[datamodel.itembinding.buffering]]
-== Buffering Forms
-
-Just like for individual fields, as described in
-<<dummy/../../../framework/components/components-fields#components.fields.buffering,"Field
-Buffering">>, a [classname]#FieldGroup# can handle buffering the form content so
-that it is written to the item data source only when [methodname]#commit()# is
-called for the group. It runs validation for all fields in the group and writes
-their values to the item data source only if all fields pass the validation.
-Edits can be discarded, so that the field values are reloaded from the data
-source, by calling [methodname]#discard()#. Buffering is enabled by default, but
-can be disabled by calling [methodname]#setBuffered(false)# for the
-[classname]#FieldGroup#.
-
-
-----
-// Have an item of some sort
-final PropertysetItem item = new PropertysetItem();
-item.addItemProperty("name", new ObjectProperty<String>("Q"));
-item.addItemProperty("age", new ObjectProperty<Integer>(42));
-
-// Have some layout and create the fields
-Panel form = new Panel("Buffered Form");
-form.setContent(new FormLayout());
-
-// Build and bind the fields using the default field factory
-final FieldGroup binder = new FieldGroup(item);
-form.addComponent(binder.buildAndBind("Name", "name"));
-form.addComponent(binder.buildAndBind("Age", "age"));
-
-// Enable buffering (actually enabled by default)
-binder.setBuffered(true);
-
-// A button to commit the buffer
-form.addComponent(new Button("OK", new ClickListener() {
- @Override
- public void buttonClick(ClickEvent event) {
- try {
- binder.commit();
- Notification.show("Thanks!");
- } catch (CommitException e) {
- Notification.show("You fail!");
- }
- }
-}));
-
-// A button to discard the buffer
-form.addComponent(new Button("Discard", new ClickListener() {
- @Override
- public void buttonClick(ClickEvent event) {
- binder.discard();
- Notification.show("Discarded!");
- }
-}));
-----
-See the http://demo.vaadin.com/book-examples-vaadin7/book#datamodel.itembinding.formclass.customcomponent[on-line example, window="_blank"].
-
-
-[[datamodel.itembinding.beans]]
-== Binding Fields to a Bean
-
-The [classname]#BeanFieldGroup# makes it easier to bind fields to a bean. It
-also handles binding to nested beans properties. The build a field bound to a
-nested bean property, identify the property with dot notation. For example, if a
-[classname]#Person# bean has a [literal]#++address++# property with an
-[classname]#Address# type, which in turn has a [literal]#++street++# property,
-you could build a field bound to the property with
-[methodname]#buildAndBind("Street", "address.street")#.
-
-The input to fields bound to a bean can be validated using the Java Bean
-Validation API, as described in <<datamodel.itembinding.beanvalidation>>. The
-[classname]#BeanFieldGroup# automatically adds a [classname]#BeanValidator# to
-every field if a bean validation implementation is included in the classpath.
-
-
-[[datamodel.itembinding.beanvalidation]]
-== Bean Validation
-
-Vaadin allows using the Java Bean Validation API 1.0 (JSR-303) for validating
-input from fields bound to bean properties before the values are committed to
-the bean. The validation is done based on annotations on the bean properties,
-which are used for creating the actual validators automatically. See
-<<dummy/../../../framework/components/components-fields#components.fields.validation,"Field
-Validation">> for general information about validation.
-
-Using bean validation requires an implementation of the Bean Validation API,
-such as Hibernate Validator ( [filename]#hibernate-validator-4.2.0.Final.jar# or
-later) or Apache Bean Validation. The implementation JAR must be included in the
-project classpath when using the bean validation, or otherwise an internal error
-is thrown.
-
-Bean validation is especially useful when persisting entity beans with the
-Vaadin JPAContainer, described in
-<<dummy/../../../framework/jpacontainer/jpacontainer-overview.asciidoc#jpacontainer.overview,"Vaadin
-JPAContainer">>.
-
-[[datamodel.itembinding.beanvalidation.annotations]]
-=== Annotations
-
-The validation constraints are defined as annotations. For example, consider the
-following bean:
-
-
-----
-// Here is a bean
-public class Person implements Serializable {
- @NotNull
- @javax.validation.constraints.Size(min=2, max=10)
- String name;
-
- @Min(1)
- @Max(130)
- int age;
-
- // ... setters and getters ...
-}
-----
-
-For a complete list of allowed constraints for different data types, please see
-the link:http://docs.oracle.com/javaee/6/tutorial/doc/gircz.html[Bean Validation
-API documentation].
-
-
-[[datamodel.itembinding.beanvalidation.validating]]
-=== Validating the Beans
-
-Validating a bean is done with a [classname]#BeanValidator#, which you
-initialize with the name of the bean property it should validate and add it the
-the editor field.
-
-In the following example, we validate a single unbuffered field:
-
-
-----
-Person bean = new Person("Mung bean", 100);
-BeanItem<Person> item = new BeanItem<Person> (bean);
-
-// Create an editor bound to a bean field
-TextField firstName = new TextField("First Name",
- item.getItemProperty("name"));
-
-// Add the bean validator
-firstName.addValidator(new BeanValidator(Person.class, "name"));
-
-firstName.setImmediate(true);
-layout.addComponent(firstName);
-----
-
-In this case, the validation is done immediately after focus leaves the field.
-You could do the same for the other field as well.
-
-Bean validators are automatically created when using a
-[classname]#BeanFieldGroup#.
-
-
-----
-// Have a bean
-Person bean = new Person("Mung bean", 100);
-
-// Form for editing the bean
-final BeanFieldGroup<Person> binder =
- new BeanFieldGroup<Person>(Person.class);
-binder.setItemDataSource(bean);
-layout.addComponent(binder.buildAndBind("Name", "name"));
-layout.addComponent(binder.buildAndBind("Age", "age"));
-
-// Buffer the form content
-binder.setBuffered(true);
-layout.addComponent(new Button("OK", new ClickListener() {
- @Override
- public void buttonClick(ClickEvent event) {
- try {
- binder.commit();
- } catch (CommitException e) {
- }
- }
-}));
-----
-
-
-[[datamodel.itembinding.beanvalidation.locale]]
-=== Locale Setting for Bean Validation
-
-The validation error messages are defined in the bean validation implementation,
-in a [filename]#ValidationMessages.properties# file. The message is shown in the
-language specified with the locale setting for the form. The default language is
-English, but for example Hibernate Validator contains translations of the
-messages for a number of languages. If other languages are needed, you need to
-provide a translation of the properties file.
-
-
-
-
-
diff --git a/documentation/datamodel/datamodel-items.asciidoc b/documentation/datamodel/datamodel-items.asciidoc
deleted file mode 100644
index 75a7c1ecf8..0000000000
--- a/documentation/datamodel/datamodel-items.asciidoc
+++ /dev/null
@@ -1,194 +0,0 @@
----
-title: Holding properties in Items
-order: 3
-layout: page
----
-
-[[datamodel.items]]
-= Holding properties in Items
-
-The [classname]#Item# interface provides access to a set of named properties.
-Each property is identified by a __property identifier__ (PID) and a reference
-to such a property can be queried from an [classname]#Item# with
-[methodname]#getItemProperty()# using the identifier.
-
-Examples on the use of items include rows in a [classname]#Table#, with the
-properties corresponding to table columns, nodes in a [classname]#Tree#, and the
-the data bound to a [classname]#Form#, with item's properties bound to
-individual form fields.
-
-Items are generally equivalent to objects in the object-oriented model, but with
-the exception that they are configurable and provide an event handling
-mechanism. The simplest way to utilize [classname]#Item# interface is to use
-existing implementations. Provided utility classes include a configurable
-property set ( [classname]#PropertysetItem#) and a bean-to-item adapter (
-[classname]#BeanItem#). Also, a [classname]#Form# implements the interface and
-can therefore be used directly as an item.
-
-In addition to being used indirectly by many user interface components, items
-provide the basic data model underlying the [classname]#Form# component. In
-simple cases, forms can even be generated automatically from items. The
-properties of the item correspond to the fields of the form.
-
-The [classname]#Item# interface defines inner interfaces for maintaining the
-item property set and listening changes made to it.
-[classname]#PropertySetChangeEvent# events can be emitted by a class
-implementing the [classname]#PropertySetChangeNotifier# interface. They can be
-received through the [classname]#PropertySetChangeListener# interface.
-
-ifdef::web[]
-[[datamodel.items.propertysetitem]]
-== The [classname]#PropertysetItem# Implementation
-
-The [classname]#PropertysetItem# is a generic implementation of the
-[classname]#Item# interface that allows storing properties. The properties are
-added with [methodname]#addItemProperty()#, which takes a name and the property
-as parameters.
-
-The following example demonstrates a typical case of collecting
-[classname]#ObjectProperty# properties in an item:
-
-
-----
-PropertysetItem item = new PropertysetItem();
-item.addItemProperty("name", new ObjectProperty("Zaphod"));
-item.addItemProperty("age", new ObjectProperty(42));
-
-// Bind it to a component
-Form form = new Form();
-form.setItemDataSource(item);
-----
-
-endif::web[]
-
-[[datamodel.items.beanitem]]
-== Wrapping a Bean in a [classname]#BeanItem#
-
-The [classname]#BeanItem# implementation of the [classname]#Item# interface is a
-wrapper for Java Bean objects. In fact, only the setters and getters are
-required while serialization and other bean features are not, so you can wrap
-almost any POJOs with minimal requirements.
-
-
-----
-// Here is a bean (or more exactly a POJO)
-class Person {
- String name;
- int age;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public Integer getAge() {
- return age;
- }
-
- public void setAge(Integer age) {
- this.age = age.intValue();
- }
-}
-
-// Create an instance of the bean
-Person bean = new Person();
-
-// Wrap it in a BeanItem
-BeanItem<Person> item = new BeanItem<Person>(bean);
-
-// Bind it to a component
-Form form = new Form();
-form.setItemDataSource(item);
-----
-
-You can use the [methodname]#getBean()# method to get a reference to the
-underlying bean.
-
-[[datamodel.items.beanitem.nested]]
-=== Nested Beans
-
-You may often have composite classes where one class "has a" another class. For
-example, consider the following [classname]#Planet# class which "has a"
-discoverer:
-
-
-----
-// Here is a bean with two nested beans
-public class Planet implements Serializable {
- String name;
- Person discoverer;
-
- public Planet(String name, Person discoverer) {
- this.name = name;
- this.discoverer = discoverer;
- }
-
- ... getters and setters ...
-}
-
-...
-// Create an instance of the bean
-Planet planet = new Planet("Uranus",
- new Person("William Herschel", 1738));
-----
-
-When shown in a [classname]#Form#, for example, you would want to list the
-properties of the nested bean along the properties of the composite bean. You
-can do that by binding the properties of the nested bean individually with a
-[classname]#MethodProperty# or [classname]#NestedMethodProperty#. You should
-usually hide the nested bean from binding as a property by listing only the
-bound properties in the constructor.
-
-
-----
-// Wrap it in a BeanItem and hide the nested bean property
-BeanItem<Planet> item = new BeanItem<Planet>(planet,
- new String[]{"name"});
-
-// Bind the nested properties.
-// Use NestedMethodProperty to bind using dot notation.
-item.addItemProperty("discoverername",
- new NestedMethodProperty(planet, "discoverer.name"));
-
-// The other way is to use regular MethodProperty.
-item.addItemProperty("discovererborn",
- new MethodProperty<Person>(planet.getDiscoverer(),
- "born"));
-----
-
-The difference is that [classname]#NestedMethodProperty# does not access the
-nested bean immediately but only when accessing the property values, while when
-using [classname]#MethodProperty# the nested bean is accessed when creating the
-method property. The difference is only significant if the nested bean can be
-null or be changed later.
-
-You can use such a bean item for example in a [classname]#Form# as follows:
-
-
-----
-// Bind it to a component
-Form form = new Form();
-form.setItemDataSource(item);
-
-// Nicer captions
-form.getField("discoverername").setCaption("Discoverer");
-form.getField("discovererborn").setCaption("Born");
-----
-
-[[figure.datamodel.items.beanitem.nested]]
-.A [classname]#Form# with Nested Bean Properties
-image::img/beanitem-nested-beans.png[]
-
-The [classname]#BeanContainer# and [classname]#BeanItemContainer# allow easy
-definition of nested bean properties with
-[methodname]#addNestedContainerProperty()#, as described in
-<<dummy/../../../framework/datamodel/datamodel-container#datamodel.container.beancontainer.nestedproperties,"Nested
-Properties">>.
-
-
-
-
-
diff --git a/documentation/datamodel/datamodel-overview.asciidoc b/documentation/datamodel/datamodel-overview.asciidoc
deleted file mode 100644
index 95209e0b76..0000000000
--- a/documentation/datamodel/datamodel-overview.asciidoc
+++ /dev/null
@@ -1,72 +0,0 @@
----
-title: Overview
-order: 1
-layout: page
----
-
-[[datamodel.overview]]
-= Overview
-
-The Vaadin Data Model is one of the core concepts of the library. To allow the
-view (user interface components) to access the data model of an application
-directly, we have introduced a standard data interface.
-
-The model allows binding user interface components directly to the data that
-they display and possibly allow to edit. There are three nested levels of
-hierarchy in the data model: __property__, __item__, and __container__. Using a
-spreadsheet application as an analogy, these would correspond to a cell, a row,
-and a table, respectively.
-
-.Vaadin Data Model
-image::img/datamodel-whitebg.png[]
-
-The Data Model is realized as a set of interfaces in the
-[classname]#com.vaadin.data# package. The package contains the
-[classname]#Property#, [classname]#Item#, and [classname]#Container# interfaces,
-along with a number of more specialized interfaces and classes.
-
-Notice that the Data Model does not define data representation, but only
-interfaces. This leaves the representation fully to the implementation of the
-containers. The representation can be almost anything, such as a plain old Java
-object (POJO) structure, a filesystem, or a database query.
-
-The Data Model is used heavily in the core user interface components of Vaadin,
-especially the field components, that is, components that implement the
-[classname]#Field# interface or more typically extend
-[classname]#AbstractField#, which defines many common features. A key feature of
-all the built-in field components is that they can either maintain their data by
-themselves or be bound to an external data source. The value of a field is
-always available through the [classname]#Property# interface. As more than one
-component can be bound to the same data source, it is easy to implement various
-viewer-editor patterns.
-
-The relationships of the various interfaces are shown in
-<<figure.datamodel.overview.relationships>>; the value change event and listener
-interfaces are shown only for the [classname]#Property# interface, while the
-notifier interfaces are omitted altogether.
-
-[[figure.datamodel.overview.relationships]]
-.Interface Relationships in Vaadin Data Model
-image::img/datamodel-interfaces-hi.png[]
-
-The Data Model has many important and useful features, such as support for
-change notification. Especially containers have many helper interfaces,
-including ones that allow indexing, ordering, sorting, and filtering the data.
-Also [classname]#Field# components provide a number of features involving the
-data model, such as buffering, validation, and lazy loading.
-
-Vaadin provides a number of built-in implementations of the data model
-interfaces. The built-in implementations are used as the default data models in
-many field components.
-
-In addition to the built-in implementations, many data model implementations,
-such as containers, are available as add-ons, either from the Vaadin Directory
-or from independent sources. Both commercial and free implementations exist. The
-JPAContainer, described in
-<<dummy/../../../framework/jpacontainer/jpacontainer-overview.asciidoc#jpacontainer.overview,"Vaadin
-JPAContainer">>, is the most often used conmmercial container add-on. The
-installation of add-ons is described in
-<<dummy/../../../framework/addons/addons-overview.asciidoc#addons.overview,"Using
-Vaadin Add-ons">>. Notice that unlike with most regular add-on components, you
-do not need to compile a widget set for add-ons that include just data model
-implementations.
diff --git a/documentation/datamodel/datamodel-properties.asciidoc b/documentation/datamodel/datamodel-properties.asciidoc
deleted file mode 100644
index d5d0d3e39d..0000000000
--- a/documentation/datamodel/datamodel-properties.asciidoc
+++ /dev/null
@@ -1,399 +0,0 @@
----
-title: Properties
-order: 2
-layout: page
----
-
-[[datamodel.properties]]
-= Properties
-
-The [interfacename]#Property# interface is the base of the Vaadin Data Model. It
-provides a standardized API for a single data value object that can be read
-(get) and written (set). A property is always typed, but can optionally support
-data type conversions. The type of a property can be any Java class. Optionally,
-properties can provide value change events for following their changes.
-
-You can set the value of a property with [methodname]#setValue()# and read with
-[methodname]#getValue()#.
-
-In the following, we set and read the property value from a
-[classname]#TextField# component, which implements the [interfacename]#Property#
-interface to allow accessing the field value.
-
-
-----
-final TextField tf = new TextField("Name");
-
-// Set the value
-tf.setValue("The text field value");
-
-// When the field value is edited by the user
-tf.addValueChangeListener(
- new Property.ValueChangeListener() {
- public void valueChange(ValueChangeEvent event) {
- // Do something with the new value
- layout.addComponent(new Label(tf.getValue()));
- }
-});
-----
-See the http://demo.vaadin.com/book-examples-vaadin7/book#datamodel.properties.basic[on-line example, window="_blank"].
-
-Changes in the property value usually fire a [classname]#ValueChangeEvent#,
-which can be handled with a [classname]#ValueChangeListener#. The event object
-provides reference to the property with [methodname]#getProperty()#. Note that
-its [methodname]#getValue()# method returns the value with [classname]#Object#
-type, so you need to cast it to the proper type.
-
-Properties are in themselves unnamed. They are collected in __items__, which
-associate the properties with names: the __Property Identifiers__ or __PID__s.
-Items can be further contained in containers and are identified with __Item
-Identifiers__ or __IID__s. In the spreadsheet analogy, __Property Identifiers__
-would correspond to column names and __Item Identifiers__ to row names. The
-identifiers can be arbitrary objects, but must implement the
-[methodname]#equals(Object)# and [methodname]#hashCode()# methods so that they
-can be used in any standard Java [classname]#Collection#.
-
-The [classname]#Property# interface can be utilized either by implementing the
-interface or by using some of the built-in property implementations. Vaadin
-includes a [classname]#Property# interface implementation for arbitrary function
-pairs and bean properties, with the [classname]#MethodProperty# class, and for
-simple object properties, with the [classname]#ObjectProperty# class, as
-described later.
-
-In addition to the simple components, selection components provide their current
-selection as the property value. In single selection mode, the property is a
-single item identifier, while in multiple selection mode it is a set of item
-identifiers. See the documentation of the selection components for further
-details.
-
-Components that can be bound to a property have an internal default data source
-object, typically a [classname]#ObjectProperty#, which is described later. As
-all such components are viewers or editors, also described later, so you can
-rebind a component to any data source with
-[methodname]#setPropertyDataSource()#.
-
-[[datamodel.properties.viewers]]
-== Property Viewers and Editors
-
-The most important function of the [classname]#Property# as well as of the other
-data model interfaces is to connect classes implementing the interface directly
-to editor and viewer classes. This means connecting a data source (model) to a
-user interface component (views) to allow editing or viewing the data model.
-
-A property can be bound to a component implementing the [classname]#Viewer#
-interface with [methodname]#setPropertyDataSource()#.
-
-
-----
-// Have a data model
-ObjectProperty property =
- new ObjectProperty("Hello", String.class);
-
-// Have a component that implements Viewer
-Label viewer = new Label();
-
-// Bind it to the data
-viewer.setPropertyDataSource(property);
-----
-
-You can use the same method in the [classname]#Editor# interface to bind a
-component that allows editing a particular property type to a property.
-
-
-----
-// Have a data model
-ObjectProperty property =
- new ObjectProperty("Hello", String.class);
-
-// Have a component that implements Viewer
-TextField editor = new TextField("Edit Greeting");
-
-// Bind it to the data
-editor.setPropertyDataSource(property);
-
-----
-
-As all field components implement the [classname]#Property# interface, you can
-bind any component implementing the [classname]#Viewer# interface to any field,
-assuming that the viewer is able the view the object type of the field.
-Continuing from the above example, we can bind a [classname]#Label# to the
-[classname]#TextField# value:
-
-
-----
-Label viewer = new Label();
-viewer.setPropertyDataSource(editor);
-
-// The value shown in the viewer is updated immediately
-// after editing the value in the editor (once it
-// loses the focus)
-editor.setImmediate(true);
-----
-
-If a field has validators, as described in
-<<dummy/../../../framework/components/components-fields#components.fields.validation,"Field
-Validation">>, the validators are executed before writing the value to the
-property data source, or by calling the [methodname]#validate()# or
-[methodname]#commit()# for the field.
-
-
-[[datamodel.properties.objectproperty]]
-== [classname]#ObjectProperty# Implementation
-
-The [classname]#ObjectProperty# class is a simple implementation of the
-[classname]#Property# interface that allows storing an arbitrary Java object.
-
-
-----
-// Have a component that implements Viewer interface
-final TextField tf = new TextField("Name");
-
-// Have a data model with some data
-String myObject = "Hello";
-
-// Wrap it in an ObjectProperty
-ObjectProperty property =
- new ObjectProperty(myObject, String.class);
-
-// Bind the property to the component
-tf.setPropertyDataSource(property);
-----
-
-
-[[datamodel.properties.converter]]
-== Converting Between Property Type and Representation
-
-Fields allow editing a certain type, such as a [classname]#String# or
-[classname]#Date#. The bound property, on the other hand, could have some
-entirely different type. Conversion between a representation edited by the field
-and the model defined in the property is handler with a converter that
-implements the [interfacename]#Converter# interface.
-
-Most common type conversions, such as between string and integer, are handled by
-the default converters. They are created in a converter factory global in the
-application.
-
-[[datamodel.properties.converter.basic]]
-=== Basic Use of Converters
-
-The [methodname]#setConverter([interfacename]#Converter#)# method sets the
-converter for a field. The method is defined in [classname]#AbstractField#.
-
-
-----
-// Have an integer property
-final ObjectProperty<Integer> property =
- new ObjectProperty<Integer>(42);
-
-// Create a TextField, which edits Strings
-final TextField tf = new TextField("Name");
-
-// Use a converter between String and Integer
-tf.setConverter(new StringToIntegerConverter());
-
-// And bind the field
-tf.setPropertyDataSource(property);
-----
-
-The built-in converters are the following:
-
-[[datamodel.properties.converter.basic.built-in]]
-.Built-in Converters
-[options="header"]
-|===============
-|Converter|Representation|Model
-|[classname]#StringToIntegerConverter#|[classname]#String#|[classname]#Integer#
-|[classname]#StringToDoubleConverter#|[classname]#String#|[classname]#Double#
-|[classname]#StringToNumberConverter#|[classname]#String#|[classname]#Number#
-|[classname]#StringToBooleanConverter#|[classname]#String#|[classname]#Boolean#
-|[classname]#StringToDateConverter#|[classname]#String#|[classname]#Date#
-|[classname]#DateToLongConverter#|[classname]#Date#|[classname]#Long#
-
-|===============
-
-
-
-In addition, there is a [classname]#ReverseConverter# that takes a converter as
-a parameter and reverses the conversion direction.
-
-If a converter already exists for a type, the
-[methodname]#setConverter([interfacename]#Class#)# retrieves the converter for
-the given type from the converter factory, and then sets it for the field. This
-method is used implicitly when binding field to a property data source.
-
-
-[[datamodel.properties.converter.custom]]
-=== Implementing a Converter
-
-A conversion always occurs between a __representation type__, edited by the
-field component, and a __model type__, that is, the type of the property data
-source. Converters implement the [interfacename]#Converter# interface defined in
-the [package]#com.vaadin.data.util.converter# package.
-
-For example, let us assume that we have a simple [classname]#Complex# type for
-storing complex values.
-
-
-----
-public class ComplexConverter
- implements Converter<String, Complex> {
- @Override
- public Complex convertToModel(String value, Locale locale)
- throws ConversionException {
- String parts[] =
- value.replaceAll("[\\(\\)]", "").split(",");
- if (parts.length != 2)
- throw new ConversionException(
- "Unable to parse String to Complex");
- return new Complex(Double.parseDouble(parts[0]),
- Double.parseDouble(parts[1]));
- }
-
- @Override
- public String convertToPresentation(Complex value,
- Locale locale)
- throws ConversionException {
- return "("+value.getReal()+","+value.getImag()+")";
- }
-
- @Override
- public Class<Complex> getModelType() {
- return Complex.class;
- }
-
- @Override
- public Class<String> getPresentationType() {
- return String.class;
- }
-}
-----
-
-The conversion methods get the locale for the conversion as a parameter.
-
-
-[[datamodel.properties.converter.converterfactory]]
-=== Converter Factory
-
-If a field does not directly allow editing a property type, a default converter
-is attempted to create using an application-global converter factory. If you
-define your own converters that you wish to include in the converter factory,
-you need to implement one yourself. While you could implement the
-[interfacename]#ConverterFactory# interface, it is usually easier to just extend
-[classname]#DefaultConverterFactory#.
-
-
-----
-class MyConverterFactory extends DefaultConverterFactory {
- @Override
- public <PRESENTATION, MODEL> Converter<PRESENTATION, MODEL>
- createConverter(Class<PRESENTATION> presentationType,
- Class<MODEL> modelType) {
- // Handle one particular type conversion
- if (String.class == presentationType &&
- Complex.class == modelType)
- return (Converter<PRESENTATION, MODEL>)
- new ComplexConverter();
-
- // Default to the supertype
- return super.createConverter(presentationType,
- modelType);
- }
-}
-
-// Use the factory globally in the application
-Application.getCurrentApplication().setConverterFactory(
- new MyConverterFactory());
-----
-
-
-
-ifdef::web[]
-[[datamodel.properties.implementing]]
-== Implementing the [classname]#Property# Interface
-
-Implementation of the [classname]#Property# interface requires defining setters
-and getters for the value and the __read-only__ mode. Only a getter is needed
-for the property type, as the type is often fixed in property implementations.
-
-The following example shows a simple implementation of the [classname]#Property#
-interface:
-
-
-----
-class MyProperty implements Property {
- Integer data = 0;
- boolean readOnly = false;
-
- // Return the data type of the model
- public Class<?> getType() {
- return Integer.class;
- }
-
- public Object getValue() {
- return data;
- }
-
- // Override the default implementation in Object
- @Override
- public String toString() {
- return Integer.toHexString(data);
- }
-
- public boolean isReadOnly() {
- return readOnly;
- }
-
- public void setReadOnly(boolean newStatus) {
- readOnly = newStatus;
- }
-
- public void setValue(Object newValue)
- throws ReadOnlyException, ConversionException {
- if (readOnly)
- throw new ReadOnlyException();
-
- // Already the same type as the internal representation
- if (newValue instanceof Integer)
- data = (Integer) newValue;
-
- // Conversion from a string is required
- else if (newValue instanceof String)
- try {
- data = Integer.parseInt((String) newValue, 16);
- } catch (NumberFormatException e) {
- throw new ConversionException();
- }
- else
- // Don't know how to convert any other types
- throw new ConversionException();
-
- // Reverse decode the hexadecimal value
- }
-}
-
-// Instantiate the property and set its data
-MyProperty property = new MyProperty();
-property.setValue(42);
-
-// Bind it to a component
-final TextField tf = new TextField("Name", property);
-----
-
-The components get the displayed value by the [methodname]#toString()# method,
-so it is necessary to override it. To allow editing the value, value returned in
-the [methodname]#toString()# must be in a format that is accepted by the
-[methodname]#setValue()# method, unless the property is read-only. The
-[methodname]#toString()# can perform any type conversion necessary to make the
-internal type a string, and the [methodname]#setValue()# must be able to make a
-reverse conversion.
-
-The implementation example does not notify about changes in the property value
-or in the read-only mode. You should normally also implement at least the
-[classname]#Property.ValueChangeNotifier# and
-[classname]#Property.ReadOnlyStatusChangeNotifier#. See the
-[classname]#ObjectProperty# class for an example of the implementation.
-
-endif::web[]
-
-
-
diff --git a/documentation/datamodel/img/beanitem-nested-beans.png b/documentation/datamodel/img/beanitem-nested-beans.png
deleted file mode 100644
index ea8c51ccd4..0000000000
--- a/documentation/datamodel/img/beanitem-nested-beans.png
+++ /dev/null
Binary files differ
diff --git a/documentation/datamodel/img/beanitemcontainer-nested-beans.png b/documentation/datamodel/img/beanitemcontainer-nested-beans.png
deleted file mode 100644
index fbd5fa155a..0000000000
--- a/documentation/datamodel/img/beanitemcontainer-nested-beans.png
+++ /dev/null
Binary files differ
diff --git a/documentation/datamodel/img/datamodel-interfaces-hi.png b/documentation/datamodel/img/datamodel-interfaces-hi.png
deleted file mode 100644
index 9bebdb0ac0..0000000000
--- a/documentation/datamodel/img/datamodel-interfaces-hi.png
+++ /dev/null
Binary files differ
diff --git a/documentation/datamodel/img/datamodel-interfaces-lo.png b/documentation/datamodel/img/datamodel-interfaces-lo.png
deleted file mode 100644
index 2139cf9f08..0000000000
--- a/documentation/datamodel/img/datamodel-interfaces-lo.png
+++ /dev/null
Binary files differ
diff --git a/documentation/datamodel/img/datamodel-whitebg.png b/documentation/datamodel/img/datamodel-whitebg.png
deleted file mode 100644
index 803dd70c08..0000000000
--- a/documentation/datamodel/img/datamodel-whitebg.png
+++ /dev/null
Binary files differ
diff --git a/documentation/datamodel/original-drawings/beanitem-doublebinding.svg b/documentation/datamodel/original-drawings/beanitem-doublebinding.svg
deleted file mode 100644
index 509013ab07..0000000000
--- a/documentation/datamodel/original-drawings/beanitem-doublebinding.svg
+++ /dev/null
@@ -1,1026 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="744.09448"
- height="1052.3622"
- id="svg2475"
- sodipodi:version="0.32"
- inkscape:version="0.46"
- sodipodi:docname="beanitem-doublebinding.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/magi/itmill/doc/cheatsheet/vaadin-cheatsheet.png"
- inkscape:export-xdpi="300.01001"
- inkscape:export-ydpi="300.01001"
- version="1.0">
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10000"
- guidetolerance="4"
- objecttolerance="4"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.2"
- inkscape:cx="458.26878"
- inkscape:cy="757.29383"
- inkscape:document-units="mm"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1680"
- inkscape:window-height="1026"
- inkscape:window-x="1280"
- inkscape:window-y="0"
- inkscape:snap-nodes="true"
- inkscape:snap-bbox="true"
- units="mm"
- inkscape:snap-global="true"
- inkscape:window-maximized="1">
- <inkscape:grid
- snapvisiblegridlinesonly="true"
- dotted="false"
- type="xygrid"
- id="grid4674"
- visible="true"
- enabled="true"
- units="mm"
- empspacing="5"
- spacingx="1mm"
- spacingy="1mm" />
- </sodipodi:namedview>
- <defs
- id="defs2477">
- <marker
- style="overflow:visible"
- id="Arrow1Lstart"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="Arrow1Lstart">
- <path
- transform="matrix(0.8,0,0,0.8,10,0)"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z"
- id="path5210" />
- </marker>
- <marker
- inkscape:stockid="DotS"
- orient="auto"
- refY="0"
- refX="0"
- id="DotS"
- style="overflow:visible">
- <path
- id="path3636"
- 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"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
- transform="matrix(0.2,0,0,0.2,1.48,0.2)" />
- </marker>
- <marker
- style="overflow:visible"
- id="TriangleOutS"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="TriangleOutS">
- <path
- transform="scale(0.2,0.2)"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- id="path3717" />
- </marker>
- <inkscape:path-effect
- effect="skeletal"
- id="path-effect2503"
- prop_scale="1"
- pattern="M 349.202,225.086 L 405.895,331.386 L 370.462,338.472 "
- copytype="single_stretched" />
- <inkscape:path-effect
- effect="skeletal"
- id="path-effect2499"
- prop_scale="1" />
- <inkscape:path-effect
- effect="skeletal"
- id="path-effect2497"
- prop_scale="1"
- pattern="M 432.28346,272.83462 L 403.93701,216.14171"
- pattern-nodetypes="cc" />
- <marker
- inkscape:stockid="Arrow1Send"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Send"
- style="overflow:visible">
- <path
- id="path3641"
- d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lend"
- style="overflow:visible">
- <path
- id="path3629"
- d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(-0.8,0,0,-0.8,-10,0)" />
- </marker>
- <inkscape:perspective
- id="perspective3487"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 526.18109 : 1"
- sodipodi:type="inkscape:persp3d" />
- <marker
- inkscape:stockid="Arrow2Sendp"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow2Sendp"
- style="overflow:visible">
- <path
- id="path28139"
- style="font-size:12px;fill:#f39300;fill-rule:evenodd;stroke:#f39300;stroke-width:0.625;stroke-linejoin:round"
- 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"
- transform="matrix(-0.3,0,0,-0.3,0.69,0)" />
- </marker>
- <marker
- inkscape:stockid="TriangleOutSK"
- orient="auto"
- refY="0"
- refX="0"
- id="TriangleOutSK"
- style="overflow:visible">
- <path
- id="path36611"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)" />
- </marker>
- <marker
- inkscape:stockid="TriangleOutSH"
- orient="auto"
- refY="0"
- refX="0"
- id="TriangleOutSH"
- style="overflow:visible">
- <path
- id="path36614"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)" />
- </marker>
- <marker
- inkscape:stockid="TriangleOutSA"
- orient="auto"
- refY="0"
- refX="0"
- id="TriangleOutSA"
- style="overflow:visible">
- <path
- id="path36617"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)" />
- </marker>
- <marker
- inkscape:stockid="TriangleOutSKF"
- orient="auto"
- refY="0"
- refX="0"
- id="TriangleOutSKF"
- style="overflow:visible">
- <path
- id="path36620"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)" />
- </marker>
- <marker
- inkscape:stockid="TriangleOutS9"
- orient="auto"
- refY="0"
- refX="0"
- id="TriangleOutS9"
- style="overflow:visible">
- <path
- id="path36623"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)" />
- </marker>
- <marker
- inkscape:stockid="Arrow2SendpA"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow2SendpA"
- style="overflow:visible">
- <path
- id="path3396"
- style="font-size:12px;fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:0.625;stroke-linejoin:round"
- 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"
- transform="matrix(-0.3,0,0,-0.3,0.69,0)" />
- </marker>
- <marker
- inkscape:stockid="Arrow2Sendpg"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow2Sendpg"
- style="overflow:visible">
- <path
- id="path3360"
- style="font-size:12px;fill:#fcc988;fill-rule:evenodd;stroke:#fcc988;stroke-width:0.625;stroke-linejoin:round"
- 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"
- transform="matrix(-0.3,0,0,-0.3,0.69,0)" />
- </marker>
- <filter
- height="1.1"
- width="1.1"
- inkscape:label="White Halo"
- id="filter2780">
- <feMorphology
- result="result0"
- radius="3"
- operator="dilate"
- id="feMorphology2782" />
- <feFlood
- result="result3"
- in="result0"
- flood-opacity="1"
- flood-color="rgb(255,255,255)"
- id="feFlood2786" />
- <feComposite
- result="result4"
- operator="in"
- in2="result0"
- in="result3"
- id="feComposite2623" />
- <feMerge
- id="feMerge2629">
- <feMergeNode
- in="result4"
- id="feMergeNode2631"
- inkscape:collect="always" />
- <feMergeNode
- in="SourceGraphic"
- id="feMergeNode2633"
- inkscape:collect="always" />
- </feMerge>
- </filter>
- <marker
- style="overflow:visible"
- id="TriangleOutSn"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="TriangleOutSn">
- <path
- transform="scale(0.2,0.2)"
- style="fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:1pt;marker-start:none"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- id="path4441" />
- </marker>
- <marker
- style="overflow:visible"
- id="TriangleOutS9F"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="TriangleOutS9F">
- <path
- transform="scale(0.2,0.2)"
- style="fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:1pt;marker-start:none"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- id="path4444" />
- </marker>
- <marker
- style="overflow:visible"
- id="TriangleOutSI"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="TriangleOutSI">
- <path
- transform="scale(0.2,0.2)"
- style="fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:1pt;marker-start:none"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- id="path4447" />
- </marker>
- <marker
- style="overflow:visible"
- id="TriangleOutSO"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="TriangleOutSO">
- <path
- transform="scale(0.2,0.2)"
- style="fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:1pt;marker-start:none"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- id="path4450" />
- </marker>
- <marker
- style="overflow:visible"
- id="TriangleOutSW"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="TriangleOutSW">
- <path
- transform="scale(0.2,0.2)"
- style="fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:1pt;marker-start:none"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- id="path4453" />
- </marker>
- <marker
- style="overflow:visible"
- id="TriangleOutSB"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="TriangleOutSB">
- <path
- transform="scale(0.2,0.2)"
- style="fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:1pt;marker-start:none"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- id="path4456" />
- </marker>
- <marker
- style="overflow:visible"
- id="TriangleOutSZ"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="TriangleOutSZ">
- <path
- transform="scale(0.2,0.2)"
- style="fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:1pt;marker-start:none"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- id="path4459" />
- </marker>
- <marker
- inkscape:stockid="DotSq"
- orient="auto"
- refY="0"
- refX="0"
- id="DotSq"
- style="overflow:visible">
- <path
- id="path5853"
- 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"
- style="fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:1pt;marker-start:none;marker-end:none"
- transform="matrix(0.2,0,0,0.2,1.48,0.2)" />
- </marker>
- <marker
- style="overflow:visible"
- id="TriangleOutSBO"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="TriangleOutSBO">
- <path
- transform="scale(0.2,0.2)"
- style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- id="path7501" />
- </marker>
- <marker
- inkscape:stockid="DotSu"
- orient="auto"
- refY="0"
- refX="0"
- id="DotSu"
- style="overflow:visible">
- <path
- id="path9463"
- 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"
- style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none;marker-end:none"
- transform="matrix(0.2,0,0,0.2,1.48,0.2)" />
- </marker>
- <filter
- id="filter10694"
- inkscape:label="Black Halo"
- width="1.1"
- height="1.1">
- <feMorphology
- id="feMorphology10696"
- operator="dilate"
- radius="3"
- result="result0" />
- <feFlood
- id="feFlood10698"
- flood-color="rgb(0,0,0)"
- flood-opacity="1"
- in="result0"
- result="result3" />
- <feComposite
- id="feComposite10700"
- in="result3"
- in2="result0"
- operator="in"
- result="result4" />
- <feMerge
- id="feMerge10702">
- <feMergeNode
- inkscape:collect="always"
- id="feMergeNode10704"
- in="result4" />
- <feMergeNode
- inkscape:collect="always"
- id="feMergeNode10706"
- in="SourceGraphic" />
- </feMerge>
- </filter>
- <marker
- style="overflow:visible"
- id="TriangleOutSu"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="TriangleOutSu">
- <path
- transform="scale(0.2,0.2)"
- style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- id="path8127" />
- </marker>
- <marker
- style="overflow:visible"
- id="TriangleOutSI8"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="TriangleOutSI8">
- <path
- transform="scale(0.2,0.2)"
- style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- id="path8130" />
- </marker>
- <marker
- style="overflow:visible"
- id="TriangleOutSr"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="TriangleOutSr">
- <path
- transform="scale(0.2,0.2)"
- style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- id="path8133" />
- </marker>
- <marker
- style="overflow:visible"
- id="TriangleOutSM"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="TriangleOutSM">
- <path
- transform="scale(0.2,0.2)"
- style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- id="path8136" />
- </marker>
- <marker
- style="overflow:visible"
- id="TriangleOutSb"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="TriangleOutSb">
- <path
- transform="scale(0.2,0.2)"
- style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- id="path8139" />
- </marker>
- <marker
- markerWidth="4.6297302"
- markerHeight="5.7450776"
- orient="auto"
- id="marker18095">
- <g
- transform="matrix(0.5,0,0,0.5,-185.64298,-257.19655)"
- id="g11064">
- <path
- 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"
- 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"
- id="path11050"
- sodipodi:nodetypes="csccccccsccssssssssssssssccc" />
- <path
- 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"
- 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"
- id="path11035"
- sodipodi:nodetypes="cccscccsssssssscccsccc" />
- </g>
- </marker>
- <marker
- markerWidth="4.6297355"
- markerHeight="5.7450781"
- orient="auto"
- id="marker44971">
- <g
- transform="matrix(0.5,0,0,0.5,-185.64299,-257.19655)"
- id="g18059">
- <path
- 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"
- 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"
- id="path18061"
- sodipodi:nodetypes="csccccccsccssssssssssssssccc" />
- <path
- 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"
- 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"
- id="path18063"
- sodipodi:nodetypes="cccscccsssssssscccsccc" />
- </g>
- </marker>
- <marker
- markerWidth="4.6297302"
- markerHeight="5.7450786"
- orient="auto"
- id="marker52016">
- <g
- transform="matrix(0.5,0,0,0.5,-185.64299,-257.19655)"
- id="g52010">
- <path
- 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"
- 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"
- id="path52012"
- sodipodi:nodetypes="csccccccsccssssssssssssssccc" />
- <path
- 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"
- 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"
- id="path52014"
- sodipodi:nodetypes="cccscccsssssssscccsccc" />
- </g>
- </marker>
- <marker
- markerWidth="4.6297255"
- markerHeight="5.745079"
- orient="auto"
- id="marker64887">
- <g
- transform="matrix(0.5,0,0,0.5,-185.64299,-257.19655)"
- id="g64855">
- <path
- 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"
- 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"
- id="path64857"
- sodipodi:nodetypes="csccccccsccssssssssssssssccc" />
- <path
- 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"
- 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"
- id="path64859"
- sodipodi:nodetypes="cccscccsssssssscccsccc" />
- </g>
- </marker>
- <marker
- markerWidth="4.6297302"
- markerHeight="5.745079"
- orient="auto"
- id="marker4057">
- <g
- transform="matrix(0.5,0,0,0.5,-185.64299,-257.19655)"
- id="g51986">
- <path
- 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"
- 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"
- id="path51988"
- sodipodi:nodetypes="csccccccsccssssssssssssssccc" />
- <path
- 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"
- 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"
- id="path51990"
- sodipodi:nodetypes="cccscccsssssssscccsccc" />
- </g>
- </marker>
- <marker
- markerWidth="4.0334239"
- markerHeight="4.5568175"
- orient="auto"
- id="marker72805">
- <path
- 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"
- 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"
- id="path18057"
- sodipodi:nodetypes="cccscccsssssssscccsccc" />
- </marker>
- <marker
- markerWidth="4.0334177"
- markerHeight="4.5568123"
- orient="auto"
- id="marker72808">
- <path
- 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"
- 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"
- id="path72801"
- sodipodi:nodetypes="cccscccsssssssscccsccc" />
- </marker>
- <marker
- inkscape:stockid="DotSuN"
- orient="auto"
- refY="0"
- refX="0"
- id="DotSuN"
- style="overflow:visible">
- <path
- id="path81580"
- 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"
- style="fill:#f39300;fill-rule:evenodd;stroke:#f39300;stroke-width:1pt;marker-start:none;marker-end:none"
- transform="matrix(0.2,0,0,0.2,1.48,0.2)" />
- </marker>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- id="perspective3071" />
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- id="perspective3071-3" />
- <marker
- inkscape:stockid="DotSqn"
- orient="auto"
- refY="0"
- refX="0"
- id="DotSqn"
- style="overflow:visible">
- <path
- id="path3825"
- 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"
- style="marker-end:none;fill-rule:evenodd;marker-start:none;stroke:#49c2f1;stroke-width:1pt;fill:#49c2f1"
- transform="matrix(0.2,0,0,0.2,1.48,0.2)" />
- </marker>
- </defs>
- <metadata
- id="metadata2480">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1">
- <flowRoot
- transform="translate(-0.8858472,0)"
- xml:space="preserve"
- id="flowRoot2485"
- 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"><flowRegion
- id="flowRegion2487"><rect
- id="rect2489"
- width="184.28572"
- height="120"
- x="262.85715"
- y="238.07646"
- 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" /></flowRegion><flowPara
- id="flowPara2491" /></flowRoot> <g
- id="g3178"
- transform="translate(-4.4572759,23.214286)" />
- <flowRoot
- transform="translate(-0.8858472,0)"
- xml:space="preserve"
- id="flowRoot8724"
- 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"><flowRegion
- id="flowRegion8726"><rect
- id="rect8728"
- width="29.904507"
- height="22.868153"
- x="39.286312"
- y="752.14441"
- 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" /></flowRegion><flowPara
- id="flowPara8730" /></flowRoot> <g
- id="g18053"
- transform="matrix(0.5,0,0,0.5,102.45714,0.7940752)" />
- <g
- transform="translate(-166.83345,55.50466)"
- id="g2630">
- <rect
- 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"
- id="rect2632"
- width="134.64566"
- height="35.433067"
- x="205.84985"
- y="181.8969"
- ry="3.7880721" />
- <flowRoot
- transform="translate(273.91267,204.25271)"
- id="flowRoot2634"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- xml:space="preserve"><flowRegion
- id="flowRegion2636" /><flowPara
- id="flowPara2638">BeanItem&lt;DaBean&gt;</flowPara></flowRoot> <path
- sodipodi:type="arc"
- style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.12598419;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:2.12598425, 2.12598425;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path4306"
- sodipodi:cx="487.20471"
- sodipodi:cy="228.54329"
- sodipodi:rx="7.0740213"
- sodipodi:ry="7.0907817"
- d="M 494.27873,228.54329 A 7.0740213,7.0907817 0 1 1 494.27873,228.53995"
- sodipodi:start="0"
- sodipodi:end="6.2827149"
- transform="translate(-214.12137,-46.769087)"
- sodipodi:open="true" />
- </g>
- <g
- transform="translate(-165.25597,-21.834568)"
- id="g3696">
- <rect
- style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#49c2f1;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"
- id="rect3698"
- width="74.409447"
- height="35.43306"
- x="234.86888"
- y="181.8969"
- ry="3.7880721" />
- <flowRoot
- transform="translate(273.91267,204.25271)"
- id="flowRoot3700"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- xml:space="preserve"><flowRegion
- id="flowRegion3702" /><flowPara
- id="flowPara3704">DaBean</flowPara></flowRoot> </g>
- <g
- transform="translate(-208.41219,126.37676)"
- id="g3706">
- <rect
- 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"
- id="rect3708"
- width="74.409447"
- height="35.43306"
- x="234.86888"
- y="181.8969"
- ry="3.7880721" />
- <flowRoot
- transform="translate(273.91267,204.25271)"
- id="flowRoot3710"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- xml:space="preserve"><flowRegion
- id="flowRegion3712" /><flowPara
- id="flowPara3714">Form</flowPara></flowRoot> <path
- sodipodi:type="arc"
- style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.12598419;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:2.12598425, 2.12598425;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path4287"
- sodipodi:cx="487.20471"
- sodipodi:cy="228.54329"
- sodipodi:rx="7.0740213"
- sodipodi:ry="7.0907817"
- d="M 494.27873,228.54329 A 7.0740213,7.0907817 0 1 1 494.27873,228.53995"
- sodipodi:start="0"
- sodipodi:end="6.2827149"
- transform="translate(-215.0244,-46.226947)"
- sodipodi:open="true" />
- </g>
- <path
- sodipodi:nodetypes="cc"
- 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(#DotSqn);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
- d="M 97.827294,272.83462 L 63.779528,308.26769"
- id="path4290"
- inkscape:connector-type="polyline"
- inkscape:connection-start="#g2630" />
- <g
- transform="translate(-123.81342,126.37858)"
- id="g4292">
- <rect
- 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"
- id="rect4294"
- width="74.409447"
- height="35.43306"
- x="234.86888"
- y="181.8969"
- ry="3.7880721" />
- <flowRoot
- transform="translate(273.91267,204.25271)"
- id="flowRoot4296"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- xml:space="preserve"><flowRegion
- id="flowRegion4298" /><flowPara
- id="flowPara4300">Form</flowPara></flowRoot> <path
- sodipodi:type="arc"
- style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.12598419;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:2.12598425, 2.12598425;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path4302"
- sodipodi:cx="487.20471"
- sodipodi:cy="228.54329"
- sodipodi:rx="7.0740213"
- sodipodi:ry="7.0907817"
- d="M 494.27873,228.54329 A 7.0740213,7.0907817 0 1 1 494.27873,228.53995"
- sodipodi:start="0"
- sodipodi:end="6.2827149"
- transform="translate(-215.0244,-46.226947)"
- sodipodi:open="true" />
- </g>
- <path
- sodipodi:nodetypes="cc"
- 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(#DotSqn);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
- d="M 114.83517,272.83462 L 148.8189,308.26769"
- id="path3716"
- inkscape:connector-type="polyline"
- inkscape:connection-start="#g2630" />
- <path
- sodipodi:nodetypes="cc"
- 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(#DotSqn);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
- d="M 106.66359,195.49539 L 106.29921,237.40155"
- id="path4304"
- inkscape:connector-type="polyline"
- inkscape:connection-start="#g3696" />
- <g
- transform="translate(24.465107,55.919946)"
- id="g4308">
- <rect
- 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"
- id="rect4310"
- width="134.64566"
- height="35.433067"
- x="205.84985"
- y="181.8969"
- ry="3.7880721" />
- <flowRoot
- transform="translate(273.91267,204.25271)"
- id="flowRoot4312"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- xml:space="preserve"><flowRegion
- id="flowRegion4314" /><flowPara
- id="flowPara4316">BeanItem&lt;DaBean&gt;</flowPara></flowRoot> <path
- sodipodi:type="arc"
- style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.12598419;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:2.12598425, 2.12598425;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path4318"
- sodipodi:cx="487.20471"
- sodipodi:cy="228.54329"
- sodipodi:rx="7.0740213"
- sodipodi:ry="7.0907817"
- d="M 494.27873,228.54329 A 7.0740213,7.0907817 0 1 1 494.27873,228.53995"
- sodipodi:start="0"
- sodipodi:end="6.2827149"
- transform="translate(-214.12137,-46.769087)"
- sodipodi:open="true" />
- </g>
- <g
- transform="translate(96.43882,-21.681466)"
- id="g4320">
- <rect
- style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#49c2f1;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"
- id="rect4322"
- width="74.409447"
- height="35.43306"
- x="234.86888"
- y="181.8969"
- ry="3.7880721" />
- <flowRoot
- transform="translate(273.91267,204.25271)"
- id="flowRoot4324"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- xml:space="preserve"><flowRegion
- id="flowRegion4326" /><flowPara
- id="flowPara4328">DaBean</flowPara></flowRoot> </g>
- <g
- transform="translate(25.457474,125.80388)"
- id="g4330">
- <rect
- 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"
- id="rect4332"
- width="74.409447"
- height="35.43306"
- x="234.86888"
- y="182.48613"
- ry="3.7880721" />
- <flowRoot
- transform="translate(273.91267,204.25271)"
- id="flowRoot4334"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- xml:space="preserve"><flowRegion
- id="flowRegion4336" /><flowPara
- id="flowPara4338">Form</flowPara></flowRoot> <path
- sodipodi:type="arc"
- style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.12598419;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:2.12598425, 2.12598425;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path4340"
- sodipodi:cx="487.20471"
- sodipodi:cy="228.54329"
- sodipodi:rx="7.0740213"
- sodipodi:ry="7.0907817"
- d="M 494.27873,228.54329 A 7.0740213,7.0907817 0 1 1 494.27873,228.53995"
- sodipodi:start="0"
- sodipodi:end="6.2827149"
- transform="translate(-215.0244,-46.226947)"
- sodipodi:open="true" />
- </g>
- <path
- sodipodi:nodetypes="cc"
- 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(#DotSqn);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
- d="M 297.63779,273.24991 L 297.6378,308.26769"
- id="path4342"
- inkscape:connector-type="polyline" />
- <g
- transform="translate(167.18976,126.38479)"
- id="g4344">
- <rect
- 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"
- id="rect4346"
- width="74.409447"
- height="35.43306"
- x="234.86888"
- y="181.8969"
- ry="3.7880721" />
- <flowRoot
- transform="translate(273.91267,204.25271)"
- id="flowRoot4348"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- xml:space="preserve"><flowRegion
- id="flowRegion4350" /><flowPara
- id="flowPara4352">Form</flowPara></flowRoot> <path
- sodipodi:type="arc"
- style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.12598419;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:2.12598425, 2.12598425;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path4354"
- sodipodi:cx="487.20471"
- sodipodi:cy="228.54329"
- sodipodi:rx="7.0740213"
- sodipodi:ry="7.0907817"
- d="M 494.27873,228.54329 A 7.0740213,7.0907817 0 1 1 494.27873,228.53995"
- sodipodi:start="0"
- sodipodi:end="6.2827149"
- transform="translate(-215.0244,-46.226947)"
- sodipodi:open="true" />
- </g>
- <path
- sodipodi:nodetypes="cc"
- 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(#DotSqn);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
- d="M 439.37007,273.24991 L 439.37008,308.26769"
- id="path4356"
- inkscape:connector-type="polyline"
- inkscape:connection-start="#g4360" />
- <path
- sodipodi:nodetypes="cc"
- 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(#DotSqn);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
- d="M 345.76938,197.14849 L 297.63779,237.81684"
- id="path4358"
- inkscape:connector-type="polyline"
- inkscape:connection-start="#g4320" />
- <g
- transform="translate(166.19738,55.91995)"
- id="g4360">
- <rect
- 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"
- id="rect4362"
- width="134.64566"
- height="35.433067"
- x="205.84985"
- y="181.8969"
- ry="3.7880721" />
- <flowRoot
- transform="translate(273.91267,204.25271)"
- id="flowRoot4364"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- xml:space="preserve"><flowRegion
- id="flowRegion4366" /><flowPara
- id="flowPara4368">BeanItem&lt;DaBean&gt;</flowPara></flowRoot> <path
- sodipodi:type="arc"
- style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.12598419;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:2.12598425, 2.12598425;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path4370"
- sodipodi:cx="487.20471"
- sodipodi:cy="228.54329"
- sodipodi:rx="7.0740213"
- sodipodi:ry="7.0907817"
- d="M 494.27873,228.54329 A 7.0740213,7.0907817 0 1 1 494.27873,228.53995"
- sodipodi:start="0"
- sodipodi:end="6.2827149"
- transform="translate(-214.12137,-46.769087)"
- sodipodi:open="true" />
- </g>
- <path
- sodipodi:nodetypes="cc"
- 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(#DotSqn);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
- d="M 391.25002,197.14849 L 439.37007,237.81684"
- id="path4372"
- inkscape:connector-type="polyline"
- inkscape:connection-start="#g4320" />
- </g>
-</svg>
diff --git a/documentation/datamodel/original-drawings/datamodel-interfaces.svg b/documentation/datamodel/original-drawings/datamodel-interfaces.svg
deleted file mode 100644
index 051f60c48d..0000000000
--- a/documentation/datamodel/original-drawings/datamodel-interfaces.svg
+++ /dev/null
@@ -1,1321 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="744.09448"
- height="1052.3622"
- id="svg2475"
- sodipodi:version="0.32"
- inkscape:version="0.47pre4 r22446"
- sodipodi:docname="datamodel-interfaces.svg"
- inkscape:output_extension="org.inkscape.output.svg.inkscape"
- inkscape:export-filename="/home/magi/itmill/doc/cheatsheet/vaadin-cheatsheet.png"
- inkscape:export-xdpi="300.01001"
- inkscape:export-ydpi="300.01001"
- version="1.0">
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10000"
- guidetolerance="4"
- objecttolerance="4"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="1.6970563"
- inkscape:cx="429.28864"
- inkscape:cy="730.78696"
- inkscape:document-units="mm"
- inkscape:current-layer="layer1"
- showgrid="true"
- inkscape:window-width="1680"
- inkscape:window-height="1030"
- inkscape:window-x="-4"
- inkscape:window-y="-3"
- inkscape:snap-nodes="true"
- inkscape:snap-bbox="true"
- units="mm"
- inkscape:snap-global="true"
- inkscape:window-maximized="1">
- <inkscape:grid
- spacingy="1mm"
- spacingx="1mm"
- empspacing="5"
- units="mm"
- enabled="true"
- visible="true"
- id="grid4674"
- type="xygrid"
- dotted="false"
- snapvisiblegridlinesonly="true" />
- </sodipodi:namedview>
- <defs
- id="defs2477">
- <marker
- inkscape:stockid="Arrow1Lstart"
- orient="auto"
- refY="0"
- refX="0"
- id="Arrow1Lstart"
- style="overflow:visible">
- <path
- id="path5210"
- d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="matrix(0.8,0,0,0.8,10,0)" />
- </marker>
- <marker
- style="overflow:visible"
- id="DotS"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="DotS">
- <path
- transform="matrix(0.2,0,0,0.2,1.48,0.2)"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none"
- 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"
- id="path3636" />
- </marker>
- <marker
- inkscape:stockid="TriangleOutS"
- orient="auto"
- refY="0"
- refX="0"
- id="TriangleOutS"
- style="overflow:visible">
- <path
- id="path3717"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)" />
- </marker>
- <inkscape:path-effect
- copytype="single_stretched"
- pattern="M 349.202,225.086 L 405.895,331.386 L 370.462,338.472 "
- prop_scale="1"
- id="path-effect2503"
- effect="skeletal" />
- <inkscape:path-effect
- prop_scale="1"
- id="path-effect2499"
- effect="skeletal" />
- <inkscape:path-effect
- pattern-nodetypes="cc"
- pattern="M 432.28346,272.83462 L 403.93701,216.14171"
- prop_scale="1"
- id="path-effect2497"
- effect="skeletal" />
- <marker
- style="overflow:visible"
- id="Arrow1Send"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="Arrow1Send">
- <path
- transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z"
- id="path3641" />
- </marker>
- <marker
- style="overflow:visible"
- id="Arrow1Lend"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="Arrow1Lend">
- <path
- transform="matrix(-0.8,0,0,-0.8,-10,0)"
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
- d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z"
- id="path3629" />
- </marker>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 526.18109 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="744.09448 : 526.18109 : 1"
- inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
- id="perspective3487" />
- <marker
- style="overflow:visible"
- id="Arrow2Sendp"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="Arrow2Sendp">
- <path
- transform="matrix(-0.3,0,0,-0.3,0.69,0)"
- 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"
- style="font-size:12px;fill:#f39300;fill-rule:evenodd;stroke:#f39300;stroke-width:0.625;stroke-linejoin:round"
- id="path28139" />
- </marker>
- <marker
- style="overflow:visible"
- id="TriangleOutSK"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="TriangleOutSK">
- <path
- transform="scale(0.2,0.2)"
- style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- id="path36611" />
- </marker>
- <marker
- style="overflow:visible"
- id="TriangleOutSH"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="TriangleOutSH">
- <path
- transform="scale(0.2,0.2)"
- style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- id="path36614" />
- </marker>
- <marker
- style="overflow:visible"
- id="TriangleOutSA"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="TriangleOutSA">
- <path
- transform="scale(0.2,0.2)"
- style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- id="path36617" />
- </marker>
- <marker
- style="overflow:visible"
- id="TriangleOutSKF"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="TriangleOutSKF">
- <path
- transform="scale(0.2,0.2)"
- style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- id="path36620" />
- </marker>
- <marker
- style="overflow:visible"
- id="TriangleOutS9"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="TriangleOutS9">
- <path
- transform="scale(0.2,0.2)"
- style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- id="path36623" />
- </marker>
- <marker
- style="overflow:visible"
- id="Arrow2SendpA"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="Arrow2SendpA">
- <path
- transform="matrix(-0.3,0,0,-0.3,0.69,0)"
- 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"
- style="font-size:12px;fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:0.625;stroke-linejoin:round"
- id="path3396" />
- </marker>
- <marker
- style="overflow:visible"
- id="Arrow2Sendpg"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="Arrow2Sendpg">
- <path
- transform="matrix(-0.3,0,0,-0.3,0.69,0)"
- 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"
- style="font-size:12px;fill:#fcc988;fill-rule:evenodd;stroke:#fcc988;stroke-width:0.625;stroke-linejoin:round"
- id="path3360" />
- </marker>
- <filter
- id="filter2780"
- inkscape:label="White Halo"
- width="1.1"
- height="1.1">
- <feMorphology
- id="feMorphology2782"
- operator="dilate"
- radius="3"
- result="result0" />
- <feFlood
- id="feFlood2786"
- flood-color="rgb(255,255,255)"
- flood-opacity="1"
- in="result0"
- result="result3" />
- <feComposite
- id="feComposite2623"
- in="result3"
- in2="result0"
- operator="in"
- result="result4" />
- <feMerge
- id="feMerge2629">
- <feMergeNode
- inkscape:collect="always"
- id="feMergeNode2631"
- in="result4" />
- <feMergeNode
- inkscape:collect="always"
- id="feMergeNode2633"
- in="SourceGraphic" />
- </feMerge>
- </filter>
- <marker
- inkscape:stockid="TriangleOutSn"
- orient="auto"
- refY="0"
- refX="0"
- id="TriangleOutSn"
- style="overflow:visible">
- <path
- id="path4441"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- style="fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)" />
- </marker>
- <marker
- inkscape:stockid="TriangleOutS9F"
- orient="auto"
- refY="0"
- refX="0"
- id="TriangleOutS9F"
- style="overflow:visible">
- <path
- id="path4444"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- style="fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)" />
- </marker>
- <marker
- inkscape:stockid="TriangleOutSI"
- orient="auto"
- refY="0"
- refX="0"
- id="TriangleOutSI"
- style="overflow:visible">
- <path
- id="path4447"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- style="fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)" />
- </marker>
- <marker
- inkscape:stockid="TriangleOutSO"
- orient="auto"
- refY="0"
- refX="0"
- id="TriangleOutSO"
- style="overflow:visible">
- <path
- id="path4450"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- style="fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)" />
- </marker>
- <marker
- inkscape:stockid="TriangleOutSW"
- orient="auto"
- refY="0"
- refX="0"
- id="TriangleOutSW"
- style="overflow:visible">
- <path
- id="path4453"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- style="fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)" />
- </marker>
- <marker
- inkscape:stockid="TriangleOutSB"
- orient="auto"
- refY="0"
- refX="0"
- id="TriangleOutSB"
- style="overflow:visible">
- <path
- id="path4456"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- style="fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)" />
- </marker>
- <marker
- inkscape:stockid="TriangleOutSZ"
- orient="auto"
- refY="0"
- refX="0"
- id="TriangleOutSZ"
- style="overflow:visible">
- <path
- id="path4459"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- style="fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)" />
- </marker>
- <marker
- style="overflow:visible"
- id="DotSq"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="DotSq">
- <path
- transform="matrix(0.2,0,0,0.2,1.48,0.2)"
- style="fill:#d9d9cd;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:1pt;marker-start:none;marker-end:none"
- 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"
- id="path5853" />
- </marker>
- <marker
- inkscape:stockid="TriangleOutSBO"
- orient="auto"
- refY="0"
- refX="0"
- id="TriangleOutSBO"
- style="overflow:visible">
- <path
- id="path7501"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)" />
- </marker>
- <marker
- style="overflow:visible"
- id="DotSu"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="DotSu">
- <path
- transform="matrix(0.2,0,0,0.2,1.48,0.2)"
- style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none;marker-end:none"
- 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"
- id="path9463" />
- </marker>
- <filter
- height="1.1"
- width="1.1"
- inkscape:label="Black Halo"
- id="filter10694">
- <feMorphology
- result="result0"
- radius="3"
- operator="dilate"
- id="feMorphology10696" />
- <feFlood
- result="result3"
- in="result0"
- flood-opacity="1"
- flood-color="rgb(0,0,0)"
- id="feFlood10698" />
- <feComposite
- result="result4"
- operator="in"
- in2="result0"
- in="result3"
- id="feComposite10700" />
- <feMerge
- id="feMerge10702">
- <feMergeNode
- in="result4"
- id="feMergeNode10704"
- inkscape:collect="always" />
- <feMergeNode
- in="SourceGraphic"
- id="feMergeNode10706"
- inkscape:collect="always" />
- </feMerge>
- </filter>
- <marker
- inkscape:stockid="TriangleOutSu"
- orient="auto"
- refY="0"
- refX="0"
- id="TriangleOutSu"
- style="overflow:visible">
- <path
- id="path8127"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)" />
- </marker>
- <marker
- inkscape:stockid="TriangleOutSI8"
- orient="auto"
- refY="0"
- refX="0"
- id="TriangleOutSI8"
- style="overflow:visible">
- <path
- id="path8130"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)" />
- </marker>
- <marker
- inkscape:stockid="TriangleOutSr"
- orient="auto"
- refY="0"
- refX="0"
- id="TriangleOutSr"
- style="overflow:visible">
- <path
- id="path8133"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)" />
- </marker>
- <marker
- inkscape:stockid="TriangleOutSM"
- orient="auto"
- refY="0"
- refX="0"
- id="TriangleOutSM"
- style="overflow:visible">
- <path
- id="path8136"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)" />
- </marker>
- <marker
- inkscape:stockid="TriangleOutSb"
- orient="auto"
- refY="0"
- refX="0"
- id="TriangleOutSb"
- style="overflow:visible">
- <path
- id="path8139"
- d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z"
- style="fill:#49c2f1;fill-rule:evenodd;stroke:#49c2f1;stroke-width:1pt;marker-start:none"
- transform="scale(0.2,0.2)" />
- </marker>
- <marker
- id="marker18095"
- orient="auto"
- markerHeight="5.7450776"
- markerWidth="4.6297302">
- <g
- id="g11064"
- transform="matrix(0.5,0,0,0.5,-185.64298,-257.19655)">
- <path
- sodipodi:nodetypes="csccccccsccssssssssssssssccc"
- id="path11050"
- 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"
- 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" />
- <path
- sodipodi:nodetypes="cccscccsssssssscccsccc"
- id="path11035"
- 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"
- 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" />
- </g>
- </marker>
- <marker
- id="marker44971"
- orient="auto"
- markerHeight="5.7450781"
- markerWidth="4.6297355">
- <g
- id="g18059"
- transform="matrix(0.5,0,0,0.5,-185.64299,-257.19655)">
- <path
- sodipodi:nodetypes="csccccccsccssssssssssssssccc"
- id="path18061"
- 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"
- 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" />
- <path
- sodipodi:nodetypes="cccscccsssssssscccsccc"
- id="path18063"
- 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"
- 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" />
- </g>
- </marker>
- <marker
- id="marker52016"
- orient="auto"
- markerHeight="5.7450786"
- markerWidth="4.6297302">
- <g
- id="g52010"
- transform="matrix(0.5,0,0,0.5,-185.64299,-257.19655)">
- <path
- sodipodi:nodetypes="csccccccsccssssssssssssssccc"
- id="path52012"
- 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"
- 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" />
- <path
- sodipodi:nodetypes="cccscccsssssssscccsccc"
- id="path52014"
- 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"
- 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" />
- </g>
- </marker>
- <marker
- id="marker64887"
- orient="auto"
- markerHeight="5.745079"
- markerWidth="4.6297255">
- <g
- id="g64855"
- transform="matrix(0.5,0,0,0.5,-185.64299,-257.19655)">
- <path
- sodipodi:nodetypes="csccccccsccssssssssssssssccc"
- id="path64857"
- 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"
- 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" />
- <path
- sodipodi:nodetypes="cccscccsssssssscccsccc"
- id="path64859"
- 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"
- 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" />
- </g>
- </marker>
- <marker
- id="marker4057"
- orient="auto"
- markerHeight="5.745079"
- markerWidth="4.6297302">
- <g
- id="g51986"
- transform="matrix(0.5,0,0,0.5,-185.64299,-257.19655)">
- <path
- sodipodi:nodetypes="csccccccsccssssssssssssssccc"
- id="path51988"
- 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"
- 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" />
- <path
- sodipodi:nodetypes="cccscccsssssssscccsccc"
- id="path51990"
- 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"
- 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" />
- </g>
- </marker>
- <marker
- id="marker72805"
- orient="auto"
- markerHeight="4.5568175"
- markerWidth="4.0334239">
- <path
- sodipodi:nodetypes="cccscccsssssssscccsccc"
- id="path18057"
- 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"
- 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" />
- </marker>
- <marker
- id="marker72808"
- orient="auto"
- markerHeight="4.5568123"
- markerWidth="4.0334177">
- <path
- sodipodi:nodetypes="cccscccsssssssscccsccc"
- id="path72801"
- 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"
- 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" />
- </marker>
- <marker
- style="overflow:visible"
- id="DotSuN"
- refX="0"
- refY="0"
- orient="auto"
- inkscape:stockid="DotSuN">
- <path
- transform="matrix(0.2,0,0,0.2,1.48,0.2)"
- style="fill:#f39300;fill-rule:evenodd;stroke:#f39300;stroke-width:1pt;marker-start:none;marker-end:none"
- 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"
- id="path81580" />
- </marker>
- <inkscape:perspective
- id="perspective3071"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective3071-3"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- </defs>
- <metadata
- id="metadata2480">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- id="layer1"
- inkscape:groupmode="layer"
- inkscape:label="Layer 1">
- <rect
- style="fill:#ffffff;fill-opacity:1;stroke:none"
- id="rect3139"
- width="393.30707"
- height="322.44095"
- x="322.44095"
- y="134.64565"
- ry="3.7880721" />
- <rect
- style="opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.77165353;stroke-linecap:round;stroke-linejoin:round;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"
- id="rect6642"
- width="387.10629"
- height="205.51181"
- x="325.09842"
- y="138.18895"
- ry="3.7880721" />
- <g
- id="g2870"
- transform="translate(176.19402,101.81896)">
- <rect
- ry="3.7880721"
- y="181.8969"
- x="205.84985"
- height="35.433067"
- width="99.212601"
- id="rect2872"
- 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" />
- <flowRoot
- xml:space="preserve"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- id="flowRoot2874"
- transform="translate(255.02722,204.55399)"><flowRegion
- id="flowRegion2876" /><flowPara
- id="flowPara2880">Property</flowPara></flowRoot> </g>
- <g
- id="g5098"
- transform="translate(175.94148,45.126049)">
- <rect
- ry="3.7880721"
- y="181.8969"
- x="205.84985"
- height="35.433067"
- width="99.212601"
- id="rect5100"
- 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" />
- <flowRoot
- xml:space="preserve"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- id="flowRoot5102"
- transform="translate(254.32934,203.83604)"><flowRegion
- id="flowRegion5104" /><flowPara
- id="flowPara5108">Item</flowPara></flowRoot> </g>
- <g
- id="g3740"
- transform="translate(291.4357,78.274004)">
- <rect
- ry="3.7880721"
- y="235.59096"
- x="182.48161"
- height="17.716536"
- width="102.75591"
- id="rect3742"
- 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" />
- <flowRoot
- xml:space="preserve"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- id="flowRoot3744"
- transform="translate(234.16765,246.96275)"><flowRegion
- id="flowRegion3746" /><flowPara
- id="flowPara3750">ValueChangeListener</flowPara></flowRoot> </g>
- <path
- inkscape:connector-type="polyline"
- id="path3776"
- d="M 410.32826,365.0986 371.52155,332.46732"
- style="fill:none;stroke:#d9d9cd;stroke-width:2.83464575;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#marker44971);display:inline"
- inkscape:connection-start="#g2854" />
- <flowRoot
- 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"
- id="flowRoot2485"
- xml:space="preserve"
- transform="translate(-0.8858472,0)"><flowRegion
- id="flowRegion2487"><rect
- 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"
- y="238.07646"
- x="262.85715"
- height="120"
- width="184.28572"
- id="rect2489" /></flowRegion><flowPara
- id="flowPara2491" /></flowRoot> <g
- transform="translate(-4.4572759,23.214286)"
- id="g3178" />
- <path
- inkscape:connection-end="#g2870"
- inkscape:connector-type="polyline"
- id="path2882"
- d="m 431.4526,365.0986 0.1426,-45.94968"
- style="fill:none;stroke:#d9d9cd;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#marker44971);display:inline"
- inkscape:connection-start="#g2854" />
- <path
- inkscape:connection-start="#g2854"
- inkscape:connection-end="#g3740"
- inkscape:connector-type="polyline"
- id="path5048"
- d="m 459.0809,365.0986 52.37273,-33.5171"
- style="fill:none;stroke:#d9d9cd;stroke-width:2.83464575;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#marker44971);display:inline" />
- <g
- id="g2854"
- transform="translate(222.75553,132.03305)">
- <rect
- ry="3.7880721"
- y="233.06555"
- x="166.12241"
- height="35.433075"
- width="85.039375"
- id="rect2856"
- style="fill:#d9d9cd;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <flowRoot
- xml:space="preserve"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- id="flowRoot2858"
- transform="translate(207.58709,255.55638)"><flowRegion
- id="flowRegion2860" /><flowPara
- id="flowPara2864">Field</flowPara></flowRoot> </g>
- <path
- inkscape:connection-end="#g2854"
- inkscape:connection-start="#g2802"
- inkscape:connector-type="polyline"
- id="path2868"
- d="m 431.37248,418.96375 0.0128,-18.43207"
- style="fill:none;stroke:#f39300;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#marker52016);display:inline" />
- <g
- id="g3752"
- transform="translate(291.4357,58.754809)">
- <rect
- ry="3.7880721"
- y="235.59096"
- x="182.48161"
- height="17.716536"
- width="102.75591"
- id="rect3754"
- 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" />
- <flowRoot
- xml:space="preserve"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- id="flowRoot3756"
- transform="translate(233.81083,246.99763)"><flowRegion
- id="flowRegion3758" /><flowPara
- id="flowPara3762">ValueChangeEvent</flowPara></flowRoot> </g>
- <g
- transform="translate(203.72084,210.41373)"
- id="g2802">
- <rect
- ry="3.7880721"
- y="208.55002"
- x="172.42705"
- height="35.93816"
- width="110.42418"
- id="rect2804"
- style="fill:#f39300;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <flowRoot
- transform="translate(226.79094,230.27406)"
- id="flowRoot2806"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold Italic"
- xml:space="preserve"><flowRegion
- id="flowRegion2808" /><flowPara
- id="flowPara2812">AbstractField</flowPara></flowRoot> </g>
- <g
- id="g5110"
- transform="translate(176.19402,-15.110183)">
- <rect
- ry="3.7880721"
- y="181.8969"
- x="205.84985"
- height="35.433067"
- width="99.212601"
- id="rect5112"
- 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" />
- <flowRoot
- xml:space="preserve"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- id="flowRoot5114"
- transform="translate(255.50671,204.20613)"><flowRegion
- id="flowRegion5116" /><flowPara
- id="flowPara5120">Container</flowPara></flowRoot> </g>
- <g
- id="g5146"
- transform="translate(152.8407,-40.751695)">
- <rect
- ry="3.7880721"
- y="235.59096"
- x="182.48161"
- height="17.716534"
- width="49.6063"
- id="rect5148"
- style="fill:#d9d9cd;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.77165353;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <flowRoot
- xml:space="preserve"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- id="flowRoot5150"
- transform="translate(205.92958,247.90652)"><flowRegion
- id="flowRegion5152" /><flowPara
- id="flowPara5156">Editor</flowPara></flowRoot> </g>
- <g
- id="g5158"
- transform="translate(152.8407,-60.67148)">
- <rect
- ry="3.7880721"
- y="235.59096"
- x="182.48161"
- height="17.716534"
- width="49.6063"
- id="rect5160"
- style="fill:#d9d9cd;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.77165353;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <flowRoot
- xml:space="preserve"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- id="flowRoot5162"
- transform="translate(205.46539,247.16347)"><flowRegion
- id="flowRegion5164" /><flowPara
- id="flowPara5168">Viewer</flowPara></flowRoot> </g>
- <flowRoot
- transform="translate(31.312673,-134.1482)"
- style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;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"
- id="flowRoot6644"
- xml:space="preserve"><flowRegion
- id="flowRegion6646"><rect
- style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- y="280.93362"
- x="202.85715"
- height="99.581009"
- width="204.28046"
- id="rect6648" /></flowRegion><flowPara
- id="flowPara6650">Data Model</flowPara></flowRoot> <path
- inkscape:connector-type="polyline"
- id="path6692"
- d="M 491.6841,213.79089 L 491.89141,158.02434"
- 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:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
- sodipodi:nodetypes="cc" />
- <path
- inkscape:connector-type="polyline"
- id="path6694"
- d="M 502.26376,185.75889 L 481.25647,185.38534"
- 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"
- sodipodi:nodetypes="cc"
- inkscape:connection-end="#g5110"
- inkscape:connection-start="#g6678" />
- <g
- id="g6618"
- transform="translate(319.78215,-86.772082)">
- <rect
- ry="3.7880721"
- y="235.59096"
- x="182.48161"
- height="17.716534"
- width="49.6063"
- id="rect6620"
- style="opacity:1;fill:#d9d9cd;fill-opacity:1;fill-rule:nonzero;stroke:none;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" />
- <flowRoot
- xml:space="preserve"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- id="flowRoot6622"
- transform="translate(207.97695,247.32124)"><flowRegion
- id="flowRegion6624" /><flowPara
- id="flowPara6628">Ordered</flowPara></flowRoot> </g>
- <g
- id="g6666"
- transform="translate(318.4375,-30.492633)">
- <rect
- ry="3.7880721"
- y="236.25572"
- x="183.82626"
- height="17.716536"
- width="58.037571"
- id="rect6668"
- style="opacity:1;fill:#d9d9cd;fill-opacity:1;fill-rule:nonzero;stroke:none;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" />
- <flowRoot
- xml:space="preserve"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- id="flowRoot6670"
- transform="translate(213.13426,248.56061)"><flowRegion
- id="flowRegion6672" /><flowPara
- id="flowPara6676">Hierarchical</flowPara></flowRoot> </g>
- <path
- inkscape:connector-type="polyline"
- id="path6664"
- d="M 587.09005,157.43667 L 551.87006,157.57777"
- 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"
- sodipodi:nodetypes="cc"
- inkscape:connection-end="#g6618"
- inkscape:connection-start="#g6606" />
- <g
- id="g6594"
- transform="translate(404.82152,-58.425625)">
- <rect
- ry="3.7880721"
- y="235.59096"
- x="182.48161"
- height="17.716534"
- width="49.6063"
- id="rect6596"
- style="opacity:1;fill:#d9d9cd;fill-opacity:1;fill-rule:nonzero;stroke:none;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" />
- <flowRoot
- xml:space="preserve"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- id="flowRoot6598"
- transform="translate(206.96566,247.31617)"><flowRegion
- id="flowRegion6600" /><flowPara
- id="flowPara6604">Sortable</flowPara></flowRoot> </g>
- <g
- id="g6606"
- transform="translate(404.60844,-87.111921)">
- <rect
- ry="3.7880721"
- y="235.59096"
- x="182.48161"
- height="17.716534"
- width="49.6063"
- id="rect6608"
- style="opacity:1;fill:#d9d9cd;fill-opacity:1;fill-rule:nonzero;stroke:none;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" />
- <flowRoot
- xml:space="preserve"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- id="flowRoot6610"
- transform="translate(207.61263,247.53033)"><flowRegion
- id="flowRegion6612" /><flowPara
- id="flowPara6616">Indexed</flowPara></flowRoot> </g>
- <g
- id="g6678"
- transform="translate(318.4375,-58.83909)">
- <rect
- ry="3.7880721"
- y="236.25572"
- x="183.82626"
- height="17.716536"
- width="58.037571"
- id="rect6680"
- style="opacity:1;fill:#d9d9cd;fill-opacity:1;fill-rule:nonzero;stroke:none;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" />
- <flowRoot
- xml:space="preserve"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- id="flowRoot6682"
- transform="translate(212.17928,248.64068)"><flowRegion
- id="flowRegion6684" /><flowPara
- id="flowPara6688">Filterable</flowPara></flowRoot> </g>
- <path
- inkscape:connection-end="#g6594"
- inkscape:connector-type="polyline"
- id="path8412"
- d="M 654.63021,185.80396 L 636.90943,185.89549"
- 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"
- sodipodi:nodetypes="cc" />
- <path
- inkscape:connection-end="#g6606"
- inkscape:connector-type="polyline"
- id="path8414"
- d="M 654.63021,156.98779 L 636.69635,157.13446"
- 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"
- sodipodi:nodetypes="cc" />
- <path
- inkscape:connection-end="#g6666"
- inkscape:connector-type="polyline"
- id="path8416"
- d="M 570.52478,251.85959 L 540.61753,223.47962"
- 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"
- sodipodi:nodetypes="cc" />
- <path
- inkscape:connection-end="#g6678"
- inkscape:connection-start="#g8396"
- inkscape:connector-type="polyline"
- id="path8418"
- d="M 591.82037,209.3064 L 554.56632,195.13317"
- 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"
- sodipodi:nodetypes="cc" />
- <g
- id="g8396"
- transform="translate(374.07349,27.409503)">
- <rect
- ry="3.7880721"
- y="181.8969"
- x="205.84985"
- height="35.433071"
- width="116.92914"
- id="rect8398"
- 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" />
- <text
- sodipodi:linespacing="125%"
- id="text8408"
- y="203.15674"
- x="265.04974"
- 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"
- xml:space="preserve"><tspan
- y="203.15674"
- x="265.04974"
- id="tspan8410"
- sodipodi:role="line">IndexedContainer</tspan></text>
- </g>
- <path
- inkscape:connection-start="#g8420"
- inkscape:connection-end="#g8396"
- inkscape:connector-type="polyline"
- id="path8430"
- d="M 638.55893,251.82608 L 638.51007,244.73947"
- 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" />
- <g
- id="g8420"
- transform="translate(452.31943,69.929187)">
- <rect
- ry="3.7880721"
- y="181.8969"
- x="117.26717"
- height="35.433071"
- width="138.18898"
- id="rect8422"
- 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" />
- <text
- sodipodi:linespacing="125%"
- id="text8424"
- y="203.15674"
- x="185.59758"
- 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"
- xml:space="preserve"><tspan
- y="203.15674"
- x="185.59758"
- id="tspan8426"
- sodipodi:role="line">HierarchicalContainer</tspan></text>
- </g>
- <flowRoot
- 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"
- id="flowRoot8724"
- xml:space="preserve"
- transform="translate(-0.8858472,0)"><flowRegion
- id="flowRegion8726"><rect
- 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"
- y="752.14441"
- x="39.286312"
- height="22.868153"
- width="29.904507"
- id="rect8728" /></flowRegion><flowPara
- id="flowPara8730" /></flowRoot> <path
- sodipodi:open="true"
- transform="translate(-55.807094,-1.7674908)"
- sodipodi:end="6.2827149"
- sodipodi:start="0"
- d="M 494.29133,228.54329 A 7.0866146,7.0907812 0 1 1 494.29133,228.53995"
- sodipodi:ry="7.0907812"
- sodipodi:rx="7.0866146"
- sodipodi:cy="228.54329"
- sodipodi:cx="487.20471"
- id="path54937"
- style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.12598419;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:2.12598425, 2.12598425;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- sodipodi:type="arc" />
- <path
- inkscape:connector-type="polyline"
- id="path5172"
- d="M 431.5759,202.21978 L 431.47191,227.02295"
- 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(#DotSq);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
- inkscape:connection-start="#g5110"
- inkscape:connection-end="#g5098" />
- <path
- sodipodi:open="true"
- transform="translate(-55.612376,55.132734)"
- sodipodi:end="6.2827149"
- sodipodi:start="0"
- d="M 494.27873,228.54329 A 7.0740213,7.0907817 0 1 1 494.27873,228.53995"
- sodipodi:ry="7.0907817"
- sodipodi:rx="7.0740213"
- sodipodi:cy="228.54329"
- sodipodi:cx="487.20471"
- id="path54939"
- style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.12598419;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:2.12598425, 2.12598425;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- sodipodi:type="arc" />
- <path
- inkscape:connector-type="polyline"
- id="path6576"
- d="M 431.47655,262.45601 L 431.57126,283.71586"
- 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(#DotSq);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
- inkscape:connection-start="#g5098"
- inkscape:connection-end="#g2870" />
- <path
- inkscape:connection-start="#g6618"
- inkscape:connector-type="polyline"
- id="path55678"
- d="M 502.26376,157.92341 L 492.09872,158.02434"
- 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:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
- sodipodi:nodetypes="cc" />
- <path
- inkscape:connection-start="#g6666"
- inkscape:connector-type="polyline"
- id="path55680"
- d="M 502.26376,213.86481 L 491.47679,213.58358"
- 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:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
- sodipodi:nodetypes="cc" />
- <path
- id="path55688"
- d="M 587.30314,184.25195 L 576.67322,184.25195 L 576.67322,155.90549"
- style="fill:none;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="cc"
- id="path55690"
- d="M 654.62597,209.0551 L 654.62597,155.90549"
- style="fill:none;fill-rule:evenodd;stroke:#d9d9cd;stroke-width:2.83464575;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
- <flowRoot
- xml:space="preserve"
- 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:#d9d9cd;fill-opacity:1;stroke:none;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- id="flowRoot59412"
- transform="translate(439.65072,221.68981)"><flowRegion
- id="flowRegion59414" /><flowPara
- id="flowPara59418">n</flowPara></flowRoot> <flowRoot
- xml:space="preserve"
- 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:#d9d9cd;fill-opacity:1;stroke:none;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- id="flowRoot59420"
- transform="translate(439.65072,278.97199)"><flowRegion
- id="flowRegion59422" /><flowPara
- id="flowPara59426">n</flowPara></flowRoot> <g
- transform="matrix(0.5,0,0,0.5,102.45714,0.7940752)"
- id="g18053" />
- <text
- id="text80346"
- y="324.81149"
- x="393.58478"
- style="font-size:6px;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"
- xml:space="preserve"><tspan
- id="tspan80354"
- y="324.81149"
- x="393.58478"
- sodipodi:role="line">setValue()</tspan><tspan
- id="tspan80365"
- y="332.31149"
- x="393.58478"
- sodipodi:role="line">getValue()</tspan></text>
- <text
- id="text116490"
- y="209.0551"
- x="439.94095"
- style="font-size:8px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;line-height:125%;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"
- xml:space="preserve"
- sodipodi:linespacing="125%"><tspan
- y="209.0551"
- x="439.94095"
- id="tspan116492"
- sodipodi:role="line"
- style="font-size:8px;font-style:oblique;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:FreeSans;-inkscape-font-specification:FreeSans Oblique">addItem()</tspan></text>
- <text
- id="text116494"
- y="269.43359"
- x="440.29276"
- style="font-size:8px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;line-height:125%;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"
- xml:space="preserve"
- sodipodi:linespacing="125%"><tspan
- y="269.43359"
- x="440.29276"
- id="tspan116496"
- sodipodi:role="line"
- style="font-size:8px;font-style:oblique;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:FreeSans;-inkscape-font-specification:FreeSans Oblique">addItemProperty()</tspan></text>
- <text
- id="text5081"
- y="337.70709"
- x="523.63373"
- style="font-size:8px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;line-height:125%;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"
- xml:space="preserve"
- sodipodi:linespacing="125%"><tspan
- y="337.70709"
- x="523.63373"
- id="tspan5083"
- sodipodi:role="line"
- style="font-size:8px;font-style:oblique;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:FreeSans;-inkscape-font-specification:FreeSans Oblique">valueChange()</tspan></text>
- <g
- id="g5146-3"
- transform="translate(152.8407,19.844568)">
- <rect
- ry="3.7880721"
- y="235.59096"
- x="182.48161"
- height="17.716534"
- width="49.6063"
- id="rect5148-7"
- style="fill:#d9d9cd;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.77165353;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <flowRoot
- xml:space="preserve"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- id="flowRoot5150-4"
- transform="translate(205.92958,247.90652)"><flowRegion
- id="flowRegion5152-5" /><flowPara
- id="flowPara5156-2">Editor</flowPara></flowRoot> </g>
- <g
- id="g5158-5"
- transform="translate(152.8407,-0.0752115)">
- <rect
- ry="3.7880721"
- y="235.59096"
- x="182.48161"
- height="17.716534"
- width="49.6063"
- id="rect5160-4"
- style="fill:#d9d9cd;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.77165353;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <flowRoot
- xml:space="preserve"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- id="flowRoot5162-7"
- transform="translate(205.46539,247.16347)"><flowRegion
- id="flowRegion5164-4" /><flowPara
- id="flowPara5168-4">Viewer</flowPara></flowRoot> </g>
- <g
- id="g5146-0"
- transform="translate(152.8407,79.657004)">
- <rect
- ry="3.7880721"
- y="235.59096"
- x="182.48161"
- height="17.716534"
- width="49.6063"
- id="rect5148-78"
- style="fill:#d9d9cd;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.77165353;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <flowRoot
- xml:space="preserve"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- id="flowRoot5150-6"
- transform="translate(205.92958,247.90652)"><flowRegion
- id="flowRegion5152-8" /><flowPara
- id="flowPara5156-8">Editor</flowPara></flowRoot> </g>
- <g
- id="g5158-4"
- transform="translate(152.8407,59.737224)">
- <rect
- ry="3.7880721"
- y="235.59096"
- x="182.48161"
- height="17.716534"
- width="49.6063"
- id="rect5160-3"
- style="fill:#d9d9cd;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.77165353;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <flowRoot
- xml:space="preserve"
- 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;font-family:Helvetica Rounded LT Std;-inkscape-font-specification:Helvetica Rounded LT Std Bold"
- id="flowRoot5162-1"
- transform="translate(205.46539,247.16347)"><flowRegion
- id="flowRegion5164-49" /><flowPara
- id="flowPara5168-2">Viewer</flowPara></flowRoot> </g>
- </g>
-</svg>