codesimian
Class TreeOfCode

java.lang.Object
  extended by codesimian.CS<CSGeneric>
      extended by codesimian.DefaultCS
          extended by codesimian.TreeOfCodeGUI
              extended by codesimian.TreeOfCode
All Implemented Interfaces:
CodeSimian, java.awt.event.MouseListener, java.util.EventListener, javax.swing.event.TreeModelListener, javax.swing.event.TreeSelectionListener

public class TreeOfCode
extends TreeOfCodeGUI


Nested Class Summary
static class TreeOfCode.TreeNodeForCS
          User-object (getUserObject()) can be any Object to put in a tree.
 
Field Summary
 
Fields inherited from class codesimian.CS
DESCRIPTION, END, EXECPROXY, HEAP, JAVACODE, MYFUEL, NAME, NEWINSTANCE, NULL, PARENT, PARSEPRIORITY, PREV, TESTER, THIS
 
Constructor Summary
TreeOfCode()
          initial JTree displays a mostly empty tree containing only Const.zero
TreeOfCode(CS treeRoot)
          initial JTree displays treeRoot
 
Method Summary
 javax.swing.tree.TreeNode[] allTreeNodes(javax.swing.tree.TreeNode root)
          returns all TreeNodes that can be reached through some TreePath starting from 'root'
 double cost()
          cost() should be changed to return a float, and should be renamed to costToExecute()

cost of EXECUTING this CS, not including any CSs it executes recursively.
 boolean deleteP(int index)
          WARNING: if returns false, could have deleted but not moved other params down 1 index.
WARNING: if duplicates not allowed, can not slide params down 1 index the standard way, returns false.
 java.lang.String description()
          a short description of this CS, shorter than the javadoc, but long enough to tell what the params are for.
 double DForProxy()
          Execute this CS and cast to double.
 boolean insertP(int index, CS insertMe)
          same as setP(int,CS) but inserts instead of overwriting.
 java.lang.String keyword()
          For the CodeSimian language as a String.
CodeSimian language keyword, like "+" "*" "max" ">" etc.

Override this function if you want to specify a keyword other than how I derive them from the class name, like + for Add.

Some CSs might never be intended to be used in the language by their keyword.
The best example (4/05) is Num, because it is used in the language like "3.4" instead of "num()".
 java.lang.Object L(java.lang.Class type)
          Optionally execute this CS, and definitely try to CAST it to the specified Java type.
 int maxP()
          Maximum quantity of Params
 int minP()
          For DForProxy().
Minimum number of parameters in param[] needed to call DForProxy().
Defines which indexs of param[] DForProxy() can use.
Functions with a different number of parameters must override this.
OVERRIDE THIS FUNCTION IF EXEC USES A DIFFERENT NUMBER OF PARAMETERS.
Default is 1.
 void mouseClicked(java.awt.event.MouseEvent e)
           
 void mouseEntered(java.awt.event.MouseEvent e)
           
 void mouseExited(java.awt.event.MouseEvent e)
           
 void mousePressed(java.awt.event.MouseEvent e)
           
 void mouseReleased(java.awt.event.MouseEvent e)
           
 javax.swing.tree.TreePath path(javax.swing.tree.TreeNode start, javax.swing.tree.TreeNode end)
          null if no path exists
 boolean selectInGUI(CS selectMe)
           
 boolean setL(java.lang.Object value)
          setL setD setF setJ setI setS setC setB setZ are functions that SET THE VALUE OF THIS CS to some object, primitive, or array.
 boolean setP(int index, CS setTo)
          Every CS is a list of other CSs, between size minP() and maxP() inclusive.
 java.awt.Dimension sizeIShouldBe()
           
 void treeNodesChanged(javax.swing.event.TreeModelEvent e)
           
 void treeNodesInserted(javax.swing.event.TreeModelEvent e)
           
 void treeNodesRemoved(javax.swing.event.TreeModelEvent e)
           
 javax.swing.JTree treeOfCode(CS treeRoot)
           
 javax.swing.tree.TreePath treePathToCS(javax.swing.tree.TreeNode startHere, CS lastTreeNodeContainsThisCS)
          Returns a TreePath from startHere to the TreeNode that contains lastTreeNodeContainsThisCS, or null if no such path exists.
 void treeStructureChanged(javax.swing.event.TreeModelEvent e)
           
 void updateSize()
           
 boolean updateTreeNode(javax.swing.tree.TreeNode updateMe)
          updateMe's child TreeNodes should contain the child CSs of updateMe's CS.
 void valueChanged(javax.swing.event.TreeSelectionEvent e)
           
 
