Hi
I'm creating an applet to show an outline in the form of a Jtree.
I created a class outline that supposedly parses a string and creates
the outline in memory, allowing me to write it out as string, or as a
tree.
The Outline class is in the attached file. I call this outline in the
following way :
out1 = new Outline("(No1,body1,(No2,Body2,(No3,Body3)),(No4,Body4))(No5,
Body5)(No6, Body6)");
DefaultMutableTreeNode root1 = out1.toTree();
DefaultMutableTreeNode root2 = out1.toTree();
When i run the above i only get
No6
No6
and i was expecting to get
No1
No5
No6
What am i doing wrong ?
I should add that i'm extremely newbie on this java thing and as such
the code is horrible, uggly, probablu not very much OO, etc
Thanks
--
Mario Filipe
[EMAIL PROTECTED]
http://neptuno.sc.uevora.pt/~mjnf
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
public class Outline{
private Outline prev, next, child;
private String title, body;
private Outline(String source, Outline previous){
int len = source.length();
int ciclo = 0;
int npars = 0;
int initialPos = -1;
int finalPos = -1;
if (len != 0){ // Se a string � vazia, n�o vale a pena estar a fazer nada
// Agora percorre-se a string toda � procura dos n�s que s�o filhos da raiz
while (ciclo < len){
if (source.charAt(ciclo) == '('){
npars ++;
if (npars == 1 && initialPos == -1) initialPos = ciclo;
}
if (source.charAt(ciclo) == ')'){
npars --;
if (npars == 0 && finalPos == -1) finalPos = ciclo +1;
}
if (initialPos != -1 && finalPos != -1){
// j� se encontrou o que define um n�
String no = new String(source.substring(initialPos, finalPos));
int start = 1;
int stop = no.indexOf(",");
title = no.substring(start, stop);
start = stop + 1;
stop = no.indexOf(",", start);
if (stop == -1) stop = no.length() -1;
body = no.substring(start, stop);
if (stop != no.length() -1) // tem filhos
child = new Outline(no.substring(stop +1, no.length()-1));
prev = previous;
next = new Outline(source.substring(finalPos, source.length()), this);
initialPos = -1;
finalPos = -1;
}
ciclo ++;
} // while
}
}
public Outline(String source){
int len = source.length();
int ciclo = 0;
int npars = 0;
int initialPos = -1;
int finalPos = -1;
if (len != 0){ // Se a string � vazia, n�o vale a pena estar a fazer nada
// Agora percorre-se a string toda � procura dos n�s que s�o filhos da raiz
while (ciclo < len){
if (source.charAt(ciclo) == '('){
npars ++;
if (npars == 1 && initialPos == -1) initialPos = ciclo;
}
if (source.charAt(ciclo) == ')'){
npars --;
if (npars == 0 && finalPos == -1) finalPos = ciclo +1;
}
if (initialPos != -1 && finalPos != -1){
// j� se encontrou o que define um n�
String no = new String(source.substring(initialPos, finalPos));
int start = 1;
int stop = no.indexOf(",");
title = no.substring(start, stop);
start = stop + 1;
stop = no.indexOf(",", start);
if (stop == -1) stop = no.length() -1;
body = no.substring(start, stop);
if (stop != no.length() -1) // tem filhos
child = new Outline(no.substring(stop +1, no.length()-1));
prev = null;
next = new Outline(source.substring(finalPos, source.length()), this);
initialPos = -1;
finalPos = -1;
}
ciclo ++;
} // while
}
}
public String toString(){
return null;
}
private DefaultMutableTreeNode toTree(DefaultMutableTreeNode myRoot){
return null;
}
public DefaultMutableTreeNode toTree(){
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
Outline here = this;
while (here.prev != null) here = here.prev;
while (here.next != null){
System.out.println(here.title);
here = here.next;
}
return root;
}
private DefaultMutableTreeNode toTree(int i){
return null;
}
public Outline add(Outline Father, Outline Son){
return null;
}
public Outline remove(Outline wich){
return null;
}
public Outline edit (Outline wich){
return null;
}
}