/******************************************************************************* * Copyright (c) 2008 Scott Stanchfield. * 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 * * Contributors: * Based on the ANTLR parser generator by Terence Parr, http://antlr.org * Ric Klaren <klaren@cs.utwente.nl> * Scott Stanchfield - Modifications for XML Parsing *******************************************************************************/ package com.javadude.antxr.debug.misc; import java.awt.BorderLayout; import java.awt.Container; import java.awt.Frame; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.image.ImageObserver; import javax.swing.JFrame; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.TreePath; import com.javadude.antxr.ASTFactory; import com.javadude.antxr.CommonAST; import com.javadude.antxr.collections.AST; public class ASTFrame extends JFrame { private static final long serialVersionUID = 1L; class MyTreeSelectionListener implements TreeSelectionListener { public void valueChanged(TreeSelectionEvent event) { TreePath path = event.getPath(); System.out.println("Selected: " + path.getLastPathComponent()); Object elements[] = path.getPath(); for (int i = 0; i < elements.length; i++) { System.out.print("->" + elements[i]); } System.out.println(); } } public ASTFrame(String lab, AST r) { super(lab); // Create the TreeSelectionListener JTreeASTPanel tp = new JTreeASTPanel(new JTreeASTModel(r), null); Container content = getContentPane(); content.add(tp, BorderLayout.CENTER); addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { Frame f = (Frame)e.getSource(); f.setVisible(false); f.dispose(); // System.exit(0); } }); setSize(ImageObserver.WIDTH, ImageObserver.HEIGHT); } public static void main(String args[]) { // Create the tree nodes ASTFactory factory = new ASTFactory(); CommonAST r = (CommonAST)factory.create(0, "ROOT"); r.addChild(factory.create(0, "C1")); r.addChild(factory.create(0, "C2")); r.addChild(factory.create(0, "C3")); ASTFrame frame = new ASTFrame("AST JTree Example", r); frame.setVisible(true); } }