Java JTree Model appendTreeNodes(TreeModel model, Object node, StringBuilder builder, String indent)

Here you can find the source of appendTreeNodes(TreeModel model, Object node, StringBuilder builder, String indent)

Description

append Tree Nodes

License

Open Source License

Declaration

private static void appendTreeNodes(TreeModel model, Object node, StringBuilder builder, String indent) 

Method Source Code


//package com.java2s;
// it under the terms of the GNU General Public License as published by

import java.awt.Component;
import java.awt.Container;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;

import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.JRadioButton;
import javax.swing.JSeparator;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.MenuElement;
import javax.swing.tree.TreeModel;

public class Main {
    static final String NEWLINE = System.lineSeparator();

    private static void appendTreeNodes(TreeModel model, Object node, StringBuilder builder, String indent) {
        builder.append(NEWLINE);//www .java  2s.com
        builder.append(indent);
        if (node instanceof Component) {
            builder.append(node.toString());
            appendComponentStructure((Component) node, builder, "|   " + indent);
        } else {
            builder.append(node.toString());
            builder.append("  (");
            appendClassDerivation(node, builder);
            builder.append(")");
        }
        for (int i = 0; i < model.getChildCount(node); i++)
            appendTreeNodes(model, model.getChild(node, i), builder, "|   " + indent);
    }

    private static void appendComponentStructure(Component component, StringBuilder builder) {
        appendComponentStructure(component, builder, "");
    }

    private static void appendComponentStructure(Component component, StringBuilder builder, String indent) {
        builder.append(NEWLINE);
        builder.append(indent);
        builder.append(component.getName());
        builder.append("(");
        builder.append(component.getClass().getName());
        builder.append(")");
        appendComponentDetails(component, builder);
        if (component instanceof JTree)
            appendTreeNodes(((JTree) component).getModel(), ((JTree) component).getModel().getRoot(), builder,
                    "|   " + indent);
        if (component instanceof JMenuBar) {
            appendMenuItem(component, builder, "|   " + indent);
        } else if (component instanceof Container) {
            for (Component subComponent : ((Container) component).getComponents())
                appendComponentStructure(subComponent, builder, "|   " + indent);
        }
    }

    private static void appendClassDerivation(Object object, StringBuilder builder) {
        builder.append(object.getClass().getSimpleName());
        Class<?> c = object.getClass().getSuperclass();
        String s = null;
        while (c != null) {
            s = c.getSimpleName() + "." + s;
            c = c.getSuperclass();
        }
        builder.append(s);
    }

    private static void appendComponentDetails(Component component, StringBuilder builder) {
        builder.append(component.isEnabled() ? "" : "[Disabled]");
        if (component instanceof JButton) {
            builder.append("{");
            builder.append("JButton: ");
            builder.append(((JButton) component).getText());
            builder.append("}");
        } else if (component instanceof JCheckBox) {
            builder.append("{");
            builder.append("JCheckBox: ");
            builder.append(((JCheckBox) component).getText());
            builder.append("}");
        } else if (component instanceof JLabel) {
            builder.append("{");
            builder.append("JLabel: ");
            builder.append(((JLabel) component).getText());
            builder.append("}");
        } else if (component instanceof JOptionPane) {
            builder.append("{");
            builder.append("JOptionPane: ");
            builder.append(((JOptionPane) component).getMessage().toString());
            builder.append("}");
        } else if (component instanceof JRadioButton) {
            builder.append("{");
            builder.append("JRadioButton: ");
            builder.append(((JRadioButton) component).getText());
            builder.append("}");
        } else if (component instanceof JTextField) {
            builder.append("{");
            builder.append("JTextField: ");
            builder.append(((JTextField) component).getText());
            builder.append("}");
        } else if (component instanceof JMenuBar) {
            builder.append("{");
            builder.append("JMenuBar: ");
            builder.append(((JMenuBar) component).getName());
            builder.append("}");
        } else if (component instanceof JMenuItem) {
            builder.append("{");
            builder.append("JMenuItem: ");
            builder.append(((JMenuItem) component).getText());
            builder.append("}");
        } else if (component instanceof JTree) {
            builder.append("{");
            builder.append("JTree: ");
            builder.append("}");
        } else if (component instanceof JComboBox) {
            builder.append("{");
            builder.append("JComboBox: ");
            builder.append("}");
        } else if (component instanceof JList) {
            builder.append("{");
            builder.append("JList: ");
            builder.append("}");
        }
    }

    private static void appendMenuItem(Component menuItem, StringBuilder builder, String indent) {
        if (menuItem instanceof JMenuBar) {
            appendMenuSubElements((MenuElement) menuItem, builder, indent);
        } else if (menuItem instanceof JPopupMenu) {
            appendMenuSubElements((MenuElement) menuItem, builder, indent);
        } else if (menuItem instanceof JMenuItem) {
            builder.append(NEWLINE);
            builder.append(indent);
            builder.append(((JMenuItem) menuItem).getText());
            builder.append(((JMenuItem) menuItem).isEnabled() ? "" : "[Disabled]");
            appendMenuSubElements((JMenuItem) menuItem, builder, "|   " + indent);
        } else if (menuItem instanceof JSeparator) {
            builder.append(NEWLINE);
            builder.append(indent);
            builder.append("--------");
        }
    }

    private static void appendMenuSubElements(MenuElement element, StringBuilder builder, String indent) {
        for (MenuElement subItem : element.getSubElements()) {
            appendMenuItem((Component) subItem, builder, indent);
        }
    }
}

Related

  1. findChildNode(TreeModel model, Object node, String text)
  2. findChildNode(TreeModel model, Object node, String text)
  3. findTreeNode(TreeModel model, Object obj)
  4. getAllTreeNodes(TreeModel model)