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

xworker.javafx.control.TreeTableViewActions 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.*;
import javafx.util.Callback;
import org.xmeta.ActionContext;
import org.xmeta.Thing;
import xworker.javafx.beans.property.PropertyFactory;
import xworker.javafx.util.JavaFXUtils;
import xworker.javafx.util.ThingCallback;

public class TreeTableViewActions {
    static{
        PropertyFactory.regist(TreeTableView.class, "tableMenuButtonVisibleProperty", o -> {
            TreeTableView obj = (TreeTableView) o;
            return obj.tableMenuButtonVisibleProperty();
        });
        PropertyFactory.regist(TreeTableView.class, "onScrollToColumnProperty", o -> {
            TreeTableView obj = (TreeTableView) o;
            return obj.onScrollToColumnProperty();
        });
        PropertyFactory.regist(TreeTableView.class, "columnResizePolicyProperty", o -> {
            TreeTableView obj = (TreeTableView) o;
            return obj.columnResizePolicyProperty();
        });
        PropertyFactory.regist(TreeTableView.class, "treeColumnProperty", o -> {
            TreeTableView obj = (TreeTableView) o;
            return obj.treeColumnProperty();
        });
        PropertyFactory.regist(TreeTableView.class, "sortModeProperty", o -> {
            TreeTableView obj = (TreeTableView) o;
            return obj.sortModeProperty();
        });
        PropertyFactory.regist(TreeTableView.class, "fixedCellSizeProperty", o -> {
            TreeTableView obj = (TreeTableView) o;
            return obj.fixedCellSizeProperty();
        });
        PropertyFactory.regist(TreeTableView.class, "rootProperty", o -> {
            TreeTableView obj = (TreeTableView) o;
            return obj.rootProperty();
        });
        PropertyFactory.regist(TreeTableView.class, "placeholderProperty", o -> {
            TreeTableView obj = (TreeTableView) o;
            return obj.placeholderProperty();
        });
        PropertyFactory.regist(TreeTableView.class, "selectionModelProperty", o -> {
            TreeTableView obj = (TreeTableView) o;
            return obj.selectionModelProperty();
        });
        PropertyFactory.regist(TreeTableView.class, "editableProperty", o -> {
            TreeTableView obj = (TreeTableView) o;
            return obj.editableProperty();
        });
        PropertyFactory.regist(TreeTableView.class, "onScrollToProperty", o -> {
            TreeTableView obj = (TreeTableView) o;
            return obj.onScrollToProperty();
        });
        PropertyFactory.regist(TreeTableView.class, "focusModelProperty", o -> {
            TreeTableView obj = (TreeTableView) o;
            return obj.focusModelProperty();
        });
        PropertyFactory.regist(TreeTableView.class, "showRootProperty", o -> {
            TreeTableView obj = (TreeTableView) o;
            return obj.showRootProperty();
        });
        PropertyFactory.regist(TreeTableView.class, "onSortProperty", o -> {
            TreeTableView obj = (TreeTableView) o;
            return obj.onSortProperty();
        });
        PropertyFactory.regist(TreeTableView.class, "rowFactoryProperty", o -> {
            TreeTableView obj = (TreeTableView) o;
            return obj.rowFactoryProperty();
        });
        PropertyFactory.regist(TreeTableView.class, "sortPolicyProperty", o -> {
            TreeTableView obj = (TreeTableView) o;
            return obj.sortPolicyProperty();
        });
    }

