All Downloads are FREE. Search and download functionalities are using the official Maven repository.

tornadofx.control.Field Maven / Gradle / Ivy

There is a newer version: 1.0.6
Show newest version
package tornadofx.control;

import javafx.beans.DefaultProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.collections.ObservableList;
import javafx.scene.Node;
import javafx.scene.control.Control;
import javafx.scene.control.Label;
import javafx.scene.control.Skin;
import javafx.scene.layout.HBox;
import tornadofx.control.skin.FieldSkin;

@DefaultProperty("inputs")
public class Field extends Control {
	private SimpleStringProperty textProperty = new SimpleStringProperty();
	private Label label = new Label();
	private LabelContainer labelContainer = new LabelContainer(label);
    private InputContainer inputContainer = new InputContainer();
    private ObservableList inputs;

	public LabelContainer getLabelContainer() {
		return labelContainer;
	}

	public Field(String text, Node... inputs) {
		this();
		setText(text);
		if (inputs != null) getInputContainer().getChildren().addAll(inputs);
	}

    public Field() {
        setFocusTraversable(false);
        getStyleClass().add("field");
	    label.textProperty().bind(textProperty);
        inputs = inputContainer.getChildren();
        getChildren().addAll(labelContainer, inputContainer);
    }

    public Fieldset getFieldset() {
        return (Fieldset) getParent();
    }

    protected Skin createDefaultSkin() {
        return new FieldSkin(this);
    }

    public class LabelContainer extends HBox {
        public LabelContainer(Label label) {
	        getChildren().add(label);
	        getStyleClass().add("label-container");
        }
    }

    public class InputContainer extends HBox {
        public InputContainer() {
            getStyleClass().add("input-container");
        }
    }

    public InputContainer getInputContainer() {
        return inputContainer;
    }

    public ObservableList getInputs() {
        return inputs;
    }

    public void setInputs(ObservableList inputs) {
        this.inputs = inputs;
    }

    public String getText() {
		return textProperty.get();
	}

	public SimpleStringProperty textProperty() {
		return textProperty;
	}

	public void setText(String text) {
		this.textProperty.set(text);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy