package nl.utwente.viskell.ui.components;
import java.util.List;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Ellipse;
import nl.utwente.viskell.haskell.expr.Expression;
import nl.utwente.viskell.haskell.type.Type;
public abstract class NestedBlock extends StackPane {
private Block wrapper;
protected void setWrapper(Block wrapper) {
this.wrapper = wrapper;
}
public Block getWrapper() {
return this.wrapper;
}
public abstract void refreshTypes();
public abstract List<Type> getInputTypes();
public abstract List<Type> getOutputTypes();
public abstract Expression getExpr();
public abstract Block getOriginal();
protected static class Bond extends StackPane {
public Bond(boolean isInput) {
super();
this.setMinSize(0, 0);
this.setMaxSize(0, 0);
Ellipse bond = new Ellipse(7, 3);
bond.setFill(Color.BLACK);
bond.setTranslateY(isInput ? -3 : 3);
this.getChildren().add(bond);
}
}
}