package org.jrebirth.form.builder;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Node;
import javafx.scene.control.Label;
import javafx.scene.control.LabelBuilder;
import javafx.scene.effect.DropShadowBuilder;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.HBoxBuilder;
import javafx.scene.layout.Priority;
import javafx.scene.layout.VBox;
import javafx.scene.layout.VBoxBuilder;
import javafx.scene.paint.Color;
import javafx.scene.shape.LineBuilder;
public class DefaultFormBuilder implements FormBuilder {
@Override
public Node createForm() {
VBox rootBox = VBoxBuilder.create()
.spacing(10)
.build();
rootBox.getChildren().addAll(
buildVBox(),
buildVBox(),
buildVBox()
);
AnchorPane.setTopAnchor(rootBox, 10.0);
AnchorPane.setLeftAnchor(rootBox, 10.0);
return rootBox;
}
private VBox buildVBox() {
final VBox contentBox = VBoxBuilder.create()
.styleClass("Form")
.prefWidth(200)
.build();
contentBox.getChildren().add(createField("FIELD", "km/h"));
contentBox.getChildren().add(createLine());
contentBox.getChildren().add(createField("Field", "km/h"));
contentBox.getChildren().add(createLine());
contentBox.getChildren().add(createField("Field", "km/h"));
contentBox.getChildren().add(createLine());
contentBox.getChildren().add(createField("Field", "km/h"));
contentBox.getChildren().add(createLine());
contentBox.getChildren().add(createField("Field", "km/h"));
return contentBox;
}
private Node createLine() {
return LineBuilder.create()
.styleClass("FormSeparator")
.startX(0).startY(0)
.endX(200).endY(0)
.stroke(Color.GREY)
.strokeWidth(1)
.effect(DropShadowBuilder.create()
.offsetX(0)
.offsetY(1)
.radius(1)
.color(Color.web("262626"))
.build())
.build();
}
private Node createField(final String string, final String string2) {
final HBox box = HBoxBuilder.create()
.styleClass("FormRow")
.alignment(Pos.CENTER_LEFT)
.build();
final Label fieldLabel = LabelBuilder.create()
.text(string)
.styleClass("FieldLabel")
.alignment(Pos.BASELINE_LEFT)
// .effect(DropShadowBuilder.create()
//
// .input(InnerShadowBuilder.create()
//
// .color(Color.web("dfdfdf"))
// .build())
//
// .color(Color.web("#bfbfbf"))
// .height(5)
// .offsetX(1)
// .offsetY(-1)
// .radius(1)
// .spread(0)
// .width(2)
// .build())
.build();
HBox.setHgrow(fieldLabel, Priority.NEVER);
HBox.setMargin(fieldLabel, new Insets(0, 10, 0, 10));
final Label unity = LabelBuilder.create()
.text(string2)
.styleClass("FieldUnity")
// .effect(DropShadowBuilder.create()
//
// .color(Color.web("#262626"))
// .height(5)
// .offsetX(1)
// .offsetY(-1)
// .radius(1)
// .spread(0)
// .width(2)
// .build())
.build();
HBox.setHgrow(unity, Priority.NEVER);
HBox.setMargin(unity, new Insets(0, 0, 0, 0));
final Label fieldValue = LabelBuilder.create()
.text("...")
.styleClass("FieldValue")
.build();
HBox.setHgrow(fieldValue, Priority.ALWAYS);
HBox.setMargin(fieldValue, new Insets(0, 0, 0, 0));
box.getChildren().addAll(fieldLabel, unity, fieldValue);
return box;
}
}