use of org.linkki.core.binding.dispatcher.PropertyDispatcher in project linkki by linkki-framework.
the class DialogBindingManagerTest method testBindingsInCreatedContextsDisplayMessagesFromDialog.
@Test
public void testBindingsInCreatedContextsDisplayMessagesFromDialog() {
OkCancelDialog dialog = new OkCancelDialog("");
// Use the NOP validation service in the binding manager
DialogBindingManager manager = new DialogBindingManager(dialog, ValidationService.NOP_VALIDATION_SERVICE);
BindingContext ctx = manager.startNewContext("foo");
// Change the dialog's validation service to make sure dialog's validate method is used and
// not the validation service the manager was created with (so that the dialog could filter
// the messages)
MessageList messages = new MessageList(Message.newError("code", "text"));
dialog.setValidationService(ValidationService.of(messages));
PropertyDispatcher propertyDispatcher = mock(PropertyDispatcher.class);
Object pmo = mock(Object.class);
when(propertyDispatcher.getBoundObject()).thenReturn(pmo);
when(propertyDispatcher.getMessages(any())).thenReturn(new MessageList());
ComponentBinding binding = spy(new ComponentBinding(new LabelComponentWrapper(new Label(), new Button()), propertyDispatcher, Handler.NOP_HANDLER, new ArrayList<>()));
ctx.add(binding);
ctx.updateUI();
verify(binding).displayMessages(messages);
}
use of org.linkki.core.binding.dispatcher.PropertyDispatcher in project linkki by linkki-framework.
the class PropertyDispatcherFactory method createDispatcherChain.
public PropertyDispatcher createDispatcherChain(Object pmo, BindingDescriptor bindingDescriptor, PropertyBehaviorProvider behaviorProvider) {
requireNonNull(pmo, "pmo must not be null");
requireNonNull(bindingDescriptor, "bindingDescriptor must not be null");
requireNonNull(behaviorProvider, "behaviorProvider must not be null");
// @formatter:off
String modelPropertyName = bindingDescriptor.getModelPropertyName();
String modelObjectName = bindingDescriptor.getModelObjectName();
String pmoPropertyName = bindingDescriptor.getPmoPropertyName();
ExceptionPropertyDispatcher exceptionDispatcher = newExceptionDispatcher(pmo, modelObjectName, pmoPropertyName);
ReflectionPropertyDispatcher reflectionDispatcher = newReflectionDispatcher(pmo, pmoPropertyName, modelObjectName, modelPropertyName, exceptionDispatcher);
StaticValueDispatcher bindingAnnotationDispatcher = new StaticValueDispatcher(reflectionDispatcher);
PropertyDispatcher customDispatchers = createCustomDispatchers(pmo, bindingDescriptor, bindingAnnotationDispatcher);
return new BehaviorDependentDispatcher(customDispatchers, behaviorProvider);
// @formatter:on
}
use of org.linkki.core.binding.dispatcher.PropertyDispatcher in project linkki by linkki-framework.
the class BindAnnotationDescriptorTest method testCreateBinding_CreatesFieldBindingForField.
@Test
public void testCreateBinding_CreatesFieldBindingForField() {
BindAnnotationDescriptor descriptor = new BindAnnotationDescriptor(mock(Bind.class), new ArrayList<>());
PropertyDispatcher dispatcher = mock(PropertyDispatcher.class);
ElementBinding binding = descriptor.createBinding(dispatcher, Handler.NOP_HANDLER, new LabelComponentWrapper(new TextField()));
assertThat(binding, is(instanceOf(ComponentBinding.class)));
}
use of org.linkki.core.binding.dispatcher.PropertyDispatcher in project linkki by linkki-framework.
the class ButtonPmoBindingTest method testButtonClickIsForwaredToPmo.
@Test
public void testButtonClickIsForwaredToPmo() {
ButtonPmo pmo = mock(ButtonPmo.class);
PropertyDispatcher propertyDispatcher = new org.linkki.core.binding.dispatcher.ButtonPmoDispatcher(new ReflectionPropertyDispatcher(() -> pmo, StringUtils.EMPTY, wrappedDispatcher));
ButtonPmoBinding buttonPmoBinding = new ButtonPmoBinding(button, propertyDispatcher, bindingContext::updateUI);
bindingContext.add(buttonPmoBinding);
button.click();
verify(pmo).onClick();
}
use of org.linkki.core.binding.dispatcher.PropertyDispatcher in project linkki by linkki-framework.
the class ButtonPmoBindingTest method testUpdateFromPmo_LambdaPmo.
@Test
public void testUpdateFromPmo_LambdaPmo() {
ButtonPmo lambdaPmo = () -> System.out.println("click");
PropertyDispatcher propertyDispatcher = new org.linkki.core.binding.dispatcher.ButtonPmoDispatcher(new ReflectionPropertyDispatcher(() -> lambdaPmo, StringUtils.EMPTY, wrappedDispatcher));
ButtonPmoBinding binding = new ButtonPmoBinding(button, propertyDispatcher, bindingContext::updateUI);
bindingContext.add(binding);
binding.updateFromPmo();
assertThat(button.isVisible(), is(true));
assertThat(button.isEnabled(), is(true));
}
Aggregations