package com.bao.examples.tree.nma;
import java.awt.Dimension;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
public class DataProducer
{
private static final String SPLIT_PREFIX = "__";
private static final String SPLIT_TAG = "SPLIT";
private static final String SPLIT_STR = ".";
public void produce(List<String> dataList)
{
String splitter = null;
for(int i = 0; i < 3; i++)
{
//add splitter
splitter = String.format("%s%s", SPLIT_PREFIX, SPLIT_TAG);
dataList.add(splitter);
//some other data
dataList.add(String.format("[%d]", i + 1));
for(int j = 0; j < 4; j++)
{
//add splitter
splitter = String.format("%s%s%s%s", SPLIT_PREFIX, SPLIT_TAG, SPLIT_STR, SPLIT_TAG);
dataList.add(splitter);
//some other data
dataList.add(String.format("[%d-%d]", i + 1, j + 1));
for(int k = 0; k < 5; k++)
{
//add splitter
splitter = String.format("%s%s%s%s%s%s", SPLIT_PREFIX, SPLIT_TAG, SPLIT_STR, SPLIT_TAG, SPLIT_STR, SPLIT_TAG);
dataList.add(splitter);
//some other data
dataList.add(String.format("[%d-%d-%d]", i + 1, j + 1, k + 1));
}
}
}
}
public TreeLocator createTree(List<String> dataList)
{
TreeLocator treeLocator = new TreeLocator();
String data;
for(int i = 0, size = dataList.size(); i < size; i++)
{
data = dataList.get(i);
if(data.startsWith(SPLIT_PREFIX))
{
treeLocator.addNewNode(data.substring(SPLIT_PREFIX.length()));
}
else
{
treeLocator.setCurrNodeData(data);
}
}
//NMATreeNode treeNode = (NMATreeNode)treeLocator.getTreeModel().getRoot();
return treeLocator;
}
/**
* @param args
*/
public static void main(String[] args)
{
JFrame frame = new JFrame("TestTree");
DataProducer producer = new DataProducer();
List<String> dataList = new ArrayList<String>();
producer.produce(dataList);
TreeLocator treeLocator = producer.createTree(dataList);
JTree tree = new JTree(treeLocator.getTreeModel());
JScrollPane pane = new JScrollPane(tree);
frame.getContentPane().add(pane);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension dim = new Dimension(900, 500);
frame.setPreferredSize(dim);
frame.pack();
frame.setVisible(true);
}
}