package model.layout;
import model.html.ElementNode;
import model.html.Node;
import model.html.TextNode;
import java.awt.*;
public class InlineLayout extends Layout {
private Point cursor;
public InlineLayout(Node node, Layout parent) {
super(node, parent);
cursor = new Point();
}
// recursively construct the layout tree
public void layout() {
this.setLocation(this.getParent().getLocation());
this.getPreviousSibling().ifPresent(
sibling -> this.setY(sibling.getY() + sibling.getHeight()));
this.setWidth(this.getParent().getWidth());
this.setCursor(this.getX(), this.getY());
Node node = this.getAssociatedNode();
switch (node) {
case ElementNode e -> {
if (e.getTag().equals("a")) {
this.setX(this.getX() + this.getParent().getWidth());
}
}
default -> {
if (node.getData().length() > 5) {
this.setHeight(20);
// this.setWidth(this.getWidth() + node.getData().length());
}
}
}
for (Layout child : this.getChildren()) {
child.layout();
this.setHeight(this.getHeight() + child.getHeight()); // fixme
}
// todo: recurse to calculate cursor
// this.setHeight(cursor.getY() - this.getY());
// System.out.println(this.getAssociatedNode().getData() + this.getLocation());
}
public void setCursor(Point cursor) {
this.cursor = cursor;
}
public void setCursor(double x, double y) {
this.cursor.setLocation(x, y);
}
}