@SuppressWarnings("unchecked") private BindableProxyAgent<T> getAgent() { ensureProxied(); return ((BindableProxy<T>) this.proxy).getBindableProxyAgent(); }
@SuppressWarnings("unchecked") private BindableProxyAgent<T> getAgent() { ensureProxied(); return ((BindableProxy<T>) this.proxy).getBindableProxyAgent(); }
@SuppressWarnings("unchecked") private BindableProxyAgent<T> getAgent() { ensureProxied(); return ((BindableProxy<T>) this.proxy).getBindableProxyAgent(); }
private static BindableProxyAgent<?> getAgent(final DataBinder<?> binder) { return ((BindableProxy<?>) binder.getModel()).getBindableProxyAgent(); } }
private static BindableProxyAgent<?> getAgent(final DataBinder<?> binder) { return ((BindableProxy<?>) binder.getModel()).getBindableProxyAgent(); } }
private void removeElementChangeHandler(Object element) { if (!BindableProxyFactory.isBindableType(element)) { return; } final BindableProxyAgent<?> agent= ((BindableProxy<?>) element).getBindableProxyAgent(); removeElementChangeHandler(agent); }
private void removeElementChangeHandler(Object element) { if (!BindableProxyFactory.isBindableType(element)) { return; } final BindableProxyAgent<?> agent= ((BindableProxy<?>) element).getBindableProxyAgent(); removeElementChangeHandler(agent); }
private Binding bindNestedProperty(final Object component, final String property, final Converter<?, ?> converter, final Function<BindableProxyAgent<?>, Supplier<Map<Class<? extends GwtEvent>, HandlerRegistration>>> registrar, final Optional<Supplier<Object>> uiGetter, final StateSync initialState) { final DataBinder nestedBinder = createNestedBinder(property, initialState); final String subProperty = property.substring(property.indexOf('.') + 1); final BindableProxyAgent<?> nestedAgent = ((BindableProxy<?>) nestedBinder.getModel()).getBindableProxyAgent(); nestedBinder.addBinding(subProperty, nestedAgent.bindHelper(component, subProperty, converter, registrar, uiGetter, initialState)); final Binding binding = new Binding(property, component, converter, null); bindings.put(property, binding); return binding; }
private Binding bindNestedProperty(final Object component, final String property, final Converter<?, ?> converter, final Function<BindableProxyAgent<?>, Supplier<Map<Class<? extends GwtEvent>, HandlerRegistration>>> registrar, final Optional<Supplier<Object>> uiGetter, final StateSync initialState) { final DataBinder nestedBinder = createNestedBinder(property, initialState); final String subProperty = property.substring(property.indexOf('.') + 1); final BindableProxyAgent<?> nestedAgent = ((BindableProxy<?>) nestedBinder.getModel()).getBindableProxyAgent(); nestedBinder.addBinding(subProperty, nestedAgent.bindHelper(component, subProperty, converter, registrar, uiGetter, initialState)); final Binding binding = new Binding(property, component, converter, null); bindings.put(property, binding); return binding; }
private Object convertToProxy(Object element) { if (BindableProxyFactory.isBindableType(element)) { element = BindableProxyFactory.getBindableProxy(element); final BindableProxyAgent<?> agent = ((BindableProxy<?>) element).getBindableProxyAgent(); if (!elementChangeHandlers.containsKey(agent)) { // Register a property change handler on the element to fire a change // event for the list when the element changes PropertyChangeHandler<Object> handler = new PropertyChangeHandler<Object>() { @Override public void onPropertyChange(PropertyChangeEvent<Object> event) { final int index = list.indexOf(event.getSource()); final List<M> source = new ArrayList<M>(list); if (index == -1) return; // yikes! we do this to alter the source list (otherwise the change event won't get fired). source.add(null); for (BindableListChangeHandler<M> handler : handlers) { handler.onItemChanged(source, index, (M) event.getSource()); } } }; unsubscribeHandlesByHandler.put(handler, agent.addPropertyChangeHandler(handler)); elementChangeHandlers.put(agent, handler); } } return element; }
private Object convertToProxy(Object element) { if (BindableProxyFactory.isBindableType(element)) { element = BindableProxyFactory.getBindableProxy(element); final BindableProxyAgent<?> agent = ((BindableProxy<?>) element).getBindableProxyAgent(); if (!elementChangeHandlers.containsKey(agent)) { // Register a property change handler on the element to fire a change // event for the list when the element changes PropertyChangeHandler<Object> handler = new PropertyChangeHandler<Object>() { @Override public void onPropertyChange(PropertyChangeEvent<Object> event) { final int index = list.indexOf(event.getSource()); final List<M> source = new ArrayList<M>(list); if (index == -1) return; // yikes! we do this to alter the source list (otherwise the change event won't get fired). source.add(null); for (BindableListChangeHandler<M> handler : handlers) { handler.onItemChanged(source, index, (M) event.getSource()); } } }; unsubscribeHandlesByHandler.put(handler, agent.addPropertyChangeHandler(handler)); elementChangeHandlers.put(agent, handler); } } return element; }
final DataBinder otherNestedBinder = (DataBinder) other.binders.get(property); if (nestedBinder != null && otherNestedBinder != null) { final BindableProxyAgent nestedAgent = ((BindableProxy<T>) nestedBinder.getModel()).getBindableProxyAgent(); final BindableProxyAgent otherNestedAgent = ((BindableProxy<T>) otherNestedBinder.getModel()).getBindableProxyAgent(); nestedAgent.fireChangeEvents(otherNestedAgent, state);
final DataBinder otherNestedBinder = (DataBinder) other.binders.get(property); if (nestedBinder != null && otherNestedBinder != null) { final BindableProxyAgent nestedAgent = ((BindableProxy<T>) nestedBinder.getModel()).getBindableProxyAgent(); final BindableProxyAgent otherNestedAgent = ((BindableProxy<T>) otherNestedBinder.getModel()).getBindableProxyAgent(); nestedAgent.fireChangeEvents(otherNestedAgent, state);
private static PropertyType getPropertyType(final BindableProxy<?> proxy, final String property) { final BindableProxyAgent<?> agent = proxy.getBindableProxyAgent(); if (property.contains(".")) { final int firstDot = property.indexOf("."); final String topLevelProperty = property.substring(0, firstDot); final String childProperty = property.substring(firstDot+1); final PropertyType topLevelType = getPropertyType(proxy, topLevelProperty); final BindableProxy<?> topLevelProxy; if (topLevelType instanceof MapPropertyType) { topLevelProxy = (BindableProxy<?>) DataBinder.forMap(((MapPropertyType) topLevelType).getPropertyTypes()).getModel(); } else { topLevelProxy = BindableProxyFactory.getBindableProxy(topLevelType.getType().getName()); } return getPropertyType(topLevelProxy, childProperty); } else if (agent.propertyTypes.containsKey(property)) { return agent.propertyTypes.get(property); } else { final String type = proxy.getClass().getSuperclass().getSimpleName(); throw new NonExistingPropertyException(type, property); } }
private static PropertyType getPropertyType(final BindableProxy<?> proxy, final String property) { final BindableProxyAgent<?> agent = proxy.getBindableProxyAgent(); if (property.contains(".")) { final int firstDot = property.indexOf("."); final String topLevelProperty = property.substring(0, firstDot); final String childProperty = property.substring(firstDot+1); final PropertyType topLevelType = getPropertyType(proxy, topLevelProperty); final BindableProxy<?> topLevelProxy; if (topLevelType instanceof MapPropertyType) { topLevelProxy = (BindableProxy<?>) DataBinder.forMap(((MapPropertyType) topLevelType).getPropertyTypes()).getModel(); } else { topLevelProxy = BindableProxyFactory.getBindableProxy(topLevelType.getType().getName()); } return getPropertyType(topLevelProxy, childProperty); } else if (agent.propertyTypes.containsKey(property)) { return agent.propertyTypes.get(property); } else { final String type = proxy.getClass().getSuperclass().getSimpleName(); throw new NonExistingPropertyException(type, property); } }
/** * Unbinds the property with the given name. * * @param binding * the name of the model property to unbind, must not be null. */ public void unbind(final Binding binding) { final String property = binding.getProperty(); validatePropertyExpr(property); final int dotPos = property.indexOf("."); if (dotPos > 0) { final String bindableProperty = property.substring(0, dotPos); final DataBinder binder = binders.get(bindableProperty); if (binder != null) { final BindableProxyAgent<T> nestedAgent = ((BindableProxy<T>) binder.getModel()).getBindableProxyAgent(); final Collection<Binding> nestedBindings = nestedAgent.bindings.get(property.substring(dotPos + 1)); for (final Binding nestedBinding : nestedBindings.toArray(new Binding[nestedBindings.size()])) { if (binding.getComponent() == nestedBinding.getComponent()) { nestedAgent.unbind(nestedBinding); } } } } binding.removeHandlers(); bindings.remove(property, binding); if (bindings.isEmpty()) { BindableProxyFactory.removeCachedProxyForModel(target); } }
/** * Unbinds the property with the given name. * * @param binding * the name of the model property to unbind, must not be null. */ public void unbind(final Binding binding) { final String property = binding.getProperty(); validatePropertyExpr(property); final int dotPos = property.indexOf("."); if (dotPos > 0) { final String bindableProperty = property.substring(0, dotPos); final DataBinder binder = binders.get(bindableProperty); if (binder != null) { final BindableProxyAgent<T> nestedAgent = ((BindableProxy<T>) binder.getModel()).getBindableProxyAgent(); final Collection<Binding> nestedBindings = nestedAgent.bindings.get(property.substring(dotPos + 1)); for (final Binding nestedBinding : nestedBindings.toArray(new Binding[nestedBindings.size()])) { if (binding.getComponent() == nestedBinding.getComponent()) { nestedAgent.unbind(nestedBinding); } } } } binding.removeHandlers(); bindings.remove(property, binding); if (bindings.isEmpty()) { BindableProxyFactory.removeCachedProxyForModel(target); } }
newProxy.getBindableProxyAgent().mergePropertyChangeHandlers(propertyChangeHandlerSupport); if (fireChangeEvents) { newProxy.getBindableProxyAgent().fireChangeEvents(getAgent(), initialState); newProxy.getBindableProxyAgent().unbind(b); bindings.put(b.getProperty(), newProxy.getBindableProxyAgent() .bind(b.getComponent(), b.getProperty(), b.getConverter(), bindOnKeyUp, newInitState));
newProxy.getBindableProxyAgent().mergePropertyChangeHandlers(propertyChangeHandlerSupport); if (fireChangeEvents) { newProxy.getBindableProxyAgent().fireChangeEvents(getAgent(), initialState); newProxy.getBindableProxyAgent().unbind(b); bindings.put(b.getProperty(), newProxy.getBindableProxyAgent() .bind(b.getComponent(), b.getProperty(), b.getConverter(), bindOnKeyUp, newInitState));
newProxy.getBindableProxyAgent().mergePropertyChangeHandlers(propertyChangeHandlerSupport); if (fireChangeEvents) { newProxy.getBindableProxyAgent().fireChangeEvents(getAgent(), initialState); newProxy.getBindableProxyAgent().unbind(b); bindings.put(b.getProperty(), newProxy.getBindableProxyAgent() .bind(b.getComponent(), b.getProperty(), b.getConverter(), bindOnKeyUp, newInitState));