StepField.java
package no.ntnu.idatt1002.demo.view.components;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import javafx.scene.text.TextAlignment;
import no.ntnu.idatt1002.demo.Logger;
import no.ntnu.idatt1002.demo.data.RecipeIngredient;
import no.ntnu.idatt1002.demo.data.RecipeStep;
public class StepField extends HBox {
public interface onDelete {
void cb();
}
private onDelete onDelete;
private int stepId;
private RecipeStep step;
private InputField stepText;
public StepField(RecipeStep step) {
super();
this.step = step;
this.stepId = step.getId();
this.setPrefHeight(50);
this.setPrefWidth(300);
this.setSpacing(6);
Text stepNumber = new Text(step.getStepNumber() + ".");
stepNumber.setTextAlignment(TextAlignment.CENTER);
stepNumber.getStyleClass().add("centered");
this.getChildren().add(stepNumber);
VBox fieldWrapper = new VBox();
stepText = new InputField();
stepText.setText(step.getInstruction());
fieldWrapper.getChildren().add(stepText);
VBox.setVgrow(fieldWrapper, Priority.ALWAYS);
PrimaryButton removeButton = new PrimaryButton("Remove", PrimaryButton.Type.RED);
removeButton.setOnAction(e -> {
if (onDelete != null) {
onDelete.cb();
}
});
removeButton.setPrefHeight(35);
removeButton.setPrefWidth(100);
removeButton.getStyleClass().add("centered");
this.getChildren().addAll(fieldWrapper, removeButton);
}
public StepField setOnDelete(onDelete onDelete) {
this.onDelete = onDelete;
return this;
}
public int getStepId() {
return stepId;
}
/**
* Gets the step from the field.
*
* @return the step
*/
public RecipeStep getStep() {
return new RecipeStep(
step.getId() == 0 ? 1 : step.getId(), // If the id is 0, it is a new step
step.getRecipeId(),
step.getStepNumber(),
stepText.getText());
}
}