use of com.canoo.platform.remoting.Property in project dolphin-platform by canoo.
the class GarbageCollector method onBeanCreated.
/**
* This method must be called for each new Dolphin bean (see {@link RemotingBean}).
* Normally beans are created by {@link BeanManager#create(Class)}
*
* @param bean the bean that was created
* @param rootBean if this is true the bean is handled as a root bean. This bean don't need a reference.
*/
public synchronized void onBeanCreated(Object bean, boolean rootBean) {
if (!configuration.isUseGc()) {
return;
}
Assert.requireNonNull(bean, "bean");
if (allInstances.containsKey(bean)) {
throw new IllegalArgumentException("Bean instance is already managed!");
}
IdentitySet<Property> properties = getAllProperties(bean);
IdentitySet<ObservableList> lists = getAllLists(bean);
Instance instance = new Instance(bean, rootBean, properties, lists);
allInstances.put(bean, instance);
for (Property property : properties) {
propertyToParent.put(property, instance);
}
for (ObservableList list : lists) {
listToParent.put(list, instance);
}
if (!rootBean) {
// Until the bean isn't referenced in another bean it will be removed at gc
addToGC(instance, bean);
}
}
use of com.canoo.platform.remoting.Property in project dolphin-platform by canoo.
the class FXBinderTest method testJavaFXStringBidirectionalWithConverter.
@Test
public void testJavaFXStringBidirectionalWithConverter() {
Property<Double> doubleDolphinProperty = new MockedProperty<>();
StringProperty stringJavaFXProperty = new SimpleStringProperty();
Converter<String, Double> doubleStringConverter = s -> s == null ? null : Double.parseDouble(s);
Converter<Double, String> stringDoubleConverter = d -> d == null ? null : d.toString();
BidirectionalConverter<Double, String> doubleStringBidirectionalConverter = new DefaultBidirectionalConverter<>(stringDoubleConverter, doubleStringConverter);
doubleDolphinProperty.set(0.1);
assertNotEquals(stringJavaFXProperty.get(), "0.1");
Binding binding = FXBinder.bind(stringJavaFXProperty).bidirectionalTo(doubleDolphinProperty, doubleStringBidirectionalConverter);
assertEquals(stringJavaFXProperty.get(), "0.1");
doubleDolphinProperty.set(0.2);
assertEquals(stringJavaFXProperty.get(), "0.2");
doubleDolphinProperty.set(null);
assertEquals(stringJavaFXProperty.get(), null);
stringJavaFXProperty.set("0.1");
assertEquals(doubleDolphinProperty.get(), 0.1);
stringJavaFXProperty.setValue("0.2");
assertEquals(doubleDolphinProperty.get(), 0.2);
binding.unbind();
doubleDolphinProperty.set(0.3);
assertEquals(stringJavaFXProperty.get(), "0.2");
}
use of com.canoo.platform.remoting.Property in project dolphin-platform by canoo.
the class FXBinderTest method testJavaFXDoubleUnidirectionalWithConverter.
@Test
public void testJavaFXDoubleUnidirectionalWithConverter() {
Property<String> stringDolphinProperty = new MockedProperty<>();
DoubleProperty doubleJavaFXProperty = new SimpleDoubleProperty();
WritableDoubleValue writableDoubleValue = new SimpleDoubleProperty();
Converter<String, Double> stringDoubleConverter = s -> s == null ? null : Double.parseDouble(s);
stringDolphinProperty.set("47.0");
assertNotEquals(doubleJavaFXProperty.doubleValue(), 47.0, EPSILON);
Binding binding = FXBinder.bind(doubleJavaFXProperty).to(stringDolphinProperty, stringDoubleConverter);
assertEquals(doubleJavaFXProperty.doubleValue(), 47.0, EPSILON);
stringDolphinProperty.set("100.0");
assertEquals(doubleJavaFXProperty.doubleValue(), 100.0, EPSILON);
stringDolphinProperty.set(null);
assertEquals(doubleJavaFXProperty.doubleValue(), 0.0, EPSILON);
binding.unbind();
stringDolphinProperty.set("100.0");
assertEquals(doubleJavaFXProperty.doubleValue(), 0.0, EPSILON);
stringDolphinProperty.set("12.0");
binding = FXBinder.bind(doubleJavaFXProperty).to(stringDolphinProperty, stringDoubleConverter);
assertEquals(doubleJavaFXProperty.doubleValue(), 12.0, EPSILON);
stringDolphinProperty.set(null);
assertEquals(doubleJavaFXProperty.doubleValue(), 0.0, EPSILON);
binding.unbind();
stringDolphinProperty.set("100.0");
assertEquals(doubleJavaFXProperty.doubleValue(), 0.0, EPSILON);
stringDolphinProperty.set("47.0");
binding = FXBinder.bind(writableDoubleValue).to(stringDolphinProperty, stringDoubleConverter);
assertEquals(writableDoubleValue.get(), 47.0, EPSILON);
stringDolphinProperty.set("100.0");
assertEquals(writableDoubleValue.get(), 100.0, EPSILON);
stringDolphinProperty.set(null);
assertEquals(writableDoubleValue.get(), 0.0, EPSILON);
binding.unbind();
stringDolphinProperty.set("100.0");
assertEquals(writableDoubleValue.get(), 0.0, EPSILON);
}
use of com.canoo.platform.remoting.Property in project dolphin-platform by canoo.
the class AbstractNumericJavaFXBidirectionalBinder method bidirectionalToNumeric.
@Override
public <T> Binding bidirectionalToNumeric(final Property<T> property, final BidirectionalConverter<T, S> converter) {
final Binding unidirectionalBinding = to(property, converter);
final ChangeListener<Number> listener = (obs, oldVal, newVal) -> property.set(converter.convertBack(convertNumber(newVal)));
javaFxProperty.addListener(listener);
return () -> {
javaFxProperty.removeListener(listener);
unidirectionalBinding.unbind();
};
}
use of com.canoo.platform.remoting.Property in project dolphin-platform by canoo.
the class AbstractNumericJavaFXBidirectionalBinder method bidirectionalTo.
@Override
public <T> Binding bidirectionalTo(final Property<T> property, BidirectionalConverter<T, Number> converter) {
final Binding unidirectionalBinding = to(property, converter);
final ChangeListener<Number> listener = (obs, oldVal, newVal) -> property.set(converter.convertBack(newVal));
javaFxProperty.addListener(listener);
return () -> {
javaFxProperty.removeListener(listener);
unidirectionalBinding.unbind();
};
}
Aggregations