org.jboss.bpm.console.client.process.JSONTree.java Source code

Java tutorial

Introduction

Here is the source code for org.jboss.bpm.console.client.process.JSONTree.java

Source

/*
 * JBoss, Home of Professional Open Source.
 * Copyright 2006, Red Hat Middleware LLC, and individual contributors
 * as indicated by the @author tags. See the copyright.txt file in the
 * distribution for a full listing of individual contributors.
 *
 * This is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; either version 2.1 of
 * the License, or (at your option) any later version.
 *
 * This software is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this software; if not, write to the Free
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */
package org.jboss.bpm.console.client.process;

import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.Tree;
import com.google.gwt.user.client.ui.TreeItem;
import org.jboss.bpm.console.client.util.ConsoleLog;

public class JSONTree extends ScrollPanel {
    String json = null;

    public JSONTree(String json) {
        this.json = json;

        Tree tree = new Tree();
        TreeItem root = tree.addItem("message");

        parseObject(root, "root", JSONParser.parse(json));

        this.add(tree);
    }

    private void parseValue(TreeItem root, String key, JSONValue jsonValue) {
        if (jsonValue.isBoolean() != null) {
            TreeItem treeItem = root.addItem(key);
            treeItem.addItem(jsonValue.isBoolean().toString());
        } else if (jsonValue.isNumber() != null) {
            TreeItem fastTreeItem = root.addItem(key);
            fastTreeItem.addItem(jsonValue.isNumber().toString());
        } else if (jsonValue.isString() != null) {
            TreeItem treeItem = root.addItem(key);
            treeItem.addItem(jsonValue.isString().toString());
        } else {
            ConsoleLog.warn("Unexpected JSON value: " + jsonValue);
        }

    }

    private void parseArray(TreeItem root, String key, JSONValue jsonValue) {

    }

    private void parseObject(TreeItem root, String key, JSONValue topLevel) {
        JSONObject rootJSO = topLevel.isObject();
        if (null == rootJSO)
            throw new IllegalArgumentException("Not a JSON object: " + topLevel);

        for (String innerKey : rootJSO.keySet()) {
            JSONValue jsonValue = rootJSO.get(innerKey);
            if (jsonValue.isObject() != null) {
                parseObject(root, innerKey, jsonValue);
            } else if (jsonValue.isArray() != null) {
                parseArray(root, innerKey, jsonValue);
            } else {
                parseValue(root, innerKey, jsonValue);
            }
        }
    }

}