Package org.dyno.visual.swing.types.endec

Source Code of org.dyno.visual.swing.types.endec.TreeModelWrapper

/************************************************************************************
* Copyright (c) 2008 William Chen.                                                 *
*                                                                                  *
* All rights reserved. This program and the accompanying materials are made        *
* available under the terms of the Eclipse Public License v1.0 which accompanies   *
* this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html *
*                                                                                  *
* Use is subject to the terms of Eclipse Public License v1.0.                      *
*                                                                                  *
* Contributors:                                                                    *
*     William Chen - initial API and implementation.                               *
************************************************************************************/

package org.dyno.visual.swing.types.endec;

import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreeNode;

import org.dyno.visual.swing.base.ExtensionRegistry;
import org.dyno.visual.swing.base.TypeAdapter;
import org.dyno.visual.swing.plugin.spi.ICodeGen;
import org.eclipse.jdt.core.dom.rewrite.ImportRewrite;

/**
*
* @author William Chen
*/
@SuppressWarnings("unchecked")
public class TreeModelWrapper implements ICodeGen {
 
  public String getJavaCode(Object value, ImportRewrite imports) {
    if (value == null)
      return "null";
    return "treeModel";
  }

 
  public String getInitJavaCode(Object value, ImportRewrite imports) {
    if (value == null)
      return null;
    StringBuilder builder = new StringBuilder();
    String str = imports.addImport("javax.swing.tree.DefaultTreeModel");
    builder.append(str + " treeModel = null;\n");
    TreeNode node = (TreeNode) ((TreeModel) value).getRoot();
    genCode(node, builder, 0, imports);
    return builder.toString();
  }

  private void genCode(TreeNode node, StringBuilder builder, int depth, ImportRewrite imports) {
    builder.append("{\n");
    DefaultMutableTreeNode mtn = (DefaultMutableTreeNode) node;
    Object object = mtn.getUserObject();
    String str = imports.addImport("javax.swing.tree.DefaultMutableTreeNode");
    Class type = object.getClass();
    TypeAdapter adapter = ExtensionRegistry.getTypeAdapter(type);
    builder.append(str + " node" + depth + " = new " + str + "(");
    if(adapter!=null&&adapter.getCodegen()!=null){
      String encodedCode = adapter.getCodegen().getJavaCode(object, imports);
      builder.append(encodedCode);
    }else{
      builder.append("\"");
      builder.append(object);
      builder.append("\"");
    }
    builder.append(");\n");
    if (!node.isLeaf()) {
      int count = node.getChildCount();
      for (int i = 0; i < count; i++) {
        TreeNode childNode = node.getChildAt(i);
        genCode(childNode, builder, depth + 1, imports);
      }
    }
    if (depth == 0) {
      String dtm = imports.addImport("javax.swing.tree.DefaultTreeModel");
      builder.append("treeModel = new " + dtm + "(node" + depth + ");\n");
    } else {
      builder.append("node" + (depth - 1) + ".add(node" + depth + ");\n");
    }
    builder.append("}\n");
  }
}

TOP

Related Classes of org.dyno.visual.swing.types.endec.TreeModelWrapper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.