annotate org.eclipse.core.databinding.beans/src/org/eclipse/core/databinding/beans/PojoObservables.d @ 95:6208d4f6a277

Added trees for databinding.beans and observable
author Frank Benoit <benoit@tionex.de>
date Tue, 21 Apr 2009 10:55:51 +0200
parents
children b74ac5dfcc06
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
95
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 /*******************************************************************************
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2 * Copyright (c) 2007, 2008 IBM Corporation and others.
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 * Matthew Hall - bug 221704
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 *******************************************************************************/
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 package org.eclipse.core.databinding.beans;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15 import java.beans.PropertyChangeEvent;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16 import java.beans.PropertyDescriptor;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 import org.eclipse.core.databinding.observable.IObservable;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19 import org.eclipse.core.databinding.observable.Realm;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 import org.eclipse.core.databinding.observable.list.IObservableList;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 import org.eclipse.core.databinding.observable.map.IObservableMap;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 import org.eclipse.core.databinding.observable.masterdetail.IObservableFactory;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 import org.eclipse.core.databinding.observable.masterdetail.MasterDetailObservables;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 import org.eclipse.core.databinding.observable.set.IObservableSet;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 import org.eclipse.core.databinding.observable.value.IObservableValue;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 import org.eclipse.core.internal.databinding.beans.BeanObservableListDecorator;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 import org.eclipse.core.internal.databinding.beans.BeanObservableMapDecorator;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 import org.eclipse.core.internal.databinding.beans.BeanObservableSetDecorator;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 import org.eclipse.core.internal.databinding.beans.BeanObservableValueDecorator;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 import org.eclipse.core.internal.databinding.beans.JavaBeanObservableList;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31 import org.eclipse.core.internal.databinding.beans.JavaBeanObservableMap;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 import org.eclipse.core.internal.databinding.beans.JavaBeanObservableSet;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 import org.eclipse.core.internal.databinding.beans.JavaBeanObservableValue;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 import org.eclipse.core.internal.databinding.beans.JavaBeanPropertyObservableMap;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 /**
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37 * A factory for creating observable objects for POJOs (plain old java objects)
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 * that conform to idea of an object with getters and setters but does not
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 * provide {@link PropertyChangeEvent property change events} on change. This
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 * factory is identical to {@link BeansObservables} except for this fact.
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 *
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 * @since 1.1
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 */
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 final public class PojoObservables {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 /**
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 * Returns an observable value in the default realm tracking the current
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 * value of the named property of the given pojo.
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 *
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 * @param pojo
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 * the object
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 * @param propertyName
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53 * the name of the property
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 * @return an observable value tracking the current value of the named
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55 * property of the given pojo
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 */
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 public static IObservableValue observeValue(Object pojo, String propertyName) {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 return observeValue(Realm.getDefault(), pojo, propertyName);
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 }
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 /**
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 * Returns an observable value in the given realm tracking the current value
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 * of the named property of the given pojo.
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 *
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65 * @param realm
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 * the realm
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 * @param pojo
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 * the object
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 * @param propertyName
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 * the name of the property
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 * @return an observable value tracking the current value of the named
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 * property of the given pojo
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73 */
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 public static IObservableValue observeValue(Realm realm, Object pojo,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 String propertyName) {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77 PropertyDescriptor descriptor = BeansObservables.getPropertyDescriptor(
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 pojo.getClass(), propertyName);
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 return new JavaBeanObservableValue(realm, pojo, descriptor, false);
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80 }
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 /**
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83 * Returns an observable map in the default realm tracking the current
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 * values of the named property for the pojos in the given set.
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85 *
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 * @param domain
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87 * the set of pojo objects
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 * @param pojoClass
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 * the common base type of pojo objects that may be in the set
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90 * @param propertyName
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 * the name of the property
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92 * @return an observable map tracking the current values of the named
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
93 * property for the pojos in the given domain set
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94 */
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95 public static IObservableMap observeMap(IObservableSet domain,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 Class pojoClass, String propertyName) {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 PropertyDescriptor descriptor = BeansObservables.getPropertyDescriptor(
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 pojoClass, propertyName);
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 return new JavaBeanObservableMap(domain, descriptor, false);
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 }
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 /**
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103 * Returns an array of observable maps in the default realm tracking the
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104 * current values of the named propertys for the pojos in the given set.
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105 *
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106 * @param domain
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 * the set of objects
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108 * @param pojoClass
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 * the common base type of objects that may be in the set
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110 * @param propertyNames
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 * the array of property names
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 * @return an array of observable maps tracking the current values of the
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 * named propertys for the pojos in the given domain set
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114 */
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115 public static IObservableMap[] observeMaps(IObservableSet domain,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116 Class pojoClass, String[] propertyNames) {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117 IObservableMap[] result = new IObservableMap[propertyNames.length];
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 for (int i = 0; i < propertyNames.length; i++) {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 result[i] = observeMap(domain, pojoClass, propertyNames[i]);
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120 }
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 return result;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 }
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 /**
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125 * Returns an observable map in the given realm tracking the map-typed named
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 * property of the given pojo object.
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 *
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 * @param realm
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 * the realm
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 * @param pojo
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 * the pojo object
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132 * @param propertyName
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133 * the name of the property
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 * @return an observable map tracking the map-typed named property of the
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 * given pojo object
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 */
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137 public static IObservableMap observeMap(Realm realm, Object pojo,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
138 String propertyName) {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139 PropertyDescriptor descriptor = BeansObservables.getPropertyDescriptor(
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 pojo.getClass(), propertyName);
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 return new JavaBeanPropertyObservableMap(realm, pojo, descriptor, false);
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142 }
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 /**
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145 * Returns an observable list in the given realm tracking the
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 * collection-typed named property of the given pojo object. The returned
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
147 * list is mutable.
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
148 *
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
149 * @param realm
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
150 * the realm
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
151 * @param pojo
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
152 * the object
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
153 * @param propertyName
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
154 * the name of the collection-typed property
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
155 * @return an observable list tracking the collection-typed named property
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
156 * of the given pojo object
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
157 * @see #observeList(Realm, Object, String, Class)
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
158 */
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
159 public static IObservableList observeList(Realm realm, Object pojo,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
160 String propertyName) {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
161 return observeList(realm, pojo, propertyName, null);
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
162 }
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
163
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
164 /**
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
165 * Returns an observable list in the given realm tracking the
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166 * collection-typed named property of the given bean object. The returned
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
167 * list is mutable. When an item is added or removed the setter is invoked
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168 * for the list on the parent bean to provide notification to other
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
169 * listeners via <code>PropertyChangeEvents</code>. This is done to
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
170 * provide the same behavior as is expected from arrays as specified in the
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
171 * bean spec in section 7.2.
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
172 *
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
173 * @param realm
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 * the realm
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
175 * @param pojo
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
176 * the bean object
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
177 * @param propertyName
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178 * the name of the property
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179 * @param elementType
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180 * type of the elements in the list. If <code>null</code> and
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 * the property is an array the type will be inferred. If
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182 * <code>null</code> and the property type cannot be inferred
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
183 * element type will be <code>null</code>.
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184 * @return an observable list tracking the collection-typed named property
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185 * of the given bean object
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186 */
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
187 public static IObservableList observeList(Realm realm, Object pojo,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188 String propertyName, Class elementType) {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
189 PropertyDescriptor propertyDescriptor = BeansObservables
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190 .getPropertyDescriptor(pojo.getClass(), propertyName);
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191 elementType = BeansObservables.getCollectionElementType(elementType,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192 propertyDescriptor);
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194 return new JavaBeanObservableList(realm, pojo, propertyDescriptor,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195 elementType, false);
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196 }
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
198 /**
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
199 * Returns an observable set in the given realm tracking the
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
200 * collection-typed named property of the given pojo object.
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
201 *
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
202 * @param realm
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
203 * the realm
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
204 * @param pojo
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205 * the pojo object
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206 * @param propertyName
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 * the name of the property
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 * @return an observable set tracking the collection-typed named property of
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209 * the given pojo object
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
210 */
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211 public static IObservableSet observeSet(Realm realm, Object pojo,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212 String propertyName) {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
213 return observeSet(realm, pojo, propertyName, null);
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
214 }
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216 /**
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217 * @param realm
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
218 * @param pojo
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
219 * @param propertyName
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
220 * @param elementType
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
221 * can be <code>null</code>
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
222 * @return an observable set that tracks the current value of the named
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
223 * property for given pojo object
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
224 */
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
225 public static IObservableSet observeSet(Realm realm, Object pojo,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
226 String propertyName, Class elementType) {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
227 PropertyDescriptor propertyDescriptor = BeansObservables
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
228 .getPropertyDescriptor(pojo.getClass(), propertyName);
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
229 elementType = BeansObservables.getCollectionElementType(elementType,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
230 propertyDescriptor);
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
231
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
232 return new JavaBeanObservableSet(realm, pojo, propertyDescriptor,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
233 elementType, false);
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
234 }
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
235
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
236 /**
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
237 * Returns a factory for creating obervable values tracking the given
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
238 * property of a particular pojo object
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
239 *
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
240 * @param realm
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
241 * the realm to use
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
242 * @param propertyName
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
243 * the name of the property
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
244 * @return an observable value factory
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
245 */
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
246 public static IObservableFactory valueFactory(final Realm realm,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
247 final String propertyName) {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
248 return new class() IObservableFactory {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
249 public IObservable createObservable(Object target) {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
250 return observeValue(realm, target, propertyName);
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
251 }
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
252 };
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
253 }
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
254
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
255 /**
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
256 * Returns a factory for creating obervable lists tracking the given
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
257 * property of a particular pojo object
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
258 *
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
259 * @param realm
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
260 * the realm to use
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
261 * @param propertyName
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
262 * the name of the property
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
263 * @param elementType
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
264 * @return an observable list factory
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
265 */
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
266 public static IObservableFactory listFactory(final Realm realm,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
267 final String propertyName, final Class elementType) {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
268 return new class() IObservableFactory {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
269 public IObservable createObservable(Object target) {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
270 return observeList(realm, target, propertyName, elementType);
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
271 }
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
272 };
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
273 }
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
274
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
275 /**
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
276 * Returns a factory for creating obervable sets tracking the given property
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
277 * of a particular pojo object
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
278 *
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
279 * @param realm
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
280 * the realm to use
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
281 * @param propertyName
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
282 * the name of the property
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
283 * @return an observable set factory
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
284 */
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
285 public static IObservableFactory setFactory(final Realm realm,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
286 final String propertyName) {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
287 return new class() IObservableFactory {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
288 public IObservable createObservable(Object target) {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
289 return observeSet(realm, target, propertyName);
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
290 }
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
291 };
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
292 }
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
293
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
294 /**
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
295 * @param realm
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
296 * @param propertyName
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
297 * @param elementType
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
298 * can be <code>null</code>
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
299 * @return an observable set factory for creating observable sets
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
300 */
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
301 public static IObservableFactory setFactory(final Realm realm,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
302 final String propertyName, final Class elementType) {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
303 return new class() IObservableFactory {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
304 public IObservable createObservable(Object target) {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
305 return observeSet(realm, target, propertyName, elementType);
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
306 }
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
307 };
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
308 }
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
309
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
310 /**
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
311 * Returns a factory for creating an observable map. The factory, when
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
312 * provided with a pojo object, will create an {@link IObservableMap} in the
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
313 * given realm that tracks the map-typed named property for the specified
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
314 * pojo.
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
315 *
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
316 * @param realm
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
317 * the realm assigned to observables created by the returned
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
318 * factory.
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
319 * @param propertyName
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
320 * the name of the property
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
321 * @return a factory for creating {@link IObservableMap} objects.
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
322 */
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
323 public static IObservableFactory mapPropertyFactory(final Realm realm,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
324 final String propertyName) {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
325 return new class() IObservableFactory {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
326 public IObservable createObservable(Object target) {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
327 return observeMap(realm, target, propertyName);
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
328 }
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
329 };
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
330 }
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
331
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
332 /**
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
333 * Helper method for
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
334 * <code>MasterDetailObservables.detailValue(master, valueFactory(realm,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
335 propertyName), propertyType)</code>
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
336 *
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
337 * @param realm
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
338 * @param master
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
339 * @param propertyName
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
340 * @param propertyType
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
341 * can be <code>null</code>
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
342 * @return an observable value that tracks the current value of the named
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
343 * property for the current value of the master observable value
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
344 *
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
345 * @see MasterDetailObservables
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
346 */
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
347 public static IObservableValue observeDetailValue(Realm realm,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
348 IObservableValue master, String propertyName, Class propertyType) {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
349
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
350 IObservableValue value = MasterDetailObservables.detailValue(master,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
351 valueFactory(realm, propertyName), propertyType);
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
352 BeanObservableValueDecorator decorator = new BeanObservableValueDecorator(
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
353 value, master, BeansObservables.getValueTypePropertyDescriptor(
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
354 master, propertyName));
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
355
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
356 return decorator;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
357 }
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
358
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
359 /**
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
360 * Helper method for
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
361 * <code>MasterDetailObservables.detailList(master, listFactory(realm,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
362 propertyName, propertyType), propertyType)</code>
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
363 *
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
364 * @param realm
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
365 * @param master
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
366 * @param propertyName
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
367 * @param propertyType
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
368 * can be <code>null</code>
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
369 * @return an observable list that tracks the named property for the current
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
370 * value of the master observable value
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
371 *
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
372 * @see MasterDetailObservables
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
373 */
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
374 public static IObservableList observeDetailList(Realm realm,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
375 IObservableValue master, String propertyName, Class propertyType) {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
376 IObservableList observableList = MasterDetailObservables.detailList(
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
377 master, listFactory(realm, propertyName, propertyType),
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
378 propertyType);
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
379 BeanObservableListDecorator decorator = new BeanObservableListDecorator(
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
380 observableList, master, BeansObservables
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
381 .getValueTypePropertyDescriptor(master, propertyName));
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
382
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
383 return decorator;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
384 }
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
385
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
386 /**
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
387 * Helper method for
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
388 * <code>MasterDetailObservables.detailSet(master, setFactory(realm,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
389 propertyName), propertyType)</code>
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
390 *
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
391 * @param realm
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
392 * @param master
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
393 * @param propertyName
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
394 * @param propertyType
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
395 * can be <code>null</code>
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
396 * @return an observable set that tracks the named property for the current
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
397 * value of the master observable value
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
398 *
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
399 * @see MasterDetailObservables
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
400 */
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
401 public static IObservableSet observeDetailSet(Realm realm,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
402 IObservableValue master, String propertyName, Class propertyType) {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
403
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
404 IObservableSet observableSet = MasterDetailObservables.detailSet(
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
405 master, setFactory(realm, propertyName, propertyType),
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
406 propertyType);
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
407 BeanObservableSetDecorator decorator = new BeanObservableSetDecorator(
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
408 observableSet, master, BeansObservables
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
409 .getValueTypePropertyDescriptor(master, propertyName));
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
410
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
411 return decorator;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
412 }
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
413
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
414 /**
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
415 * Helper method for
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
416 * <code>MasterDetailObservables.detailMap(master, mapFactory(realm, propertyName))</code>
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
417 *
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
418 * @param realm
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
419 * @param master
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
420 * @param propertyName
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
421 * @return an observable map that tracks the map-type named property for the
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
422 * current value of the master observable value.
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
423 */
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
424 public static IObservableMap observeDetailMap(Realm realm,
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
425 IObservableValue master, String propertyName) {
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
426 IObservableMap observableMap = MasterDetailObservables.detailMap(
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
427 master, mapPropertyFactory(realm, propertyName));
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
428 BeanObservableMapDecorator decorator = new BeanObservableMapDecorator(
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
429 observableMap, master, BeansObservables
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
430 .getValueTypePropertyDescriptor(master, propertyName));
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
431 return decorator;
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
432 }
6208d4f6a277 Added trees for databinding.beans and observable
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
433 }