initBundle();
setLabelFactoryProvider(labelFactoryProvider);
setTooltipFactoryProvider(tooltipFactoryProvider);
setEditorFactoryProvider(editorFactoryProvider);
filters.add(new NonVisualFilter());
final ElementProvider elementProvider = new DefaultElementProvider();
this.source.addListener(new ChangeListener<T>() {
public void changed(ObservableValue<? extends T> observableValue, T oldSource, T newSource) {
if (newSource == null) {
elementsProperty().unbind();
elementsProperty().clear();
} else if (oldSource == null || (newSource.getClass() != oldSource.getClass())) {
elementsProperty().unbind();
elementsProperty().bind(elementProvider.getElements(sourceProperty(), filters));
}
}
});
this.setSkin(new DefaultSkin(this));
getClassLevelValidator().beanProperty().bind(sourceProperty());