@Override public String toString() { String s = "?." + this.propertyName; //$NON-NLS-1$ Class<?> valueType = (Class<?>) getValueType(); if (valueType != null) s += "<" + FXBeanPropertyHelper.shortClassName(valueType) + ">"; //$NON-NLS-1$//$NON-NLS-2$ return s; } }
@Override public String toString() { String s = FXBeanPropertyHelper.propertyName(this.propertyDescriptor); if (this.valueType != null) s += "<" + FXBeanPropertyHelper.shortClassName(this.valueType) + ">"; //$NON-NLS-1$//$NON-NLS-2$ return s; } }
@Override public void changed(ObservableValue<? extends Object> source, Object oldValue, Object newValue) { IDiff diff; if (oldValue == null || newValue == null) diff = null; else diff = computeDiff(oldValue, newValue); fireChange(source, diff); } };
@Override public IObservableValue observeDetail(IObservableValue master) { Object valueType = getValueType(); if (valueType == null) valueType = inferValueType(master.getValueType()); return MasterDetailObservables.detailValue(master, valueFactory(master .getRealm()), valueType); }
@SuppressWarnings("null") @Override public IObservableValue observeDetail(IObservableValue master) { return new FXBeanObservableValueDecorator(this.delegate.observeDetail(master), this.propertyDescriptor); }
@Override public IJFXBeanValueProperty value(String propertyName) { return value(propertyName, null); }
@Override @Nullable protected IValueProperty doGetDelegate(Object source) { return getClassDelegate(source.getClass()); }
/** * Start listen to target (if it supports the JavaBean property change * listener pattern) * * @param bean * @param propertyName * @param listener */ public static void hookListener(Object bean, String propertyName, ChangeListener<Object> listener) { Assert.isNotNull(bean, "Bean cannot be null"); //$NON-NLS-1$ Assert.isNotNull(listener, "Listener cannot be null"); //$NON-NLS-1$ Assert.isNotNull(propertyName, "Property name cannot be null"); //$NON-NLS-1$ processListener(bean, propertyName, listener, /*"addPropertyChangeListener",*/ "Could not attach listener to ");//$NON-NLS-1$ }
@Override protected Object doGetValue(Object source) { return FXBeanPropertyHelper.readProperty(source, this.propertyDescriptor); }
@Override protected void doSetValue(Object source, Object value) { FXBeanPropertyHelper.writeProperty(source, this.propertyDescriptor, value); }
@Override protected void doRemoveFrom(Object source) { ChangeListener<Object> l = this.map.get(source); if (l != null) { FXBeanPropertyListenerSupport.unhookListener(source, this.propertyDescriptor.getName(), l); } } }
/** * @param propertyDescriptor * @return String description of property descriptor */ public static String propertyName(PropertyDescriptor propertyDescriptor) { Class<?> beanClass = propertyDescriptor.getReadMethod() .getDeclaringClass(); return shortClassName(beanClass) + "." + propertyDescriptor.getName() + ""; //$NON-NLS-1$ //$NON-NLS-2$ }
@Override @Nullable public Object getObserved() { IObservable decorated = getDecorated(); if (decorated instanceof IObserving) return ((IObserving) decorated).getObserved(); return null; }
/** * @param observable * @param propertyName * @return property descriptor or <code>null</code> */ /* package */public static PropertyDescriptor getValueTypePropertyDescriptor( IObservableValue observable, String propertyName) { if (observable.getValueType() != null) return getPropertyDescriptor((Class<?>) observable.getValueType(), propertyName); return null; }
@SuppressWarnings("null") @Override public IJFXBeanValueProperty value(IJFXBeanValueProperty property) { return new FXBeanValuePropertyDecorator(super.value(property), property.getPropertyDescriptor()); }
@SuppressWarnings("null") @Override public IObservableValue observe(Object source) { return new FXBeanObservableValueDecorator(this.delegate.observe(source), this.propertyDescriptor); }
@Override public IJFXBeanValueProperty value(String propertyName, Class<?> valueType) { Class<?> beanClass = (Class<?>) this.delegate.getValueType(); return value(JFXBeanProperties.value(beanClass, propertyName, valueType)); }
private Object inferValueType(Object masterObservableValueType) { if (masterObservableValueType instanceof Class) { return getClassDelegate((Class<?>) masterObservableValueType) .getValueType(); } return null; }
/** * Stop listen to target * * @param bean * @param propertyName * @param listener */ public static void unhookListener(Object bean, String propertyName, ChangeListener<Object> listener) { Assert.isNotNull(bean, "Bean cannot be null"); //$NON-NLS-1$ Assert.isNotNull(listener, "Listener cannot be null"); //$NON-NLS-1$ Assert.isNotNull(propertyName, "Property name cannot be null"); //$NON-NLS-1$ processListener( bean, propertyName, listener, /*"removePropertyChangeListener",*/ "Cound not remove listener from "); //$NON-NLS-1$ }
@SuppressWarnings("null") @Override public IObservableValue observe(Realm realm, Object source) { return new FXBeanObservableValueDecorator( this.delegate.observe(realm, source), this.propertyDescriptor); }