From 4308c9d432a2e0a1acc23020c0450ec519fdad6f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 19 Feb 2026 18:13:54 +0000 Subject: [PATCH 1/3] Initial plan From 830c5ccbb9d91ad3e69d14398c4e69c3f48c6930 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 19 Feb 2026 18:18:11 +0000 Subject: [PATCH 2/3] Remove deprecated Java applet code (AppletInteractionController comments and BeanTree files) Co-authored-by: rvosa <106490+rvosa@users.noreply.github.com> --- .../lib/docs/mesquite/BeanTree/BeanTree.html | 1 - .../lib/docs/mesquite/BeanTree/BeanTree.java | 1 - .../mesquite/BeanTree/BeanTree/BeanTree.class | Bin 1759 -> 0 bytes .../BeanTree/BeanTree/BeanTreeControls.class | Bin 1456 -> 0 bytes .../docs/mesquite/BeanTree/BeanTree/Branch.class | Bin 928 -> 0 bytes .../mesquite/BeanTree/BeanTree/TreeCanvas.class | Bin 6044 -> 0 bytes .../mesquite/BeanTree/BeanTree/TreeClass.class | Bin 2374 -> 0 bytes .../BeanTree/com/metrowerks/AppletFrame.class | Bin 1680 -> 0 bytes .../src/main/webapp/WEB-INF/treebase-servlet.xml | 8 +------- 9 files changed, 1 insertion(+), 9 deletions(-) delete mode 100755 treebase-core/lib/docs/mesquite/BeanTree/BeanTree.html delete mode 100755 treebase-core/lib/docs/mesquite/BeanTree/BeanTree.java delete mode 100755 treebase-core/lib/docs/mesquite/BeanTree/BeanTree/BeanTree.class delete mode 100755 treebase-core/lib/docs/mesquite/BeanTree/BeanTree/BeanTreeControls.class delete mode 100755 treebase-core/lib/docs/mesquite/BeanTree/BeanTree/Branch.class delete mode 100755 treebase-core/lib/docs/mesquite/BeanTree/BeanTree/TreeCanvas.class delete mode 100755 treebase-core/lib/docs/mesquite/BeanTree/BeanTree/TreeClass.class delete mode 100755 treebase-core/lib/docs/mesquite/BeanTree/BeanTree/com/metrowerks/AppletFrame.class diff --git a/treebase-core/lib/docs/mesquite/BeanTree/BeanTree.html b/treebase-core/lib/docs/mesquite/BeanTree/BeanTree.html deleted file mode 100755 index ad060a139..000000000 --- a/treebase-core/lib/docs/mesquite/BeanTree/BeanTree.html +++ /dev/null @@ -1 +0,0 @@ -BeanTree

BeanTree

It all started yesterday because I thought that perhaps I should try out some object oriented programming in case I wanted to teach an object oriented language to the students in my class next spring....

Much faster as stand alone application.

Taxon names must be one character only (actually, they can all be the same character).



