javass/gui/TrickBean.java
2019-09-30 13:09:49 +02:00

69 lines
2.1 KiB
Java

package javass.gui;
import javass.jass.Card;
import javass.jass.Card.Color;
import javass.jass.PlayerId;
import javass.jass.Trick;
import javafx.beans.property.ReadOnlyObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableMap;
/**
* A bean containing the trick properties.
* @author Charles BEAUVILLE
* @author Celia HOUSSIAUX
*
*/
public final class TrickBean {
private final SimpleObjectProperty<Color> trumpProperty = new SimpleObjectProperty<Color>();
private final SimpleObjectProperty<PlayerId> winningPlayerProperty = new SimpleObjectProperty<PlayerId>();
private final ObservableMap<PlayerId, Card> trickMap = FXCollections.observableHashMap();
/**
* Gives the trump property of the trick.
* @return a ReadOnlyObjectProperty of a the trump color.
*/
public ReadOnlyObjectProperty<Color> trumpProperty(){
return trumpProperty;
}
/**
* Sets the trump property to the given color.
* @param trump a color the trump color to be set.
*/
public void setTrump(Color trump){
trumpProperty.set(trump);
}
/**
* Gives an observable map of cards associated by player IDs.
* @return an observable map of cards associated by player IDs.
*/
public ObservableMap<PlayerId, Card> trick(){
return FXCollections.unmodifiableObservableMap(trickMap);
}
/**
* Set the trick property to the given trick.
* @param newTrick a trick to change the trick property.
*/
public void setTrick(Trick newTrick) {
trickMap.clear();
for (int i = 0; i < newTrick.size(); i++)
trickMap.put(newTrick.player(i), newTrick.card(i));
winningPlayerProperty.set(newTrick.winningPlayer());
}
/**
* Gives the property of the winning player of the trick.
* @return ReadOnlyObjectProperty the winning player property.
*/
public ReadOnlyObjectProperty<PlayerId> winningPlayerProperty(){
return winningPlayerProperty;
}
}