00001 /* 00002 ** Author(s): Miguel Calejo 00003 ** Contact: interprolog@declarativa.com, http://www.declarativa.com 00004 ** Copyright (C) Declarativa, Portugal, 2000-2002 00005 ** Use and distribution, without any warranties, under the terms of the 00006 ** GNU Library General Public License, readable in http://www.fsf.org/copyleft/lgpl.html 00007 */ 00008 package com.declarativa.interprolog.gui; 00009 import com.declarativa.interprolog.*; 00010 import java.io.Serializable; 00011 00014 public class TermTreeModel implements Serializable { 00015 TermModel node; 00016 TermTreeModel[] children; 00017 00018 public static ObjectExamplePair example(){ 00019 TermTreeModel[] fooB = new TermTreeModel[1]; 00020 fooB[0]=new TermTreeModel(new TermModel(new Integer(2)),null); 00021 return new ObjectExamplePair("TermTreeModel", 00022 new TermTreeModel(new TermModel(new Integer(1)),null), 00023 new TermTreeModel(new TermModel("term",new TermModel[1]),fooB) 00024 ); 00025 } 00026 00027 public TermTreeModel(TermModel root,TermTreeModel[] children){ 00028 if (children==null) this.children = new TermTreeModel[0]; 00029 else this.children=children; 00030 node = root; 00031 } 00032 int depth(){ 00033 if (children.length==0) return 1; 00034 int maxdepth=0; 00035 for(int c=0; c<children.length; c++){ 00036 int cache = children[c].depth(); 00037 if (cache>maxdepth) maxdepth=cache; 00038 } 00039 return maxdepth+1; 00040 } 00041 TermListModel topList(){ 00042 TermModel[] temp = new TermModel[children.length]; 00043 for (int i=0; i<children.length;i++) 00044 temp[i]=children[i].node; 00045 return new TermListModel(temp); 00046 } 00047 }