\ No newline at end of file diff --git a/treebase-core/lib/docs/mesquite/BeanTree/BeanTree.java b/treebase-core/lib/docs/mesquite/BeanTree/BeanTree.java deleted file mode 100755 index 106f0adbe..000000000 --- a/treebase-core/lib/docs/mesquite/BeanTree/BeanTree.java +++ /dev/null @@ -1 +0,0 @@ -//package wpm; import java.awt.*; import java.applet.Applet; public class BeanTree extends Applet { static TreeCanvas TreeDisplay; static BeanTreeControls controls; public void init() { setLayout( new BorderLayout() ); resize(300, 300); TreeDisplay = new TreeCanvas(10, 10, 400, 400); add( "Center", TreeDisplay ); add("North", controls = new BeanTreeControls(TreeDisplay)); TreeDisplay.Tree = new TreeClass(); TreeDisplay.controls = controls; TreeDisplay.Tree.SubRoot = new Branch(null, false); TreeDisplay.Tree.Root = new Branch(TreeDisplay.Tree.SubRoot, false); TreeDisplay.edgewidth = 10; TreeDisplay.needsUpdating = false; TreeDisplay.highlightedBranch = null; TreeDisplay.Tree.exists = false; repaint(); } public void start() { controls.enable(); } public void stop() { controls.disable(); } public static void main(String args[]) { com.metrowerks.AppletFrame.startApplet("BeanTree", "BeanTree", args); } } /** ======================================================================== */ class TreeCanvas extends Canvas { TreeClass Tree; int x_max, y_max; int edgewidth; Branch highlightedBranch, branchFrom; int xFrom, yFrom, xTo, yTo; boolean needsUpdating; String treeDescription; BeanTreeControls controls; private int lastleft; private int taxspacing; private Branch foundBranch; public TreeCanvas( int x_max, int y_max, int x_size, int y_size ) { this.x_max = x_max; this.y_max = y_max; resize( x_size, y_size ); repaint(); } /*_________________________________________________*/ private void WriteTreeDescription(Branch N) { if (N.left!=null) { treeDescription+='('; WriteTreeDescription(N.left); treeDescription+=','; WriteTreeDescription(N.right); treeDescription+=')'; } else { treeDescription+='*'; } } public String Describe() { treeDescription=""; WriteTreeDescription(Tree.Root); treeDescription+=';'; return treeDescription; } /*_________________________________________________*/ private void CalcInternalLocs(Branch N) { if (N.left != null) //internal { CalcInternalLocs(N.left); CalcInternalLocs(N.right); N.y = (-N.left.x + N.right.x+N.left.y + N.right.y) / 2; N.x =(N.left.x + N.right.x - N.left.y + N.right.y) / 2; } } /*_________________________________________________*/ private void CalcTerminalLocs(Branch N) { if (N.left == null) //terminal { lastleft+= taxspacing; N.y = 90; N.x = lastleft; } else { CalcTerminalLocs(N.left); CalcTerminalLocs(N.right); } } /*_________________________________________________*/ private void CalcBranchPolys(Branch N) { if (N.left != null) //terminal { CalcBranchPolys(N.left); CalcBranchPolys(N.right); N.branchPoly.npoints=0; N.branchPoly.addPoint(N.x, N.y); N.branchPoly.addPoint(N.x+edgewidth/2, N.y-edgewidth/2); N.branchPoly.addPoint(N.x+edgewidth, N.y); N.branchPoly.addPoint(N.ancestor.x+edgewidth, N.ancestor.y); N.branchPoly.addPoint(N.ancestor.x, N.ancestor.y); N.branchPoly.npoints=5; } else { N.branchPoly.npoints=0; N.branchPoly.addPoint(N.x, N.y); N.branchPoly.addPoint(N.x+edgewidth, N.y); N.branchPoly.addPoint(N.ancestor.x+edgewidth, N.ancestor.y); N.branchPoly.addPoint(N.ancestor.x, N.ancestor.y); N.branchPoly.npoints=4; } } /*_________________________________________________*/ private void calcBranches() { lastleft = 0; taxspacing = (bounds().width - 10) / Tree.numTaxa; CalcTerminalLocs(Tree.Root); CalcInternalLocs(Tree.Root); Tree.SubRoot.y = (Tree.Root.y)+20; Tree.SubRoot.x = (Tree.Root.x)-20; CalcBranchPolys(Tree.Root); } /*_________________________________________________*/ private void drawBranch(Graphics g, Branch N) { g.setColor(N.color); g.fillPolygon(N.branchPoly); if (N.left != null) drawBranch(g, N.left); if (N.right != null) drawBranch(g, N.right); } /*_________________________________________________*/ public void drawTree(Graphics g) { if (Tree.exists) { calcBranches(); drawBranch(g, Tree.Root); } } /*_________________________________________________*/ public void paint(Graphics g) { drawTree(g); needsUpdating = false; } /*_________________________________________________*/ public void InvertBranch(Graphics g, Branch N) { // N.color=Color.white; highlightedBranch=N; g.setColor(Color.white); g.fillPolygon(N.branchPoly); // needsUpdating=true; } /*_________________________________________________*/ public void RevertBranch(Graphics g, Branch N) { // N.color=Color.black; highlightedBranch=null; g.setColor(Color.black); g.fillPolygon(N.branchPoly); // needsUpdating=true; } /*_________________________________________________*/ private void ScanBranches(Branch N, int x, int y) { if (foundBranch==null) { if (N.branchPoly.inside(x, y)) foundBranch = N; if (N.left != null) //terminal { ScanBranches(N.left, x, y); ScanBranches(N.right, x, y); } } } /*_________________________________________________*/ public Branch FindBranch(int x, int y) { foundBranch=null; ScanBranches(Tree.Root, x, y); return foundBranch; } /*_________________________________________________*/ public void ScanTouch(Graphics g, int x, int y) { Branch branchFound=FindBranch( x, y); if (branchFound!=null) { branchFrom=branchFound; xFrom=x; yFrom=y; xTo=x; yTo=y; g.setXORMode(Color.gray); g.setColor(Color.black); g.drawLine(xFrom,yFrom,xTo,yTo); } } /*_________________________________________________*/ public void ScanFlash(Graphics g, int x, int y) { Branch branchFound=FindBranch( x, y); if (highlightedBranch != null) {if (branchFound==null) RevertBranch(g, highlightedBranch); else if (branchFound!=highlightedBranch) { RevertBranch(g, highlightedBranch); InvertBranch(g, branchFound); } } else if (branchFound!=null) InvertBranch(g, branchFound); } /*_________________________________________________*/ public void ScanDrop(Graphics g, int x, int y) { Branch branchTo=FindBranch( x, y); if (branchTo != null) {if (branchFrom==branchTo) { } else { Tree.MoveBranch(branchFrom, branchTo); controls.RedescribeTree(); } }; needsUpdating=true; branchFrom = null; } /*_________________________________________________*/ public boolean mouseMove(Event e, int x, int y) { Graphics g = getGraphics(); ScanFlash(g, x, y); return true; } /*_________________________________________________*/ public boolean mouseDown(Event e, int x, int y) { Graphics g = getGraphics(); ScanTouch(g, x, y); if (needsUpdating) repaint(); return true; } /*_________________________________________________*/ public boolean mouseDrag(Event e, int x, int y) { if (branchFrom!=null) { Graphics g = getGraphics(); g.setColor(Color.black); g.setXORMode(Color.gray); g.drawLine(xFrom,yFrom,xTo,yTo); xTo=x; yTo=y; g.drawLine(xFrom,yFrom,xTo,yTo); } return true; } /*_________________________________________________*/ public boolean mouseUp(Event e, int x, int y) { Graphics g = getGraphics(); if (branchFrom!=null) { ScanDrop( g, x, y); repaint(); } branchFrom=null; g.setXORMode(g.getColor()); return true; } } /** ======================================================================== */ public class TreeClass { Branch Root, SubRoot; int numTaxa; boolean exists; private int stringloc; /** ________________ read tree ________________ */ private void ParseTreeDescription(String TreeDescription, Branch Ancestor) { if (TreeDescription.charAt(stringloc) == '(') { stringloc++; Ancestor.sprout(); ParseTreeDescription(TreeDescription, Ancestor.left); stringloc++; //skip comma ParseTreeDescription(TreeDescription, Ancestor.right); stringloc++; //skip parensu } else { stringloc++; //skip tt name numTaxa++; } } public void ReadTree(String TreeDescription) { stringloc=0; numTaxa=0; ParseTreeDescription(TreeDescription, Root); exists=true; } /** ______________________________________________ */ private boolean DescendantOf(Branch branchD, Branch branchA) { return false; } private boolean NodeSlantsRight(Branch N) { if (N.ancestor.right==N) return true; else return false; } private Branch Sister(Branch N) { if (N.ancestor.right==N) return N.ancestor.left; else return N.ancestor.right; } /** ______________________________________________ */ public void MoveBranch(Branch branchFrom, Branch branchTo) { Branch sideN,C, G, F, H, NCAnc; boolean fromancslantRight, fromslantRight, toslantRight, NCslantRight, fromroot, toroot; if ((branchFrom.ancestor.ancestor == branchTo) & (branchTo == Root)) { branchFrom = Sister(branchFrom); branchTo = Sister(branchFrom.ancestor); } if ((branchFrom.ancestor == Root) & (branchTo.ancestor.ancestor == Root)) { sideN = branchFrom; branchFrom = branchTo; branchTo = sideN; } fromroot = false; toroot = false; fromslantRight = NodeSlantsRight(branchFrom); fromancslantRight = NodeSlantsRight(branchFrom.ancestor); toslantRight = NodeSlantsRight(branchTo); G = Sister(branchFrom); H = branchFrom.ancestor.ancestor; C = branchTo.ancestor; F = branchFrom.ancestor; if (F == Root) fromroot = true; else if (branchTo == Root ) toroot = true; if (fromslantRight == toslantRight) { sideN = F.left; F.left = F.right; F.right = sideN; } G.ancestor = H; F.ancestor = C; branchTo.ancestor = F; if (fromancslantRight) H.right = G; else H.left = G; if (toslantRight) { F.right = branchTo; C.right = F; } else { F.left = branchTo; C.left = F; } sideN = Sister(G); if (fromroot) { sideN = Root; Root = G; G = sideN; } if (toroot) { sideN = Root; Root = F; F = sideN; } if (!NodeSlantsRight(Root)) { SubRoot.right = Root; } } } /** ======================================================================== */ public class Branch { Branch left, right, ancestor; int x; int y; Polygon branchPoly; Color color; Branch(Branch Ancestor, boolean isFirstDescendant) { this.ancestor = Ancestor; this.color=Color.black; branchPoly= new Polygon(); branchPoly.xpoints = new int[5]; branchPoly.ypoints = new int[5]; branchPoly.npoints=5; } public boolean sprout() { this.left = new Branch(this, true); this.right = new Branch(this, false); return true; } } class BeanTreeControls extends Panel { TextField tf; TreeCanvas TreeDisplay; public BeanTreeControls(TreeCanvas TreeDisplay) { this.TreeDisplay = TreeDisplay; add(tf = new TextField("(((*,*),(*,*)),(((*,*),*),*));", 40)); add(new Button("Show")); } public boolean action(Event ev, Object arg) { if (ev.target instanceof Button) { /* destroy current tree if present */ /*Display.startApplet("BeanTree.html", "BeanTree.html", args);*/ TreeDisplay.treeDescription=tf.getText(); TreeDisplay.Tree.ReadTree(TreeDisplay.treeDescription); TreeDisplay.repaint(); return true; } return false; } public void RedescribeTree() { TreeDisplay.treeDescription = TreeDisplay.Describe(); tf.setText(TreeDisplay.treeDescription); repaint(); } } \ No newline at end of file diff --git a/treebase-core/lib/docs/mesquite/BeanTree/BeanTree/BeanTree.class b/treebase-core/lib/docs/mesquite/BeanTree/BeanTree/BeanTree.class deleted file mode 100755 index 5b486f2de79c04dfa89f02e8288c468994fc39c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1759 zcmZ`(TUQ%Z7~LmaCK-kj(n4E61zR-fCNptnQmjA0 zCzo%&_1PDfZ38Y@%OBwH@!91*nOs<1bgkr^^L^jh-*un)=fA)H#sDs%DG*;OJGN_w z9|#PjGur|qTfS1OcF=I-BLSR`dOm3SPb8xy0l%Cn+twjyH5AX%?{I`C%=NtU$6G zSQo5^WZ+GgI9O%6Y2VF<%I!z*lVyE;b(1YI++pc_7@btFWD*S5Tcckph4 z#lEK(;)Yjz>6U8-ID9KzjHLWd6y|*sOCYg~&F1cH&m%G7-5VA@!g7LfRv1UyEUZR~ zkC}|BRMoy+32Opk-NGlhp~I~UjJiryf;)|h4B0VScPxB{qPE@?7_ZsYn!|snDp4jD zKG$AnaEqy`AM79uEZo+B1#B`gUp2@K2ET(?Z~o+CZvY1Fnz#qPi@}0dVK)ZDnoahb zJ@&Kkp&*n#s~c9Xrn-f%HEHkR8(t4WufaeSJBUoXk*Q2mouLIL)AyqpAE!cQJB~TF zzU??-qQK${IddF(qBjdQ*aA~!ub!(bl4D=_dqIceYrd>21A8VMJYZhZud>3^Cpgki zfy6L3y{2DQYqoyYspZ|kbDE)wl((dw+I((9d2Vi11$(T2cFlA6ymMWC_70cz8|75H zhPI43Qt~{27~=Xx@f6ogAgptxAP95M(c3k{BE`C11)DdP% zNi%6u;_nczJjI1<>a{1haDdF+Y-;`pmr9fl@mA?6u4*NvBP`I<+bvwD@B~*|Smfau zt{-8kBnA%gVGD)6COSPsA+oGdPMR%z%6*`P4Q`@^FQQviY-JBn`lDT1g6kqqaUJ95 zEy)kiI5J4#8lUwIoFO46NTW$Ka27w|9DZR-e#I0XV;aAa&~YNIsC?YVmy`s)>b3?~ zDCyQ1Ea3p(_CrP;n>_|MdT{vyc;$Kc#S`EOD167591Lq1Xh%<^s;O%BPt>1xkUr)h o0T*67eSYdY4(7S*^oO#CX!OA`s`_;gbrO%^d+K8d;kWnTf6t<8 diff --git a/treebase-core/lib/docs/mesquite/BeanTree/BeanTree/BeanTreeControls.class b/treebase-core/lib/docs/mesquite/BeanTree/BeanTree/BeanTreeControls.class deleted file mode 100755 index a5163fcb8d2e35706dd039099830177d8c0b3ef3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1456 zcmZuwU2_yg6g_vdGP{!@32TT5h=~!LoeivD5OgC*79!vpVm1a7ed*n8lYz<1)=Veh zAMii;A9%4UA5~gKm9M_}@!*Re<%94mEN}O0X16RKrl;@i?t9KXefo!gzI}=zoX6*c z!dyG>LtkAZ47uf1LQZ`_7;iifJEAHcsp^V+tQLG3bZUg*l~~G~e$oxZmjtJw!@3A} zM8b>Ap@r87`Q~QysDRfA$Nz_5%I}rsbQ z&8tm6(Te|9D1Aest^6n?oE_kPYe(}QX#Za8foyXp>wG|octa{(&d@XR^wu3*Ky~oC zOd$&wi@1b02^JsJ7r|z7d#Vho>tGg_S@^7Ny*HE0!WA1=@iyzCwB=;dj{R;*evnJ= zsvNuv?$7S~(ZYL0T*Dj-qLXah)RTcolA43}aYHZ9v;UW+=;$pDZsHuFXlm$f78Y!L zfLq*3EW3PN%E2A&(7w?I_795^9rBsV>SWta8DJD(X%y zL_tT!)k7O(lM7mL!qLM86SD`8@hbyz{ISz{gnn=)VnQf@Q08chb9&Et?*JoSWe+9K z`wru4rHL{3057la;nY5+?sIN>t#tMPu8zLp13B0{mULY}kO zp(lJUWpGkAMZdzP-*AF{N16U$xBiJs^p{~WnPOy2X0eES%z$yRgeq4dd~8N7N7KxJ vDGimvt)xs&Wi;-4%%LyAhz6j)F+$I9nw}d_#{f+AKy&!i(ESW+=D+?g!ctCQ diff --git a/treebase-core/lib/docs/mesquite/BeanTree/BeanTree/Branch.class b/treebase-core/lib/docs/mesquite/BeanTree/BeanTree/Branch.class deleted file mode 100755 index 1848f8e0533f709d1ea9ec8a53d4631d2502710c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 928 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 diff --git a/treebase-core/lib/docs/mesquite/BeanTree/BeanTree/com/metrowerks/AppletFrame.class b/treebase-core/lib/docs/mesquite/BeanTree/BeanTree/com/metrowerks/AppletFrame.class deleted file mode 100755 index 902694c39bbb5539c010b2f24888bd8328b1d44b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1680 zcmZ`(U31$+6g}(MRxGP=;y6y-2KoU_orKnWv;)MUG`LBcVq74_p)Fq&Ry@CrYQ;jFCK3X{sC_3quh_ndp~)&BGE?|)(f*I-WKQw<+zxUb=c zhOacdt>JwQ4>a7-@VSN^4SP9gxU3_CD>^1|LCs#%q2o;*DYevbNr!>+I`UXlvp1CO zb+vm{M;Z%ixM<)JZW-7{!@!qn_BFmW@I7hk5p=o;ETGtAFuW$L!g4%ko=UCyU&nVo^GqfKLZ34wafH*3{yq=tJKmvhTAQ{~tXz$SP>y%(uH^<~!(@w1&y-GE`nHlb)>nJt z`9p>i)g`8t4i9WbOxYweoe=A~;v!HQN+cr{V=)=Jbc`9*_kM#Jm&JeU5*U8BSr8&6Ol;)k|WRZUPYj>Cy3LpwM@1x8wC8c>koJo(bf5eSJqu8xT3J zv$Sq4zr?u#Dt{r<`USb&BlWvBz%<{fKQQ@loGnGtH&@#8nVRkiL$qZ1gWGd+a z=GDA(#BktcHboHiKOL`&1WBPv+dULH7WmF^zrd44jPtTD=6Ua_Q)ceqy17Mh%iX!ao<5;ac_ckv0w60geP>?UzO z!(-mAi@1ah#>>!$SL#p}qNF0Zvdhf7c*JN!_Sq=%jR?6sJb{ntt)48FBV?g&;5be@ zj#FOw6=!Df_s_^J4{$d9LdBhVF^XFx6A)ELor - - @@ -625,8 +623,6 @@ redirect:/user/treeList.html - - @@ -1008,9 +1004,7 @@ exportRowSegmentDataController exportRowSegmentTemplateController - - - treeParserController + treeParserController userManagementController selectStudiesController From f4c984195d05a5a759f64a601293bd7fe87e72b5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 19 Feb 2026 18:22:44 +0000 Subject: [PATCH 3/3] Restore BeanTree mesquite files - only clean up treebase-servlet.xml Co-authored-by: rvosa <106490+rvosa@users.noreply.github.com> --- .../lib/docs/mesquite/BeanTree/BeanTree.html | 1 + .../lib/docs/mesquite/BeanTree/BeanTree.java | 1 + .../mesquite/BeanTree/BeanTree/BeanTree.class | Bin 0 -> 1759 bytes .../BeanTree/BeanTree/BeanTreeControls.class | Bin 0 -> 1456 bytes .../docs/mesquite/BeanTree/BeanTree/Branch.class | Bin 0 -> 928 bytes .../mesquite/BeanTree/BeanTree/TreeCanvas.class | Bin 0 -> 6044 bytes .../mesquite/BeanTree/BeanTree/TreeClass.class | Bin 0 -> 2374 bytes .../BeanTree/com/metrowerks/AppletFrame.class | Bin 0 -> 1680 bytes 8 files changed, 2 insertions(+) create mode 100755 treebase-core/lib/docs/mesquite/BeanTree/BeanTree.html create mode 100755 treebase-core/lib/docs/mesquite/BeanTree/BeanTree.java create mode 100755 treebase-core/lib/docs/mesquite/BeanTree/BeanTree/BeanTree.class create mode 100755 treebase-core/lib/docs/mesquite/BeanTree/BeanTree/BeanTreeControls.class create mode 100755 treebase-core/lib/docs/mesquite/BeanTree/BeanTree/Branch.class create mode 100755 treebase-core/lib/docs/mesquite/BeanTree/BeanTree/TreeCanvas.class create mode 100755 treebase-core/lib/docs/mesquite/BeanTree/BeanTree/TreeClass.class create mode 100755 treebase-core/lib/docs/mesquite/BeanTree/BeanTree/com/metrowerks/AppletFrame.class diff --git a/treebase-core/lib/docs/mesquite/BeanTree/BeanTree.html b/treebase-core/lib/docs/mesquite/BeanTree/BeanTree.html new file mode 100755 index 000000000..ad060a139 --- /dev/null +++ b/treebase-core/lib/docs/mesquite/BeanTree/BeanTree.html @@ -0,0 +1 @@ +BeanTree

BeanTree

It all started yesterday because I thought that perhaps I should try out some object oriented programming in case I wanted to teach an object oriented language to the students in my class next spring....

Much faster as stand alone application.

Taxon names must be one character only (actually, they can all be the same character).



\ No newline at end of file diff --git a/treebase-core/lib/docs/mesquite/BeanTree/BeanTree.java b/treebase-core/lib/docs/mesquite/BeanTree/BeanTree.java new file mode 100755 index 000000000..106f0adbe --- /dev/null +++ b/treebase-core/lib/docs/mesquite/BeanTree/BeanTree.java @@ -0,0 +1 @@ +//package wpm; import java.awt.*; import java.applet.Applet; public class BeanTree extends Applet { static TreeCanvas TreeDisplay; static BeanTreeControls controls; public void init() { setLayout( new BorderLayout() ); resize(300, 300); TreeDisplay = new TreeCanvas(10, 10, 400, 400); add( "Center", TreeDisplay ); add("North", controls = new BeanTreeControls(TreeDisplay)); TreeDisplay.Tree = new TreeClass(); TreeDisplay.controls = controls; TreeDisplay.Tree.SubRoot = new Branch(null, false); TreeDisplay.Tree.Root = new Branch(TreeDisplay.Tree.SubRoot, false); TreeDisplay.edgewidth = 10; TreeDisplay.needsUpdating = false; TreeDisplay.highlightedBranch = null; TreeDisplay.Tree.exists = false; repaint(); } public void start() { controls.enable(); } public void stop() { controls.disable(); } public static void main(String args[]) { com.metrowerks.AppletFrame.startApplet("BeanTree", "BeanTree", args); } } /** ======================================================================== */ class TreeCanvas extends Canvas { TreeClass Tree; int x_max, y_max; int edgewidth; Branch highlightedBranch, branchFrom; int xFrom, yFrom, xTo, yTo; boolean needsUpdating; String treeDescription; BeanTreeControls controls; private int lastleft; private int taxspacing; private Branch foundBranch; public TreeCanvas( int x_max, int y_max, int x_size, int y_size ) { this.x_max = x_max; this.y_max = y_max; resize( x_size, y_size ); repaint(); } /*_________________________________________________*/ private void WriteTreeDescription(Branch N) { if (N.left!=null) { treeDescription+='('; WriteTreeDescription(N.left); treeDescription+=','; WriteTreeDescription(N.right); treeDescription+=')'; } else { treeDescription+='*'; } } public String Describe() { treeDescription=""; WriteTreeDescription(Tree.Root); treeDescription+=';'; return treeDescription; } /*_________________________________________________*/ private void CalcInternalLocs(Branch N) { if (N.left != null) //internal { CalcInternalLocs(N.left); CalcInternalLocs(N.right); N.y = (-N.left.x + N.right.x+N.left.y + N.right.y) / 2; N.x =(N.left.x + N.right.x - N.left.y + N.right.y) / 2; } } /*_________________________________________________*/ private void CalcTerminalLocs(Branch N) { if (N.left == null) //terminal { lastleft+= taxspacing; N.y = 90; N.x = lastleft; } else { CalcTerminalLocs(N.left); CalcTerminalLocs(N.right); } } /*_________________________________________________*/ private void CalcBranchPolys(Branch N) { if (N.left != null) //terminal { CalcBranchPolys(N.left); CalcBranchPolys(N.right); N.branchPoly.npoints=0; N.branchPoly.addPoint(N.x, N.y); N.branchPoly.addPoint(N.x+edgewidth/2, N.y-edgewidth/2); N.branchPoly.addPoint(N.x+edgewidth, N.y); N.branchPoly.addPoint(N.ancestor.x+edgewidth, N.ancestor.y); N.branchPoly.addPoint(N.ancestor.x, N.ancestor.y); N.branchPoly.npoints=5; } else { N.branchPoly.npoints=0; N.branchPoly.addPoint(N.x, N.y); N.branchPoly.addPoint(N.x+edgewidth, N.y); N.branchPoly.addPoint(N.ancestor.x+edgewidth, N.ancestor.y); N.branchPoly.addPoint(N.ancestor.x, N.ancestor.y); N.branchPoly.npoints=4; } } /*_________________________________________________*/ private void calcBranches() { lastleft = 0; taxspacing = (bounds().width - 10) / Tree.numTaxa; CalcTerminalLocs(Tree.Root); CalcInternalLocs(Tree.Root); Tree.SubRoot.y = (Tree.Root.y)+20; Tree.SubRoot.x = (Tree.Root.x)-20; CalcBranchPolys(Tree.Root); } /*_________________________________________________*/ private void drawBranch(Graphics g, Branch N) { g.setColor(N.color); g.fillPolygon(N.branchPoly); if (N.left != null) drawBranch(g, N.left); if (N.right != null) drawBranch(g, N.right); } /*_________________________________________________*/ public void drawTree(Graphics g) { if (Tree.exists) { calcBranches(); drawBranch(g, Tree.Root); } } /*_________________________________________________*/ public void paint(Graphics g) { drawTree(g); needsUpdating = false; } /*_________________________________________________*/ public void InvertBranch(Graphics g, Branch N) { // N.color=Color.white; highlightedBranch=N; g.setColor(Color.white); g.fillPolygon(N.branchPoly); // needsUpdating=true; } /*_________________________________________________*/ public void RevertBranch(Graphics g, Branch N) { // N.color=Color.black; highlightedBranch=null; g.setColor(Color.black); g.fillPolygon(N.branchPoly); // needsUpdating=true; } /*_________________________________________________*/ private void ScanBranches(Branch N, int x, int y) { if (foundBranch==null) { if (N.branchPoly.inside(x, y)) foundBranch = N; if (N.left != null) //terminal { ScanBranches(N.left, x, y); ScanBranches(N.right, x, y); } } } /*_________________________________________________*/ public Branch FindBranch(int x, int y) { foundBranch=null; ScanBranches(Tree.Root, x, y); return foundBranch; } /*_________________________________________________*/ public void ScanTouch(Graphics g, int x, int y) { Branch branchFound=FindBranch( x, y); if (branchFound!=null) { branchFrom=branchFound; xFrom=x; yFrom=y; xTo=x; yTo=y; g.setXORMode(Color.gray); g.setColor(Color.black); g.drawLine(xFrom,yFrom,xTo,yTo); } } /*_________________________________________________*/ public void ScanFlash(Graphics g, int x, int y) { Branch branchFound=FindBranch( x, y); if (highlightedBranch != null) {if (branchFound==null) RevertBranch(g, highlightedBranch); else if (branchFound!=highlightedBranch) { RevertBranch(g, highlightedBranch); InvertBranch(g, branchFound); } } else if (branchFound!=null) InvertBranch(g, branchFound); } /*_________________________________________________*/ public void ScanDrop(Graphics g, int x, int y) { Branch branchTo=FindBranch( x, y); if (branchTo != null) {if (branchFrom==branchTo) { } else { Tree.MoveBranch(branchFrom, branchTo); controls.RedescribeTree(); } }; needsUpdating=true; branchFrom = null; } /*_________________________________________________*/ public boolean mouseMove(Event e, int x, int y) { Graphics g = getGraphics(); ScanFlash(g, x, y); return true; } /*_________________________________________________*/ public boolean mouseDown(Event e, int x, int y) { Graphics g = getGraphics(); ScanTouch(g, x, y); if (needsUpdating) repaint(); return true; } /*_________________________________________________*/ public boolean mouseDrag(Event e, int x, int y) { if (branchFrom!=null) { Graphics g = getGraphics(); g.setColor(Color.black); g.setXORMode(Color.gray); g.drawLine(xFrom,yFrom,xTo,yTo); xTo=x; yTo=y; g.drawLine(xFrom,yFrom,xTo,yTo); } return true; } /*_________________________________________________*/ public boolean mouseUp(Event e, int x, int y) { Graphics g = getGraphics(); if (branchFrom!=null) { ScanDrop( g, x, y); repaint(); } branchFrom=null; g.setXORMode(g.getColor()); return true; } } /** ======================================================================== */ public class TreeClass { Branch Root, SubRoot; int numTaxa; boolean exists; private int stringloc; /** ________________ read tree ________________ */ private void ParseTreeDescription(String TreeDescription, Branch Ancestor) { if (TreeDescription.charAt(stringloc) == '(') { stringloc++; Ancestor.sprout(); ParseTreeDescription(TreeDescription, Ancestor.left); stringloc++; //skip comma ParseTreeDescription(TreeDescription, Ancestor.right); stringloc++; //skip parensu } else { stringloc++; //skip tt name numTaxa++; } } public void ReadTree(String TreeDescription) { stringloc=0; numTaxa=0; ParseTreeDescription(TreeDescription, Root); exists=true; } /** ______________________________________________ */ private boolean DescendantOf(Branch branchD, Branch branchA) { return false; } private boolean NodeSlantsRight(Branch N) { if (N.ancestor.right==N) return true; else return false; } private Branch Sister(Branch N) { if (N.ancestor.right==N) return N.ancestor.left; else return N.ancestor.right; } /** ______________________________________________ */ public void MoveBranch(Branch branchFrom, Branch branchTo) { Branch sideN,C, G, F, H, NCAnc; boolean fromancslantRight, fromslantRight, toslantRight, NCslantRight, fromroot, toroot; if ((branchFrom.ancestor.ancestor == branchTo) & (branchTo == Root)) { branchFrom = Sister(branchFrom); branchTo = Sister(branchFrom.ancestor); } if ((branchFrom.ancestor == Root) & (branchTo.ancestor.ancestor == Root)) { sideN = branchFrom; branchFrom = branchTo; branchTo = sideN; } fromroot = false; toroot = false; fromslantRight = NodeSlantsRight(branchFrom); fromancslantRight = NodeSlantsRight(branchFrom.ancestor); toslantRight = NodeSlantsRight(branchTo); G = Sister(branchFrom); H = branchFrom.ancestor.ancestor; C = branchTo.ancestor; F = branchFrom.ancestor; if (F == Root) fromroot = true; else if (branchTo == Root ) toroot = true; if (fromslantRight == toslantRight) { sideN = F.left; F.left = F.right; F.right = sideN; } G.ancestor = H; F.ancestor = C; branchTo.ancestor = F; if (fromancslantRight) H.right = G; else H.left = G; if (toslantRight) { F.right = branchTo; C.right = F; } else { F.left = branchTo; C.left = F; } sideN = Sister(G); if (fromroot) { sideN = Root; Root = G; G = sideN; } if (toroot) { sideN = Root; Root = F; F = sideN; } if (!NodeSlantsRight(Root)) { SubRoot.right = Root; } } } /** ======================================================================== */ public class Branch { Branch left, right, ancestor; int x; int y; Polygon branchPoly; Color color; Branch(Branch Ancestor, boolean isFirstDescendant) { this.ancestor = Ancestor; this.color=Color.black; branchPoly= new Polygon(); branchPoly.xpoints = new int[5]; branchPoly.ypoints = new int[5]; branchPoly.npoints=5; } public boolean sprout() { this.left = new Branch(this, true); this.right = new Branch(this, false); return true; } } class BeanTreeControls extends Panel { TextField tf; TreeCanvas TreeDisplay; public BeanTreeControls(TreeCanvas TreeDisplay) { this.TreeDisplay = TreeDisplay; add(tf = new TextField("(((*,*),(*,*)),(((*,*),*),*));", 40)); add(new Button("Show")); } public boolean action(Event ev, Object arg) { if (ev.target instanceof Button) { /* destroy current tree if present */ /*Display.startApplet("BeanTree.html", "BeanTree.html", args);*/ TreeDisplay.treeDescription=tf.getText(); TreeDisplay.Tree.ReadTree(TreeDisplay.treeDescription); TreeDisplay.repaint(); return true; } return false; } public void RedescribeTree() { TreeDisplay.treeDescription = TreeDisplay.Describe(); tf.setText(TreeDisplay.treeDescription); repaint(); } } \ No newline at end of file diff --git a/treebase-core/lib/docs/mesquite/BeanTree/BeanTree/BeanTree.class b/treebase-core/lib/docs/mesquite/BeanTree/BeanTree/BeanTree.class new file mode 100755 index 0000000000000000000000000000000000000000..5b486f2de79c04dfa89f02e8288c468994fc39c1 GIT binary patch literal 1759 zcmZ`(TUQ%Z7~LmaCK-kj(n4E61zR-fCNptnQmjA0 zCzo%&_1PDfZ38Y@%OBwH@!91*nOs<1bgkr^^L^jh-*un)=fA)H#sDs%DG*;OJGN_w z9|#PjGur|qTfS1OcF=I-BLSR`dOm3SPb8xy0l%Cn+twjyH5AX%?{I`C%=NtU$6G zSQo5^WZ+GgI9O%6Y2VF<%I!z*lVyE;b(1YI++pc_7@btFWD*S5Tcckph4 z#lEK(;)Yjz>6U8-ID9KzjHLWd6y|*sOCYg~&F1cH&m%G7-5VA@!g7LfRv1UyEUZR~ zkC}|BRMoy+32Opk-NGlhp~I~UjJiryf;)|h4B0VScPxB{qPE@?7_ZsYn!|snDp4jD zKG$AnaEqy`AM79uEZo+B1#B`gUp2@K2ET(?Z~o+CZvY1Fnz#qPi@}0dVK)ZDnoahb zJ@&Kkp&*n#s~c9Xrn-f%HEHkR8(t4WufaeSJBUoXk*Q2mouLIL)AyqpAE!cQJB~TF zzU??-qQK${IddF(qBjdQ*aA~!ub!(bl4D=_dqIceYrd>21A8VMJYZhZud>3^Cpgki zfy6L3y{2DQYqoyYspZ|kbDE)wl((dw+I((9d2Vi11$(T2cFlA6ymMWC_70cz8|75H zhPI43Qt~{27~=Xx@f6ogAgptxAP95M(c3k{BE`C11)DdP% zNi%6u;_nczJjI1<>a{1haDdF+Y-;`pmr9fl@mA?6u4*NvBP`I<+bvwD@B~*|Smfau zt{-8kBnA%gVGD)6COSPsA+oGdPMR%z%6*`P4Q`@^FQQviY-JBn`lDT1g6kqqaUJ95 zEy)kiI5J4#8lUwIoFO46NTW$Ka27w|9DZR-e#I0XV;aAa&~YNIsC?YVmy`s)>b3?~ zDCyQ1Ea3p(_CrP;n>_|MdT{vyc;$Kc#S`EOD167591Lq1Xh%<^s;O%BPt>1xkUr)h o0T*67eSYdY4(7S*^oO#CX!OA`s`_;gbrO%^d+K8d;kWnTf6t<8 literal 0 HcmV?d00001 diff --git a/treebase-core/lib/docs/mesquite/BeanTree/BeanTree/BeanTreeControls.class b/treebase-core/lib/docs/mesquite/BeanTree/BeanTree/BeanTreeControls.class new file mode 100755 index 0000000000000000000000000000000000000000..a5163fcb8d2e35706dd039099830177d8c0b3ef3 GIT binary patch literal 1456 zcmZuwU2_yg6g_vdGP{!@32TT5h=~!LoeivD5OgC*79!vpVm1a7ed*n8lYz<1)=Veh zAMii;A9%4UA5~gKm9M_}@!*Re<%94mEN}O0X16RKrl;@i?t9KXefo!gzI}=zoX6*c z!dyG>LtkAZ47uf1LQZ`_7;iifJEAHcsp^V+tQLG3bZUg*l~~G~e$oxZmjtJw!@3A} zM8b>Ap@r87`Q~QysDRfA$Nz_5%I}rsbQ z&8tm6(Te|9D1Aest^6n?oE_kPYe(}QX#Za8foyXp>wG|octa{(&d@XR^wu3*Ky~oC zOd$&wi@1b02^JsJ7r|z7d#Vho>tGg_S@^7Ny*HE0!WA1=@iyzCwB=;dj{R;*evnJ= zsvNuv?$7S~(ZYL0T*Dj-qLXah)RTcolA43}aYHZ9v;UW+=;$pDZsHuFXlm$f78Y!L zfLq*3EW3PN%E2A&(7w?I_795^9rBsV>SWta8DJD(X%y zL_tT!)k7O(lM7mL!qLM86SD`8@hbyz{ISz{gnn=)VnQf@Q08chb9&Et?*JoSWe+9K z`wru4rHL{3057la;nY5+?sIN>t#tMPu8zLp13B0{mULY}kO zp(lJUWpGkAMZdzP-*AF{N16U$xBiJs^p{~WnPOy2X0eES%z$yRgeq4dd~8N7N7KxJ vDGimvt)xs&Wi;-4%%LyAhz6j)F+$I9nw}d_#{f+AKy&!i(ESW+=D+?g!ctCQ literal 0 HcmV?d00001 diff --git a/treebase-core/lib/docs/mesquite/BeanTree/BeanTree/Branch.class b/treebase-core/lib/docs/mesquite/BeanTree/BeanTree/Branch.class new file mode 100755 index 0000000000000000000000000000000000000000..1848f8e0533f709d1ea9ec8a53d4631d2502710c GIT binary patch literal 928 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 literal 0 HcmV?d00001 diff --git a/treebase-core/lib/docs/mesquite/BeanTree/BeanTree/com/metrowerks/AppletFrame.class b/treebase-core/lib/docs/mesquite/BeanTree/BeanTree/com/metrowerks/AppletFrame.class new file mode 100755 index 0000000000000000000000000000000000000000..902694c39bbb5539c010b2f24888bd8328b1d44b GIT binary patch literal 1680 zcmZ`(U31$+6g}(MRxGP=;y6y-2KoU_orKnWv;)MUG`LBcVq74_p)Fq&Ry@CrYQ;jFCK3X{sC_3quh_ndp~)&BGE?|)(f*I-WKQw<+zxUb=c zhOacdt>JwQ4>a7-@VSN^4SP9gxU3_CD>^1|LCs#%q2o;*DYevbNr!>+I`UXlvp1CO zb+vm{M;Z%ixM<)JZW-7{!@!qn_BFmW@I7hk5p=o;ETGtAFuW$L!g4%ko=UCyU&nVo^GqfKLZ34wafH*3{yq=tJKmvhTAQ{~tXz$SP>y%(uH^<~!(@w1&y-GE`nHlb)>nJt z`9p>i)g`8t4i9WbOxYweoe=A~;v!HQN+cr{V=)=Jbc`9*_kM#Jm&JeU5*U8BSr8&6Ol;)k|WRZUPYj>Cy3LpwM@1x8wC8c>koJo(bf5eSJqu8xT3J zv$Sq4zr?u#Dt{r<`USb&BlWvBz%<{fKQQ@loGnGtH&@#8nVRkiL$qZ1gWGd+a z=GDA(#BktcHboHiKOL`&1WBPv+dULH7WmF^zrd44jPtTD=6Ua_Q)ceqy17Mh%iX!ao<5;ac_ckv0w60geP>?UzO z!(-mAi@1ah#>>!$SL#p}qNF0Zvdhf7c*JN!_Sq=%jR?6sJb{ntt)48FBV?g&;5be@ zj#FOw6=!Df_s_^J4{$d9LdBhVF^XFx6A)ELor