package regexgolf2.ui.subcomponents.scoredisplay;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.control.Label;
import javafx.scene.paint.Color;
import com.google.java.contract.Ensures;
import com.google.java.contract.Requires;
public class SolvedDisplayUI
{
private final Label _label;
private final IntegerProperty _amountRequirements = new SimpleIntegerProperty();
private final IntegerProperty _amountCompliedRequirements = new SimpleIntegerProperty();
private final BooleanProperty _isHighlighted = new SimpleBooleanProperty();
@Requires("label != null")
public SolvedDisplayUI(Label label)
{
_label = label;
initPropertyChangeReaction();
refresh();
}
private void initPropertyChangeReaction()
{
ChangeListener<Object> cl = new ChangeListener<Object>()
{
@Override
public void changed(ObservableValue<? extends Object> arg0,
Object arg1, Object arg2)
{
refresh();
}
};
_amountRequirements.addListener(cl);
_amountCompliedRequirements.addListener(cl);
_isHighlighted.addListener(cl);
}
public void setAmountRequirements(int amount)
{
_amountRequirements.set(amount);
}
@Ensures("result != null")
public IntegerProperty amountRequirementsProperty()
{
return _amountRequirements;
}
public void setAmountCompliedRequirements(int amount)
{
_amountCompliedRequirements.set(amount);
}
@Ensures("result != null")
public IntegerProperty amountCompliedRequirementsProperty()
{
return _amountCompliedRequirements;
}
public void setHighlighted(boolean highlighted)
{
_isHighlighted.set(highlighted);
}
@Ensures("result != null")
public BooleanProperty isHighlightedProperty()
{
return _isHighlighted;
}
public void refresh()
{
String displayValue = _amountCompliedRequirements.get() + "/" + _amountRequirements.get();
_label.setText(displayValue);
if (_isHighlighted.get())
_label.setTextFill(Color.GREEN); //check-color: 5fd251
else
_label.setTextFill(Color.BLACK);
}
}