JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / j2s / jssun / awt / geom / ChainEnd.js
1 Clazz.declarePackage ("jssun.awt.geom");\r
2 Clazz.load (null, "jssun.awt.geom.ChainEnd", ["java.lang.InternalError"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.head = null;\r
5 this.tail = null;\r
6 this.partner = null;\r
7 this.etag = 0;\r
8 Clazz.instantialize (this, arguments);\r
9 }, jssun.awt.geom, "ChainEnd");\r
10 Clazz.makeConstructor (c$, \r
11 function (first, partner) {\r
12 this.head = first;\r
13 this.tail = first;\r
14 this.partner = partner;\r
15 this.etag = first.getEdgeTag ();\r
16 }, "jssun.awt.geom.CurveLink,jssun.awt.geom.ChainEnd");\r
17 Clazz.defineMethod (c$, "getChain", \r
18 function () {\r
19 return this.head;\r
20 });\r
21 Clazz.defineMethod (c$, "setOtherEnd", \r
22 function (partner) {\r
23 this.partner = partner;\r
24 }, "jssun.awt.geom.ChainEnd");\r
25 Clazz.defineMethod (c$, "getPartner", \r
26 function () {\r
27 return this.partner;\r
28 });\r
29 Clazz.defineMethod (c$, "linkTo", \r
30 function (that) {\r
31 if (this.etag == 0 || that.etag == 0) {\r
32 throw  new InternalError ("ChainEnd linked more than once!");\r
33 }if (this.etag == that.etag) {\r
34 throw  new InternalError ("Linking chains of the same type!");\r
35 }var enter;\r
36 var exit;\r
37 if (this.etag == 1) {\r
38 enter = this;\r
39 exit = that;\r
40 } else {\r
41 enter = that;\r
42 exit = this;\r
43 }this.etag = 0;\r
44 that.etag = 0;\r
45 enter.tail.setNext (exit.head);\r
46 enter.tail = exit.tail;\r
47 if (this.partner === that) {\r
48 return enter.head;\r
49 }var otherenter = exit.partner;\r
50 var otherexit = enter.partner;\r
51 otherenter.partner = otherexit;\r
52 otherexit.partner = otherenter;\r
53 if (enter.head.getYTop () < otherenter.head.getYTop ()) {\r
54 enter.tail.setNext (otherenter.head);\r
55 otherenter.head = enter.head;\r
56 } else {\r
57 otherexit.tail.setNext (enter.head);\r
58 otherexit.tail = enter.tail;\r
59 }return null;\r
60 }, "jssun.awt.geom.ChainEnd");\r
61 Clazz.defineMethod (c$, "addLink", \r
62 function (newlink) {\r
63 if (this.etag == 1) {\r
64 this.tail.setNext (newlink);\r
65 this.tail = newlink;\r
66 } else {\r
67 newlink.setNext (this.head);\r
68 this.head = newlink;\r
69 }}, "jssun.awt.geom.CurveLink");\r
70 Clazz.defineMethod (c$, "getX", \r
71 function () {\r
72 if (this.etag == 1) {\r
73 return this.tail.getXBot ();\r
74 } else {\r
75 return this.head.getXBot ();\r
76 }});\r
77 });\r