do tridy MyScene
public void run() {
Window w = new Window ();
w.setVisible (true);
w.info (this);
}
public class MyNode
{
public String name;
public Object obj;
public java.lang.reflect.Method met;
public String toString ()
{
return name;
}
}
// NO import edu.cmu.cs.dennisc.scenegraph.*;
import javax.swing.tree.*;
import org.alice.apis.moveandturn.*;
import java.lang.reflect.*;
public class Window extends javax.swing.JFrame {
public Window() {
initComponents();
}
DefaultTreeModel model;
DefaultMutableTreeNode act;
public void open (Object s)
{
DefaultMutableTreeNode node = new DefaultMutableTreeNode (s);
if (model == null)
{
model = new DefaultTreeModel (node);
jTree1.setModel (model);
}
else
{
int inx = act.getChildCount();
model.insertNodeInto (node, act, inx);
}
act = node;
}
public void put (Object s)
{
DefaultMutableTreeNode node = new DefaultMutableTreeNode (s);
int inx = act.getChildCount();
model.insertNodeInto (node, act, inx);
}
public void close ()
{
act = (DefaultMutableTreeNode) act.getParent();
}
public void detail (Composite c)
{
// import org.alice.apis.moveandturn.*;
open (c.getName());
Class cls = c.getClass();
open ("methods of " + cls.getName());
// import java.lang.reflect.*;
Method [] list = cls.getMethods();
for (Method m : list)
{
open (m.getName ());
Parameter [] params = m.getParameters();
for (Parameter p : params)
put ("param " + p.getType().getSimpleName());
put ("result " + m.getReturnType().getSimpleName());
if (m.getParameterCount() == 0 && m.getName().startsWith("get"))
{
try
{
Object value = m.invoke (c);
put ("value " + value);
}
catch (Exception ex)
{
}
}
close ();
}
close ();
Transformable [] a = c.getComponents();
for (Transformable t : a)
{
if (t instanceof Composite)
detail ( (Composite) t );
else
put ("" + a);
}
close ();
}
public void info (Composite c)
{
/*
open ("Abc");
put ("item 1");
put ("item 2");
open ("Klm");
put ("item 3");
close ();
put ("item 4");
close ();
*/
// import org.alice.apis.moveandturn.*;
detail (c);
}
private void jTree1ValueChanged(javax.swing.event.TreeSelectionEvent evt) {
TreePath p = evt.getPath();
Object t = p.getLastPathComponent();
if (t instanceof DefaultMutableTreeNode)
{
DefaultMutableTreeNode n = (DefaultMutableTreeNode) t;
if (n.getUserObject() instanceof MyNode)
{
MyNode u = (MyNode) n.getUserObject();
jButton1.setText (u.name);
}
}
}