Methods inherited from class codesimian.TreeOfCodeGUI
getObject, setObject
 
Methods inherited from class codesimian.DefaultCS
B, C, countP, decrementMyFuel, F, fuel, getExec, heap, I, indexP, indexPName, insertB, insertC, insertD, insertF, insertI, insertJ, insertL, insertL, insertL1, insertS, insertZ, J, javaCode, LForProxy, LForProxy, myFuel, name, newInstance, objectToCS, objectToCSArray, objectToCSArray, P, prevD, prevL, PType, S, setB, setC, setCountP, setD, setD, setExec, setF, setFuel, setI, setJ, setL, setL, setL1, setMyFuel, setName, setPrevExec, setPType, setS, setZ, start, toString, V, Z
 
Methods inherited from class codesimian.CS
addB, addC, addD, addF, addI, addJ, addL, addP, addP, addP, addP, addP, addS, addZ, BForProxy, CForProxy, clone, D, deleteP, FForProxy, GETB, GETC, GETD, GETF, GETI, GETJ, GETL, GETS, GETZ, IForProxy, isIllusion, JForProxy, L, L, L, L, maxD, minD, overwrites, parent, parsePriority, PB, PC, PD, PF, PI, PJ, PL, prevB, prevC, prevF, prevI, prevJ, prevS, prevZ, proxyOf, PS, PZ, reflect, reflect, reflect6, setB, SETB, setC, SETC, setCost, SETD, setDescription, setF, SETF, setHeap, setI, SETI, setJ, SETJ, SETL, setL, setL, setParent, setParsePriority, setProxyOf, setS, SETS, setTester, setZ, SETZ, SForProxy, tester, toJavaCode, VForProxy, voidReflect, ZForProxy
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

TreeOfCode

public TreeOfCode(CS treeRoot)
initial JTree displays treeRoot


TreeOfCode

public TreeOfCode()
initial JTree displays a mostly empty tree containing only Const.zero

Method Detail

DForProxy

public double DForProxy()
Description copied from class: CS
Execute this CS and cast to double.

D() and DForProxy() are the 2 most important functions in CS. They execute this CS. All other execute functions, by default, return DForProxy cast to their own type.

For example, J() calls the proxy which calls JForProxy() which calls DForProxy(). D() calls the proxy which calls DForProxy().

By default, all other primitive EXECUTE functions defer to D.
Functions that EXECUTE this CS: L(Class) L(int,Class,int) Z() B() C() S() I() J() F() D() V()

Overrides:
DForProxy in class TreeOfCodeGUI

minP

public int minP()
Description copied from class: DefaultCS
For DForProxy().
Minimum number of parameters in param[] needed to call DForProxy().
Defines which indexs of param[] DForProxy() can use.
Functions with a different number of parameters must override this.
OVERRIDE THIS FUNCTION IF EXEC USES A DIFFERENT NUMBER OF PARAMETERS.
Default is 1.

Overrides:
minP in class TreeOfCodeGUI

maxP

public int maxP()
Description copied from class: CS
Maximum quantity of Params

Overrides:
maxP in class TreeOfCodeGUI

keyword

