private void addBinding(Binding<?, ?, V> binding)
	{
		bindings.add(binding);
		
		// prevent infinite loop when binder bound by itself
		if (binding.getSource() != this)
		{
			updateViolations();
			
			// TODO: aggregate violations better; ideally provide a live view
			binding.addObservableListener(new ObservableListener<Collection<V>>()
			{
				public void valueChanged(ObservableEvent<Collection<V>> event)
				{
					updateViolations();
				}
			});
		}
	}
private void addBinding ( Binding < ? , ? , V > binding ) { bindings . add ( binding ) ; if ( binding . getSource ( ) != this ) { updateViolations ( ) ; binding . addObservableListener ( new ObservableListener < Collection < V > > ( ) { public void valueChanged ( ObservableEvent < Collection < V > > event ) { updateViolations ( ) ; } } ) ; } }
private methods --------------------------------------------------------