EmptyTileController.java
package com.example.project.controllers.tileViewControllers;
import com.example.project.models.tiles.EmptyTileSlot;
import javafx.fxml.FXML;
import javafx.scene.Node;
import javafx.scene.layout.StackPane;
/**
* Empty Tile controller for EmptyTile view.
*/
public class EmptyTileController extends TileController<EmptyTileSlot>
{
@FXML
private StackPane root;
@FXML
private StackPane slotForLetterTile;
public void bind(EmptyTileSlot modelToUse)
{
this.model = modelToUse;
}
private LetterTileController letterTileController;
public Node getRoot()
{
return root;
}
/**
* clears the letter tile on this empty slot.
*/
public void clearLetterTile()
{
if (this.model == null){
throw new RuntimeException("model was null. call bind first.");
}
this.model.setTile(null);
letterTileController = null;
updateView();
}
/**
* updates empty slot to have a letter tile in it.
* @param letterController the letter tiles controller.
*/
public void setLetter(LetterTileController letterController)
{
// update the model
this.model.setTile(letterController.getModel());
letterTileController = letterController;
updateView();
}
private void updateView()
{
slotForLetterTile.getChildren().clear();
if (this.letterTileController != null){
slotForLetterTile.getChildren().add(this.letterTileController.getRoot());
}
}
}