public java.lang.String keyword()
Description copied from class: DefaultCS
For the CodeSimian language as a String.
CodeSimian language keyword, like "+" "*" "max" ">" etc.

Override this function if you want to specify a keyword other than how I derive them from the class name, like + for Add.

Some CSs might never be intended to be used in the language by their keyword.
The best example (4/05) is Num, because it is used in the language like "3.4" instead of "num()".
Default: Returns class name, minus package name (and its dots), and change the first letter to lowercase.

For example, CS.MaxParams does not override keyword(), which returns "maxP".

Overrides:
keyword in class TreeOfCodeGUI
See Also:
CS.parent(), CS.newInstance(), CS.name()

description

public java.lang.String description()
Description copied from class: CS
a short description of this CS, shorter than the javadoc, but long enough to tell what the params are for. Example use: in automatically generated webpages for CodeSimian. Example: "returns sum of all params" for Add.

Overrides:
description in class TreeOfCodeGUI

cost

public double cost()
Description copied from class: CS
cost() should be changed to return a float, and should be renamed to costToExecute()

cost of EXECUTING this CS, not including any CSs it executes recursively. The INTERNAL cost.

One unit of myFuel() costs cost() units of fuel(). Beware of CSs that counterfeit fuel.

Returns 1 by default.

Overrides:
cost in class TreeOfCodeGUI

L

public java.lang.Object L(java.lang.Class type)
Description copied from class: CS
Optionally execute this CS, and definitely try to CAST it to the specified Java type. If fail, throw a ClassCastException.

It is preferred not to return CSs from this function. If you have a CS to return, the standard is to put it in param0... setP(0,returnValue), where the function caller should get the output from... P(0).

The functions: V Z B C S I J F D and L , usually EXECUTE this CS and CAST its value to the specified type.
L does not have to execute this CS, but all the others do. The other difference is L can throw a CSCastException (extends ClassCastException).

No pattern of L()'s behavior is guaranteed except for primitive wrappers and 1D arrays.
The L's of some some CSs are more predictable than others, often written about in javadoc of a class.
If it casts correctly, it could fail later. If it fails many times, and you try again, it could still succeed.

These 10 function names are also used by a core part of Java (but not as function names): java.lang.Class.name() . Example: new int[7][6][5].getClass().getName() returns "[[[I".

EXAMPLES:
JButton b = (JButton) new ButtonCS().L(Component.class); //JButton inherits from Component
int fiveFiftyFive = new N(555).I();
double charValues[] = (double[]) new S("arraySize11").L(double[].class);

Overrides:
L in class CS
See Also:
CS.Z(), CS.B(), CS.C(), CS.S(), CS.I(), CS.J(), CS.F(), CS.D()

setL

public boolean setL(java.lang.Object value)
Description copied from class: CS
setL setD setF setJ setI setS setC setB setZ are functions that SET THE VALUE OF THIS CS to some object, primitive, or array.

Overrides:
setL in class DefaultCS

updateSize

public void updateSize()
Overrides:
updateSize in class TreeOfCodeGUI

sizeIShouldBe

public java.awt.Dimension sizeIShouldBe()
Overrides:
sizeIShouldBe in class TreeOfCodeGUI

treeOfCode

public javax.swing.JTree treeOfCode(CS treeRoot)
Overrides:
treeOfCode in class TreeOfCodeGUI

setP

public boolean setP(int index,
                    CS setTo)
Description copied from class: CS
Every CS is a list of other CSs, between size minP() and maxP() inclusive. setP overwrites one of those CSs or adds a new one at the end, depending on the index. If index is between 0 and countP()-1, overwrites. If it equals countP(), adds at end.

Overrides:
setP in class TreeOfCodeGUI

insertP

public boolean insertP(int index,
                       CS insertMe)
Description copied from class: CS
same as setP(int,CS) but inserts instead of overwriting. All higher params slide up 1 index.

Overrides:
insertP in class TreeOfCodeGUI

deleteP

