je besoin d'un JavaFX Property
pour un BitSet
afin de créer un TableColumn
avec un bouton à bascule pour chaque bit dans le BitSet
. J'ai implémenté Property<BitSet>
mais même avec la documentation d'Oracle, la signification et l'utilisation de certaines méthodes d'interface me échappent encore, car pour moi tout cela ressemble à un passe-partout superflue. S'il vous plaît dites-moi si je suis sur la bonne voie avec la mise en œuvre et ce que je peux améliorer. Je n'ai pas encore implémenté de liaisons car je ne m'attends pas à en avoir besoin pour mon cas d'utilisation.JavaFX Propriété pour un BitSet
import java.util.*;
import javafx.beans.InvalidationListener;
import javafx.beans.property.Property;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
public class BitSetProperty implements Property<BitSet>
{
private BitSet value;
private final Set<ChangeListener<? super BitSet>> changeListeners = new HashSet<>();
private final Set<InvalidationListener> invalidationListeners = new HashSet<>();
@Override public Object getBean() {return value;}
@Override public String getName() {return "what shall I return here?";}
@Override public void addListener(ChangeListener<? super BitSet> listener) {changeListeners.add(listener);}
@Override public void removeListener(ChangeListener<? super BitSet> listener) {changeListeners.remove(listener);}
@Override public BitSet getValue()
{
return (BitSet)value.clone();
}
@Override public void addListener(InvalidationListener listener) {invalidationListeners.add(listener);}
@Override public void removeListener(InvalidationListener listener) {invalidationListeners.remove(listener);}
@Override public void setValue(BitSet value)
{
if(!value.equals(this.value))
{
changeListeners.stream().forEach(cl->cl.changed(this, this.value, (BitSet)value.clone()));
invalidationListeners.stream().forEach(il->il.invalidated(this));
}
this.value=value;
}
@Override public void bind(ObservableValue<? extends BitSet> observable)
{
throw new UnsupportedOperationException();
}
@Override public void unbind()
{
throw new UnsupportedOperationException();
}
@Override public boolean isBound()
{
// TODO Auto-generated method stub
return false;
}
@Override public void bindBidirectional(Property<BitSet> other)
{
throw new UnsupportedOperationException();
}
@Override public void unbindBidirectional(Property<BitSet> other)
{
throw new UnsupportedOperationException();
}
}