    public static void init(TreeTableView node, Thing thing, ActionContext actionContext){
        ControlActions.init(node, thing, actionContext);

        if(thing.valueExists("columnResizePolicy")){
            Callback columnResizePolicy = JavaFXUtils.getObject(thing, "columnResizePolicy", actionContext);
            if(columnResizePolicy != null) {
                node.setColumnResizePolicy(columnResizePolicy);
            }
        }

        if(thing.valueExists("editable")){
            node.setEditable(thing.getBoolean("editable"));
        }
        if(thing.valueExists("fixedCellSize")){
            node.setFixedCellSize(thing.getDouble("fixedCellSize"));
        }
        if(thing.valueExists("focusModel")){
            TreeTableView.TreeTableViewFocusModel focusModel = JavaFXUtils.getObject(thing, "focusModel", actionContext);
            if(focusModel != null) {
                node.setFocusModel(focusModel);
            }
        }
        if(thing.valueExists("placeholder")){
            Node placeholder = JavaFXUtils.getObject(thing, "placeholder", actionContext);
            if(placeholder != null) {
                node.setPlaceholder(placeholder);
            }
        }
        if(thing.valueExists("root")){
            TreeItem root = JavaFXUtils.getObject(thing, "root", actionContext);
            if(root != null) {
                node.setRoot(root);
            }
        }
        if(thing.valueExists("rowFactory")){
            Callback, TreeTableRow> rowFactory = JavaFXUtils.getObject(thing, "rowFactory", actionContext);
            if(rowFactory != null) {
                node.setRowFactory(rowFactory);
            }
        }
        if(thing.valueExists("selectionModel")){
            if("MULTIPLE".equals(thing.getString("selectionModel"))){
                node.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
            }else{
                node.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
            }
        }
        if(thing.valueExists("cellSelectionEnabled")){
            node.getSelectionModel().setCellSelectionEnabled(thing.getBoolean("cellSelectionEnabled"));
        }
        if(thing.valueExists("showRoot")){
            node.setShowRoot(thing.getBoolean("showRoot"));
        }
        if(thing.valueExists("sortMode")){
            node.setSortMode(TreeSortMode.valueOf(thing.getString("sortMode")));
        }
        if(thing.valueExists("sortPolicy")){
            Callback,Boolean> sortPolicy = JavaFXUtils.getObject(thing, "sortPolicy", actionContext);
            if(sortPolicy != null) {
                node.setSortPolicy(sortPolicy);
            }
        }
        if(thing.valueExists("tableMenuButtonVisible")){
            node.setTableMenuButtonVisible(thing.getBoolean("tableMenuButtonVisible"));
        }
        if(thing.valueExists("treeColumn")){
            TreeTableColumn treeColumn = JavaFXUtils.getObject(thing, "treeColumn", actionContext);
            if(treeColumn != null) {
                node.setTreeColumn(treeColumn);
            }
        }
    }

    public static TreeTableView create(ActionContext actionContext){
        Thing self = actionContext.getObject("self");

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

        actionContext.peek().put("parent", node);
        for(Thing child : self.getChilds()){
            Object obj = child.doAction("create", actionContext);
            if(obj instanceof TreeItem){
                node.setRoot((TreeItem) obj);
            }else if(obj instanceof  TreeTableColumn){
                node.getColumns().add((TreeTableColumn) obj);
            }
        }

        return node;
    }

    public static void createColumnResizePolicy(ActionContext actionContext){
        Thing self = actionContext.getObject("self");
        TreeTableView parent = actionContext.getObject("parent");

        parent.setColumnResizePolicy(new ThingCallback<>(self, actionContext));
    }

    public static void createRowFactory(ActionContext actionContext){
        Thing self = actionContext.getObject("self");
        TreeTableView parent = actionContext.getObject("parent");

        parent.setRowFactory(new ThingRowFactory<>(self, actionContext));
    }

    public static void createSortPolicy(ActionContext actionContext){
        Thing self = actionContext.getObject("self");
        TreeTableView parent = actionContext.getObject("parent");

        parent.setSortPolicy(new ThingCallback<>(self, actionContext));
    }

    public static void createPlaceholder(ActionContext actionContext){
        Thing self = actionContext.getObject("self");
        TreeTableView parent = actionContext.getObject("parent");


        for(Thing child : self.getChilds()){
            Object obj = child.doAction("create", actionContext);
            if(obj instanceof Node){
                parent.setPlaceholder((Node) obj);
            }
        }
    }

    public static ThingRowFactory createDefaultRowFactory(ActionContext actionContext){
        Thing self = actionContext.getObject("self");
        return new ThingRowFactory<>(self, actionContext);
    }

    public static class ThingRowFactory implements Callback,TreeTableRow>{
        Thing thing;
        ActionContext actionContext;

        public ThingRowFactory(Thing thing, ActionContext actionContext){
            this.thing = thing;
            this.actionContext = actionContext;
        }

        @Override
        public TreeTableRow call(TreeTableView param) {
            TreeTableRow node  = new TreeTableRowActions.ThingTreeTableRow(thing, actionContext);
            TreeTableRowActions.init(node, thing, actionContext);

            actionContext.peek().put("parent", node);
            for(Thing child : thing.getChilds()){
                child.doAction("create", actionContext);
            }
            return node;
        }
    }
}