public boolean deleteP(int index)
Description copied from class: DefaultCS
WARNING: if returns false, could have deleted but not moved other params down 1 index.
WARNING: if duplicates not allowed, can not slide params down 1 index the standard way, returns false.

Overrides:
deleteP in class TreeOfCodeGUI

selectInGUI

public boolean selectInGUI(CS selectMe)
Overrides:
selectInGUI in class TreeOfCodeGUI

updateTreeNode

public boolean updateTreeNode(javax.swing.tree.TreeNode updateMe)
updateMe's child TreeNodes should contain the child CSs of updateMe's CS. If not, replaces updateMe's childs with new TreeNodes that contain the correct CSs. Returns true if anything changes.

Overrides:
updateTreeNode in class TreeOfCodeGUI

path

public javax.swing.tree.TreePath path(javax.swing.tree.TreeNode start,
                                      javax.swing.tree.TreeNode end)
null if no path exists

Overrides:
path in class TreeOfCodeGUI

treePathToCS

public javax.swing.tree.TreePath treePathToCS(javax.swing.tree.TreeNode startHere,
                                              CS lastTreeNodeContainsThisCS)
Returns a TreePath from startHere to the TreeNode that contains lastTreeNodeContainsThisCS, or null if no such path exists.

Overrides:
treePathToCS in class TreeOfCodeGUI

allTreeNodes

public javax.swing.tree.TreeNode[] allTreeNodes(javax.swing.tree.TreeNode root)
returns all TreeNodes that can be reached through some TreePath starting from 'root'

Overrides:
allTreeNodes in class TreeOfCodeGUI

valueChanged

public void valueChanged(javax.swing.event.TreeSelectionEvent e)
Specified by:
valueChanged in interface javax.swing.event.TreeSelectionListener
Overrides:
valueChanged in class TreeOfCodeGUI

treeNodesChanged

public void treeNodesChanged(javax.swing.event.TreeModelEvent e)
Specified by:
treeNodesChanged in interface javax.swing.event.TreeModelListener
Overrides:
treeNodesChanged in class TreeOfCodeGUI

treeNodesInserted

public void treeNodesInserted(javax.swing.event.TreeModelEvent e)
Specified by:
treeNodesInserted in interface javax.swing.event.TreeModelListener
Overrides:
treeNodesInserted in class TreeOfCodeGUI

treeNodesRemoved

public void treeNodesRemoved(javax.swing.event.TreeModelEvent e)
Specified by:
treeNodesRemoved in interface javax.swing.event.TreeModelListener
Overrides:
treeNodesRemoved in class TreeOfCodeGUI

treeStructureChanged

public void treeStructureChanged(javax.swing.event.TreeModelEvent e)
Specified by:
treeStructureChanged in interface javax.swing.event.TreeModelListener
Overrides:
treeStructureChanged in class TreeOfCodeGUI

mouseClicked

public void mouseClicked(java.awt.event.MouseEvent e)
Specified by:
mouseClicked in interface java.awt.event.MouseListener
Overrides:
mouseClicked in class TreeOfCodeGUI

mouseEntered

public void mouseEntered(java.awt.event.MouseEvent e)
Specified by:
mouseEntered in interface java.awt.event.MouseListener
Overrides:
mouseEntered in class TreeOfCodeGUI

mouseExited

public void mouseExited(java.awt.event.MouseEvent e)
Specified by:
mouseExited in interface java.awt.event.MouseListener
Overrides:
mouseExited in class TreeOfCodeGUI

mousePressed

public void mousePressed(java.awt.event.MouseEvent e)
Specified by:
mousePressed in interface java.awt.event.MouseListener
Overrides:
mousePressed in class TreeOfCodeGUI

mouseReleased

public void mouseReleased(java.awt.event.MouseEvent e)
Specified by:
mouseReleased in interface java.awt.event.MouseListener
Overrides:
mouseReleased in class TreeOfCodeGUI