package ql.gui.input;
import javafx.geometry.Pos;
import javafx.scene.layout.VBox;
import ql.gui.GuiElement;
import ql.gui.control.Control;
/**
* Created by Nik on 17-2-15.
*/
public abstract class Input<T extends Control> extends GuiElement
{
private String id;
private Boolean disabled;
protected final VBox inputNode;
protected T control;
public Input(String id, T control, Boolean disabled)
{
this.id = id;
this.control = control;
this.disabled = disabled;
this.inputNode = new VBox();
this.control.setDisabled(disabled);
}
public VBox getInputNode()
{
return this.inputNode;
}
@Override
public void setVisible(Boolean visible)
{
super.setVisible(visible);
this.inputNode.setVisible(visible);
this.inputNode.setManaged(visible);
}
public String getId()
{
return id;
}
protected void fillInputNode()
{
this.inputNode.getChildren().add(this.control.getControlNode());
this.inputNode.setAlignment(Pos.TOP_RIGHT);
this.setVisible(this.getVisible());
}
public void switchControl(T control)
{
control.setDisabled(this.disabled);
this.inputNode.getChildren().clear();
this.control = control;
this.fillInputNode();
}
public abstract <V> V accept(InputVisitor<V> visitor);
}