JTreeASTModel.java
上传用户:afrynkmhm
上传日期:2007-01-06
资源大小:1262k
文件大小:2k
源码类别:

编译器/解释器

开发平台:

Others

  1. package antlr.debug.misc;
  2. /* ANTLR Translator Generator
  3.  * Project led by Terence Parr at http://www.jGuru.com
  4.  * Software rights: http://www.antlr.org/RIGHTS.html
  5.  *
  6.  * $Id: //depot/code/org.antlr/release/antlr-2.7.0/antlr/debug/misc/JTreeASTModel.java#1 $
  7.  */
  8. import antlr.collections.AST;
  9. import javax.swing.*;
  10. import javax.swing.event.*;
  11. import javax.swing.tree.*;
  12. public class JTreeASTModel implements TreeModel {
  13.   AST root = null;
  14.   public JTreeASTModel(AST t) {
  15. if (t == null) {
  16.   throw new IllegalArgumentException("root is null");
  17. }
  18. root = t;
  19.   }  
  20.   public void addTreeModelListener(TreeModelListener l) {
  21.   }  
  22.   public Object getChild(Object parent, int index) {
  23. if (parent == null) {
  24.   return null;
  25. }
  26. AST p = (AST)parent;
  27. AST c = p.getFirstChild();
  28. if ( c==null ) {
  29.   throw new ArrayIndexOutOfBoundsException("node has no children");
  30. }
  31. int i = 0;
  32. while ( c!=null && i<index ) {
  33.   c = c.getNextSibling();
  34.   i++;
  35. }
  36. return c;
  37.   }  
  38.   public int getChildCount(Object parent) {
  39. if ( parent==null ) {
  40.   throw new IllegalArgumentException("root is null");
  41. }
  42. AST p = (AST)parent;
  43. AST c = p.getFirstChild();
  44. int i = 0;
  45. while ( c!=null ) {
  46.   c = c.getNextSibling();
  47.   i++;
  48. }
  49. return i;
  50.   }  
  51.   public int getIndexOfChild(Object parent, Object child) {
  52. if ( parent==null || child==null ) {
  53.   throw new IllegalArgumentException("root or child is null");
  54. }
  55. AST p = (AST)parent;
  56. AST c = p.getFirstChild();
  57. if ( c==null ) {
  58.   throw new ArrayIndexOutOfBoundsException("node has no children");
  59. }
  60. int i = 0;
  61. while ( c!=null && c!=child ) {
  62.   c = c.getNextSibling();
  63.   i++;
  64. }
  65. if ( c==child ) {
  66.   return i;
  67. }
  68. throw new java.util.NoSuchElementException("node is not a child");
  69.   }  
  70.   public Object getRoot() {
  71. return root;
  72.   }  
  73.   public boolean isLeaf(Object node) {
  74. if ( node == null ) {
  75.   throw new IllegalArgumentException("node is null");
  76. }
  77. AST t = (AST)node;
  78. return t.getFirstChild()==null;
  79.   }  
  80.   public void removeTreeModelListener(TreeModelListener l) {
  81.   }  
  82.   public void valueForPathChanged(TreePath path, Object newValue) {
  83. System.out.println("heh, who is calling this mystery method?");
  84.   }  
  85. }