package fr.lteconsulting; import fr.lteconsulting.hexa.classinfo.ClassInfo; import fr.lteconsulting.hexa.classinfo.Clazz; import fr.lteconsulting.hexa.databinding.properties.Properties; import fr.lteconsulting.hexa.databinding.properties.PropertyChangedEvent; import fr.lteconsulting.hexa.databinding.properties.PropertyChangedHandler; public class UniversalEditor { private Object value; private Object registration; public UniversalEditor() { } public Object getValue() { return value; } public void setValue(Object value) { this.value = value; System.out.println("Clear all properties"); if (registration != null) { Properties.removeHandler(registration); registration = null; } if (value != null) { // TODO get the object's properties Clazz<?> claz = ClassInfo.Clazz(value.getClass()); // ... registration = Properties .register(value, "*", handlePropertyChange); } Properties.notify(this, "value"); } private PropertyChangedHandler handlePropertyChange = new PropertyChangedHandler() { public void onPropertyChanged( PropertyChangedEvent event ) { String ptyName = event.getPropertyName(); Object sender = event.getSender(); System.out.println("Show property " + ptyName + " of object " + sender + " with value " + Properties.getValue(sender, ptyName)); } }; }