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

com.rvkb.util.swing.TreeModelBuilder.groovy Maven / Gradle / Ivy

The newest version!
package com.rvkb.util.swing

import javax.swing.tree.DefaultTreeModel
import javax.swing.tree.DefaultMutableTreeNode
import javax.swing.tree.TreeModel

class TreeModelBuilder extends BuilderSupport {

    private DefaultTreeModel treeModel
    private DefaultMutableTreeNode rootNode

    boolean debug = false

    def indent = ' ' * 4
    int indentCount = -1

    protected void setParent(parent, child) {
        if (parent instanceof TreeModel) {
            parent = rootNode
        }
        treeModel.insertNodeInto(child, parent, parent.childCount)
    }

    def createNode(name) {
        return createNode(name, null, null)
    }

    def createNode(name, value) {
        return createNode(name, null, value)
    }

    def createNode(name, Map attrs) {
        return createNode(name, attrs, null)
    }

    def createNode(name, Map attrs, value) {
        indentCount++
        def res
        if (name=='model') {
            // we create the root node and model with it
            rootNode = new DefaultMutableTreeNode(value)
            treeModel = new DefaultTreeModel(rootNode)
            res = treeModel
        } else if (name=='node') {
            // create a tree node with passed user object
            res = new DefaultMutableTreeNode(value)
        } else {
            // create a tree node with the name of the pretended
            // method as the user object (a String)
            res = new DefaultMutableTreeNode(name)
        }
        if (debug) {
            println indent*indentCount + res
        }
        return res
    }

    protected void nodeCompleted(Object o, Object o1) {
        indentCount--
    }



}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy