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

xworker.javafx.control.TooltipActions Maven / Gradle / Ivy

There is a newer version: 2.0.2
Show newest version
package xworker.javafx.control;

import javafx.scene.Node;
import javafx.scene.control.ContentDisplay;
import javafx.scene.control.Control;
import javafx.scene.control.OverrunStyle;
import javafx.scene.control.Tooltip;
import javafx.scene.text.Font;
import javafx.scene.text.TextAlignment;
import org.xmeta.ActionContext;
import org.xmeta.Thing;
import xworker.javafx.beans.property.PropertyFactory;
import xworker.javafx.util.JavaFXUtils;

public class TooltipActions {
    static{
        PropertyFactory.regist(Tooltip.class, "fontProperty", o -> {
            Tooltip obj = (Tooltip) o;
            return obj.fontProperty();
        });
        PropertyFactory.regist(Tooltip.class, "wrapTextProperty", o -> {
            Tooltip obj = (Tooltip) o;
            return obj.wrapTextProperty();
        });
        PropertyFactory.regist(Tooltip.class, "contentDisplayProperty", o -> {
            Tooltip obj = (Tooltip) o;
            return obj.contentDisplayProperty();
        });
        PropertyFactory.regist(Tooltip.class, "textOverrunProperty", o -> {
            Tooltip obj = (Tooltip) o;
            return obj.textOverrunProperty();
        });
        PropertyFactory.regist(Tooltip.class, "graphicTextGapProperty", o -> {
            Tooltip obj = (Tooltip) o;
            return obj.graphicTextGapProperty();
        });
        PropertyFactory.regist(Tooltip.class, "textAlignmentProperty", o -> {
            Tooltip obj = (Tooltip) o;
            return obj.textAlignmentProperty();
        });
        PropertyFactory.regist(Tooltip.class, "graphicProperty", o -> {
            Tooltip obj = (Tooltip) o;
            return obj.graphicProperty();
        });
        PropertyFactory.regist(Tooltip.class, "textProperty", o -> {
            Tooltip obj = (Tooltip) o;
            return obj.textProperty();
        });
    }

    public static void init(Tooltip node, Thing thing, ActionContext actionContext) {
        PopupControlActions.init(node, thing, actionContext);

        if(thing.valueExists("contentDisplay")){
            node.setContentDisplay(ContentDisplay.valueOf(thing.getString("contentDisplay")));
        }
        if(thing.valueExists("font")){
            Font font = JavaFXUtils.getObject(thing, "font", actionContext);
            if(font != null) {
                node.setFont(font);
            }
        }
        if(thing.valueExists("graphic")){
            Node graphic = JavaFXUtils.getObject(thing, "graphic", actionContext);
            if(graphic != null) {
                node.setGraphic(graphic);
            }
        }
        if(thing.valueExists("graphicTextGap")){
            node.setGraphicTextGap(thing.getDouble("graphicTextGap"));
        }
        if(thing.valueExists("textAlignment")){
            node.setTextAlignment(TextAlignment.valueOf(thing.getString("textAlignment")));
        }
        if(thing.valueExists("textOverrun")){
            node.setTextOverrun(OverrunStyle.valueOf(thing.getString("textOverrun")));
        }
        if(thing.valueExists("text")){
            node.setText(thing.getString("text"));
        }
        if(thing.valueExists("wrapText")){
            node.setWrapText(thing.getBoolean("wrapText"));
        }
    }

    public static Tooltip create(ActionContext actionContext){
        Thing self = actionContext.getObject("self");
        Object parent = actionContext.getObject("parent");

        Tooltip node = new Tooltip();
        init(node, self, actionContext);
        actionContext.g().put(self.getMetadata().getName(), node);

        if(parent instanceof Control){
            ((Control) parent).setTooltip(node);
        }

        actionContext.peek().put("parent", node);
        for(Thing child : self.getChilds()) {
            Object obj = child.doAction("create", actionContext);
            if(obj instanceof Font){
                node.setFont((Font) obj);
            }
        }

        return node;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy