conedit-0.2/0040775000175200017560000000000007653666444013306 5ustar stephensstephensconedit-0.2/src/0040775000175200017560000000000007653666444014075 5ustar stephensstephensconedit-0.2/src/conedit/0042755000175200017560000000000007653666444015522 5ustar stephensstephensconedit-0.2/src/conedit/CVS/0042755000175200017560000000000007653666357016160 5ustar stephensstephensconedit-0.2/src/conedit/CVS/Root0100664000175200017560000000006107336072177017005 0ustar stephensstephens:ext:stephens@cvs.ionink.com:/cvs/ioncvs/cvsroot conedit-0.2/src/conedit/CVS/Repository0100644000175200017560000000002507236675451020242 0ustar stephensstephenshome/ion/src/conedit conedit-0.2/src/conedit/CVS/Entries0100664000175200017560000000221207653666357017506 0ustar stephensstephens/ConApp.java/1.3/Thu Oct 21 14:42:54 1999// /ConApplet.java/1.1/Wed Oct 20 23:59:25 1999// /ConCreator.java/1.2/Thu Oct 21 14:42:54 1999// /ConEditor.java/1.3/Thu Oct 21 14:42:54 1999// /ConIO.java/1.2/Thu Oct 21 15:25:39 1999// /ConPoints.java/1.1/Wed Oct 20 23:59:26 1999// /Connectable.java/1.2/Sun Dec 26 20:18:18 1999// /Connection.java/1.11/Thu Oct 21 15:25:39 1999// /Copier.java/1.1/Wed Oct 20 23:59:27 1999// /Copyable.java/1.2/Wed Oct 20 23:59:27 1999// /Drawable.java/1.4/Wed Oct 20 23:59:27 1999// /Editable.java/1.2/Thu Oct 21 14:42:54 1999// /EmptyEnumeration.java/1.1/Wed Oct 20 23:59:28 1999// /FileURLConnection.java/1.1/Wed Oct 20 23:59:28 1999// /Mouseable.java/1.6/Thu Oct 21 14:42:55 1999// /Moveable.java/1.1/Thu Oct 21 14:42:55 1999// /Node.java/1.13/Sun Dec 26 20:18:20 1999// /Pad.java/1.10/Thu Oct 21 15:12:56 1999// /Selectable.java/1.4/Wed Oct 20 23:59:29 1999// /Selection.java/1.5/Sun Dec 26 20:18:22 1999// /SpatiallySearchable.java/1.4/Wed Oct 20 23:59:29 1999// /index.html/1.5/Wed Oct 20 23:59:29 1999// /Makefile/1.13/Wed Apr 30 06:27:33 2003// /PKG/1.2/Wed Apr 30 06:27:33 2003// /applet.html/1.1/Wed Apr 30 06:27:33 2003// D conedit-0.2/src/conedit/classes/0042755000175200017560000000000007326751150017141 5ustar stephensstephensconedit-0.2/src/conedit/classes/com/0042755000175200017560000000000007326751150017717 5ustar stephensstephensconedit-0.2/src/conedit/classes/com/ion/0042755000175200017560000000000007326751150020504 5ustar stephensstephensconedit-0.2/src/conedit/classes/com/ion/conedit/0042755000175200017560000000000007653666444022147 5ustar stephensstephensconedit-0.2/src/conedit/classes/com/ion/conedit/EmptyEnumeration.class0100664000175200017560000000117307653666443026501 0ustar stephensstephens.   instanceLjava/util/Enumeration;()VCodeLineNumberTableLocalVariableTablethis"Lcom/ion/conedit/EmptyEnumeration;hasMoreElements()Z nextElement()Ljava/lang/Object; SourceFileEmptyEnumeration.java  com/ion/conedit/EmptyEnumeration java/lang/Objectjava/util/Enumeration!  3*    ,   ,    # Y conedit-0.2/src/conedit/classes/com/ion/conedit/Selectable.class0100664000175200017560000000025307653666443025235 0ustar stephensstephens.   selected()Z setSelected(Z)V SourceFileSelectable.javacom/ion/conedit/Selectablejava/lang/Objectconedit-0.2/src/conedit/classes/com/ion/conedit/Selection.class0100664000175200017560000000472707653666443025131 0ustar stephensstephens.f = > ? @A B C D E D F G H ? @ DI J E K L M NO NP Q RSownerLjava/lang/Object;()VCodeLineNumberTableLocalVariableTablethisLcom/ion/conedit/Selection;selected()Ljava/util/Enumeration;cleariIselect(Lcom/ion/conedit/Selectable;)VxLcom/ion/conedit/Selectable;deselecttoggle(Ljava/util/Vector;)VvLjava/util/Vector;seldeselsetvector+(Ljava/util/Enumeration;)Ljava/util/Vector;eLjava/util/Enumeration;(Ljava/util/Enumeration;)V SourceFileSelection.java T U& VW XYcom/ion/conedit/Selectable Z[ \T ]^ _` %a .+ *+java/util/Vector  *0 .0 'b cd ea 67 50com/ion/conedit/Selection(I)Velementssize()I elementAt(I)Ljava/lang/Object; setSelected(Z)VsetSize removeElement(Ljava/lang/Object;)Z addElement(Ljava/lang/Object;)V()Zjava/util/Enumeration nextElement()Ljava/lang/Object;hasMoreElements!  4*! " #$%& /*!" #$' g#*<**!""##$()*+ `+*+W*+ +!#$& '()"#$,-.+ W++*+ W!,-/ 01"#$,-/+ d++  *+ *+ !4578:<"#$,-*0 5+= *+W+>*+ !ABAE!F-E4H"*5#$512/()().0 f+=*+ !KLKN" #$12()/0 KYMYN+6"+: -,*,*-!& RSTU!V8T@XEYJZ">K#$K12B32:424()!,50 F **+!^_ `" #$ 125+ F **+ !cd e" #$ ,- 67 e!YL +**+!j k lkn"!89 125: A *+! rs" #$ 89;<conedit-0.2/src/conedit/classes/com/ion/conedit/Drawable.class0100664000175200017560000000023107653666443024707 0ustar stephensstephens. draw(Ljava/awt/Graphics;)V SourceFile Drawable.javacom/ion/conedit/Drawablejava/lang/Objectconedit-0.2/src/conedit/classes/com/ion/conedit/Mouseable.class0100664000175200017560000000032007653666443025101 0ustar stephensstephens.    mouseDown (Ljava/awt/event/MouseEvent;II)Z mouseDragmouseUp SourceFileMouseable.javacom/ion/conedit/Mouseablejava/lang/Objectconedit-0.2/src/conedit/classes/com/ion/conedit/SpatiallySearchable.class0100664000175200017560000000031207653666443027102 0ustar stephensstephens.  findObjects*(Ljava/awt/Rectangle;ILjava/util/Vector;)V SourceFileSpatiallySearchable.java#com/ion/conedit/SpatiallySearchablejava/lang/Objectconedit-0.2/src/conedit/classes/com/ion/conedit/Editable.class0100664000175200017560000000036207653666443024704 0ustar stephensstephens.    deleteEdit()VcopyEdit(Lcom/ion/conedit/Copier;)V pasteEdit(Lcom/ion/conedit/Selection;)V SourceFile Editable.javacom/ion/conedit/Editablejava/lang/Object  conedit-0.2/src/conedit/classes/com/ion/conedit/Copier.class0100664000175200017560000000645607653666443024426 0ustar stephensstephens. S .S .T U .V .W X .Y .Z X .X [\] .^ [_ .` .a .bc Sd e f gh Si j kl m .n op bqr e st u .vwx yzcopiedLjava/util/Hashtable;copiesLjava/util/Vector; completed showDebug(Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethisLcom/ion/conedit/Copier;xLjava/lang/String;()V(Ljava/util/Enumeration;)VeLjava/util/Enumeration;(Ljava/util/Vector;)Vvclearsetadd6(Lcom/ion/conedit/Copyable;)Lcom/ion/conedit/Copyable;Lcom/ion/conedit/Copyable;copyaddRefP(Lcom/ion/conedit/Copyable;Lcom/ion/conedit/Copyable;)Lcom/ion/conedit/Copyable;ygetRefcompleteiI SourceFile Copier.java => E? {| =? /0 D> 30 12} ~com/ion/conedit/Copyable FG N> IG java/util/Hashtablejava/util/Vector = java/lang/StringBuffercopy( ) 45 I ): copy = getRef()= N complete( NGcomplete(): x= y= com/ion/conedit/Copierelements()Ljava/util/Enumeration;java/util/Enumeration nextElement()Ljava/lang/Object;hasMoreElements()Z addElement(Ljava/lang/Object;)V(I)Vget&(Ljava/lang/Object;)Ljava/lang/Object;put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;append,(Ljava/lang/String;)Ljava/lang/StringBuffer;,(Ljava/lang/Object;)Ljava/lang/StringBuffer;toString()Ljava/lang/String;4(Lcom/ion/conedit/Copier;)Lcom/ion/conedit/Copyable; elementAt(I)Ljava/lang/Object;size()I!./01230 4565789:;<=>63*7 8 9:=?6F **+7 8 9: @A=B6A *+7  !8 9: C2D>6u/* ** ** * * 7"&')*,#-*/.08 /9:E?6k#* *+  W+*734547"88#9:#@AFG6a++*+M*,,7<=? @A8 9:;H IHJK6A++**Y*Y *+ YN+ *+,W,7"HIK LM$P5Q?T8*A9:A;HALH1IHIG6*Y+ ++**Y*Y *+ YMG*++W+*!M*Y+", *+,W* ,#,76 Y\ ]"_)`4a@dPeZfbghil8 9:;HMIIHMG6=++**+ M*Y$+%, ,7stv wyz;{8 =9:=;H"LHNG6g++**Y&*+ YM*++W+*'M*+,W*Y(+%, ,7*  )3;Ee8 g9:g;H&ALHN>6T* O<8* ) M*,*N*Y+,,- * -* 7" >LS8*T9: JOP&;H LHQRconedit-0.2/src/conedit/classes/com/ion/conedit/Copyable.class0100664000175200017560000000031207653666443024724 0ustar stephensstephens.  copy4(Lcom/ion/conedit/Copier;)Lcom/ion/conedit/Copyable;complete SourceFile Copyable.javacom/ion/conedit/Copyablejava/lang/Objectconedit-0.2/src/conedit/classes/com/ion/conedit/Moveable.class0100664000175200017560000000021207653666443024717 0ustar stephensstephens. moveBy(II)V SourceFile Moveable.javacom/ion/conedit/Moveablejava/lang/Objectconedit-0.2/src/conedit/classes/com/ion/conedit/CPPad.class0100664000175200017560000000112607653666443024121 0ustar stephensstephens.) " # $ %&'LEFTI ConstantValueRIGHTBOTTOMTOPNSIDES directionxy(III)VCodeLineNumberTableLocalVariableTablethisLcom/ion/conedit/CPPad;_x_yd SourceFileConPoints.java (   com/ion/conedit/CPPadjava/lang/Object()V          l**** * !conedit-0.2/src/conedit/classes/com/ion/conedit/CPObject.class0100664000175200017560000000106007653666443024620 0ustar stephensstephens.*       ! " #$%xIywh(Ljava/awt/Rectangle;)VCodeLineNumberTableLocalVariableTablethisLcom/ion/conedit/CPObject;rLjava/awt/Rectangle; SourceFileConPoints.java &'  (  )  com/ion/conedit/CPObjectjava/lang/Object()Vjava/awt/Rectanglewidthheight     m%**+*+*+*+  ! "#$$%%%conedit-0.2/src/conedit/classes/com/ion/conedit/ConPoints.class0100664000175200017560000001522307653666444025112 0ustar stephensstephens. 4      J   3    3     3 3 3 3 3 3 3 3 3 3 3 3 3 3tDIRECTI ConstantValueINVERSELEFTRIGHTBOTTOMTOPNSIDESNPOINTSSMAXOFFSshapeLjava/lang/String;directs[[I()VCodeLineNumberTableLocalVariableTablethisLcom/ion/conedit/ConPoints; showDebug(Ljava/lang/String;)VxtoString([[I)Ljava/lang/String;tsijEQSIGN(IIII)Zx1x2x3x4CODE (IIIIII)Iywhpxpycpoints5(Ljava/awt/Rectangle;IIILjava/awt/Rectangle;III[I[I)IfrLjava/awt/Rectangle;fxfyfdirtrtxtytdir[Inptspts ComputeConi(Lcom/ion/conedit/CPObject;Lcom/ion/conedit/CPObject;Lcom/ion/conedit/CPPad;Lcom/ion/conedit/CPPad;I[[I)IstartObjLcom/ion/conedit/CPObject;endObjoutPadLcom/ion/conedit/CPPad;inPadnumpConnect (IIIIII[[I)Ixoyodiroxiyidiripnptxityi Transform (IIIIII[I)VmodedoutxoutyoutoxoyCorrect (IIIII[[I)Vopod Overcross (IIIIIIII)Zy1y2c1c2Shape3P(II[[I)VxyShape4PDShape4PUShape5PB (III[[I)VsignShape5PTShape6Pxm SourceFileConPoints.java KL DEBUG: ConnectionPoints:  S S{ java/lang/StringBuffer ( U  ) }com/ion/conedit/CPObject Kcom/ion/conedit/CPPad K wx T6 c6 6 d6 e6 IJ E6 [\ F6 ab3P GH4PD4PU5PB5PT6Pcom/ion/conedit/ConPointsjava/lang/Objectjava/lang/SystemoutLjava/io/PrintStream;java/io/PrintStreamprintprintlnappend,(Ljava/lang/String;)Ljava/lang/StringBuffer;()Ljava/lang/String;(I)Ljava/lang/StringBuffer;(Ljava/awt/Rectangle;)V(III)V direction!34 5678967:;678<67:=67>?67@A67BC67D E6 F6 GHIJKLM/*N(O PQ RSMB*N9:;O TH UVM{L=ZY+  L>"Y+ *2.  L*2ܻY+  L*Y+  L+N* =>?@!A=@HC\>eEyFO*{WJxXHvY6>Z6[\MXddhNJO*]6^6_6`6abM;6 6`6 6` 6NNOPQ)R8SOH;T6;c6;d6;e6;f6;g68h6 ijM e: Y*YYY 6 6    2.O    2.O    N[ ]:d@eLfXdbiO eklem6en6eo6epleq6er6es6eftegt :+u6 \vJ =(Y6 wxMP,,,---6****++++Nnq6rMsO>PyzP{zP|}P~}P6PvJM M :   .6  .6 6 2. Y '   !6  "6  "6 '   "6u  !6f  "6V   #6B  $61 %t  %  &6  $6632.2. 2 .O2 .ON) HMR[akq{~  *5@JOz M6M6M6M6M6M6MJ=Y6 -666 06 HWt M 66h2EXdOdO9dOdO&dOdOdOdOlh2EXdO`O9`OdO&dOdO`O`ONv$DLTW_gjrz}O\ 6666T6c6Wt66M R :  :  O O O O66$2.2.2.2.'2.2.6d2.2.2.`2.(^2.d2."22 .)d`[OO22 . .`d)`d[OO[2.`2."22 .)d`[OO'22 . .`d)`d[OOdٱNF 'Me   BQOp RT6Rc6Rd6Re6R6RJ$-Y6!0Z6eh6Lt Gt M (*6*6  ~N Of (T6(c6(d6(e6(]6(6(^6(6 66 M*+,,2O,2O,2O,2O,2O,2ON" !"#$#%)&O *6*6*JMD-,,2O,2O,2O,2)O,2lO,2O,2,2.O,2O,2ON. *+ ,-.0'1-273=4C5O D6D6DJMF.,,2O,2O,2O,2)`O,2O,2,2.O,2O,2ON* 9: ;<=)>/?9@?AEBO F6F6FJMu/,-2O-2O-2O-2)Oh%t-2)h`O-2h)h`O-2-2.O-2-2.O-2O-2O-2ON6 FG HIJK8LNMXNbOhPnQtRO*u6u6u6uJMR0,-2O-2O-2O-2lO-2)h`O-2-2.O-2-2.O-2O-2O-2ON2 VW XY[\+]5^?_E`KaQbO*R6R6R6RJMf1,l6-2O-2O-2O-2)O8-2%%ON-2%%tO5-2%%tO-2%%O-2-2.O-2-2.O-2)h`O-2O-2-2.O-2O-2ONNfi jklm$n(oDp]sztvwxyz{|}O4666J 6LMi%)2Y YOYOYOYOSY YOYOYOYOSY YOYOYOYOSY YOYOYOYOS N34 vconedit-0.2/src/conedit/classes/com/ion/conedit/Connection.class0100664000175200017560000002366307653666444025304 0ustar stephensstephens.j Q            Q                    8 8 8 8 1    ! "# 8$ 8% &' ( )*+,- . 8/ 80 12 83 4 15 67 17 8 9 :; &<= :>?@ABCfromLcom/ion/conedit/Connectable;totypeLjava/lang/String;colorLjava/awt/Color;selectedZfrLjava/awt/Rectangle;trfprtprpx[IpypnIprectdefaultsLcom/ion/conedit/Connection; bezier_steps ConstantValue_(Lcom/ion/conedit/Connectable;Lcom/ion/conedit/Connectable;Ljava/lang/String;Ljava/awt/Color;)VCodeLineNumberTableLocalVariableTablethisO(Lcom/ion/conedit/Connectable;Lcom/ion/conedit/Connectable;Ljava/lang/String;)V=(Lcom/ion/conedit/Connectable;Lcom/ion/conedit/Connectable;)V showDebug(Ljava/lang/String;)Vx()Ljava/lang/String;setType()Ljava/awt/Color;setColor(Ljava/awt/Color;)Vclone()Ljava/lang/Object;c toStringLongtoString()Lcom/ion/conedit/Connectable;setFrom (Lcom/ion/conedit/Connectable;)ZpsavesetTo setFromTo=(Lcom/ion/conedit/Connectable;Lcom/ion/conedit/Connectable;)Zftswap()Vtemppeer<(Lcom/ion/conedit/Connectable;)Lcom/ion/conedit/Connectable; canConnect()Zconnect canDisconnect disconnect setSelected(Z)V deleteEditcopyEdit(Lcom/ion/conedit/Copier;)VcpLcom/ion/conedit/Copier; pasteEdit(Lcom/ion/conedit/Selection;)VselLcom/ion/conedit/Selection;bezier(IIIIIII[I[II)V_x0_y0_x1_y1_x2_y2pix0Dx1x2y0y1y2iu1u0arcs([I[III[I[II)IqxoyoiolxlypcyinvalidatePoints calcPointsnpxnpycalcRect()Ljava/awt/Rectangle;drawArcs(Ljava/awt/Graphics;[I[III)VgLjava/awt/Graphics;ndraw(Ljava/awt/Graphics;IIII)VfromxfromytoxtoyxpyplineSeg (IIIIIIIII)ZdxdyymyMuformat((Ljava/awt/Rectangle;)Ljava/lang/String;r(I)Ljava/lang/String; findObjects*(Ljava/awt/Rectangle;ILjava/util/Vector;)VdepthcollectLjava/util/Vector;prlr movePoints(II)V(Ljava/awt/Graphics;)V SourceFileConnection.java o VW XW jk YZ [\ op ouD EFjava/lang/StringBufferDEBUG: Connection: GH z: zI Jx Kxcom/ion/conedit/Connection[]... L M M setFromTo() wx M M ]^ gh fe de i`N Oh _` b` yh Ph h Qhcom/ion/conedit/Pad Rh a` c` ST java/awt/Rectangle o UV WX GY,i= () Z[ \]^ _` oa bcd ef ]g h\ }~-> i\java/lang/Objectcom/ion/conedit/Drawablecom/ion/conedit/Selectable#com/ion/conedit/SpatiallySearchablecom/ion/conedit/Editablejava/lang/SystemerrLjava/io/PrintStream;append,(Ljava/lang/String;)Ljava/lang/StringBuffer;java/io/PrintStreamprintprintlncom/ion/conedit/Connectable(Lcom/ion/conedit/Connection;)Zcom/ion/conedit/ConPointsOFFSwidthheightpospoints5(Ljava/awt/Rectangle;IIILjava/awt/Rectangle;III[I[I)Iaddjava/awt/Graphics drawPolyline([I[II)V(I)Ljava/lang/StringBuffer; intersects(Ljava/awt/Rectangle;)Zcontains(II)Zjava/util/Vector addElement(Ljava/lang/Object;)V(IIII)Vnode()Lcom/ion/conedit/Node;com/ion/conedit/NodegetRect)(Ljava/awt/Graphics;)Ljava/awt/Rectangle;java/awt/Coloryellowblack!QRSTUVWXWYZ[\]^_`a`b`c`defeghi` jklhmn)opq5**+*,*-- * r./ 01 243s45tk5VW5XW5YZ5[\ouqU *+,-r 67s* tk VW XW YZovqJ*+,r ;<s tkVWXWwxqe) Y  *   +rB!C(Ds)tk)yZYzq/*rIs tk{xq:*+rJstkyZ[|q/*rLs tk}~q:*+rMstky\qNY***L+r STstkkzqM# Y *  *  ris #tkzqrH Y * *  *  * * rns HtkVq/*rws tkq@*+****M*+** *,r. z{ |}~ %*7<>s @tk@W%WXq/*rs tkq@*+****M*+** *,r.   %*7<>s @tk@W%Wq_*+*,**r s tkWWqS*L***+r stk WqH*+ **rstkWqr,*L*M++*,,*r s ,tk'W "Wq5*L*M* ++*,,*r s 5tk0W +WqX.***!***!rs .tkqA*"********Zr" 35?s Atk]q/*#rs tkq:*#rstky^q4*$Wr s tkq5rstkq5rstk q 9 9 99996^o9g9  k kck kkckcO kkckkkckcO r*  )/Ruxshhhhhhghdefeh ~ z uqmheh)O/I q (*.O+.O*.O+.O*.6+.66 6 R* .* `.`l6 + .+ `.`l6 * .+ .  %`6 `6  6 6  d* .+ .* `.+ `.%`6 `6 * .O+ .O  rj   (*/47=L[u{ #$%&()*,s defeghheeh/h4h:h 7h L=yh [.h qK*&**Z'(*)r5678s tkq( *& L M***+*,-*,.l`*,/*,0l`*12*3*4-*4.l`*4/*40l`*12+,5&*(!**&h` (**&h` '*+,*&*(*'6&*)r. <@ ACDKLMPRTs tk eeqO*)*)*7*8Y*(.*'.9)<*)*(.*'.:*&*)r"XY [\'],^?]JasOtk)&h q.h` :h` :+,66*;rk lo#p-qsR..de.fe.gh.h #yee# h q@ YOY`lOY`lOYO: YOYOYOYO:*<rvw4y?zsH@@h@h@h@h"e4 eq :go9    kc6    r (68sz :tk:h:h:h:yh:h:h:h:h:h / (h q~J Y  +-=> +/=> +-+.`=> +/+0`= rsJtkJ`qU Y ? =@ *(.=> *'.=> *(`.=> *'`.=A rsUtkUhq *B:+C+*(.*'.D-*E68Y*(.*'.F:*(`.*'`.:+CX+*(`.*'`.D -*E*(`.*(.d6*'`.*'.d6 -*E**(.*(`.+-*'.*'`.+/+/+0`G**(.*(`.+-+.`*'.*'`.+/+/+0`G**'.*'`.+/*(.*(`.+-+-+.`GD**'.*'`.+/+0`*(.*(`.+-+-+.`G -*E*&dgrZ#(.G^gs\ tk`h`+hGu`#hhq}%>*(\.`O*'\.`O*&r$s*%tk%h%h"hq>**1H+I+**1H+I3**1+J,**1+J4*7*K+*(*'*&;*K+*(*'*&;*K+*(*'*&;*K+*(*'*&;*K+*L M*N+*(*'*&;rF$3B F L\brxstkq*YOPr+conedit-0.2/src/conedit/classes/com/ion/conedit/Connectable.class0100664000175200017560000000041507653666444025410 0ustar stephensstephens.    canConnect(Lcom/ion/conedit/Connection;)Zconnect canDisconnect disconnect SourceFileConnectable.javacom/ion/conedit/Connectablejava/lang/Objectcom/ion/conedit/Copyable  conedit-0.2/src/conedit/classes/com/ion/conedit/Pad.class0100664000175200017560000002276207653666444023710 0ustar stephensstephens. p % % % % % % % % % %    %    p % %      1 1 1 % % 1 1  %  %   !" %# 7$ %& =' =() 7 7* 1+ 7, -./ =0 -1 %2 =3 %4 15 16 %+ 17 18 %9 1: ;< => =?@ MA %BC %D =E %F MG MH %I %J KL KM ;N ;O ;P %Q MR MS %T ;U =V %WXY KZ[\ K]^_ K`ab KcdefghwidthI ConstantValueheightspacingLEFTRIGHTTOPBOTTOMNSIDESlabelLjava/lang/String;typecolorLjava/awt/Color;posnodeLcom/ion/conedit/Node; connectionsLjava/util/Vector;off highlightedselectedZ pad_default[Lcom/ion/conedit/Pad; label_offset8(Ljava/lang/String;Ljava/lang/String;Ljava/awt/Color;I)VCodeLineNumberTableLocalVariableTablethisLcom/ion/conedit/Pad;(I)V()VfillWith(Lcom/ion/conedit/Pad;)Vp showDebug(Ljava/lang/String;)Vx toStringShort()Ljava/lang/String; toStringLongtoString()Ljava/awt/Color;()Lcom/ion/conedit/Node;_setNode(Lcom/ion/conedit/Node;)VnsetNodeclone()Ljava/lang/Object;ccopy4(Lcom/ion/conedit/Copier;)Lcom/ion/conedit/Copyable;Lcom/ion/conedit/Copier;completenext()Lcom/ion/conedit/Pad; deleteEditcopyEdit(Lcom/ion/conedit/Copier;)Vcp pasteEdit(Lcom/ion/conedit/Selection;)VselLcom/ion/conedit/Selection;sfLjava/lang/Object;()Ljava/util/Enumeration;add(Lcom/ion/conedit/Connection;)VLcom/ion/conedit/Connection;removeclearConnectionsaLjava/util/Enumeration;con isConnectedTo (Lcom/ion/conedit/Connectable;)ZLcom/ion/conedit/Connectable; canConnect(Lcom/ion/conedit/Connection;)Zconnect canDisconnect disconnectgetRect)(Ljava/awt/Graphics;)Ljava/awt/Rectangle;gLjava/awt/Graphics; getTextRect;(Ljava/awt/Graphics;Ljava/lang/String;)Ljava/awt/Rectangle;sfmLjava/awt/FontMetrics;lwlh()Z setSelected(Z)VsetHighlighted=(Ljava/awt/Graphics;IILjava/lang/String;)Ljava/awt/Rectangle;y getLabelRectpxpyrLjava/awt/Rectangle;draw(Ljava/awt/Graphics;II)VtctrinvalidatePoints SourceFilePad.java v v v i jkjava/lang/StringBuffer DEBUG: Pad: lm : n o p [,color= lq,pos= lr,off=] . com/ion/conedit/Pad s tuv wx y z{ | } ~ com/ion/conedit/Node    java/util/Vector   com/ion/conedit/Connection      java/awt/Rectangle   highlighted:  uv yv       v v  in1in out1out bot1bot top1top java/lang/Objectcom/ion/conedit/Copyablecom/ion/conedit/Connectablecom/ion/conedit/Selectablecom/ion/conedit/Editablejava/lang/SystemerrLjava/io/PrintStream;append,(Ljava/lang/String;)Ljava/lang/StringBuffer;java/io/PrintStreamprintprintln,(Ljava/lang/Object;)Ljava/lang/StringBuffer;(I)Ljava/lang/StringBuffer;,(Lcom/ion/conedit/Pad;)Lcom/ion/conedit/Pad;editor()Lcom/ion/conedit/ConEditor;com/ion/conedit/ConEditor selection()Lcom/ion/conedit/Selection;com/ion/conedit/Selectionselect(Lcom/ion/conedit/Selectable;)Vcom/ion/conedit/Copier6(Lcom/ion/conedit/Copyable;)Lcom/ion/conedit/Copyable;size()I firstElementelements com/ion/conedit/EmptyEnumerationinstancefrom()Lcom/ion/conedit/Connectable;to addElement(Ljava/lang/Object;)V removeElement(Ljava/lang/Object;)Zjava/util/Enumeration nextElementhasMoreElementspeer<(Lcom/ion/conedit/Connectable;)Lcom/ion/conedit/Connectable; getPadRect>(Ljava/awt/Graphics;Lcom/ion/conedit/Pad;)Ljava/awt/Rectangle;java/awt/GraphicsgetFontMetrics()Ljava/awt/FontMetrics;java/awt/FontMetrics stringWidth(Ljava/lang/String;)I getHeight(IIII)V getAscentjava/awt/ColoryellowblacksetColor(Ljava/awt/Color;)VfillRectdrawRect drawString(Ljava/lang/String;II)Vgreenbluemagentacyan!%pqrstuvwxyvwxzvw{|vw}~vwvwvw{vwvvv vw).**+*,*-***** * 01 23467#8(9-:4.....vA *  >? v4*  CD W++** *+* *+* *+* *+* *+ >HIJ K MNP!Q)S0T8V?WGYNZV\WWe) Y* +c!d(e))/*g qG Y***** h GW- Y* * !"*j -/*o /*p /*q /*v :*+wz**+* **#*+*$*+"z{ }~$)**r*%Y&L+*+*+*+*+ (*"L *'%M,   6*>***( T*)**+,*-**# ?+*.W F+/A+0MN,1,1N* ,%,%2N*,% --*$2  ")1<@E*FF 97?* *34 ?++5 +6**7Y8*+9* *+:* '/6>??_+**+;W 2*-*L*+3M,<=N->W,?" #(1*2 %#(*@M,<=N-*A+,?& *((# X$*+*AB**+C$$[**+D*+EL**+F![**+G*+H'(*+> *+*I2 #+JN-*K6-L6MYN789:>###vv/*O? >*O BC7 *G  =*Y` *Yd** YP*QJKMN"O<Q==:+J:*K6L6MYlddldR`dNYZ[\R:::v:v:4)v"vM*+S:YT`TYU`UTld=Uld>*d1UCT`l`d=6T`l``=$U`l``>U`l`d>MYTUNBa d egh%j/k9m\okpns}twx{>vv u*V *W XY:+*Z+[+Z+\*V *W*+*]:*+^`_`*`:+*Z+^_TU[+Z+^_TU\+YZ+*^Tl`_Ul`a>!+1;IVowHvvVog^*@L+<=b+?X%cc%Ydef Sc%Yghi Sc%Yjkl Sc%Ymno S')*/+C,W-conedit-0.2/src/conedit/classes/com/ion/conedit/Node.class0100664000175200017560000005146207653666444024070 0ustar stephensstephens.  R R R R R R R R  R R R R  R R      R   R             R  R R R   R R R   R    R R R R  = = R =      R R  R! R" R# R$ %& R' R( R)*+ ,- ,. R / 0 ,1 2  3 4 R5 R6 ,7 r8 9 :  ; R< R= r>? p@A rB tC RD t RE tF t tG RH t IJ KL KM RN OP RQ I R RS  T RU IV RW X Y IZ K[ I\ ] R^ R_ R` U Ra  b Rc td De fg =h Ri a  Rj klmn op q r s tu tvw x y z R{|}~ R R R z    R t R z q R R??333>L  R    Rn RLEFTI ConstantValueRIGHTTOPBOTTOMNSIDES inputTypeLjava/lang/String; outputType inoutTypelabeltypexycolorLjava/awt/Color;_pads[Ljava/util/Vector;padsLjava/util/Vector; connectionsparentLcom/ion/conedit/Node;nodes selectionLcom/ion/conedit/Selection;editorLcom/ion/conedit/ConEditor;urlLjava/net/URL;selectedZ highlighted node_default pad_spacing9(Ljava/lang/String;Ljava/lang/String;Ljava/awt/Color;II)VCodeLineNumberTableLocalVariableTablethis7(Ljava/lang/String;Ljava/lang/String;Ljava/awt/Color;)V(II)V()VfillWith(Lcom/ion/conedit/Node;)Vn;(Ljava/lang/String;Ljava/lang/String;Ljava/awt/Color;IIII)Vltc_x_yninopLcom/ion/conedit/Pad;i()Ljava/util/Enumeration;add(Lcom/ion/conedit/Connection;)VLcom/ion/conedit/Connection;removeupdateConnectionseLjava/util/Enumeration;padcsclearConnections(I)Ljava/util/Enumeration;updatePadOffsetsposoff(Lcom/ion/conedit/Pad;)Vd emptyPadsnpads(I)IpadAt(II)Lcom/ion/conedit/Pad; getPadNamed)(Ljava/lang/String;)Lcom/ion/conedit/Pad;snext,(Lcom/ion/conedit/Pad;)Lcom/ion/conedit/Pad;()Ljava/lang/String;setLabel(Ljava/lang/String;)VsetTypegetX()IgetYsetX(I)VzsetYsetXYab()Ljava/awt/Color;setColor(Ljava/awt/Color;)V()Ljava/net/URL;setUrl(Ljava/net/URL;)Vu()Lcom/ion/conedit/ConEditor; setEditor(Lcom/ion/conedit/ConEditor;)V showDebug showStatus toStringShort toStringLongtoString+(Ljava/util/Enumeration;)Ljava/lang/String;()Lcom/ion/conedit/Node; setParentrootnode emptyNodes getNodeNamed*(Ljava/lang/String;)Lcom/ion/conedit/Node;getNodePadNamed;(Ljava/lang/String;Ljava/lang/String;)Lcom/ion/conedit/Pad;nodenpadncopy4(Lcom/ion/conedit/Copier;)Lcom/ion/conedit/Copyable;Lcom/ion/conedit/Copier;padcconconccompleteconsf deleteEditcopyEdit(Lcom/ion/conedit/Copier;)Vcp pasteEdit(Lcom/ion/conedit/Selection;)Vsel canConnect(Lcom/ion/conedit/Connection;)Zconnect canDisconnect disconnectx(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/ion/conedit/Connection;fnodefpadtnodetpad()Z setSelected(Z)VmoveSelectionBydxdyqLjava/lang/Object;()Lcom/ion/conedit/Selection;setHighlighted getPadRectX,(Ljava/awt/Graphics;III)Ljava/awt/Rectangle;gLjava/awt/Graphics;pxpy getPadRectY getPadRect>(Ljava/awt/Graphics;Lcom/ion/conedit/Pad;)Ljava/awt/Rectangle;rLjava/awt/Rectangle; getLabelRect)(Ljava/awt/Graphics;)Ljava/awt/Rectangle;fmLjava/awt/FontMetrics;lwlhgetRectlrwh getAllRectpwphdrawPads&(Ljava/awt/Graphics;Ljava/awt/Color;)Vdraw(Ljava/awt/Graphics;)VdrawConnections findObjects*(Ljava/awt/Rectangle;ILjava/util/Vector;)VdepthcollectinvalidatePointsmoveBygetOutputStream&(Ljava/net/URL;)Ljava/io/OutputStream;Ljava/net/URLConnection; Exceptionswrite(Ljava/io/OutputStream;)VoutLjava/io/OutputStream;ioLcom/ion/conedit/ConIO;save(Ljava/net/URL;)ZLjava/lang/Throwable;read(Ljava/io/InputStream;)VinLjava/io/InputStream;load _test_init SourceFile Node.java #       java/util/Vector  U    " com/ion/conedit/Pad 3A   2 9   U  2   2com/ion/conedit/Connection 34  <#  @ R nk % ?  $A  HI  >" # 64 %  DE FG  ]  iM O   b \] _` java/lang/StringBufferNode:  hM:  O O fO gM[], 6% 3% mk  com/ion/conedit/Node $% pq.../  v       7# 6# 3    # rs  2com/ion/conedit/Moveable "com/ion/conedit/Selectionjava/awt/Rectangle         R             R     k [    com/ion/conedit/ConCreator ADisconnected connection found:  eO X" Mfilejava/io/FileOutputStream java/io/File  O      com/ion/conedit/ConIO  % # save() Writing ""...  Wrote "".java/lang/ThrowableCouldn't write "":   load( Reading "  Read "Couldn't read " java/net/URLfile://localhost/foobar NO POjava/awt/Color OutNode 'Node InNode  InOutNode1  InOutNode2out1->in1 out2 InOutNodein2in3out3in4in5 !java/lang/Objectcom/ion/conedit/Selectablecom/ion/conedit/Drawable#com/ion/conedit/SpatiallySearchablecom/ion/conedit/Copyablecom/ion/conedit/Connectablecom/ion/conedit/Editableinoutjava/io/IOExceptionelements com/ion/conedit/EmptyEnumerationinstance addElement(Ljava/lang/Object;)V removeElement(Ljava/lang/Object;)ZsetSizejava/util/Enumeration nextElement()Ljava/lang/Object;hasMoreElements elementAt(I)Ljava/lang/Object;size_setNode pad_default[Lcom/ion/conedit/Pad;com/ion/conedit/ConApp increment&(Ljava/lang/String;)Ljava/lang/String;insertElementAt(Ljava/lang/Object;I)VsetNodejava/lang/Stringequalscom/ion/conedit/ConEditor setBackground setFilenamejava/lang/SystemerrLjava/io/PrintStream;append,(Ljava/lang/String;)Ljava/lang/StringBuffer;java/io/PrintStreamprintprintln lastElementcom/ion/conedit/CopieraddRefP(Lcom/ion/conedit/Copyable;Lcom/ion/conedit/Copyable;)Lcom/ion/conedit/Copyable;6(Lcom/ion/conedit/Copyable;)Lcom/ion/conedit/Copyable;from()Lcom/ion/conedit/Connectable;clonegetReftoO(Lcom/ion/conedit/Connectable;Lcom/ion/conedit/Connectable;Ljava/lang/String;)VownerLcom/ion/conedit/Connectable;swap(IIII)Vwidthheightjava/awt/GraphicsgetFontMetrics()Ljava/awt/FontMetrics;java/awt/FontMetrics stringWidth(Ljava/lang/String;)I getHeightjava/lang/Mathmax(II)I(Ljava/awt/Graphics;II)V drawDrawablesfillRectyellowblackdrawRect getAscent drawString(Ljava/lang/String;II)VwhitegCached()Ljava/awt/Graphics; intersects(Ljava/awt/Rectangle;)Z,(Ljava/lang/Object;)Ljava/lang/StringBuffer; getProtocol!com/ion/conedit/FileURLConnection getFilename"(Ljava/net/URL;)Ljava/lang/String;(Ljava/io/File;)VopenConnection()Ljava/net/URLConnection;java/net/URLConnection setDoOutput()Ljava/io/OutputStream; writeRootclosejava/io/OutputStreamreadRoot.(Lcom/ion/conedit/Node;)Lcom/ion/conedit/Node;getInputStream()Ljava/io/InputStream;java/io/InputStream(FFF)Vredbluegreen!Rpkj        Y>**+*,*-***** * Y . ;< =>?@B$C)D1E=F>> >>>>>!V *+,-  I J*     "L *  N O     #5* RS  $%<+L*+* *+* *+* *+. WXY Z\]_$`,b3c;d< <&' J*+,- 6 Y:*  6 Y:*  * i mno"m*r1s;tArIvp J J(J)J*J+J,J-J.-/0:1 .1  2?* *~  34i!+** Y *+  ! !*564Z+* *+W  *57#M* **L/+M,N-:*-+α* !)4:CL4M 889!":0&;94*5<#n *L+M,+   19:0 2?* *    =M* 2* 2 1>"4* 2->* 2 :!* 2"ޱ #344 4?4@ (1:03A ++#*+*$+%+%* +%2* +% Y S* * Y +!+!* +%2"+* +%2"!+!* +%2+!d M &+%2M+,'++()(*+(** +%2++!+* +*+%+!,+N-:*-*-v +<COiy 4   /0uB0!89*56Az++#*+$+!)* +%2* +%2+W*+%+!,+!* * +W+M,N*-.,*-J   &4@ELU ]!g"l u%y&*z z/0Z19g*5C#V< * S* /*M,N--/,* * *6 *+ *./"0,1025/>4F7M8U:*V S1'19, :0DEK* 2* 2"> 1FGl&* 2* 2"* 2 CD$F & &?&@HI**M,N-(+0-,MNOPM(R** *J%89 /0KL:+!=+%>`p>=+% +!*1*2* WX Z [\]^(_*[3c*: :/05@ 0?M/*j  NOF *+*-mn o   M/*p  PO>*+ st QR/*w  SR/*x  TU> **-y   VWU> **-z   VX"M***-{  YZ[/*|  \]Y*+*3+ *3+4 *^/*5  _`b"*+5*3*5*3*567!" "abK!*3 *3*8 *89 ! cdV*+3**:**5;  eOe)<=Y>?@*A@B@CD<+E!() )fOA *9+F    gM/*G  hMM#=Y>*H@I@*J@K@C #  ijaIL*G;=Y>+@*G@CL*=Y>+@L@CL*»=Y>+@K@CL+&  %.BK_a89^J k/*8  l%}-*8+*8 *8*M*+8*8 *8*N" $,- -/mk=*8 *8O*  2?*P *P  3%|++8*+8 +8+MM*P*P"*PQRM+,S*P* Y P++)*+T+*8*P+F !2=BIXcns {  | |n!ZB6%|(++8*+8*P *P+W+U&  #'( (n6#K*8*8*M*8 !#  o#B*P *P'(*  pq[+V0*+W0*8+X0*O*P.*PM,RN-+0-,6 / 0 347"8';.<9=C>N?P<YC*[ [J6#89C /rs`*+TN- -,* HI* tunvwpRY***** M+*,YW*N-:+Z:,-*V, Y *[:7:\:#*]:,,FRS#V+W6YA[GVP_W`calbxdefhamf  /x*(196:0Ay0iA19x(z5:0{5|wy*o*M*,NT-:+\^:+_^:"Y`a:b-*c*6 vw xyz$|5}FPbjyswHy y/x g} ]19$F*555~0F$)0#3*d   ?+*eW  xb+fR+fRM,*N   /iM/*  J+g+h+\%+_%+\ij+_ik+l  $&DHJ J*5?*+  *56 *5?*+.  *5 @*+,m:*m::&!Y-a:b:-=\ @ @@@@@8~0.)0+*5/*  :* "8*n3*noN-:ppq-ޱ".748 88(89U*n*rYsn*n*f*n  7 *   P*Y` *Yd $* hdld6tY h`u >$ $$D$$1$* hdld6tY h`u >$ $$D$$1*+v:,%6tU*+*,%1wd,!x*+*,%1wy`d,!x*+*,%1z{`d,!|*+*,%1zd,!|tY}(!A$`'*-* /00+~M,*>,6tY*ld*ldu234540 0+"m*+M,y` `>,{` `6*1*1 h``>*1*1 h``6tY*ld*ldu;<=?5@QB4m mg]Rz*+vM > 6*1,Ywldw,Yyl`y*1,Yyl`y*1,Y{l`{*1,Yzldz,Y{l`{,:HI J LM!N-P5QATIUVW^XkYx\4z zt q mE* @* ">.*  :*+:+,+wzѱ"efgh(i-j=fDm>E EE*51/0(*3Z*P*P"=*P R+*9+=*P">*P R+*+vM*+N+*+,w,z,y,{+* * +,w,z,y,{++*-w-z+~`*+Rqswx(w/|79DS^djr> E1A(dxjrC*[M4,N-\:#*+*-+,ɱ")49B4C C=Z9'*5/0*37*P*P"6*P R:+-**9+XK*:0:*9+-Y-*x-*pl*[:Y:\ _$*=Y>@C*.\#* +d-j(0;MR[gzf   !1(&X?89g!/0c89J*5#n *[L+M,+   Y9*5"S**`*`    r.*0YY**L++ $).$ z]Y+M,*,    3 **5    *=Y>@+@C*=Y>@+@C+M*,,*+5*=Y>@+@CM*=Y>@+@,@Chi.  8 = B F Kgi* ~=,j&8^Y+M,*W,     3 **5$    *=Y>¶@+@C*=Y>ö@+@C+M*,,*+;*=Y>Ƕ@+@CM*=Y>ȶ@+@,@Ckl. )+8,@-E.I/N0j1l345* ~@,Jm&8#u *Yʷ˶;L*̶*̶*YҷӶ:*RY̲K2նN*RY̲2նN*RY̲նN*RY̲KdնN*RY̲dնN*߶W*W*W*W*W F> ?@BC D1EIFbG|HIKLNOQR )#*RY8conedit-0.2/src/conedit/classes/com/ion/conedit/ConEditor.class0100664000175200017560000002405707653666444025071 0ustar stephensstephens.    ??333>L              ! " #$ e% e&  e' () $ * e+ ,-. &/ &0 ) &) 12 13 #45 / 6 7 /8 /9 : ; <= > 6 6 ?@ A B CD ?E F 6 /G H ?I 6 6 ?J A eE K ?L M N O 8 9 ?P N O QR QS TU TV TW X Y TU Z TU [ \] p^ + _` abc ad e ef g e eh ei _j g klm pno p qr u #s t uu v w ex yz { T| _} ~~ _ X  _B # 4 g e [ g Z T| _B  gdocLcom/ion/conedit/Node;appLcom/ion/conedit/ConApp; drawablesLjava/util/Vector; backBufferLjava/awt/Image;backGCLjava/awt/Graphics;backSizeLjava/awt/Dimension;gCached downPointLjava/awt/Point; dragPointdragRectLjava/awt/Rectangle;hits dragSelectZ BUTTON2_MASKI ConstantValue popupMenuLjava/awt/PopupMenu;init()VCodeLineNumberTableLocalVariableTablethisLcom/ion/conedit/ConEditor;(Ljava/lang/String;)VtitleLjava/lang/String; setFilenamex()Lcom/ion/conedit/Node;setDoc(Lcom/ion/conedit/Node;)V selection()Lcom/ion/conedit/Selection; showDebug showStatus()Lcom/ion/conedit/ConApp;setApp(Lcom/ion/conedit/ConApp;)VagetPreferredSize()Ljava/awt/Dimension;getMinimumSize()Ljava/util/Vector; newBackBuffer()Ljava/awt/Graphics;update(Ljava/awt/Graphics;)Vg drawDrawablesipaintdrawDragSelection setDragPoint(II)Vy mousePressed(Ljava/awt/event/MouseEvent;)VeLjava/awt/event/MouseEvent; mouseReleased mouseClicked mouseEntered mouseExited mouseDragged mouseMovedadd%(Ljava/awt/Menu;Ljava/awt/MenuItem;)VmLjava/awt/Menu;miLjava/awt/MenuItem; selectedNodenodeLjava/util/Enumeration;oLjava/lang/Object;addPad(Lcom/ion/conedit/Pad;)VpLcom/ion/conedit/Pad;addNodensnactionPerformed(Ljava/awt/event/ActionEvent;)VLjava/awt/event/ActionEvent;argtLjava/lang/Throwable; mouse2Down (Ljava/awt/event/MouseEvent;II)Z _mouseDownsLcom/ion/conedit/Selectable;hq mouseDown mouseDrag_mouseUpmouseUp SourceFileConEditor.java java/util/Vector java/awt/Color   java/awt/Point java/awt/Rectangle         java/lang/StringBufferDEBUG: ConEditor:    java/awt/Dimension          com/ion/conedit/Drawable                     com/ion/conedit/Node     java/awt/MenuItem java/lang/Throwable java/awt/PopupMenu      com/ion/conedit/Selectable     com/ion/conedit/Mouseable object  selected.Drag selection...   com/ion/conedit/ConEditorjava/awt/Canvasjava/awt/event/MouseListener"java/awt/event/MouseMotionListenerjava/awt/event/ActionListener(FFF)V setBackground(Ljava/awt/Color;)VaddMouseListener!(Ljava/awt/event/MouseListener;)VaddMouseMotionListener'(Ljava/awt/event/MouseMotionListener;)Vcom/ion/conedit/ConApp setEditor(Lcom/ion/conedit/ConEditor;)Vcolor()Ljava/awt/Color;url()Ljava/net/URL; java/net/URLtoString()Ljava/lang/String;java/lang/SystemerrLjava/io/PrintStream;append,(Ljava/lang/String;)Ljava/lang/StringBuffer;java/io/PrintStreamprintprintlngetSizewidthheight createImage(II)Ljava/awt/Image;java/awt/Image getGraphicsjava/awt/Graphics clearRect(IIII)Vsize()I elementAt(I)Ljava/lang/Object;drawequals(Ljava/lang/Object;)Z getBackgroundsetColorfillRect drawImage3(Ljava/awt/Image;IILjava/awt/image/ImageObserver;)ZdrawRectjava/lang/Mathmin(II)Iabs(I)Ijava/awt/event/MouseEvent getModifiersgetXgetY java/awt/Menu((Ljava/awt/MenuItem;)Ljava/awt/MenuItem;addActionListener"(Ljava/awt/event/ActionListener;)Vcom/ion/conedit/Selectionselected()Ljava/util/Enumeration;java/util/Enumeration nextElement()Ljava/lang/Object;hasMoreElements()ZrepaintfillWithset(Lcom/ion/conedit/Selectable;)Vjava/awt/event/ActionEvent getSourcegetLabelremove(Ljava/awt/MenuComponent;)VeditMenu1(Ljava/awt/Menu;Ljava/awt/event/ActionListener;)V(Ljava/awt/PopupMenu;)Vshow(Ljava/awt/Component;II)VsetSize(I)V findObjects*(Ljava/awt/Rectangle;ILjava/util/Vector;)V addElement(Ljava/lang/Object;)V isControlDowntoggle(Ljava/util/Vector;)Vplural'(ILjava/lang/String;)Ljava/lang/String;moveSelectionBy!'a'***Y*Y  & '5*   H***Y*Y*Y*Y****** "q #.9#=$B%G&HHL* *+*+-/*2 G* **+*.*** ** !"**& 5689:&;0<>>F@GG2*#$A `$%&Y'()**)+,%+-IJ#K$$A *+. NO /*T :*+U8/Y,0[ 8/Y0^ /*a "Z$*12*232456678klm#n $/*r !` 6+*93*:4;*+<vwyz s)*=d=*>?*@~ !~( )) !}6*A6>2*BC*A8*DE8*F3*G4H*8*+**I**J**K6+6*LW> !+AKPXckq|}}d(*M#+*N*O*P*QR'((s*S*T**S*SUN**T*TUO**S*SdVP**T*TdVQ(@Yr sssi)+W~*++X+YZW*++X+Y[W ())T+\~*++X+Y]W 555T+^~*++X+Y_W 5R +,`W,*a   .L*bcM,dN-e -eL ,f+"  #,*., $]*gYM ,+h*i   9eY*S*TjL*gYM+,k*+l*b+m*n  $,48 9"o+opqMM r * L*s**st*suYv:*s*S*T*w*x*y. "#$/0#3+436<9B:J=4LLLL/**dZS`*dZT`z*{***|**ZS*ZTz*=Y}:*>~Y:*+*b**b**M*bc:"d:+WfRBC&D6ELIVL`MsNyPRSVY[\]^[beRpr`.@*+(*&Y'*b))+*M**j k/m4n:q>r*@@@@a*MQ**Sd*Td*bc:"d:+Wf*z** xy z,{5|=}KzU[_>aaaa),5 7*bc:"d:+Wf +5>7777 . *Me*{***|+*b**b**M*&Y'*b))+$**Sd*Td*+W*z*6 &4?Di*  conedit-0.2/src/conedit/classes/com/ion/conedit/ConApp.class0100664000175200017560000002655507653666444024370 0ustar stephensstephens.D DE D FG D H IJK LM LN O PQ R ]S ]TUV LWX DY Z [\ ] ^_ ^` ^abc d NT Ne Nf e og *h -i jkl *mno -mpqrstuvwxyz{| <D} ~ <  <  ZS ND N  R    WD W ZD  ]m _D _ _ _ _ _ _ _ _ i _    oD o f T P I v v v  v  g   {  {        {   m  Q  -  o Z  o Z o o   N  N         o   D Rm R  R RappletLjava/applet/Applet;copierLcom/ion/conedit/Copier;editorLcom/ion/conedit/ConEditor;statusLjava/awt/Label; filenameFieldLjava/awt/TextField;gridBagLjava/awt/GridBagLayout;()VCodeLineNumberTableLocalVariableTablethisLcom/ion/conedit/ConApp; showDebug(Ljava/lang/String;)VsLjava/lang/String; showStatusplural'(ILjava/lang/String;)Ljava/lang/String;countI increment&(Ljava/lang/String;)Ljava/lang/String;jicCnkrepaint()Lcom/ion/conedit/ConEditor;doc()Lcom/ion/conedit/Node;setDoc(Lcom/ion/conedit/Node;)VdLcom/ion/conedit/Node; selection()Lcom/ion/conedit/Selection;addD(Ljava/awt/Menu;Ljava/awt/MenuItem;Ljava/awt/event/ActionListener;)VmLjava/awt/Menu;miLjava/awt/MenuItem;xLjava/awt/event/ActionListener;%(Ljava/awt/Menu;Ljava/awt/MenuItem;)VeditMenu1(Ljava/awt/Menu;Ljava/awt/event/ActionListener;)Vsm buildMenu()Ljava/awt/MenuBar;menuLjava/awt/MenuBar; setFilename buildFrame-(Ljava/awt/Container;Lcom/ion/conedit/Node;)VconLjava/awt/Container;mbframepLjava/awt/Panel; constrain7(Ljava/awt/Container;Ljava/awt/Component;IIIIIIDDIIII)V container componentLjava/awt/Component;grid_xgrid_ygrid_wgrid_hfillanchorweight_xDweight_ytopleftbottomrightLjava/awt/GridBagConstraints;3(Ljava/awt/Container;Ljava/awt/Component;IIIIIIII)V/(Ljava/awt/Container;Ljava/awt/Component;IIII)V loadDocument&(Ljava/io/File;)Lcom/ion/conedit/Node;fileLjava/io/File;stopeditable&(Ljava/util/Vector;)Ljava/util/Vector;vLjava/util/Vector;reLjava/util/Enumeration;Ljava/lang/Object; deleteEditLcom/ion/conedit/Editable;copyEditcutEdit pasteEdit cloneEditURL"(Ljava/lang/String;)Ljava/net/URL; Ljava/net/MalformedURLException; ExceptionsactionPerformed(Ljava/awt/event/ActionEvent;)VLjava/awt/event/ActionEvent;arg nselectedtmain([Ljava/lang/String;)Vargs[Ljava/lang/String;appLjava/awt/Frame; SourceFile ConApp.java java/awt/GridBagLayout com/ion/conedit/Copier  DEBUG: ConApp:      ConApp:  java/lang/StringBuffer      ies2    java/awt/MenuNew java/awt/MenuItemNodeLeft Pad Right PadTop Pad Bottom PadUndoDeleteCutCopyPasteCloneClear Select Alljava/awt/MenuBarFile OpenSaveSave AsRevertCloseExit Edit HelpAbout...  com/ion/conedit/ConEditor  java/awt/Frame       java/awt/Paneljava/awt/TextField   java/awt/Labeljava/awt/GridBagConstraints        java/awt/Insets      com/ion/conedit/Node  # java/util/Vector    ! "#com/ion/conedit/Editable $% &' $%( ) , .* + .com/ion/conedit/Moveable ,- . 0/ 0. 0 java/net/URLjava/net/MalformedURLExceptionURL: : 12 3# 45 67 8' 9 23 8: ;: ;' <com/ion/conedit/Pad =>object  deleted. / cut. copied. pasted. 1 cloned.Selection cleared. ? 0@ selected.com/ion/conedit/ConAppConnection Editor A-  B Cjava/awt/Containerjava/awt/event/ActionListenerjava/lang/SystemerrLjava/io/PrintStream;java/io/PrintStreamprintprintlnjava/applet/AppletsetTextflushappend,(Ljava/lang/String;)Ljava/lang/StringBuffer;(I)Ljava/lang/StringBuffer;toString()Ljava/lang/String;java/lang/Stringlength()IcharAt(I)C substring(II)Ljava/lang/String;((Ljava/awt/MenuItem;)Ljava/awt/MenuItem;addActionListener"(Ljava/awt/event/ActionListener;)V (Ljava/awt/Menu;)Ljava/awt/Menu; setHelpMenu(Ljava/awt/Menu;)VsetApp(Lcom/ion/conedit/ConApp;)V setMenuBar(Ljava/awt/MenuBar;)V getParent()Ljava/awt/Container;*(Ljava/awt/Component;)Ljava/awt/Component; setLayout(Ljava/awt/LayoutManager;)Vgridxgridy gridwidth gridheightweightxweighty(IIII)VinsetsLjava/awt/Insets; getLayout()Ljava/awt/LayoutManager;setConstraints4(Ljava/awt/Component;Ljava/awt/GridBagConstraints;)V _test_initexit(I)Vsizeelements()Ljava/util/Enumeration;java/util/Enumeration nextElement()Ljava/lang/Object; addElement(Ljava/lang/Object;)VhasMoreElements()Zcom/ion/conedit/Selectionclear(Lcom/ion/conedit/Copier;)VcompletemoveBy(II)V(Ljava/util/Vector;)V(Lcom/ion/conedit/Selection;)Vset,(Ljava/lang/Object;)Ljava/lang/StringBuffer;java/awt/event/ActionEvent getSourcegetLabeljava/lang/Objectequals(Ljava/lang/Object;)ZsavegetText(Ljava/net/URL;)ZloadaddNodeaddPad(Lcom/ion/conedit/Pad;)Vnodes(Ljava/util/Enumeration;)VsetSizepackshow Q**Y*Y B * !"# I* * + 9**+*  +  * '()*!++-3.:/B0H2II jY+LI++dy&++dLY+LY+L+67"819=:T<h?jj .<*d=*>09 <J>6*6 h>*0d`>Y*KY* K*FFG HIJ G'P+Q-R0S9T>UJSTWWXrZ]H -B0?696*!" ef /*!g 2*!#i = *!+$j 2*%&l R *+'W+,(uv x   I+,*) {| =**Y+,YM+),-Y./+),-Y0/+),-Y1/+),-Y2/+),-Y3/+)*-Y4/+)*-Y5/+)*-Y6/+)*-Y7/+)*-Y8/+)*-Y9/+)*-Y:/+)*-Y;/+)>,:HVdr  ,,L*+-Y+/?*+-Y@/?*+-YA/?*+-YB/?*+-YC/?*+-YD/?*+-YE/?,+FW*YG,L+*H,+FW*YI,L*+-YJ/?,+K,F .<JXftz L*L *L+M*NYO!*!*P*QN+:RR-ST:+*UW*L+*VWYX:*Y**ZY[ZL\*+\*+*!\* &*]Y^*+*\*!,$^ &/29>DFNW`>W   Zv_Y`:abcdef g h ```iY jk+l,m+,UW* $2@Nbouvv v vvvvvvv v v vvv l  *+,  \  p      | *+,n H   eoYpM,q*,r*s,"# (*, !"#L* * tu1246  $%2vY*wxL*yM,zN-{+-|,}+= >?@"A'>0D*2&' &('!)* +,1*~L*~+yM,z{N-,}KLOP!R'O0U*1('*!-.:**~yL+z{M,*+}*Z[\^)[2`9b :'* -/; **fgh  0k*L+zM,,  +}߻Y*M,N-z{:*~-}*~,2 p qrt&p/y;zC{N}Yzbj>kb*+;/@**N -1; **  23z,Y+M*Y+,,  * ,, ")4567zM+-M,A*%WT,B*%**LW5,@*%**LW*s,C*%W*s,E *,. *,0*Y,1*Y,2*Y,3*Yk,52*~>**Y*s3,62*~>**Y*s,7,**Y*,80**Y**s,90**Y**s],:*~**s@,;7*~*%*Y*~*sNru9 !*@I\clt{ ;BKSWsz!(.5>Lnruvy>zz)8w9+$:S$:v;4 <=7YLoYpM,qRYN-@+-,--"(.26*7>?.@&ABCconedit-0.2/src/conedit/classes/com/ion/conedit/ConCreator.class0100664000175200017560000001142607653666444025236 0ustar stephensstephens. ? " "       " " "   "  "   "   # # & & # & " "  #      #fromLcom/ion/conedit/Pad;tocLcom/ion/conedit/Connection;toxItoyselectedZ(Lcom/ion/conedit/Pad;)VCodeLineNumberTableLocalVariableTablethisLcom/ion/conedit/ConCreator;f()Z setSelected(Z)Vxparent()Lcom/ion/conedit/Node;editor()Lcom/ion/conedit/ConEditor; showStatus(Ljava/lang/String;)VLjava/lang/String; showDebug deleteEdit()VcopyEdit(Lcom/ion/conedit/Copier;)VcopyLcom/ion/conedit/Copier; pasteEdit(Lcom/ion/conedit/Selection;)VselLcom/ion/conedit/Selection;nodeLcom/ion/conedit/Node; mouseDown (Ljava/awt/event/MouseEvent;II)ZeLjava/awt/event/MouseEvent;y _mouseDrag (Ljava/awt/event/MouseEvent;II)V connectinghitsLjava/util/Vector;e0Ljava/lang/Object; mouseDragmouseUpdraw(Ljava/awt/Graphics;)VgLjava/awt/Graphics;frLjava/awt/Rectangle; SourceFileConCreator.java Nc DE LM l[ Z[ \] ^_ DEBUG: ConCreator:  _ _ O  ycom/ion/conedit/Node O IJ KJ X FEjava/util/Vector Njava/awt/Rectangle N GH com/ion/conedit/ConCreatorcom/ion/conedit/Connection N Vjava/lang/StringBufferConnect st V Connected Cannot connect c    YJ J rJ J |java/lang/Objectcom/ion/conedit/Selectablecom/ion/conedit/Mouseablecom/ion/conedit/Drawablecom/ion/conedit/Editablecom/ion/conedit/Padcom/ion/conedit/ConEditorjava/lang/SystemerrLjava/io/PrintStream;java/io/PrintStreamprintprintlnremovecom/ion/conedit/Copieradd6(Lcom/ion/conedit/Copyable;)Lcom/ion/conedit/Copyable;com/ion/conedit/Selectionowner drawables()Ljava/util/Vector; addElement(Ljava/lang/Object;)VsetHighlighted(I)V(IIII)V findObjects*(Ljava/awt/Rectangle;ILjava/util/Vector;)Vsize()I elementAt(I)Ljava/lang/Object;=(Lcom/ion/conedit/Connectable;Lcom/ion/conedit/Connectable;)V canConnectappend,(Ljava/lang/String;)Ljava/lang/StringBuffer;toString()Ljava/lang/String; removeElement(Ljava/lang/Object;)Zconnect selection()Lcom/ion/conedit/Selection;clearselect(Lcom/ion/conedit/Selectable;)VgetRect)(Ljava/awt/Graphics;)Ljava/awt/Rectangle;java/awt/ColoryellowLjava/awt/Color;java/awt/GraphicssetColor(Ljava/awt/Color;)Vwidthheight(Ljava/awt/Graphics;IIII)V "?@ABCDEFEGHIJKJLMNOPO**+*Q&' ()RSTUELVP/*Q/R STWXP>*Q 12RSTYMZ[P5 *Q6R  ST\]P8*Q:R ST^_PG*+Q @ARSTY`a_PL + QDEFRSTY`bcP=** Q NOR STdePB +* WQ S TR ST fghiPe++M,*QX YZ\R STjklmnoP*******Qcd ghi(kR**ST*pq*YJ*rJstP6******Y:*Y* \!:"L*"*#Y**$*%** ***&Y'()* ** *+),-QZpqr tuv'w,{6|K~PYaiuRHSTpqYJrJuM6vwaQxyzoPU *+.Q R* ST pq YJ rJ{oPE*+.**/W********M*0#*&Y'1)**),-A*&Y'2)**),-!*34*3*5*6-QF"-4<GLS]}R*STpqYJrJ|}P}3*+7M+89+,:,;l`,<,=l`**>Q 2R 3ST3~ )conedit-0.2/src/conedit/classes/com/ion/conedit/ConApplet.class0100664000175200017560000000252707653666444025066 0ustar stephensstephens.U . /01 23 24 5 6 78 79 :; < 5= 7 >? 7 @ AB CDEappLcom/ion/conedit/ConApp; showDebug(Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethisLcom/ion/conedit/ConApplet;sLjava/lang/String; showStatustitledLcom/ion/conedit/Node;()V SourceFileConApplet.java F GHDEBUG: I J K  & '+java/lang/StringBuffer ConApplet(" LM") NOcom/ion/conedit/ConApp PQcom/ion/conedit/Node R+ ST 'com/ion/conedit/ConAppletjava/applet/Appletjava/lang/SystemerrLjava/io/PrintStream;java/io/PrintStreamprintprintlnappend,(Ljava/lang/String;)Ljava/lang/StringBuffer;toString()Ljava/lang/String;appletLjava/applet/Applet; _test_init buildFrame-(Ljava/awt/Container;Lcom/ion/conedit/Node;)V!g#*+ *W+ "!#"##$%&>*+ !"#$%'I** Y  +  *Y**YM,**, ! "+#3'?)H+! I"#I(%; )*'+5* /0! "#,-conedit-0.2/src/conedit/classes/com/ion/conedit/ConIO.class0100664000175200017560000002405007653666444024143 0ustar stephensstephens.                          !"# $ % & ' ( ' () * + , - ./0 12 34 56 78 9 :;<= E> ? E@ EAB C DE EF VGH HI nJ K HJ VL VM VN O P Q nRSTU VV HW HX HYZ H[ ]\] nL n^ n_ nN` na bcd nef bg h nijk l nm ]n ]op ]q rs t nu nv nw nx ny nz{ | H} n~   n  V n    outLjava/io/OutputStream;inLjava/io/InputStream;stLjava/io/StreamTokenizer;indentIdoIndentZversionD(Ljava/io/OutputStream;)VCodeLineNumberTableLocalVariableTablethisLcom/ion/conedit/ConIO;o(Ljava/io/InputStream;)VirLjava/io/BufferedReader;close()V showDebug(Ljava/lang/String;)VxLjava/lang/String; writeString_bs[BtLjava/lang/Throwable;writeString_escapedj writeStringcinde syntaxErrordesc Exceptions nextToken()IpushBackpeekChar(C)ZC matchChar(C)V matchWords writeDouble(D)V readDouble()DwriteInt(I)VreadIntpeekInt()Z writeWordreadWord()Ljava/lang/String;peekWordwrite(Ljava/awt/Color;)VLjava/awt/Color; readColor()Ljava/awt/Color;gb(Lcom/ion/conedit/Connection;)VconLcom/ion/conedit/Connection;readConnection4(Lcom/ion/conedit/Node;)Lcom/ion/conedit/Connection;nodeLcom/ion/conedit/Node;fromfromPadtypetotoPadcolorfpLcom/ion/conedit/Pad;tp(Lcom/ion/conedit/Pad;)VpreadPad()Lcom/ion/conedit/Pad;(Lcom/ion/conedit/Node;)VLjava/util/Vector;fLjava/util/Enumeration;subnodereadNode.(Lcom/ion/conedit/Node;)Lcom/ion/conedit/Node;ytag()Lcom/ion/conedit/Node; writeRootreadRootnvers SourceFile ConIO.java java/io/BufferedReaderjava/io/InputStreamReader java/io/StreamTokenizer  java/lang/StringBufferDEBUG: ConIO:  :      java/lang/Throwable  java/lang/Error Expected  at line   '    word ""  double integer "" " word{   } java/awt/Color  com/ion/conedit/Pad   pad: .com/ion/conedit/Connection   } java/util/Vector Node {    Pads { {  Nodes { com/ion/conedit/Node   Connections {  Node      Pads   Nodes  Connections Found " ConnectionDocument ConnectionDocument com/ion/conedit/ConIOjava/lang/Object(Ljava/io/Reader;)V wordChars(II)Vjava/lang/SystemerrLjava/io/PrintStream;append,(Ljava/lang/String;)Ljava/lang/StringBuffer;,(Ljava/lang/Object;)Ljava/lang/StringBuffer;toStringjava/io/PrintStreamprintprintlnjava/lang/StringgetBytes()[Bjava/io/OutputStream([B)Vflush([BII)Vlineno(I)Ljava/lang/StringBuffer;(C)Ljava/lang/StringBuffer;ttypesvalequals(Ljava/lang/Object;)Z(D)Ljava/lang/StringBuffer;nvallengthgetRedgetGreengetBlue(III)V()Lcom/ion/conedit/Connectable;labelgetNodePadNamed;(Ljava/lang/String;Ljava/lang/String;)Lcom/ion/conedit/Pad;_(Lcom/ion/conedit/Connectable;Lcom/ion/conedit/Connectable;Ljava/lang/String;Ljava/awt/Color;)VgetXgetYpads()Ljava/util/Enumeration;java/util/EnumerationhasMoreElements(I)Ljava/util/Enumeration; nextElement()Ljava/lang/Object;nodes connections addElement(Ljava/lang/Object;)VsizeelementssetLabelsetTypesetXYsetColor emptyPads emptyNodesposaddconnect!!O**+* 4**+YY*M* Y, * __  (3 44F*** !" #% b& Y* +)*%+&&+M*,*M23 4578*l+M>6>7,3" ,3\$*,d*\*6,*,d*Mdg>=> ?@A-B6C=D@?IGOH]JdKhMkN>ll_] Zh+M>*6,3Y6M "{-}:*6#*Y`*Yd*6)*"6 * Yd6**,m*M^UW Y[8]=^@_CaMbPdZe`fclomvnmpsWvwyzRs^*YY +!* "#$**K * %L+  V* &L+   X*' *(*( a%*'*Y)*)+$%%E*'* W* ,"* -+.*Y/+0+(DEEP*Y'123 N*'* W *4+* 5 P*Y#23 O*'* W *6+* 5 T*'* W *(*(  +7 *89y+M,>[,36a zHA Z:_30 9% *09*+:*;9Yd>*+9*29: aglrs{4qn SZ(*'* W* ," *<+* - (^(*'* W* ," *(* -  (;*=3+*+>?*+@?*+A?*?*?*?*B3*   %*/4:;;**{C*D<*D=*D>*}CEYF:  !"'%4* '[*=3*+GHIJK*+GHLK*+MK*+NHIJK*+NHLK*+OP*B3& +,-%.-/>0L1T2Z3[[j *{C*QM*QN*Q:*Q:*Q:*R:*}C+,-S:+S: #*YT,U-+ %*YTU+VY W:  B89 :;<=">(?.A6B@DEEeGjHKNp  "~(x6j@`  m%*=3*+XK*+YK*+ZP*[3TUVWX$Y%%z.HY\L*{C+*QX+*QY+*RZ*}C+]^_`a&b,d.&d]Y^M*_3*+JK*+`K*+a?*+b?*+cP*d3+ef`*g3>J+hf:*?*i3+h:jH:*kf*[3*[3+lfs*m3+lNV-jn:*op=p:)jV:GH:I ,qf-f*[3,r7*s3,tN-jV:*u*d3-f*[3*[3-k nqrs't/u7v=yIzO{T|a}f~lv{ ")/7BHNW]c dd ZQUs%eH34)B N*vw*{C+*Qx+*Qy*D=*D>+z+*R{+|+}*Q: *<+~.[*{C67*D6*{C*:+*}*}C *}*}C.**{C*:+*}*}CR.+*{C*+:W*}*}C *Y0+*}*}CML,+DG0 !&,48<?EJS]cioux~5>DGJLp NN!#&EfLo+~ H6 *nY  h *3***i3*+o*[3    '*w*I*{C*+W*}CML,+ &   #%*'' !6 *nY!  conedit-0.2/src/conedit/classes/com/ion/conedit/FileURLConnection.class0100664000175200017560000000325007653666444026455 0ustar stephensstephens._ 6 7 8 9: 9;< =>?@ AB C D E FG H IJ KL KMN(Ljava/net/URL;)VCodeLineNumberTableLocalVariableTablethis#Lcom/ion/conedit/FileURLConnection;urlLjava/net/URL;connect()V getFilename"(Ljava/net/URL;)Ljava/lang/String;fnameLjava/lang/String;()Ljava/lang/String;getOutputStream()Ljava/io/OutputStream;fLjava/io/File;oLjava/io/OutputStream; ExceptionsOgetInputStream()Ljava/io/InputStream;Ljava/io/InputStream; SourceFileFileURLConnection.java  PQ RST U( V(W XY localhostjava/lang/StringBuffer #// Z[ \( ! $% java/io/File $( ]java/io/FileOutputStream ^java/io/FileInputStream!com/ion/conedit/FileURLConnectionjava/net/URLConnectionjava/io/IOException setDoOutput(Z)V connectedZ java/net/URLgetFilegetHostjava/lang/Stringequals(Ljava/lang/Object;)Zappend,(Ljava/lang/String;)Ljava/lang/StringBuffer;toString(Ljava/lang/String;)V(Ljava/io/File;)V!G *+*    !"#4*   $%z:*L*** Y  * + L+8: !5&'$(2* )*]Y*LY+M,# $%  +,-./012]Y*LY+M,* +,  +,-3/045conedit-0.2/src/conedit/classes/com/ion/conedit/FileURLStreamHandler.class0100664000175200017560000000130607653666444027107 0ustar stephensstephens.    instanceLjava/net/URLStreamHandler;()VCodeLineNumberTableLocalVariableTablethis&Lcom/ion/conedit/FileURLStreamHandler;()Ljava/net/URLStreamHandler;openConnection((Ljava/net/URL;)Ljava/net/URLConnection;uLjava/net/URL; SourceFileFileURLConnection.java  $com/ion/conedit/FileURLStreamHandler!com/ion/conedit/FileURLConnection java/net/URLStreamHandler(Ljava/net/URL;)V     /* 1  4 Y 568 = Y+ <  conedit-0.2/src/conedit/classes/com/ion/conedit/.jv0100664000175200017560000000050007653666444022557 0ustar stephensstephensEmptyEnumeration.java Selectable.java Selection.java Drawable.java Mouseable.java SpatiallySearchable.java Editable.java Moveable.java ConPoints.java Connection.java Connectable.java Pad.java ConCreator.java Node.java ConEditor.java ConApp.java ConApplet.java Copyable.java Copier.java ConIO.java FileURLConnection.java conedit-0.2/src/conedit/ConApp.java0100644000175200017560000002643007003623156017523 0ustar stephensstephens/* $Id: ConApp.java,v 1.3 1999/10/21 14:42:54 stephensk Exp $ */ package com.ion.conedit; import java.io.*; import java.net.*; // URL import java.applet.*; import java.awt.*; import java.awt.event.*; import java.util.*; import com.ion.conedit.*; class ConApp extends Container implements ActionListener { public Applet applet; public Copier copier; public ConEditor editor; Label status; /*****************************************************************/ /* init */ public ConApp() { copier = new Copier(); } /**********************************************************************/ static void showDebug(String s) { System.err.print("DEBUG: ConApp: "); System.err.println(s); } public void showStatus(String s) { if ( applet != null ) { applet.showStatus(s); } else if ( status != null ) { status.setText(s); status.repaint(); } else { System.err.print("ConApp: "); System.err.print(s); System.err.print("\033[K\r"); System.err.flush(); } } public static String plural(int count, String s) { s = "" + count + " " + s; if ( count != 1 ) { if ( s.charAt(s.length() - 1) == 'y' ) { s = s.substring(0, s.length() - 1); s += "ies"; } else { s += "s"; } } return s; } public static String increment(String s) { int j; j = -1; for ( int i = s.length() - 1; i >= 0 ; i -- ) { char c = s.charAt(i); if ( '0' <= c && c <= '9' ) { j = i; } else { break; } } if ( j >= 0 ) { int n = 0; int k = j; for ( int i = s.length(); k < i; k ++ ) { n *= 10; n += s.charAt(k) - '0'; } n ++; s = s.substring(0, j) + n; } else { s = s + "2"; } return s; } /**********************************************************************/ public void repaint() { editor.repaint(); } public ConEditor editor() { return editor; } public Node doc() { return editor.doc(); } public void setDoc(Node d) { editor.setDoc(d); } public Selection selection() { return doc().selection(); } /**********************************************************************/ /* */ static void add(Menu m, MenuItem mi, ActionListener x) { m.add(mi); mi.addActionListener(x); } void add(Menu m, MenuItem mi) { add(m, mi, this); } static void editMenu(Menu m, ActionListener x) { Menu sm; add(m, sm = new Menu("New"), x); add(sm, new MenuItem("Node"), x); add(sm, new MenuItem("Left Pad"), x); add(sm, new MenuItem("Right Pad"), x); add(sm, new MenuItem("Top Pad"), x); add(sm, new MenuItem("Bottom Pad"), x); add(m, new MenuItem("Undo"), x); add(m, new MenuItem("Delete"), x); add(m, new MenuItem("Cut"), x); add(m, new MenuItem("Copy"), x); add(m, new MenuItem("Paste"), x); add(m, new MenuItem("Clone"), x); add(m, new MenuItem("Clear"), x); add(m, new MenuItem("Select All"), x); } MenuBar buildMenu() { //showDebug("buildMenu()"); Menu m; MenuBar menu = new MenuBar(); m = new Menu("File"); add(m, new MenuItem("New")); add(m, new MenuItem("Open")); add(m, new MenuItem("Save")); add(m, new MenuItem("Save As")); add(m, new MenuItem("Revert")); add(m, new MenuItem("Close")); add(m, new MenuItem("Exit")); menu.add(m); m = new Menu("Edit"); editMenu(m, this); menu.add(m); m = new Menu("Help"); add(m, new MenuItem("About...")); menu.setHelpMenu(m); //showDebug("buildMenu() = " + menu); return menu; } /* */ public TextField filenameField; public void setFilename(String x) { if ( filenameField != null ) filenameField.setText(x); } GridBagLayout gridBag = new GridBagLayout(); void buildFrame(Container con, Node doc) { //showDebug("buildFrame(" + con + ", " + doc + ")"); editor = new ConEditor(); editor.setApp(this); /* Add the menu bar */ MenuBar mb = buildMenu(); Container frame = con; while ( frame != null ) { if ( frame instanceof Frame ) { //showDebug("frame = " + frame); ((Frame) frame).setMenuBar(mb); break; } frame = frame.getParent(); } /* Add ourselves to con. */ con.add(this); /* Make ourselves the target. */ con = this; con.setLayout(gridBag); /* Create a sub panel */ Panel p = new Panel(); p.setLayout(gridBag); /* Add filenameField */ constrain(p, filenameField = new TextField(), 0, 0, 1, 1, GridBagConstraints.HORIZONTAL, GridBagConstraints.NORTHWEST, 1.0, 0.0, 1, 1, 1, 1); /* Put p in con. */ constrain(con, p, 0, 0, 1, 1, GridBagConstraints.HORIZONTAL, GridBagConstraints.NORTHWEST, 1.0, 0.0, 1, 1, 1, 1); /* Put editor below p */ constrain(con, editor, 0, 1, 1, 1, GridBagConstraints.BOTH, GridBagConstraints.NORTHWEST, 1.0, 1.0, 1, 1, 1, 1); /* Put status field below editor. */ if ( applet == null ) { status = new Label(""); constrain(con, status, 0, 2, 1, 1, GridBagConstraints.HORIZONTAL, GridBagConstraints.SOUTHWEST, 1.0, 1.0, 0, 0, 0, 0); } editor.setDoc(doc); } /* */ public void constrain(Container container, Component component, int grid_x, int grid_y, int grid_w, int grid_h, int fill, int anchor, double weight_x, double weight_y, int top, int left, int bottom, int right ) { //showDebug("constrain: "+ container + ", " + component); GridBagConstraints c = new GridBagConstraints(); c.gridx = grid_x; c.gridy = grid_y; c.gridwidth = grid_w; c.gridheight = grid_h; c.fill = fill; c.anchor = anchor; c.weightx = weight_x; c.weighty = weight_y; if ( top + bottom + left + right > 0 ) { c.insets = new Insets(top, left, bottom, right); } ((GridBagLayout) container.getLayout()).setConstraints(component, c); container.add(component); } /* */ /* */ public void constrain(Container container, Component component, int grid_x, int grid_y, int grid_w, int grid_h, int top, int left, int bottom, int right ) { constrain(container, component, grid_x, grid_y, grid_w, grid_h, GridBagConstraints.NONE, GridBagConstraints.NORTHWEST, 0.0, 0.0, top, left, bottom, right); } /* */ /* */ public void constrain(Container container, Component component, int grid_x, int grid_y, int grid_w, int grid_h) { constrain(container, component, grid_x, grid_y, grid_w, grid_h, 0, 0, 0, 0); } /* */ /*****************************************************************/ public Node loadDocument(File file) { //showDebug("in loadDocument(" + file + ")"); Node doc = new Node(); doc._test_init(); /* doc.save(file); */ setDoc(doc); repaint(); return doc; } public void stop() { if ( applet != null ) { applet.stop(); } else { System.exit(0); } } /*****************************************************************/ /* editing */ public static Vector editable(Vector v) { Vector r = new Vector(v.size()); for ( Enumeration e = v.elements(); e.hasMoreElements(); ) { Object x = e.nextElement(); if ( x instanceof Editable ) { r.addElement(x); } } return r; } public void deleteEdit() { //showDebug("delete(): BEGIN"); Vector s = editable(selection()); selection().clear(); // selection() might be side-effected by deleteEdit() for ( Enumeration i = s.elements(); i.hasMoreElements(); ) { Editable x = (Editable) i.nextElement(); //showDebug("delete(): " + x); x.deleteEdit(); } //showDebug("delete(): BEGIN"); } public void copyEdit() { //showDebug("copy(): BEGIN"); copier.clear(); for ( Enumeration i = editable(selection()).elements(); i.hasMoreElements(); ) { Editable x = (Editable) i.nextElement(); //showDebug("copy(): " + x); x.copyEdit(copier); } copier.complete(); //showDebug("copy(): END"); } public void cutEdit() { copyEdit(); deleteEdit(); } public void pasteEdit() { //showDebug("paste(): BEGIN"); // Move pasteboard for ( Enumeration i = copier.elements(); i.hasMoreElements(); ) { Object x = i.nextElement(); if ( x instanceof Moveable ) { //showDebug("moveBy(): " + x); ((Moveable) x).moveBy(10, 10); } } // Make new copies to paste Copier c = new Copier(copier); for ( Enumeration i = c.elements(); i.hasMoreElements(); ) { Editable x = (Editable) i.nextElement(); //showDebug("paste(): " + x); x.pasteEdit(selection()); } selection().set(c); //showDebug("paste(): END"); } public void cloneEdit() { copyEdit(); pasteEdit(); } /******************************************************************/ public URL URL(String x) throws MalformedURLException { try { return new URL(x); } catch ( MalformedURLException e ) { showStatus("URL: " + x + ": " + e); throw e; } } public void actionPerformed(ActionEvent e) { Object arg = null; try { arg = ((MenuItem) e.getSource()).getLabel(); //showDebug("actionPerformed(" + e + "," + arg + ")"); if ( arg.equals("Save") ) { doc().save(); } else if ( arg.equals("Save As") ) { doc().save(URL(filenameField.getText())); } else if ( arg.equals("Open") ) { doc().load(URL(filenameField.getText())); repaint(); } else if ( arg.equals("Revert") ) { doc().load(); repaint(); } else if ( arg.equals("Exit") ) { stop(); } else if ( arg.equals("Node") ) { editor().addNode(); } else if ( arg.equals("Left Pad") ) { editor().addPad(new Pad(Pad.LEFT)); } else if ( arg.equals("Right Pad") ) { editor().addPad(new Pad(Pad.RIGHT)); } else if ( arg.equals("Top Pad") ) { editor().addPad(new Pad(Pad.BOTTOM)); } else if ( arg.equals("Bottom Pad") ) { editor().addPad(new Pad(Pad.TOP)); } else if ( arg.equals("Delete") ) { int nselected = selection().size(); deleteEdit(); showStatus(ConApp.plural(nselected, "object") + " deleted."); repaint(); } else if ( arg.equals("Cut") ) { int nselected = selection().size(); cutEdit(); showStatus(ConApp.plural(nselected, "object") + " cut."); repaint(); } else if ( arg.equals("Copy") ) { copyEdit(); showStatus(ConApp.plural(copier.size(), "object") + " copied."); } else if ( arg.equals("Paste") ) { pasteEdit(); showStatus(ConApp.plural(copier.size(), "object") + " pasted."); repaint(); } else if ( arg.equals("Clone") ) { cloneEdit(); showStatus(ConApp.plural(copier.size(), "object") + " cloned."); repaint(); } else if ( arg.equals("Clear") ) { selection().clear(); showStatus("Selection cleared."); repaint(); } else if ( arg.equals("Select All") ) { selection().set(doc().nodes()); showStatus(ConApp.plural(selection().size(), "object") + " selected."); repaint(); } else { } } catch ( MalformedURLException t ) { /* NOTHING */ } //catch ( Throwable t ) { // showDebug("actionPerformed(" + arg + "): " + t); // throw t; //} } /*****************************************************************/ /* Standalone app. */ public static void main(String args[]) { //showDebug("main()"); ConApp app = new ConApp(); Node d; //d = loadDocument(new File(title)); d = new Node(); d._test_init(); Frame frame = new Frame("Connection Editor"); frame.setSize(480, 320); app.buildFrame(frame, d); frame.pack(); frame.show(); } } conedit-0.2/src/conedit/ConApplet.java0100644000175200017560000000142407003453535020226 0ustar stephensstephens/* $Id: ConApplet.java,v 1.1 1999/10/20 23:59:25 stephensk Exp $ */ package com.ion.conedit; import java.io.*; import java.applet.*; import java.awt.*; import com.ion.conedit.*; public class ConApplet extends Applet { public ConApp app; void showDebug(String s) { if ( app == null ) { System.err.print("DEBUG: "); System.err.println(s); } else { app.showDebug(s); } } public void showStatus(String s) { super.showStatus(s); } public ConApplet(String title) { super(); showDebug("ConApplet(\"" + title + "\")"); app = new ConApp(); app.applet = this; Node d; //d = loadDocument(new File(title)); d = new Node(); d._test_init(); app.buildFrame(this, d); } public ConApplet() { this(""); } } conedit-0.2/src/conedit/ConCreator.java0100644000175200017560000001001207003623156020367 0ustar stephensstephens/* $Id: ConCreator.java,v 1.2 1999/10/21 14:42:54 stephensk Exp $ */ package com.ion.conedit; import java.awt.*; import java.io.*; import java.net.*; import java.awt.event.MouseEvent; import java.util.Vector; import java.util.Enumeration; import java.lang.String; import com.ion.conedit.*; /** ** When a Pad is clicked on a new ConCreator object is returned from ** @see Node#findObjects. The ConCreator object attempts to create a new ** connection between two valid pads. */ class ConCreator implements Selectable, Mouseable, Drawable, Editable { Pad from; Pad to; Connection c; int tox; int toy; boolean selected; /********************************************************************/ public ConCreator(Pad f) { from = f; selected = false; } /********************************************************************/ /* Selectable */ public boolean selected() { return selected; }; public void setSelected(boolean x) { selected = x; } public Node parent() { return from.node().parent(); } public ConEditor editor() { return from.node().parent().editor(); } public void showStatus(String x) { from.node().editor().showStatus(x); } public void showDebug(String x) { System.err.print("DEBUG: ConCreator: "); System.err.println(x); } /*****************************************************/ /* Editable */ public void deleteEdit() { // Delete the from Pad from.node().remove(from); } public void copyEdit(Copier copy) { // Copy the from Pad copy.add(from); } public void pasteEdit(Selection sel) { if ( sel.owner instanceof Node ) { Node node = (Node) sel.owner; node.add(from); } } /********************************************************************/ /* Mouseable */ public boolean mouseDown(MouseEvent e, int x, int y) { tox = x; toy = y; /* Enable drawing of highlighted Pad and Node. */ editor().drawables().addElement(this); from.setHighlighted(true); from.node().setHighlighted(true); return true; } void _mouseDrag(MouseEvent e, int x, int y) { boolean connecting = false; tox = x; toy = y; if ( to != null ) { to.setHighlighted(false); to.node().setHighlighted(false); to = null; } /* Find a Connection object to highlight */ Vector hits = new Vector(0); parent().findObjects(new Rectangle(x, y, 1, 1), 2, hits); c = null; if ( hits.size() >= 1 ) { Object e0 = hits.elementAt(0); if ( e0 instanceof ConCreator ) { to = ((ConCreator) e0).from; c = new Connection(from, to); //showDebug("Found " + c.toString()); if ( c.canConnect() ) { to.setHighlighted(true); to.node().setHighlighted(true); } else { to = null; c = null; } } } showStatus("Connect " + (c != null ? c.toString() : from.toString())); } public boolean mouseDrag(MouseEvent e, int x, int y) { _mouseDrag(e, x, y); return true; } public boolean mouseUp(MouseEvent e, int x, int y) { _mouseDrag(e, x, y); /* Disable drawing. */ editor().drawables().removeElement(this); /* Unhighlight pads */ if ( from != null ) { from.setHighlighted(false); from.node().setHighlighted(false); } if ( to != null ) { to.setHighlighted(false); to.node().setHighlighted(false); to = null; } /* Connect it to the pads */ if ( c != null ) { if ( c.connect() ) { showStatus("Connected " + c.toString()); } else { showStatus("Cannot connect " + c.toString()); } } else { editor().selection().clear(); editor().selection().select(from); showStatus(""); } return true; } /********************************************************************/ /* Drawable */ public void draw(Graphics g) { Rectangle fr = from.getRect(g); g.setColor(Color.yellow); Connection.draw(g, fr.x + fr.width / 2, fr.y + fr.height / 2, tox, toy); } } conedit-0.2/src/conedit/ConEditor.java0100644000175200017560000002214407003623156020227 0ustar stephensstephens/* $Id: ConEditor.java,v 1.3 1999/10/21 14:42:54 stephensk Exp $ */ package com.ion.conedit; import java.awt.*; import java.awt.event.*; import java.applet.*; import java.util.*; import com.ion.conedit.*; public class ConEditor extends Canvas implements MouseListener, MouseMotionListener, ActionListener { Node doc; ConApp app; Vector drawables; private void init() { doc = null; app = null; drawables = new Vector(); setBackground(new Color(0.5f, 0.7f, 0.2f)); } public ConEditor() { this(""); } public ConEditor(String title) { super(); init(); addMouseListener(this); addMouseMotionListener(this); } public void setFilename(String x) { if ( app != null ) { app().setFilename(x); } } /**********************************************************************/ /* doc */ public Node doc() { return doc; } public void setDoc(Node x) { if ( doc != null ) doc.setEditor(null); doc = x; if ( doc != null ) { setBackground(doc.color()); if ( doc.url() != null ) { setFilename(doc.url().toString()); } doc.setEditor(this); } } public Selection selection() { return doc().selection(); } /**********************************************************************/ /* show*() */ public void showDebug(String x) { System.err.print("DEBUG: ConEditor: " + super.toString()); System.err.println(x); } public void showStatus(String x) { app().showStatus(x); } /**********************************************************************/ /* app */ public ConApp app() { return app; } public void setApp(ConApp a) { app = a; } /**********************************************************************/ /* show*() */ public Dimension getPreferredSize() { return new Dimension(400, 300); } public Dimension getMinimumSize() { return new Dimension(150, 150); } public Vector drawables() { return drawables; } /********************************************************************/ /* backBuffer() */ static Image backBuffer; static Graphics backGC; static Dimension backSize; private synchronized void newBackBuffer() { backSize = getSize(); backBuffer = createImage(backSize.width, backSize.height); backGC = backBuffer.getGraphics(); } Graphics gCached = null; public Graphics gCached() { return gCached; } public synchronized void update(Graphics g) { if ( backBuffer == null ) { g.clearRect(0, 0, getSize().width, getSize().height); } paint(g); } public void drawDrawables(Graphics g) { for ( int i = drawables.size() - 1; i >= 0; i -- ) { ((Drawable) drawables.elementAt(i)).draw(gCached); } } public synchronized void paint(Graphics g) { if ( backBuffer == null ) { newBackBuffer(); } if ( backBuffer != null ) { if ( ! backSize.equals(getSize()) ) newBackBuffer(); backGC.setColor(getBackground()); backGC.fillRect(0,0,getSize().width,getSize().height); gCached = backGC; } else { gCached = g; } super.paint(gCached); doc.draw(gCached); drawDragSelection(gCached); if ( backBuffer != null ) { g.drawImage(backBuffer, 0, 0, this); } // } catch( Throwable e ) { // showStatus("Throwable " + e.toString()); // } } /* ** Select/Move UI */ Point downPoint = new Point(0, 0); Point dragPoint = new Point(0, 0); Rectangle dragRect = new Rectangle(); Vector hits = new Vector(); boolean dragSelect; void drawDragSelection(Graphics g) { if ( dragSelect ) { g.drawRect(dragRect.x, dragRect.y, dragRect.width, dragRect.height); } } void setDragPoint(int x, int y) { dragPoint.x = x; dragPoint.y = y; dragRect.x = Math.min(downPoint.x, dragPoint.x); dragRect.y = Math.min(downPoint.y, dragPoint.y); dragRect.width = Math.abs(downPoint.x - dragPoint.x); dragRect.height = Math.abs(downPoint.y - dragPoint.y); } /*********************************************************************/ /* MouseListener */ final static int BUTTON2_MASK = InputEvent.BUTTON3_MASK; public void mousePressed(MouseEvent e) { //showDebug("mousePressed(" + e + ")"); if ( (e.getModifiers() & BUTTON2_MASK) == 0 ) { mouseDown(e, e.getX(), e.getY()); } else { mouse2Down(e, e.getX(), e.getY()); } } public void mouseReleased(MouseEvent e) { //showDebug("mouseReleased(" + e + ")"); if ( (e.getModifiers() & BUTTON2_MASK) == 0 ) { mouseUp(e, e.getX(), e.getY()); } } public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} /*********************************************************************/ /* MouseListener */ public void mouseDragged(MouseEvent e) { //showDebug("mouseDragged(" + e + ")"); if ( (e.getModifiers() & BUTTON2_MASK) == 0 ) { mouseDrag(e, e.getX(), e.getY()); } } public void mouseMoved(MouseEvent e) {} /*********************************************************************/ /* Mouseable */ private void add(Menu m, MenuItem mi) { m.add(mi); mi.addActionListener(this); } public Node selectedNode() { Node node = null; for ( Enumeration e = selection().selected(); e.hasMoreElements(); ) { Object o = e.nextElement(); if ( o instanceof Node ) { node = (Node) o; break; } } return node; } public void addPad(Pad p) { Node node; if ( (node = selectedNode()) != null ) { node.add(p); repaint(); } } public void addNode() { Node n = new Node(downPoint.x, downPoint.y); Node sn; if ( (sn = selectedNode()) != null ) { n.fillWith(sn); } doc.add(n); selection().set(n); repaint(); } public void actionPerformed(ActionEvent e) { try { String arg = ((MenuItem) e.getSource()).getLabel(); } catch ( Throwable t ) { } } PopupMenu popupMenu; public boolean mouse2Down(MouseEvent e, int x, int y) { //showDebug("mouse2Down(" + e+ ")"); if ( popupMenu != null ) { remove(popupMenu); popupMenu = null; } if ( false ) { if ( _mouseDown(e, x, y) ) { repaint(); } if ( _mouseUp(e, x, y) ) { } } PopupMenu m = new PopupMenu(); popupMenu = m; Menu sm; downPoint.x = x; downPoint.y = y; ConApp.editMenu(m, app()); // Add it to us and show add(m); m.show(this, x, y); return false; } private boolean _mouseDown(MouseEvent e, int x, int y) { setDragPoint((downPoint.x = x - 2) + 5, (downPoint.y = y - 2) + 5); hits.setSize(0); doc.findObjects(dragRect, 2, hits); setDragPoint(downPoint.x = x, downPoint.y = y); //showDebug("mouseDown(" + x + " " + y + "): found:" + hits.toString()); if ( hits.size() > 0 ) { Selectable s; Vector h = new Vector(1); h.addElement(s = (Selectable) hits.elementAt(0)); hits = h; if ( e.isControlDown() ) { // CTRL always toggles selection().toggle(hits); } else if ( s.selected() ) { // Do nothing } else { selection().set(hits); } dragSelect = false; for ( Enumeration i = selection().selected(); i.hasMoreElements(); ) { Object q = i.nextElement(); if ( q instanceof Mouseable ) { ((Mouseable) q).mouseDown(e, x, y); } } return true; } return false; } public boolean mouseDown(MouseEvent e, int x, int y) { if ( _mouseDown(e, x, y) ) { showStatus(ConApp.plural(selection().size(), "object") + " selected."); } else { dragSelect = true; showStatus("Drag selection..."); } repaint(); return true; } public boolean mouseDrag(MouseEvent e, int x, int y) { //showDebug("mouseDrag(" + x + " " + y + "): dragSelect:" + dragSelect); if ( ! dragSelect ) { doc.moveSelectionBy(x - dragPoint.x, y - dragPoint.y); for ( Enumeration i = selection().selected(); i.hasMoreElements(); ) { Object q = i.nextElement(); if ( q instanceof Mouseable ) { ((Mouseable) q).mouseDrag(e, x, y); } } } setDragPoint(x, y); repaint(); return true; } private boolean _mouseUp(MouseEvent e, int x, int y) { for ( Enumeration i = selection().selected(); i.hasMoreElements(); ) { Object q = i.nextElement(); if ( q instanceof Mouseable ) { ((Mouseable) q).mouseUp(e, x, y); } } return true; } public boolean mouseUp(MouseEvent e, int x, int y) { //showDebug("mouseUp(" + x + " " + y + "): dragSelect:" + dragSelect); if ( dragSelect ) { hits.setSize(0); doc.findObjects(dragRect, 1, hits); //showDebug("mouseUp(" + x + " " + y + "): dragSelect:" + dragSelect + " found:" + hits.toString()); if ( e.isControlDown() ) { selection().toggle(hits); } else { selection().set(hits); } dragSelect = false; showStatus(ConApp.plural(selection().size(), "object") + " selected."); } else { doc.moveSelectionBy(x - dragPoint.x, y - dragPoint.y); _mouseUp(e, x, y); } setDragPoint(x, y); repaint(); return true; } /* self-test */ } conedit-0.2/src/conedit/ConIO.java0100644000175200017560000002565307003630163017314 0ustar stephensstephens/* $Id: ConIO.java,v 1.2 1999/10/21 15:25:39 stephensk Exp $ */ package com.ion.conedit; import java.util.*; import java.io.*; import java.awt.*; // Color import com.ion.conedit.*; public class ConIO extends Object { OutputStream out; InputStream in; StreamTokenizer st; int indent; boolean doIndent; double version; ConIO ( OutputStream o ) { out = o; version = 1.0; } ConIO ( InputStream i ) { in = i; BufferedReader r = new BufferedReader(new InputStreamReader(in)); st = new StreamTokenizer(r); st.wordChars('_', '_'); } void close() { out = null; in = null; st = null; } void showDebug(String x) { System.err.print("DEBUG: ConIO: " + this + ": "); System.err.println(x); } /********************************************************************/ /* Write primitives */ void writeString_(String x) { try { byte bs[] = x.getBytes(); out.write(bs); out.flush(); } catch ( Throwable t ) { // NOTHING } } void writeString_escaped(String x) { //showDebug("writeString_escaped \"" + x + "\""); try { byte bs[] = x.getBytes(); int i = 0, j = 0; for ( i = 0; i < bs.length; i ++ ) { if ( bs[i] == '"' || bs[i] == '\\' ) { out.write(bs, j, i - j); out.write('\\'); out.flush(); j = i; } } if ( i > j ) { out.write(bs, j, i - j); } out.flush(); } catch ( Throwable t ) { // NOTHING } } void writeString(String x) { //showDebug("writeString: \"" + x + "\""); try { byte bs[] = x.getBytes(); for ( int i = 0; i < bs.length; i ++ ) { int c; int ind = indent; switch ( (c = bs[i]) ) { case '\n': doIndent = true; ind = 0; break; case '{': indent ++; break; case '}': indent --; ind = indent; break; default: } //showDebug("writeString: i = " + i); if ( ind > 0 && doIndent ) { for ( int j = ind; j -- > 0; ) { out.write(' '); } doIndent = false; } out.write(c); } out.flush(); } catch ( Throwable e ) { // NOTHING } } /********************************************************************/ /* Read primitives */ void syntaxError(String desc) throws Error { throw new Error("Expected " + desc + " at line " + st.lineno()); } public int nextToken() throws Throwable { try { return st.nextToken(); } catch ( Throwable t ) { throw t; } } public void pushBack() throws Throwable { try { st.pushBack(); } catch ( Throwable t ) { throw t; } } boolean peekChar(char c) throws Throwable { //showDebug("peekChar('" + c + "')"); if ( nextToken() == (int) c ) { pushBack(); return true; } pushBack(); //showDebug("peekChar()=" + c); return false; } void matchChar(char c) throws Throwable { //showDebug("matchChar('" + c + "')"); if ( nextToken() != (int) c ) { syntaxError("'" + c + "'"); } //showDebug("matchChar()=" + c); } void matchWord(String s) throws Throwable { //showDebug("matchWord(\"" + s + "\""); if ( ! ((nextToken() == st.TT_WORD || st.ttype == '"') && st.sval.equals(s)) ) { syntaxError("word \"" + s + "\""); } //showDebug("matchWord()=" + s); } /****************************************************************/ void writeDouble(double x) { //showDebug("writeDouble " + x + ""); writeString(x + " "); } public double readDouble() throws Throwable { if ( nextToken() != st.TT_NUMBER ) { syntaxError("double"); } //showDebug("readDouble()=" + st.nval); return st.nval; } void writeInt(int x) { //showDebug("writeInt " + x + ""); writeString(x + " "); } public int readInt() throws Throwable { if ( nextToken() != st.TT_NUMBER ) { syntaxError("integer"); } //showDebug("readInt()=" + (int) st.nval); return (int) st.nval; } public boolean peekInt() throws Throwable { if ( nextToken() != st.TT_NUMBER ) { pushBack(); return false; } else { pushBack(); return true; } } void writeWord(String x) { //showDebug("writeWord \"" + x + "\""); if ( x.length() == 0 ) { writeString_("\"\" "); } else { byte bs[] = x.getBytes(); for ( int i = bs.length; i -- > 0; ) { int c = (int) bs[i]; if ( ! ( ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || ('_' == c) || ('0' <= c && c <= '9') || (128 + 32 <= c && c <= 255) ) ) { writeString_("\""); writeString_escaped(x); writeString_("\" "); return; } } writeString_(x); writeString_(" "); } } public String readWord() throws Throwable { //showDebug("readWord()"); if ( ! (nextToken() == st.TT_WORD || st.ttype == '"') ) { syntaxError("word"); } //showDebug("readWord()=\"" + st.sval + "\""); return st.sval; } public String peekWord() throws Throwable { //showDebug("peekWord()"); if ( ! (nextToken() == st.TT_WORD || st.ttype == '"') ) { pushBack(); return null; } else { //showDebug("peekWord()=\"" + st.sval + "\""); return st.sval; } } void write(Color c) { //showDebug("write(Color " + c + ")"); writeString("{ "); if ( c != null ) { writeInt(c.getRed()); writeInt(c.getGreen()); writeInt(c.getBlue()); } else { writeInt(0); writeInt(0); writeInt(0); } writeString("} "); } public Color readColor() throws Throwable { //showDebug("readColor()"); matchChar('{'); int r, g, b; r = readInt(); g = readInt(); b = readInt(); matchChar('}'); Color c = new Color(r, g, b); //showDebug("readColor()=" + c); return c; } public void write(Connection con) { //showDebug("write(Connection " + con + ")"); writeString("{ "); writeWord(((Pad) con.from()).node().label()); writeWord(((Pad) con.from()).label()); writeWord(con.type()); writeWord(((Pad) con.to()).node().label()); writeWord(((Pad) con.to()).label()); write(con.color()); writeString("} "); } public Connection readConnection(Node node) throws Throwable { //showDebug("readConnection()"); // Connection matchChar('{'); String from = readWord(); String fromPad = readWord(); String type = readWord(); String to = readWord(); String toPad = readWord(); Color color = readColor(); matchChar('}'); Pad fp = node.getNodePadNamed(from, fromPad); Pad tp = node.getNodePadNamed(to, toPad); if ( fp == null ) { syntaxError("pad: " + from + "." + fromPad); } if ( tp == null ) { syntaxError("pad: " + to + "." + toPad); } Connection c = new Connection(fp, tp, type, color); //showDebug("readConnection() = " + c); return c; } public void write(Pad p) { //showDebug("write(Pad " + p + ")"); writeString("{ "); writeWord(p.label); writeWord(p.type); write(p.color); writeString("}\n"); } public Pad readPad() throws Throwable { //showDebug("readPad()"); Pad p = new Pad(); matchChar('{'); p.label = readWord(); p.type = readWord(); p.color = readColor(); matchChar('}'); //showDebug("readPad()=" + p); return p; } public void write(Node node) { //showDebug("write(Node)"); Vector c = new Vector(0); // Node writeString("Node { "); // Node header writeWord(node.label()); writeWord(node.type()); writeInt(node.getX()); writeInt(node.getY()); write(node.color()); writeString("\n"); // Pads if ( node.pads().hasMoreElements() ) { writeString("Pads {\n"); for ( int i = 0; i < ConPoints.NSIDES; i ++ ) { if ( node.pads(i).hasMoreElements() ) { writeInt(i); writeString("{\n"); for ( Enumeration f = node.pads(i); f.hasMoreElements(); ) { Pad p = ((Pad) f.nextElement()); write(p); } writeString("}\n"); } } // End of Pads writeString("}\n"); } if ( node.nodes().hasMoreElements() ) { writeString("Nodes {\n"); for ( Enumeration e = node.nodes(); e.hasMoreElements(); ) { Node subnode = (Node) e.nextElement(); write(subnode); /* Get a list of all connections. */ if ( subnode.connections() != null ) { for ( Enumeration g = subnode.connections(); g.hasMoreElements(); ) { Connection con = (Connection) g.nextElement(); Pad from = (Pad) con.from(); if ( from.node() == subnode ) { c.addElement(con); } } } } // End of Nodes writeString("}\n"); } if ( c.size() > 0 ) { // Connections writeString("Connections {\n"); for ( Enumeration g = c.elements(); g.hasMoreElements(); ) { Connection con = (Connection) g.nextElement(); write(con); writeString("\n"); } // End of Connections writeString("}\n"); } // Eod of Node writeString("}\n"); } public Node readNode(Node node) throws Throwable { //showDebug("readNode(Node)"); try { matchWord("Node"); matchChar('{'); // Node header node.setLabel(readWord()); node.setType(readWord()); int x = readInt(); int y = readInt(); node.setXY(x, y); node.setColor(readColor()); node.emptyPads(); node.emptyNodes(); while ( ! peekChar('}') ) { String tag = readWord(); if ( tag == null ) { syntaxError("word"); } else if ( tag.equals("Pads") ) { // Pads //matchWord("Pads"); matchChar('{'); for ( int i = 0; i < ConPoints.NSIDES && ! peekChar('}'); i ++ ) { int j = readInt(); matchChar('{'); while ( ! peekChar('}') ) { Pad p = readPad(); p.pos = j; node.add(p); } matchChar('}'); } matchChar('}'); // End of Pads } else if ( tag.equals("Nodes") ) { // Nodes //matchWord("Nodes"); matchChar('{'); while ( ! peekChar('}') ) { // Add node to document Node subnode = readNode(); node.add(subnode); } matchChar('}'); // End of Nodes } else if ( tag.equals("Connections") ) { // Connections //matchWord("Connections"); matchChar('{'); while ( ! peekChar('}') ) { Connection c = readConnection(node); c.connect(); } matchChar('}'); // End of Connections } else { syntaxError("Found \"" + tag + "\""); } } matchChar('}'); // End of Node } catch ( Throwable e ) { node = null; throw e; } return node; } public Node readNode() throws Throwable { return readNode(new Node()); } public void writeRoot(Node node) { writeString("ConnectionDocument "); writeDouble(version); writeString("{\n"); write(node); writeString("}\n"); } public Node readRoot(Node n) throws Throwable { try { matchWord("ConnectionDocument"); double vers = readDouble(); matchChar('{'); readNode(n); matchChar('}'); } catch ( Throwable t ) { n = null; throw t; } return n; } public Node readRoot() throws Throwable { return readRoot(new Node()); } } conedit-0.2/src/conedit/ConPoints.java0100644000175200017560000002027207003453536020260 0ustar stephensstephens/* $Id: ConPoints.java,v 1.1 1999/10/20 23:59:26 stephensk Exp $ */ package com.ion.conedit; import java.awt.Rectangle; /* ** An implementation of Graphics Gems III, p. 173. ** With slight modifications. */ class CPPad { public final static int LEFT = 0; public final static int RIGHT = 1; public final static int BOTTOM = 2; public final static int TOP = 3; public final static int NSIDES = 4; int direction; int x, y; public CPPad(int _x, int _y, int d) { x = _x; y = _y; direction = d; } } class CPObject { int x; int y; int w; int h; public CPObject(Rectangle r) { x = r.x; y = r.y; w = r.width; h = r.height; } } public class ConPoints { public final static int DIRECT = 0; public final static int INVERSE = 1; public final static int LEFT = 0; public final static int RIGHT = 1; public final static int BOTTOM = 2; public final static int TOP = 3; public final static int NSIDES = 4; public final static int NPOINTS = 6; public static int SMAX = 20; public static int OFFS = 5; public static String shape; public static void showDebug(String x) { System.out.print("DEBUG: ConnectionPoints: "); System.out.println(x); } public static String toString(int t[][]) { String s = "{ "; for ( int i = 0; i < t.length; i ++ ) { s += "( "; for ( int j = 0; j < t[i].length; j ++ ) { s += t[i][j] + " "; } s += ") "; } s += "}"; return s; } static boolean EQSIGN(int x1, int x2, int x3, int x4) { return ((x2 - x1) * (x3 - x4)) > 0; } static int CODE(int x, int y, int w, int h, int px, int py) { int c = 0; if ( px < x ) c = 0x01; else if ( px >= x + w ) c = 0x02; if ( py < y ) c |= 0x04; else if ( py >= y + h ) c |= 0x08; return c; } public static int points( Rectangle fr, int fx, int fy, int fdir, Rectangle tr, int tx, int ty, int tdir, int px[], int py[]) { int npts; int pts[][] = new int[7][2]; npts = ComputeCon( new CPObject(fr), new CPObject(tr), new CPPad(fx, fy, fdir), new CPPad(tx, ty, tdir), 7, pts); for ( int i = 0; i < npts; i ++ ) { px[i] = pts[i][0]; py[i] = pts[i][1]; } return npts; } static int ComputeCon(CPObject startObj, CPObject endObj, CPPad outPad, CPPad inPad, int nump, int pts[][] ) { nump = Connect(outPad.x, outPad.y, outPad.direction, inPad.x, inPad.y, inPad.direction, pts); //showDebug("shape = " + shape); Correct(startObj.x, startObj.y, startObj.w, startObj.h, nump, pts); Correct(endObj.x, endObj.y, endObj.w, endObj.h, nump, pts); return nump; } final static int directs[][] = { { TOP, BOTTOM, LEFT, RIGHT }, { BOTTOM, TOP, RIGHT, LEFT }, { RIGHT, LEFT, TOP, BOTTOM }, { LEFT, RIGHT, BOTTOM, TOP } }; static int Connect(int xo, int yo, int diro, int xi, int yi, int diri, int p[][] ) { int i, np, txi, tyi; int t[] = new int[2]; Transform(DIRECT, diro, xo, yo, xi, yi, t); txi = t[0]; tyi = t[1]; np = 0; switch ( directs[diro][diri] ) { /* In pad direction */ case LEFT: if ( tyi > 0 ) { /* T */ if ( txi > 0 ) { /* 34 */ Shape3P(txi, tyi, p); np = 3; } else { /* 12 */ Shape5PB(txi, tyi, -1, p); np = 5; } } else { /* B */ Shape5PB(txi, tyi, -1, p); np = 5; } break; case RIGHT: if ( tyi > 0 ) { /* T */ if ( txi > 0 ) { /* 34 */ Shape5PB(txi, tyi, 1, p); np = 5; } else { /* 12 */ Shape3P(txi, tyi, p); np = 3; } } else { /* B */ Shape5PB(txi, tyi, 1, p); np = 5; } break; case BOTTOM: if ( tyi > 0 ) { /* T */ Shape4PD(txi, tyi, p); np = 4; } else { /* B */ Shape6P(txi, tyi, -1, p); np = 6; } break; case TOP: if ( txi < - SMAX || txi > SMAX ) { /* 14 */ Shape4PU(txi, tyi, p); np = 4; } else { /* 23 */ /* Shape6R(txi, tyi, 1, p); */ Shape6P(txi, tyi, 1, p); np = 6; } break; } for ( i = 0 ; i < np ; i++ ) { Transform(INVERSE, diro, xo, yo, p[i][0], p[i][1], t); p[i][0] = t[0]; p[i][1] = t[1]; } return (np); } static void Transform ( int mode, int dout, int xout, int yout, int x, int y, int t[] ) { int ox, oy; ox = x; oy = y; switch ( mode ) { case DIRECT: switch ( dout ) { case LEFT: t[0] = oy - yout; t[1] = xout - ox; break; case RIGHT: t[0] = yout - oy; t[1] = ox - xout; break; case BOTTOM: t[0] = xout - ox; t[1] = yout - oy; break; case TOP: t[0] = ox - xout; t[1] = oy - yout; break; } break; case INVERSE: switch ( dout ) { case LEFT: t[0] = xout - oy; t[1] = yout + ox; break; case RIGHT: t[0] = xout + oy; t[1] = yout - ox; break; case BOTTOM: t[0] = xout - ox; t[1] = yout - oy; break; case TOP: t[0] = xout + ox; t[1] = yout + oy; break; } break; } } static void Correct ( int x, int y, int w, int h, int np, int p[][] ) { int i, j, c, op[] = new int[2], od[] = new int[2]; op[0] = x; op[1] = y; od[0] = w; od[1] = h; for ( j = 1, i = 2 ; i < np - 1 ; i++, j++ ) { if ( Overcross(x, y, w, h, p[j][0], p[j][1], p[i][0], p[i][1]) ) { //showDebug("Overcross: " + x + " " + y + " " + w + " " + h + " " + toString(p)); c = ( p[j][0] == p[i][0] ) ? 0 : 1; if ( EQSIGN(p[j-1][c], p[j][c], p[i][c], p[i+1][c]) ) { if ( p[j][c] < p[j-1][c] ) p[j][c] = p[i][c] = op[c] - OFFS + 2; else p[j][c] = p[i][c] = op[c] + od[c] - 1 + OFFS - 2; } else { if ( p[i][c] < p[i+1][c] ) p[j][c] = p[i][c] = op[c] - OFFS + 2; else p[j][c] = p[i][c] = op[c] + od[c] - 1 + OFFS - 2; } } } //showDebug("Overcross: " + toString(p)); } static boolean Overcross ( int x, int y, int w, int h, int x1, int y1, int x2, int y2 ) { int c1, c2; c1 = CODE(x, y, w, h, x1, y1); c2 = CODE(x, y, w, h, x2, y2); return(( c1 & c2) == 0); } static void Shape3P ( int xi, int yi, int xy[][] ) { shape = "3P"; xy[0][0] = 0; xy[0][1] = 0; xy[1][0] = 0; xy[1][1] = yi; xy[2][0] = xi; xy[2][1] = yi; } static void Shape4PD ( int xi, int yi, int xy[][] ) { shape = "4PD"; xy[0][0] = 0; xy[0][1] = 0; xy[1][0] = 0; xy[1][1] = OFFS; /* if ( xy[1][1] > yi ) xy[1][1] = yi / 2; */ xy[1][1] = yi / 2; xy[2][0] = xi; xy[2][1] = xy[1][1]; xy[3][0] = xi; xy[3][1] = yi; } static void Shape4PU ( int xi, int yi, int xy[][] ) { shape = "4PU"; xy[0][0] = 0; xy[0][1] = 0; xy[1][0] = 0; xy[1][1] = ( ( yi <= 0 ) ? 0 : yi ) + OFFS; xy[2][0] = xi; xy[2][1] = xy[1][1]; xy[3][0] = xi; xy[3][1] = yi; } static void Shape5PB ( int xi, int yi, int sign, int xy[][] ) { shape = "5PB"; xy[0][0] = 0; xy[0][1] = 0; xy[1][0] = 0; xy[1][1] = OFFS; if ( sign * xi < - SMAX ) xy[2][0] = xi + sign * OFFS; else xy[2][0] = ( ( sign * xi < 0 ) ? 0 : xi ) + sign * OFFS; xy[2][1] = xy[1][1]; xy[3][0] = xy[2][0]; xy[3][1] = yi; xy[4][0] = xi; xy[4][1] = yi; } static void Shape5PT ( int xi, int yi, int sign, int xy[][] ) { shape = "5PT"; xy[0][0] = 0; xy[0][1] = 0; xy[1][0] = 0; /* xy[1][1] = OFFS; */ xy[1][1] = yi / 2; xy[2][0] = xi + sign * OFFS; xy[2][1] = xy[1][1]; xy[3][0] = xy[2][0]; xy[3][1] = yi; xy[4][0] = xi; xy[4][1] = yi; } static void Shape6P ( int xi, int yi, int sign, int xy[][] ) { shape = "6P"; int xm; xm = xi / 2; xy[0][0] = 0; xy[0][1] = 0; xy[1][0] = 0; xy[1][1] = OFFS; if ( yi < 0 ) { if ( xi > 0 ) xy[2][0] = ( xm > SMAX ) ? xm : SMAX; else xy[2][0] = ( xm > SMAX ) ? xm : - SMAX; } else { if ( xi > 0 ) xy[2][0] = ( xm > SMAX ) ? xm : - SMAX; else xy[2][0] = ( xm > SMAX ) ? xm : SMAX; } xy[2][1] = xy[1][1]; xy[3][0] = xy[2][0]; xy[3][1] = yi + sign * OFFS; xy[4][0] = xi; xy[4][1] = xy[3][1]; xy[5][0] = xi; xy[5][1] = yi; } } conedit-0.2/src/conedit/Connectable.java0100644000175200017560000000064607031474012020555 0ustar stephensstephens/* $Id $*/ package com.ion.conedit; import java.awt.*; import com.ion.conedit.Connection; import com.ion.conedit.Copyable; public interface Connectable extends Copyable { public boolean canConnect(Connection c); public boolean connect(Connection c); public boolean canDisconnect(Connection c); public boolean disconnect(Connection c); //public int getPosition(Connection c, Rectangle r, Point p); } conedit-0.2/src/conedit/Connection.java0100644000175200017560000003000607003630163020430 0ustar stephensstephens/* $Id: Connection.java,v 1.11 1999/10/21 15:25:39 stephensk Exp $ */ package com.ion.conedit; import java.awt.*; import java.applet.*; import java.util.Vector; import java.util.Enumeration; import com.ion.conedit.Drawable; import com.ion.conedit.ConPoints; import com.ion.conedit.Pad; import com.ion.conedit.Node; import com.ion.conedit.Copyable; import com.ion.conedit.Copier; public class Connection implements Drawable, Selectable, SpatiallySearchable, Editable { Connectable from; Connectable to; String type; Color color; boolean selected; /* Drawing cache */ Rectangle fr; Rectangle tr; Rectangle fpr; Rectangle tpr; int px[]; int py[]; int pn; Rectangle prect; public static Connection defaults = new Connection(null, null, "->", Color.black); public Connection(Connectable from, Connectable to, String type, Color color) { this.from = from; this.to = to; this.type = type != null ? type : defaults.type; this.color = color != null ? color : defaults.color; } public Connection(Connectable from, Connectable to, String type) { this(from, to, type, null); } public Connection(Connectable from, Connectable to) { this(from, to, null); } /*****************************************************/ void showDebug(String x) { System.err.print("DEBUG: Connection: " + this.toStringLong() + ": "); System.err.println(x); } /*****************************************************/ /* attributes */ public String type() { return type; } public void setType(String x) { type = x; } public Color color() { return color; } public void setColor(Color x) { color = x; } /*****************************************************/ public Object clone() { Connection c = new Connection(from, to, type); return c; } /* public Copyable copy(Copier p) { return (Copyable) this.clone(); } public Copyable complete(Copier p) { from = (Pad) p.getRef(from); to = (Pad) p.getRef(to); connect(); return this; } */ /*****************************************************/ public String toStringLong() { return super.toString() + "[" + toString() + "]"; } public String toString() { return (from != null ? from.toString() : "...") + " " + type + " " + (to != null ? to.toString() : "..."); } /*****************************************************/ public Connectable from() { return from; } public boolean setFrom(Connectable p) { if ( from == p ) return true; if ( from != null ) { if ( ! from.disconnect(this) ) return false; } Connectable save = from; from = p; if ( ! from.connect(this) ) { from = save; return false; } return true; } public Connectable to() { return to; } public boolean setTo(Connectable p) { if ( to == p ) return true; if ( to != null ) { if ( ! to.disconnect(this) ) return false; } Connectable save = to; to = p; if ( ! to.connect(this) ) { to = save; return false; } return true; } public boolean setFromTo(Connectable f, Connectable t) { from = f; to = t; showDebug("setFromTo()"); return connect(); } public void swap() { Connectable temp = from; from = to; to = temp; } public Connectable peer(Connectable p) { return from == p ? to : from; } /**********************************************************************/ /* Connectable */ public boolean canConnect() { /* Save from and to for swap() */ Connectable f = from; Connectable t = to; //showDebug("canConnect()"); //showDebug("f.canConnect(this) = "); f.canConnect(this); //showDebug("t.canConnect(this) = "); t.canConnect(this); return (f != null && f.canConnect(this)) && (t != null && t.canConnect(this)); } public boolean connect() { //showDebug("connect()"); /* Save from and to for swap() */ Connectable f = from; Connectable t = to; if ( ! canConnect() ) return false; return (f != null && f.connect(this)) && (t != null && t.connect(this)); } public boolean canDisconnect() { return (from == null || from.canDisconnect(this)) && (to == null || to.canDisconnect(this)); } public boolean disconnect() { //showDebug("disconnect()"); if ( ! canDisconnect() ) return false; if ( from != null && ! from.disconnect(this) ) { return false; } if ( to != null && ! to.disconnect(this) ) { return false; } to = from = null; return true; } /**********************************************************************/ /* Selectable */ public boolean selected() { return selected; } public void setSelected(boolean x) { selected = x; } /**********************************************************************/ /* Editable */ public void deleteEdit() { disconnect(); } public void copyEdit(Copier cp) { // IMPLEMENT } public void pasteEdit(Selection sel) { // IMPLEMENT } /**********************************************************************/ /* Bezier curve computation */ public static void bezier(int _x0, int _y0, int _x1, int _y1, int _x2, int _y2, int pn, int px[], int py[], int pi) { double x0 = (double)_x0, x1 = (double)_x1, x2 = (double)_x2; double y0 = (double)_y0, y1 = (double)_y1, y2 = (double)_y2; for ( int i = 0; i < pn; i ++ ) { double u1 = (double) i / (double) pn; double u0 = 1.0 - u1; px[pi] = (int) (((x0 * u0) + (x1 * u1)) * u0 + ((x1 * u0) + (x2 * u1)) * u1); py[pi] = (int) (((y0 * u0) + (y1 * u1)) * u0 + ((y1 * u0) + (y2 * u1)) * u1); pi ++; } } public static int arcs(int px[], int py[], int pn, int q, int xo[], int yo[], int io) { if ( pn <= 2 ) { xo[io] = px[0]; yo[io ++] = py[0]; xo[io] = px[1]; yo[io] = py[1]; return 2; } else { int lx = px[0]; int ly = py[0]; int i; int pc = 0; for ( i = 1; i < pn - 2; i ++ ) { int x = (px[i] + px[i + 1]) / 2; int y = (py[i] + py[i + 1]) / 2; bezier(lx, ly, px[i], py[i], x, y, q, xo, yo, io); io += q; pc += q; lx = x; ly = y; } bezier(lx, ly, px[i], py[i], px[i + 1], py[i + 1], q, xo, yo, io); io += q; pc += q; i ++; xo[io] = px[i]; yo[io] = py[i]; pc ++; return pc; } } /*********************************************************************/ /* Arc generation cache */ public void invalidatePoints() { pn = 0; px = py = null; prect = null; } public void calcPoints() { if ( pn == 0 ) { //System.err.println("calcPoints(): from = " + from + ", to = " + to); /* Compute connection polyline */ int npx[] = new int[ConPoints.NPOINTS]; int npy[] = new int[ConPoints.NPOINTS]; ConPoints.OFFS = Pad.width + Pad.height; pn = ConPoints.points( fr, fpr.x + fpr.width / 2, fpr.y + fpr.height / 2, ((Pad) from).pos, tr, tpr.x + tpr.width / 2, tpr.y + tpr.height / 2, ((Pad) to).pos, npx, npy); /* Convert it to bezier polyline */ if ( px == null ) { px = new int[pn * bezier_steps + 1]; py = new int[pn * bezier_steps + 1]; } pn = arcs(npx, npy, pn, bezier_steps, px, py, 0); prect = null; } } public Rectangle calcRect() { if ( prect != null ) return prect; calcPoints(); prect = new Rectangle(px[0], py[0]); for ( int i = 1; i < pn; i ++ ) { prect.add(px[i], py[i]); } return prect; } /*********************************************************************/ /* Temporary drawing */ public final static int bezier_steps = 8; public static void drawArcs(Graphics g, int px[], int py[], int pn, int q) { int x[] = new int[pn * bezier_steps + 1]; int y[] = new int[pn * bezier_steps + 1]; int n; n = arcs(px, py, pn, bezier_steps, x, y, 0); g.drawPolyline(x, y, n); } public static void draw(Graphics g, int fromx, int fromy, int tox, int toy) { int xp[] = { fromx, (fromx + tox) / 2, (fromx + tox) / 2, tox }; int yp[] = { fromy, fromy, toy, toy }; drawArcs(g, xp, yp, 4, bezier_steps); } /************************************************************************/ /* SpatiallySearchable */ private boolean lineSeg(int x0, int x1, int dx, int x, int y0, int y1, int dy, int ym, int yM) { double u = ((double) x - (double) x0) / (double) dx; //System.err.println("lineSeg x0=" + x + " x=" + x + " x1=" + x1 + " u=" + u); if ( ! ( 0.0 <= u && u <= 1.0 ) ) return false; int y = (int)((double) y0 + (double) dy * u); //System.err.println("lineSeg u=" + u + " y=" + y); if ( ! ( ym <= y && y <= yM ) ) return false; return true; } private String format(Rectangle r) { return "[" + r.x + "," + r.y + "," + (r.x + r.width) + "," + (r.y + r.height) + "]"; } private String format(int i) { return "i=" + i + " (" + px[i] + "," + py[i] + "," + px[i + 1] + "," + py[i + 1] + ")"; } public void findObjects(Rectangle r, int depth, Vector collect) { Rectangle pr = calcRect(); // // If the bounds of the arc does not intersect r // no segments of the arc can intersect. // if ( ! r.intersects(pr) ) return; // // If a point of the arc is in side r, // it's a hit. // if ( r.contains(px[0], py[0]) ) { //showDebug("findObject(): point in: " + format(0) + " " + format(r)); collect.addElement(this); } for ( int i = 0; i < pn - 1; i ++ ) { // // Compute a bounds for the i'th segment. // Rectangle lr = new Rectangle(px[i], py[i], 0, 0); lr.add(px[i + 1], py[i + 1]); // // If the segment's bound doesn't intersect r, // give up on this segment. // if ( r.intersects(lr) ) { //System.err.println("findObjects(r=" + r + ", lr=" + lr + ")"); // // Point testing. // if ( r.contains(px[i + 1], py[i + 1]) ) { //showDebug("findObject(): one in: " + format(i + 1) + " " + format(r)); collect.addElement(this); return; } else { // // This means both p[i] and p[i + 1] // are outside r but the segment[i]'s bound // intersects. // int dx = px[i + 1] - px[i]; int dy = py[i + 1] - py[i]; if ( dx == 0 || dy == 0 ) { // // If line is horizontal or vertical // it must completely span r. // //showDebug("findObject(): dx || dy == 0; " + format(i) + " " + format(r)); collect.addElement(this); return; } else { // // Attempt to find on of the four possible interections // of segment[i] against the four sides of r. // if ( lineSeg(px[i], px[i + 1], dx, r.x, py[i], py[i + 1], dy, r.y, r.y + r.height ) || lineSeg(px[i], px[i + 1], dx, r.x + r.width, py[i], py[i + 1], dy, r.y, r.y + r.height ) || lineSeg(py[i], py[i + 1], dy, r.y, px[i], px[i + 1], dx, r.x, r.x + r.width ) || lineSeg(py[i], py[i + 1], dy, r.y + r.height, px[i], px[i + 1], dx, r.x, r.x + r.width ) ) { //showDebug("findObject(): sloped " + dy + "/" + dx + ": " + format(i)); collect.addElement(this); return; } } } } } } /*********************************************************************/ /* Drawable */ private void movePoints(int dx, int dy) { for ( int i = 0; i < pn; i ++ ) { px[i] += dx; py[i] += dy; } } public void draw(Graphics g) { fr = ((Pad) from).node().getRect(g); tr = ((Pad) to).node().getRect(g); fpr = ((Pad) from).getRect(g); tpr = ((Pad) to).getRect(g); calcPoints(); // Draw in background color first movePoints(-1, 0); g.drawPolyline(px, py, pn); movePoints(2, 0); g.drawPolyline(px, py, pn); movePoints(-1, -1); g.drawPolyline(px, py, pn); movePoints(0, 2); g.drawPolyline(px, py, pn); movePoints(0, -1); g.setColor(selected() ? Color.yellow : color); g.drawPolyline(px, py, pn); } } conedit-0.2/src/conedit/Copier.java0100644000175200017560000000531207003453537017564 0ustar stephensstephens/* $Id: Copier.java,v 1.1 1999/10/20 23:59:27 stephensk Exp $ */ package com.ion.conedit; import java.util.Vector; import java.util.Hashtable; import java.util.Enumeration; import com.ion.conedit.Copyable; public class Copier extends Vector { Hashtable copied; Vector copies; Hashtable completed; void showDebug(String x) { //System.err.print("DEBUG: Copier: " + super.toString()); //System.err.println(x); } public Copier() { } public Copier(Enumeration e) { this(); set(e); } public Copier(Vector v) { this(v.elements()); } public void clear() { if ( copied != null ) copied.clear(); if ( completed != null ) completed.clear(); if ( copies != null ) copies.clear(); super.clear(); } public void set(Enumeration e) { clear(); while ( e.hasMoreElements() ) { add((Copyable) e.nextElement()); } complete(); } public Copyable add(Copyable x) { if ( x == null ) return x; Copyable copy = copy(x); addElement(copy); return copy; } public Copyable addRef(Copyable x, Copyable y) { Copyable copy; if ( x == null ) return x; if ( copied == null ) { copied = new Hashtable(); copies = new Vector(0); } if ( (copy = (Copyable) copied.get(x)) == x ) { copied.put(x, y); } return y; } public Copyable copy(Copyable x) { showDebug("copy(" + x + ")"); Copyable copy; if ( x == null ) return x; if ( copied == null ) { copied = new Hashtable(); copies = new Vector(0); } if ( (copy = (Copyable) copied.get(x)) == null ) { copied.put(x, x); // Guard copy = x.copy(this); showDebug("copy(" + x + "): copy = " + copy); copied.put(x, copy); copies.addElement(copy); } return copy; } public Copyable getRef(Copyable x) { Copyable y; if ( x == null ) return x; if ( copied == null ) { return null; } y = (Copyable) copied.get(x); showDebug("getRef(" + x + ")=" + y); return y; } public Copyable complete(Copyable x) { Copyable y; if ( x == null ) return x; if ( completed == null ) { completed = new Hashtable(0); } if ( (y = (Copyable) completed.get(x)) == null ) { completed.put(x, x); // Guard y = x.complete(this); completed.put(x, y); } showDebug("complete(" + x + ")=" + y); return y; } public void complete() { /* Complete copies in reverse order */ if ( copies != null ) { for ( int i = 0; i < copies.size(); i ++) { Copyable x = (Copyable) copies.elementAt(i); Copyable y = complete(x); showDebug("complete(): x=" + x + " y=" + y); //copies.setElementAt(y, i); } copies.clear(); } } } conedit-0.2/src/conedit/Copyable.java0100644000175200017560000000035207003453537020100 0ustar stephensstephens/* $Id: Copyable.java,v 1.2 1999/10/20 23:59:27 stephensk Exp $ */ package com.ion.conedit; import com.ion.conedit.Copier; public interface Copyable { public Copyable copy(Copier p); public Copyable complete(Copier p); } conedit-0.2/src/conedit/Drawable.java0100644000175200017560000000031207003453537020057 0ustar stephensstephens/* $Id: Drawable.java,v 1.4 1999/10/20 23:59:27 stephensk Exp $ */ package com.ion.conedit; import java.awt.Graphics; public abstract interface Drawable { public abstract void draw(Graphics g); } conedit-0.2/src/conedit/Editable.java0100644000175200017560000000057607003623156020057 0ustar stephensstephens/* $Id: Editable.java,v 1.2 1999/10/21 14:42:54 stephensk Exp $ */ package com.ion.conedit; import com.ion.conedit.*; public interface Editable { public void deleteEdit(); public void copyEdit(Copier cp); public void pasteEdit(Selection sel); //public void selectAllEdit(Selection sel); //public void moveToFrontEdit(); //public void moveToBackEdit(); } conedit-0.2/src/conedit/EmptyEnumeration.java0100644000175200017560000000062407003453540021643 0ustar stephensstephens/* $Id: EmptyEnumeration.java,v 1.1 1999/10/20 23:59:28 stephensk Exp $ */ package com.ion.conedit; import java.util.Enumeration; public class EmptyEnumeration implements Enumeration { public final static Enumeration instance = new EmptyEnumeration(); private EmptyEnumeration() { } public boolean hasMoreElements() { return false; } public Object nextElement() { return null; } } conedit-0.2/src/conedit/FileURLConnection.java0100644000175200017560000000352107003453540021617 0ustar stephensstephens/* $Id: FileURLConnection.java,v 1.1 1999/10/20 23:59:28 stephensk Exp $ */ package com.ion.conedit; import java.net.*; import java.io.*; public class FileURLConnection extends URLConnection { public FileURLConnection(URL url) { super(url); setDoOutput(true); } public void connect() { connected = true; } public static String getFilename(URL url) { String fname = url.getFile(); if ( ! (url.getHost().equals("") || url.getHost().equals("localhost")) ) { fname = "//" + url.getHost() + fname; } return fname; } private String getFilename() { return getFilename(url); } public OutputStream getOutputStream() throws IOException { File f = new File(getFilename()); OutputStream o = new FileOutputStream(f); return o; } public InputStream getInputStream() throws IOException { File f = new File(getFilename()); InputStream o = new FileInputStream(f); return o; } } class FileURLStreamHandler extends URLStreamHandler { private static URLStreamHandler instance; static URLStreamHandler instance() { if ( instance == null ) { instance = new FileURLStreamHandler(); } return instance; } public URLConnection openConnection(URL u) { return new FileURLConnection(u); } } /* class FileURLStreamHandlerFactory implements URLStreamHandlerFactory { URLStreamHandlerFactory f; static void init() { URLStreamHandlerFactory old = URL.factory; URL.factory = new FileURLStreamHandlerFactory(old); } FileURLStreamHandlerFactory(URLStreamHandlerFactory q) { f = q; } public URLStreamHandler createURLStreamHandler(String protocol) { if ( protocol.equals("file") ) { return new FileURLStreamHandler(); } else if ( f != null ) { return f.createURLStreamHandler(protocol); } return null; } } */ conedit-0.2/src/conedit/Makefile0100664000175200017560000000332707653666325017162 0ustar stephensstephens# $Id: Makefile,v 1.13 2003/04/30 06:27:33 stephens Exp $ JAVA_FILES = \ EmptyEnumeration.java \ Selectable.java \ Selection.java \ Drawable.java \ Mouseable.java \ SpatiallySearchable.java \ Editable.java \ Moveable.java \ ConPoints.java \ Connection.java \ Connectable.java \ Pad.java \ ConCreator.java \ Node.java \ ConEditor.java \ ConApp.java \ ConApplet.java \ Copyable.java \ Copier.java \ ConIO.java \ FileURLConnection.java JAVA_PACKAGE=com/ion/conedit #ifneq "$(strip $(JDK_ROOT))" "" #JDK_ROOT = $(APPS)/dev/java/ #JDK_VERSION = jdk1.2.2 #JDK=$(JDK_ROOT)/$(JDK_VERSION) #JDK_BIN=$(JDK)/bin/ #PATH:=$(JDK_BIN):$(PATH) #endif JDK_BIN= JAVAC=$(JDK_BIN)javac JAR=$(JDK_BIN)jar JAVAC_DEPRECATION=-deprecation #JAVAC_DEPRECATION= JAVAC_FLAGS += -g $(JAVAC_DEPRECATION) JAVAC_CLASSPATH = -cp ".:classes" #JAVAC_CLASSPATH = JAVAC_CLASS_DIR_ROOT=classes JAVAC_CLASS_DIR =$(JAVAC_CLASS_DIR_ROOT)/com/ion/conedit NAME = conedit PROJECT_JAR=$(NAME).jar ################################################################ JAVA_CLASS_FILES = $(JAVA_FILES:.java=.class) all : $(JAVAC_CLASS_DIR) java_class_files java_class_files : $(JAVA_CLASS_FILES) $(JAVAC_CLASS_DIR) : mkdir -p $@ jv=$(JAVAC_CLASS_DIR)/.jv $(JAVA_CLASS_FILES) : $(jv) $(jv) : $(JAVA_FILES) $(JAVAC) $(JAVAC_FLAGS) -d $(JAVAC_CLASS_DIR_ROOT) $(JAVA_FILES) echo "$(JAVA_FILES)" > $@ project-jar : $(PROJECT_JAR) $(PROJECT_JAR) : java_class_files $(JAR) -cf $@ -C classes com testapplet : all index.html appletviewer index.html testapp : all java $(JAVAC_CLASSPATH) com.ion.conedit.ConApp debugapp : all jdb $(JAVAC_CLASSPATH) com.ion.conedit.ConApp.class clean : rm -f $(jv) $(JAVAC_CLASS_DIR)/*.class $(PROJECT_JAR) conedit-0.2/src/conedit/Mouseable.java0100644000175200017560000000055407003623157020257 0ustar stephensstephens/* $Id: Mouseable.java,v 1.6 1999/10/21 14:42:55 stephensk Exp $ */ package com.ion.conedit; import java.awt.event.MouseEvent; public abstract interface Mouseable { public abstract boolean mouseDown(MouseEvent e, int x, int y); public abstract boolean mouseDrag(MouseEvent e, int x, int y); public abstract boolean mouseUp(MouseEvent e, int x, int y); } conedit-0.2/src/conedit/Moveable.java0100644000175200017560000000027607003623157020076 0ustar stephensstephens/* $Id: Moveable.java,v 1.1 1999/10/21 14:42:55 stephensk Exp $ */ package com.ion.conedit; import com.ion.conedit.*; public interface Moveable { public void moveBy(int x, int y); } conedit-0.2/src/conedit/Node.java0100644000175200017560000005663107031474014017234 0ustar stephensstephens/* $Id: Node.java,v 1.13 1999/12/26 20:18:20 stephensk Exp $ */ package com.ion.conedit; import java.awt.*; import java.io.*; import java.net.*; import java.awt.event.MouseEvent; import java.util.Vector; import java.util.Enumeration; import java.lang.String; import com.ion.conedit.*; public class Node implements Selectable, Drawable, Moveable, SpatiallySearchable, Copyable, Connectable, Editable { final static int LEFT = ConPoints.LEFT; final static int RIGHT = ConPoints.RIGHT; final static int TOP = ConPoints.TOP; final static int BOTTOM = ConPoints.BOTTOM; final static int NSIDES = ConPoints.NSIDES; final static String inputType = "in"; final static String outputType = "out"; final static String inoutType = "inout"; private String label; private String type; private int x; private int y; private Color color; private Vector _pads[]; private Vector pads; private Vector connections; private Node parent; private Vector nodes; private Selection selection; private ConEditor editor; private URL url; private boolean selected; private int highlighted; /********************************************************************/ public static Node node_default = new Node("node", "node", Color.white); public Node(String label, String type, Color color, int x, int y) { this.label = label; this.type = type; this.color = color; this.x = x; this.y = y; selected = false; highlighted = 0; _pads = new Vector[NSIDES]; pads = new Vector(0); } public Node(String label, String type, Color color) { this(label, type, color, 0, 0); } public Node(int x, int y) { this(null, null, null, x, y); } public Node() { this(0, 0); } public void fillWith(Node n) { if ( n == null ) n = node_default; if ( this == n ) return; if ( this.label == null ) this.label = n.label; if ( this.type == null ) this.type = n.type; if ( this.color == null ) this.color = n.color; } public Node(String l, String t, Color c, int _x, int _y, int ni, int no) { this(l, t, c, _x, _y); Pad p; for ( int i = ni; -- i >= 0; ) { p = new Pad(LEFT); add(p); } for ( int i = no; -- i >= 0; ) { p = new Pad(RIGHT); add(p); } } /********************************************************************/ /* connections */ public Enumeration connections() { return connections != null ? connections.elements() : EmptyEnumeration.instance; } public void add(Connection c) { if ( c == null ) return; if ( connections == null ) { connections = new Vector(1); } connections.addElement(c); } public void remove(Connection c) { if ( c == null ) return; if ( connections != null ) { connections.removeElement(c); } } public void updateConnections() { if ( connections != null ) { connections.setSize(0); } for ( Enumeration e = pads(); e.hasMoreElements(); ) { Pad pad = (Pad) e.nextElement(); for ( Enumeration cs = pad.connections(); cs.hasMoreElements(); ) { Connection c = (Connection) cs.nextElement(); add(c); } } } public void clearConnections() { //showDebug("clearConnections()"); for ( Enumeration i = pads(); i.hasMoreElements(); ) { Pad pad = (Pad) i.nextElement(); pad.clearConnections(); } } /********************************************************************/ /* pads */ public Enumeration pads() { return pads != null ? pads.elements() : EmptyEnumeration.instance; } public Enumeration pads(int i) { return _pads[i] != null ? _pads[i].elements() : EmptyEnumeration.instance; } private void updatePadOffsets(int pos, int off) { if ( _pads[pos] != null ) { for ( int i = off; i < _pads[pos].size(); i ++ ) { Pad pad = (Pad) _pads[pos].elementAt(i); pad.off = i; //showDebug("updatePadOffsets(): p=" + pad.toStringLong()); } } } public void add(Pad p) { if ( p == null ) return ; if ( p.node() == this ) return; p._setNode(this); // Default position if ( p.pos < 0 ) p.pos = LEFT; // Init containers if ( _pads[p.pos] == null ) { _pads[p.pos] = new Vector(1); } if ( pads == null ) { pads = new Vector(1); } // Default location: at end if ( p.off < 0 || p.off > _pads[p.pos].size() ) { p.off = _pads[p.pos].size(); } // Default values Pad d; if ( p.off > 0 ) { d = (Pad) _pads[p.pos].elementAt(p.off - 1); } else { d = Pad.pad_default[p.pos]; } //showDebug("add(d = " + d.toStringLong() + ")"); p.fillWith(d); // Uniquify pad name while ( getPadNamed(p.label) != null ) { p.label = ConApp.increment(p.label); } //showDebug("add(Pad " + p.toStringLong() + ")"); // Add p _pads[p.pos].insertElementAt(p, p.off); pads.addElement(p); // Update pad offsets. updatePadOffsets(p.pos, p.off); // Add any new connections to this. for ( Enumeration e = p.connections(); e.hasMoreElements(); ) { Connection c = (Connection) e.nextElement(); add(c); } // Our rect has probably changed invalidatePoints(); } public void remove(Pad p) { if ( p == null ) return; if ( p.node() != this ) return; p._setNode(null); if ( p.off >= 0 ) { if ( _pads[p.pos] != null ) { _pads[p.pos].removeElement(p); updatePadOffsets(p.pos, p.off); } } p.off = -1; if ( pads != null ) { pads.removeElement(p); } // for ( Enumeration i = p.connections(); i.hasMoreElements(); ) { Connection c = (Connection) i.nextElement(); remove(c); } invalidatePoints(); } public void emptyPads() { for ( int i = NSIDES; -- i >=0 ; ) { _pads[i] = null; } if ( pads != null ) { for ( Enumeration i = pads(); i.hasMoreElements(); ) { Pad pad = (Pad) i.nextElement(); pad.clearConnections(); pad.setNode(null); } pads.setSize(0); } if ( connections != null ) { connections.setSize(0); } } public int npads(int i) { return _pads[i] != null ? _pads[i].size() : 0; } public Pad padAt(int pos, int off) { if ( _pads[pos] != null && off < _pads[pos].size() ) { return (Pad) _pads[pos].elementAt(off); } else { return null; } } public Pad getPadNamed(String s) { for ( Enumeration e = pads(); e.hasMoreElements(); ) { Pad p = ((Pad) e.nextElement()); if ( p.label.equals(s) ) return p; } return null; } public Pad next(Pad p) { int off = p.off; int pos = p.pos; off ++; while ( off >= npads(pos) ) { pos = (pos + 1) % NSIDES; off = 0; if ( pos == p.pos && off == p.off ) { return null; } } return padAt(pos, off); } /********************************************************************/ /* attributes */ public String label() { return label; } public void setLabel(String x) { label = x; invalidatePoints(); } public String type() { return type; } public void setType(String x) { type = x; } public int getX() { return x; } public int getY() { return y; } public void setX(int z) { x = z; invalidatePoints(); } public void setY(int z) { y = z; invalidatePoints(); } public void setXY(int a, int b) { x = a; y = b; invalidatePoints(); } public Color color() { return color; } public void setColor(Color c) { color = c; if ( editor != null && c != null ) { editor.setBackground(c); } } public URL url() { return url; } public void setUrl(URL u) { url = u; if ( editor != null && url != null ) { editor.setFilename(url.toString()); } } /********************************************************************/ /* editor */ public ConEditor editor() { return editor != null ? editor : (parent != null ? parent.editor() : null); } public void setEditor(ConEditor x) { editor = x; setColor(this.color); setUrl(this.url); } /********************************************************************/ /* misc */ void showDebug(String x) { System.err.print("Node: " + toStringLong() + ": "); System.err.println(x); } void showStatus(String x) { editor().showStatus(x); } public String toStringShort() { return super.toString(); } public String toStringLong() { return toStringShort() + "[" + toString() + "]"; } public static String toString(Enumeration e) { String s = "["; if ( e != null ) { while ( e.hasMoreElements() ) { s += e.nextElement().toString(); if ( e.hasMoreElements() ) { s += ", "; } } } s += "]"; return s; } /********************************************************************/ /* parent */ public Node parent() { return parent; } public void setParent(Node p) { if ( parent == p ) return; if ( parent != null ) { parent.remove(this); } parent = p; if ( parent != null ) { parent.add(this); } } public Node root() { return parent != null ? parent.root() : this; } /********************************************************************/ /* subnodes */ public Enumeration nodes() { return nodes != null ? nodes.elements() : EmptyEnumeration.instance; } public void add(Node node) { if ( node == null ) return; if ( node.parent == this ) return; if ( node.parent != null ) node.parent.remove(node); Node d = node_default; if ( nodes != null && nodes.size() > 0 ) { d = (Node) nodes.lastElement(); } node.fillWith(d); if ( nodes == null ) { nodes = new Vector(1); } while ( getNodeNamed(node.label) != null ) { node.label = ConApp.increment(node.label); } node.parent = this; nodes.addElement(node); } public void remove(Node node) { if ( node == null ) return; if ( node.parent != this ) return; node.parent = null; if ( nodes != null ) { nodes.removeElement(node); } node.clearConnections(); } public void remove() { if ( parent != null ) { parent.remove(this); parent = null; } } public void emptyNodes() { if ( nodes != null ) { nodes.setSize(0); } } public Node getNodeNamed(String s) { if ( s.equals(".") ) { return this; } if ( s.equals("..") ) { return parent; } if ( s.equals("/") ) { return root(); } if ( nodes != null ) { for ( Enumeration e = nodes.elements(); e.hasMoreElements(); ) { Node p = ((Node) e.nextElement()); if ( p.label.equals(s) ) return p; } } return null; } public Pad getNodePadNamed(String noden, String padn) { Node node = getNodeNamed(noden); return node != null ? node.getPadNamed(padn) : null; } /********************************************************************/ /* Copyable */ public Copyable copy(Copier p) { Node c = new Node(label, type, color, x, y); p.addRef(this, c); /* Copy pads */ for ( Enumeration i = pads(); i.hasMoreElements(); ) { Pad pad = (Pad) i.nextElement(); Pad padc = (Pad) p.copy(pad); //showDebug("copy(): pad=" + pad + " padc=" + padc); c.add(padc); } /* Clone connections */ if ( connections != null ) { c.connections = new Vector(1); for ( Enumeration i = connections(); i.hasMoreElements(); ) { Connection con = (Connection) i.nextElement(); //showDebug("copy(): con=" + con.toStringLong()); Pad pad = (Pad) con.from(); if ( pad != null && pad.node() == this ) { Connection conc = (Connection) con.clone(); //showDebug("copy(): con=" + con.toStringLong() + " conc=" + conc.toStringLong()); c.add(conc); } } } return c; } public Copyable complete(Copier p) { /* ** Scan through all connections finding any connections that ** are attached to another Node in the Copyer. */ if ( connections != null ) { Vector cons = connections; connections = null; for ( Enumeration i = cons.elements(); i.hasMoreElements(); ) { Connection c = (Connection) i.nextElement(); //showDebug("complete(): connection=" + c.toStringLong()); Pad f = (Pad) p.getRef((Pad) c.from()); Pad t = (Pad) p.getRef((Pad) c.to()); //showDebug("complete(): connection(" + f + ", " + t + ")"); if ( f != null && t != null ) { c = new Connection(f, t, c.type); if ( c.connect() ) { //showDebug("complete(): t.cons = " + toString(f.connections())); //showDebug("complete(): t.node().cons = " + toString(f.node().connections())); //showDebug("complete(): f.cons = " + toString(t.connections())); //showDebug("complete(): f.node().cons = " + toString(t.node().connections())); //f.node().updateConnections(); //t.node().updateConnections(); } } } } updateConnections(); return this; } /*****************************************************/ /* Editable */ public void deleteEdit() { //showDebug("deleteEdit()"); remove(); } public void copyEdit(Copier cp) { //showDebug("copyEdit()"); cp.add(this); } public void pasteEdit(Selection sel) { if ( sel.owner instanceof Node ) { //showDebug("pasteEdit()"); Node p = (Node) sel.owner; p.add(this); } } /********************************************************************/ public String toString() { return label; } /********************************************************************/ /* Connectable */ public boolean canConnect(Connection c) { if ( c.from == c.to ) return false; if ( (((Pad) c.from()).pos == ((Pad) c.to()).pos) ) return false; if ( ! (((Pad) c.from()).type == outputType && ((Pad) c.to()).type == inputType) ) { c.swap(); } return true; } public boolean connect(Connection c) { //showDebug("connect(" + c.toStringLong() + ")"); /* Remember all connections. */ add(c); return true; } public boolean canDisconnect(Connection c) { return true; } public boolean disconnect(Connection c) { //showDebug("disconnect(" + c.toStringLong() + ")"); remove(c); return true; } public Connection connect(String fnode, String fpad, String type, String tnode, String tpad) { Pad f = getNodePadNamed(fnode, fpad); Pad t = getNodePadNamed(tnode, tpad); Connection c = null; if ( f != null && t != null ) { c = new Connection(f, t, type); c = c.connect() ? c : null; } return c; } /********************************************************************/ /* Selectable */ public boolean selected() { return selected; } public void setSelected(boolean x) { selected = x; } /********************************************************************/ /* selection */ public void moveSelectionBy(int dx, int dy) { if ( selection != null ) { for ( Enumeration e = selection.selected(); e.hasMoreElements() ; ) { Object q = e.nextElement(); if ( q instanceof Moveable ) { ((Moveable) q).moveBy(dx, dy); } } } } public Selection selection() { if ( selection == null ) { selection = new Selection(); selection.owner = this; } return selection; } /********************************************************************/ /* highlighted */ public boolean highlighted() { return highlighted > 0; } public void setHighlighted(boolean x) { if ( x ) highlighted ++; else highlighted --; } /********************************************************************/ final static int pad_spacing = 2; Rectangle getPadRectX(Graphics g, int npads, int px, int i) { int py = y - (npads * (Pad.height + pad_spacing) - Pad.spacing) / 2; return new Rectangle(px, py + (i * (Pad.height + Pad.spacing)), Pad.width, Pad.height); } Rectangle getPadRectY(Graphics g, int npads, int py, int i) { int px = x - (npads * (Pad.width + Pad.spacing) - Pad.spacing) / 2; return new Rectangle(px + (i * (Pad.width + Pad.spacing)), py, Pad.width, Pad.height); } public Rectangle getPadRect(Graphics g, Pad p) { int i; Rectangle r = getRect(g); switch ( p.pos ) { case LEFT: return getPadRectX(g, npads(p.pos), r.x - Pad.width / 2, p.off); case RIGHT: return getPadRectX(g, npads(p.pos), r.x + r.width - Pad.width / 2, p.off); case TOP: return getPadRectY(g, npads(p.pos), r.y + r.height - Pad.height / 2, p.off); case BOTTOM: return getPadRectY(g, npads(p.pos), r.y - Pad.height / 2, p.off); } return new Rectangle(); } public Rectangle getLabelRect(Graphics g) { FontMetrics fm = g.getFontMetrics(); int lw = fm.stringWidth(label); int lh = fm.getHeight(); return new Rectangle(x - lw / 2, y - lh / 2, lw, lh); } public Rectangle getRect(Graphics g) { Rectangle lr = getLabelRect(g); int w = lr.width + 4 + 10; int h = lr.height + 4 + 10; w = Math.max(w, Math.max(npads(TOP), npads(BOTTOM)) * (Pad.width + Pad.spacing) + Pad.width + 4); h = Math.max(h, Math.max(npads(LEFT), npads(RIGHT)) * (Pad.height + Pad.spacing) + Pad.height + 4); return new Rectangle(x - w / 2, y - h / 2, w, h); } public Rectangle getAllRect(Graphics g) { Rectangle r = getRect(g); int pw = (Pad.width + 2); int ph = (Pad.height + 2); if ( npads(LEFT) > 0 ) { r.x -= pw / 2; // half on left r.width += pw / 2; // half on right } if ( npads(RIGHT) > 0 ) { r.width += pw / 2; } if ( npads(TOP) > 0 ) { r.height += ph / 2; } if ( npads(BOTTOM) > 0 ) { r.y -= ph / 2; r.height += ph / 2; } return r; } /*******************************************************************/ /* Drawable */ void drawPads(Graphics g, Color c) { if ( pads != null ) { for ( int i = pads.size(); -- i >= 0; ) { Pad p = (Pad) pads.elementAt(i); Rectangle r = getPadRect(g, p); g.setColor(c); p.draw(g, r.x, r.y); } } } public void draw(Graphics g) { if ( editor != null ) { /* Draw connections */ if ( nodes != null ) { int i; /* Draw each node's connections. */ for ( i = nodes.size(); -- i >= 0; ) { ((Node) nodes.elementAt(i)).drawConnections(g); } /* Draw drawables */ editor().drawDrawables(g); /* Draw nodes in order */ i = 0; for ( int l = nodes.size(); i < l; i ++ ) { ((Node) nodes.elementAt(i)).draw(g); } } } else { Rectangle r = getRect(g); Rectangle lr = getLabelRect(g); g.setColor(color); g.fillRect(r.x, r.y, r.width, r.height); g.setColor(selected || highlighted() ? Color.yellow : Color.black); g.drawRect(r.x, r.y, r.width, r.height); g.setColor(Color.black); g.drawString(label, lr.x, lr.y + g.getFontMetrics().getAscent()); drawPads(g, Color.white); } } public void drawConnections(Graphics g) { for ( Enumeration b = connections(); b.hasMoreElements(); ) { /* Draw from this side. */ Connection c = (Connection) b.nextElement(); Pad p = (Pad) c.from(); if ( p != null && p.node() == this ) { g.setColor(parent().color()); c.draw(g); } } } /*******************************************************************/ /* SpatiallySearchable */ public void findObjects(Rectangle r, int depth, Vector collect) { if ( editor != null ) { if ( nodes != null ) { // Search in reverse order for ( int i = nodes.size(); -- i >= 0; ) { Node n = (Node) nodes.elementAt(i); n.findObjects(r, depth, collect); } } } else /* Is any part of us in r? */ if ( getAllRect(editor().gCached()).intersects(r) ) { if ( depth > 1 ) { /* Check pads. */ for ( Enumeration e = pads(); e.hasMoreElements(); ) { Pad p = (Pad) e.nextElement(); if ( p.getRect(editor().gCached()).intersects(r) ) { collect.addElement(new ConCreator(p)); return; } } /* No pads found. */ /* Must be us. */ collect.addElement(this); } else { /* Must be us. */ collect.addElement(this); } } else { if ( depth > 0 ) { /* Check connections. */ for ( Enumeration e = connections(); e.hasMoreElements(); ) { Connection c = (Connection) e.nextElement(); // FIXME: work around if ( c.from() == null || c.to() == null ) { showDebug("Disconnected connection found: " + c); remove(c); } else if ( ((Pad) c.from()).node() == this ) { c.findObjects(r, depth - 1, collect); } } /* None. */ } } } public void invalidatePoints() { for ( Enumeration a = connections(); a.hasMoreElements(); ) { Connection c = (Connection) a.nextElement(); //showDebug("invalidatePoints(): " + c); c.invalidatePoints(); } } /*******************************************************************/ /* Moveable */ public void moveBy(int dx, int dy) { /* Move by dx, dy */ setXY(x + dx, y + dy); } /**********************************************************************/ /* Save */ public static OutputStream getOutputStream(URL url) throws IOException { if ( url.getProtocol().equals("file") ) { return new FileOutputStream(new File(FileURLConnection.getFilename(url))); } URLConnection con = url.openConnection(); con.setDoOutput(true); return con.getOutputStream(); } public void write(OutputStream out) throws Throwable { ConIO io = new ConIO(out); io.writeRoot(this); io.close(); } public boolean save() { return save(url); } public boolean save(URL f) { showDebug("save(" + f + ")"); try { //write(System.out); showStatus("Writing \"" + f + "\"..."); OutputStream out = getOutputStream(f); write(out); out.close(); url = f; showStatus("Wrote \"" + f + "\"."); return true; } catch ( Throwable e ) { showStatus("Couldn't write \"" + f + "\": " + e.toString()); } return false; } /**********************************************************************/ /* Load */ public void read(InputStream in) throws Throwable { ConIO io = new ConIO(in); io.readRoot(this); io.close(); } public boolean load() { return load(url); } public boolean load(URL f) { showDebug("load(" + f + ")"); try { showStatus("Reading \"" + f + "\"..."); InputStream s = f.openConnection().getInputStream(); read(s); s.close(); setUrl(f); showStatus("Read \"" + f + "\"."); return true; } catch ( Throwable e ) { showStatus("Couldn't read \"" + f + "\": " + e.toString()); } return false; } /**********************************************************************/ /* self-test */ public void _test_init() { try { setUrl(new URL("file://localhost/foobar")); } catch ( Throwable t ) { } setLabel(""); setType(""); setColor(new Color(0.5f, 0.7f, 0.2f)); add(new Node("OutNode", "", Color.white, 75, 50, 0, 3)); add(new Node("Node", "", Color.red, 175, 50, 0, 0)); add(new Node("InNode", "", Color.blue, 200, 150, 5, 0)); add(new Node("InOutNode1", "", Color.green, 75, 100, 3, 3)); add(new Node("InOutNode2", "", Color.green, 100, 200, 4, 2)); connect("OutNode", "out1", "->", "InNode", "in1"); connect("OutNode", "out2", "->", "InOutNode", "in2"); connect("InOutNode1", "out2", "->", "InNode", "in3"); connect("InOutNode1", "out3", "->", "InOutNode2", "in4"); connect("InOutNode2", "out1", "->", "InNode", "in5"); } } conedit-0.2/src/conedit/PKG0100664000175200017560000000032307653666325016057 0ustar stephensstephensNAME=conedit VERSION=0.2 RCS_ID="$Id: PKG,v 1.2 2003/04/30 06:27:33 stephens Exp $" DESC="A Java dag editor." MAKE_CLEAN="clean all" CHANGES_RELEASES="" CATEGORY="Editors" REQUIRES_PKGS="" REQUIRES_OTHERS="jdk" conedit-0.2/src/conedit/Pad.java0100644000175200017560000002214307003626570017047 0ustar stephensstephens/* $Id: Pad.java,v 1.10 1999/10/21 15:12:56 stephensk Exp $ */ package com.ion.conedit; import java.awt.*; import java.util.*; // Vector, Enumeration import com.ion.conedit.*; public class Pad implements Copyable, Connectable, Selectable, Editable { public final static int width = 7; public final static int height = 7; public final static int spacing = 2; public final static int LEFT = ConPoints.LEFT; public final static int RIGHT = ConPoints.RIGHT; public final static int TOP = ConPoints.TOP; public final static int BOTTOM = ConPoints.BOTTOM; public final static int NSIDES = ConPoints.NSIDES; public String label; public String type; public Color color; public int pos; private Node node; private Vector connections; public int off; int highlighted; boolean selected; public static Pad pad_default[] = new Pad[NSIDES]; static { pad_default[LEFT] = new Pad("in1", "in", Color.green, LEFT); pad_default[RIGHT] = new Pad("out1", "out", Color.blue, RIGHT); pad_default[TOP] = new Pad("bot1", "bot", Color.magenta, TOP); pad_default[BOTTOM] = new Pad("top1", "top", Color.cyan, BOTTOM); } public Pad(String label, String type, Color color, int pos) { this.label = label; this.type = type; this.color = color; this.pos = pos; node = null; connections = null; highlighted = 0; off = -1; } public Pad(int pos) { this(null, null, null, pos); } public Pad() { this(0); } public void fillWith(Pad p) { if ( p == null ) return; if ( p == this ) return; if ( this.label == null ) { this.label = p.label; } if ( this.type == null ) { this.type = p.type; } if ( this.color == null ) { this.color = p.color; } if ( this.pos < 0 ) { this.pos = p.pos; } if ( this.off < 0 ) { this.off = p.off; } } /*****************************************************/ /* debug */ public void showDebug(String x) { System.err.print("DEBUG: Pad: " + this.toStringLong() + ": "); System.err.println(x); } public String toStringShort() { return super.toString(); } public String toStringLong() { return toStringShort() + "[" + toString() + ",color=" + color + ",pos=" + pos + ",off=" + off + "]"; } public String toString() { return (node != null ? node.label() : "") + "." + label; } /*****************************************************/ /* attributes */ public String label() { return label; } public String type() { return type; } public Color color() { return color; } /*****************************************************/ /* node */ public Node node() { return node; } public void _setNode(Node n) { node = n; } public void setNode(Node n) { if ( node == n ) return; if ( node != null ) { node.remove(this); } if ( node != null ) { n.add(this); } node = n; } /*****************************************************/ /* Copyable */ public Object clone() { Pad c = new Pad(); c.label = label; c.type = type; c.color = color; c.pos = pos; return c; } public Copyable copy(Copier p) { Pad c = (Pad) this.clone(); return c; } public Copyable complete(Copier p) { return this; } /*****************************************************/ /* Editable */ public Pad next() { return node != null ? node.next(this) : null; } public void deleteEdit() { //showDebug("deleteEdit()"); // Select next Pad node.editor().selection().select(next()); // Clear our connections clearConnections(); // Remove from node node.remove(this); } public void copyEdit(Copier cp) { //showDebug("copyEdit()"); cp.add(this); } public void pasteEdit(Selection sel) { //showDebug("pasteEdit()"); if ( sel.size() > 0 ) { Object sf = sel.firstElement(); Node node = null; // Paste at end of currently selected Node if ( sf instanceof Node ) { node = (Node) sf; this.off = -1; // Paste before currently selected Pad } else if ( sf instanceof Pad ) { node = ((Pad) sf).node(); this.off = ((Pad) sf).off; } if ( node != null ) { //showDebug("pasteEdit(): node=" + node); node.add(this); } } } /*****************************************************/ /* connections */ public Enumeration connections() { return connections != null ? connections.elements() : EmptyEnumeration.instance; } public void add(Connection c) { if ( c == null ) return; if ( c.from() == null && c.to() == null ) return; if ( connections == null ) { connections = new Vector(1); } connections.addElement(c); if ( node != null ) { node.add(c); } } public void remove(Connection c) { if ( c == null ) return; if ( connections == null ) return; connections.removeElement(c); } public void clearConnections() { if ( connections != null ) { Vector c = connections; connections = null; for ( Enumeration a = c.elements(); a.hasMoreElements(); ) { Connection con = (Connection) a.nextElement(); //showDebug("clearConnections(): " + con); con.disconnect(); } } } public boolean isConnectedTo(Connectable c) { for ( Enumeration a = connections(); a.hasMoreElements(); ) { Connection con = (Connection) a.nextElement(); if ( con.peer(this) == c ) { return true; } } return false; } /*****************************************************/ /* Connectable */ public boolean canConnect(Connection c) { //showDebug("canConnect(): " + c); return ! isConnectedTo(c.peer(this)) && node != null && node.canConnect(c); } public boolean connect(Connection c) { if ( node != null && ! node.connect(c) ) { return false; } add(c); return true; } public boolean canDisconnect(Connection c) { return node == null || node.canDisconnect(c); } public boolean disconnect(Connection c) { //showDebug("disconnect(" + c.toStringLong() + ")"); if ( node != null && ! node.disconnect(c) ) { return false; } remove(c); return true; } /*****************************************************/ public Rectangle getRect(Graphics g) { return node.getPadRect(g, this); } public Rectangle getTextRect(Graphics g, String s) { FontMetrics fm = g.getFontMetrics(); int lw = fm.stringWidth(label); int lh = fm.getHeight(); return new Rectangle(0, 0, lw, lh); } /*****************************************************/ public boolean selected() { return selected; } public void setSelected(boolean x) { selected = x; } /*****************************************************/ public boolean highlighted() { return highlighted > 0; } public void setHighlighted(boolean x) { if ( x ) highlighted ++; else highlighted --; if ( highlighted < 0 ) { showDebug("highlighted: " + highlighted); } } /*****************************************************/ final static int label_offset = 1; public Rectangle getTextRect(Graphics g, int x, int y, String s) { FontMetrics fm = g.getFontMetrics(); int lw = fm.stringWidth(label); int lh = fm.getHeight(); return new Rectangle(x - lw / 2 - 1, y - lh / 2 + fm.getAscent() - 2, lw, lh); } public Rectangle getLabelRect(Graphics g, int px, int py, String s) { Rectangle r = getTextRect(g, s); // Goto center of Pad px += width / 2; py += height / 2; r.width += 2; r.height += 2; px -= r.width / 2; py -= r.height / 2; switch ( pos ) { case ConPoints.LEFT: px -= label_offset + (width + r.width) / 2; break; case ConPoints.RIGHT: px += label_offset + (width + r.width) / 2; break; case ConPoints.TOP: py += label_offset + (height + r.height) / 2; break; case ConPoints.BOTTOM: py -= label_offset + (height + r.height) / 2; break; } return new Rectangle(px, py, r.width, r.height); } /*****************************************************/ public void draw(Graphics g, int px, int py) { // px, py are at top-left corner of rect Color tc = highlighted() || selected() ? Color.yellow : Color.black; /* Background */ g.setColor(color); g.fillRect(px, py, width, height); /* Border */ g.setColor(tc); g.drawRect(px, py, width, height); if ( highlighted() || selected() ) { Rectangle p = getLabelRect(g, px, py, label); Rectangle tr = getTextRect(g, p.x + width / 2, p.y + height / 2, label); /* Background */ g.setColor(color); g.fillRect(p.x, p.y, p.width, p.height); /* Border */ g.setColor(tc); g.drawRect(p.x, p.y, p.width, p.height); /* Text */ g.setColor(Color.black); g.drawString(label, tr.x + p.width / 2, tr.y + p.height / 2); } } /*****************************************************/ public void invalidatePoints() { for ( Enumeration a = connections(); a.hasMoreElements(); ) { ((Connection) a.nextElement()).invalidatePoints(); } } } conedit-0.2/src/conedit/Selectable.java0100644000175200017560000000033707003453541020403 0ustar stephensstephens/* $Id: Selectable.java,v 1.4 1999/10/20 23:59:29 stephensk Exp $ */ package com.ion.conedit; public abstract interface Selectable { public abstract boolean selected(); public abstract void setSelected(boolean x); } conedit-0.2/src/conedit/Selection.java0100644000175200017560000000373507031474016020273 0ustar stephensstephens/* $Id: Selection.java,v 1.5 1999/12/26 20:18:22 stephensk Exp $ */ package com.ion.conedit; import java.util.Vector; import java.util.Enumeration; import com.ion.conedit.Selectable; public class Selection extends Vector { public Object owner; /* ** Selection mgmt */ public Selection() { super(0); } public Enumeration selected() { return elements(); } public void clear() { for ( int i = size(); -- i >= 0 ; ) { ((Selectable) elementAt(i)).setSelected(false); } setSize(0); } public void select(Selectable x) { if ( x == null ) return; removeElement(x); addElement(x); x.setSelected(true); } public void deselect(Selectable x) { if ( x == null ) return; x.setSelected(false); removeElement(x); } public void toggle(Selectable x) { if ( x == null ) return; if ( x.selected() ) { deselect(x); } else { select(x); } } public void select(Vector v) { /* Remove duplicates */ for ( int i = v.size(); -- i >= 0; ) { removeElement(v.elementAt(i)); } /* Select each */ for ( int i = v.size(); -- i >= 0 ; ) { select((Selectable) v.elementAt(i)); } } public void deselect(Vector v) { for ( int i = v.size(); -- i >= 0; ) { deselect((Selectable) v.elementAt(i)); } } public void toggle(Vector v) { Vector sel = new Vector(); Vector desel = new Vector(); for ( int i = v.size(); -- i >= 0; ) { Object x = v.elementAt(i); (((Selectable) x).selected() ? desel : sel).addElement(x); } select(sel); deselect(desel); } public void set(Vector v) { clear(); select(v); } public void set(Selectable x) { clear(); select(x); } public static Vector vector(Enumeration e) { Vector v = new Vector(0); while ( e.hasMoreElements() ) { v.addElement(e.nextElement()); } return v; } public void set(Enumeration e) { set(vector(e)); } } conedit-0.2/src/conedit/SpatiallySearchable.java0100644000175200017560000000044207003453541022251 0ustar stephensstephens/* $Id: SpatiallySearchable.java,v 1.4 1999/10/20 23:59:29 stephensk Exp $ */ package com.ion.conedit; import java.awt.Rectangle; import java.util.Vector; public abstract interface SpatiallySearchable { public abstract void findObjects(Rectangle r, int depth, Vector collection); } conedit-0.2/src/conedit/index.html0100644000175200017560000000051607003453541017471 0ustar stephensstephens ConnectionEditor

ConnectionEditor

ConnectionEditor:

Here's the source: ConnectionEditor conedit-0.2/src/conedit/applet.html0100664000175200017560000000053107653666325017667 0ustar stephensstephens ConnectionEditor

ConnectionEditor

ConnectionEditor:

Here's the source: ConnectionEditor conedit-0.2/src/GUM_BUILD_ROOT0100664000175200017560000000064107653666444016230 0ustar stephensstephens# $Id: GUM_BUILD_ROOT,v 1.4 2001/08/06 11:02:09 stephens Exp $ # Build options DEBUG=YES #OPTIMIZE=NO # output root is ../gumo GUM_GENERATED_ROOT:=$(shell cd $(GUM_BUILD_ROOT)/../gumo && /bin/pwd)# # Quick install. GUM_GENERATED_LIB_DIR=$(INSTALL_DIR_LIB)# # Pick up /iimp stuff PATH:=/iimp/app/prod/bin:$(PATH) INCLUDE_DIRS_GLOBAL:=$(GUM_BUILD_ROOT) /iimp/app/prod/include# LIB_DIRS_GLOBAL:=/iimp/app/prod/lib# conedit-0.2/README0100664000175200017560000000141607653666444014165 0ustar stephensstephensconedit 0.2 README ============================================================================== Copyright (c) 1997-2003 Kurt A. Stephens and Ion, Inc., All Rights Reserved. http://www.ionink.com/stephens Kurt A. Stephens and Ion, Inc. MAKE NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. Kurt A. Stephens and Ion, Inc. SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. $Id: COPYRIGHT,v 1.5 2003/02/15 10:12:18 stephens Exp $ ============================================================================== conedit-0.2/COPYRIGHT0100664000175200017560000000113207653666444014573 0ustar stephensstephensCopyright (c) 1997-2003 Kurt A. Stephens and Ion, Inc., All Rights Reserved. http://www.ionink.com/stephens Kurt A. Stephens and Ion, Inc. MAKE NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. Kurt A. Stephens and Ion, Inc. SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. $Id: COPYRIGHT,v 1.5 2003/02/15 10:12:18 stephens Exp $ conedit-0.2/CHANGES0100664000175200017560000000014407653666444014275 0ustar stephensstephensconedit 0.2 CHANGES ============================================================================== conedit-0.2/TOC0100664000175200017560000001253107653666444013655 0ustar stephensstephensconedit 0.2 Table of Contents ============================================================================== conedit-0.2: total 28 drwxrwxr-x 3 stephens stephens 4096 Apr 30 02:28 . drwxrwxr-x 3 stephens stephens 4096 Apr 30 02:28 .. -rw-rw-r-- 1 stephens stephens 100 Apr 30 02:28 CHANGES -rw-rw-r-- 1 stephens stephens 602 Apr 30 02:28 COPYRIGHT -rw-rw-r-- 1 stephens stephens 782 Apr 30 02:28 README drwxrwxr-x 3 stephens stephens 4096 Apr 30 02:28 src -rw-rw-r-- 1 stephens stephens 109 Apr 30 02:28 TOC conedit-0.2/src: total 16 drwxrwxr-x 3 stephens stephens 4096 Apr 30 02:28 . drwxrwxr-x 3 stephens stephens 4096 Apr 30 02:28 .. drwxr-sr-x 4 stephens stephens 4096 Apr 30 02:28 conedit -rw-rw-r-- 1 stephens stephens 417 Apr 30 02:28 GUM_BUILD_ROOT conedit-0.2/src/conedit: total 188 drwxr-sr-x 4 stephens stephens 4096 Apr 30 02:28 . drwxrwxr-x 3 stephens stephens 4096 Apr 30 02:28 .. -rw-rw-r-- 1 stephens stephens 345 Apr 30 02:27 applet.html drwxr-sr-x 3 stephens stephens 4096 Jul 23 2001 classes -rw-r--r-- 1 stephens stephens 11544 Oct 21 1999 ConApp.java -rw-r--r-- 1 stephens stephens 788 Oct 20 1999 ConApplet.java -rw-r--r-- 1 stephens stephens 4106 Oct 21 1999 ConCreator.java -rw-r--r-- 1 stephens stephens 9316 Oct 21 1999 ConEditor.java -rw-r--r-- 1 stephens stephens 11179 Oct 21 1999 ConIO.java -rw-r--r-- 1 stephens stephens 422 Dec 26 1999 Connectable.java -rw-r--r-- 1 stephens stephens 12294 Oct 21 1999 Connection.java -rw-r--r-- 1 stephens stephens 8378 Oct 20 1999 ConPoints.java -rw-r--r-- 1 stephens stephens 2762 Oct 20 1999 Copier.java -rw-r--r-- 1 stephens stephens 234 Oct 20 1999 Copyable.java -rw-r--r-- 1 stephens stephens 202 Oct 20 1999 Drawable.java -rw-r--r-- 1 stephens stephens 382 Oct 21 1999 Editable.java -rw-r--r-- 1 stephens stephens 404 Oct 20 1999 EmptyEnumeration.java -rw-r--r-- 1 stephens stephens 1873 Oct 20 1999 FileURLConnection.java -rw-r--r-- 1 stephens stephens 334 Oct 20 1999 index.html -rw-rw-r-- 1 stephens stephens 1751 Apr 30 02:27 Makefile -rw-r--r-- 1 stephens stephens 364 Oct 21 1999 Mouseable.java -rw-r--r-- 1 stephens stephens 190 Oct 21 1999 Moveable.java -rw-r--r-- 1 stephens stephens 23961 Dec 26 1999 Node.java -rw-r--r-- 1 stephens stephens 9315 Oct 21 1999 Pad.java -rw-rw-r-- 1 stephens stephens 211 Apr 30 02:27 PKG -rw-r--r-- 1 stephens stephens 223 Oct 20 1999 Selectable.java -rw-r--r-- 1 stephens stephens 2013 Dec 26 1999 Selection.java -rw-r--r-- 1 stephens stephens 290 Oct 20 1999 SpatiallySearchable.java conedit-0.2/src/conedit/classes: total 12 drwxr-sr-x 3 stephens stephens 4096 Jul 23 2001 . drwxr-sr-x 4 stephens stephens 4096 Apr 30 02:28 .. drwxr-sr-x 3 stephens stephens 4096 Jul 23 2001 com conedit-0.2/src/conedit/classes/com: total 12 drwxr-sr-x 3 stephens stephens 4096 Jul 23 2001 . drwxr-sr-x 3 stephens stephens 4096 Jul 23 2001 .. drwxr-sr-x 3 stephens stephens 4096 Jul 23 2001 ion conedit-0.2/src/conedit/classes/com/ion: total 12 drwxr-sr-x 3 stephens stephens 4096 Jul 23 2001 . drwxr-sr-x 3 stephens stephens 4096 Jul 23 2001 .. drwxr-sr-x 2 stephens stephens 4096 Apr 30 02:28 conedit conedit-0.2/src/conedit/classes/com/ion/conedit: total 176 drwxr-sr-x 2 stephens stephens 4096 Apr 30 02:28 . drwxr-sr-x 3 stephens stephens 4096 Jul 23 2001 .. -rw-rw-r-- 1 stephens stephens 11629 Apr 30 02:28 ConApp.class -rw-rw-r-- 1 stephens stephens 1367 Apr 30 02:28 ConApplet.class -rw-rw-r-- 1 stephens stephens 4886 Apr 30 02:28 ConCreator.class -rw-rw-r-- 1 stephens stephens 10287 Apr 30 02:28 ConEditor.class -rw-rw-r-- 1 stephens stephens 10280 Apr 30 02:28 ConIO.class -rw-rw-r-- 1 stephens stephens 269 Apr 30 02:28 Connectable.class -rw-rw-r-- 1 stephens stephens 10163 Apr 30 02:28 Connection.class -rw-rw-r-- 1 stephens stephens 6803 Apr 30 02:28 ConPoints.class -rw-rw-r-- 1 stephens stephens 3374 Apr 30 02:28 Copier.class -rw-rw-r-- 1 stephens stephens 202 Apr 30 02:28 Copyable.class -rw-rw-r-- 1 stephens stephens 560 Apr 30 02:28 CPObject.class -rw-rw-r-- 1 stephens stephens 598 Apr 30 02:28 CPPad.class -rw-rw-r-- 1 stephens stephens 153 Apr 30 02:28 Drawable.class -rw-rw-r-- 1 stephens stephens 242 Apr 30 02:28 Editable.class -rw-rw-r-- 1 stephens stephens 635 Apr 30 02:28 EmptyEnumeration.class -rw-rw-r-- 1 stephens stephens 1704 Apr 30 02:28 FileURLConnection.class -rw-rw-r-- 1 stephens stephens 710 Apr 30 02:28 FileURLStreamHandler.class -rw-rw-r-- 1 stephens stephens 320 Apr 30 02:28 .jv -rw-rw-r-- 1 stephens stephens 208 Apr 30 02:28 Mouseable.class -rw-rw-r-- 1 stephens stephens 138 Apr 30 02:28 Moveable.class -rw-rw-r-- 1 stephens stephens 21298 Apr 30 02:28 Node.class -rw-rw-r-- 1 stephens stephens 9714 Apr 30 02:28 Pad.class -rw-rw-r-- 1 stephens stephens 171 Apr 30 02:28 Selectable.class -rw-rw-r-- 1 stephens stephens 2519 Apr 30 02:28 Selection.class -rw-rw-r-- 1 stephens stephens 202 Apr 30 02:28 SpatiallySearchable.class