JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / site / j2s / javax / swing / SizeRequirements.js
1 Clazz.declarePackage ("javax.swing");\r
2 c$ = Clazz.decorateAsClass (function () {\r
3 this.minimum = 0;\r
4 this.preferred = 0;\r
5 this.maximum = 0;\r
6 this.alignment = 0;\r
7 Clazz.instantialize (this, arguments);\r
8 }, javax.swing, "SizeRequirements");\r
9 Clazz.makeConstructor (c$, \r
10 function () {\r
11 this.minimum = 0;\r
12 this.preferred = 0;\r
13 this.maximum = 0;\r
14 this.alignment = 0.5;\r
15 });\r
16 Clazz.makeConstructor (c$, \r
17 function (min, pref, max, a) {\r
18 this.minimum = min;\r
19 this.preferred = pref;\r
20 this.maximum = max;\r
21 this.alignment = a > 1.0 ? 1.0 : a < 0.0 ? 0.0 : a;\r
22 }, "~N,~N,~N,~N");\r
23 Clazz.overrideMethod (c$, "toString", \r
24 function () {\r
25 return "[" + this.minimum + "," + this.preferred + "," + this.maximum + "]@" + this.alignment;\r
26 });\r
27 c$.getTiledSizeRequirements = Clazz.defineMethod (c$, "getTiledSizeRequirements", \r
28 function (children) {\r
29 var total =  new javax.swing.SizeRequirements ();\r
30 for (var i = 0; i < children.length; i++) {\r
31 var req = children[i];\r
32 total.minimum = Math.min (total.minimum + req.minimum, 2147483647);\r
33 total.preferred = Math.min (total.preferred + req.preferred, 2147483647);\r
34 total.maximum = Math.min (total.maximum + req.maximum, 2147483647);\r
35 }\r
36 return total;\r
37 }, "~A");\r
38 c$.getAlignedSizeRequirements = Clazz.defineMethod (c$, "getAlignedSizeRequirements", \r
39 function (children) {\r
40 var totalAscent =  new javax.swing.SizeRequirements ();\r
41 var totalDescent =  new javax.swing.SizeRequirements ();\r
42 for (var i = 0; i < children.length; i++) {\r
43 var req = children[i];\r
44 var ascent = Clazz.floatToInt (req.alignment * req.minimum);\r
45 var descent = req.minimum - ascent;\r
46 totalAscent.minimum = Math.max (ascent, totalAscent.minimum);\r
47 totalDescent.minimum = Math.max (descent, totalDescent.minimum);\r
48 ascent = Clazz.floatToInt (req.alignment * req.preferred);\r
49 descent = req.preferred - ascent;\r
50 totalAscent.preferred = Math.max (ascent, totalAscent.preferred);\r
51 totalDescent.preferred = Math.max (descent, totalDescent.preferred);\r
52 ascent = Clazz.floatToInt (req.alignment * req.maximum);\r
53 descent = req.maximum - ascent;\r
54 totalAscent.maximum = Math.max (ascent, totalAscent.maximum);\r
55 totalDescent.maximum = Math.max (descent, totalDescent.maximum);\r
56 }\r
57 var min = Math.min (totalAscent.minimum + totalDescent.minimum, 2147483647);\r
58 var pref = Math.min (totalAscent.preferred + totalDescent.preferred, 2147483647);\r
59 var max = Math.min (totalAscent.maximum + totalDescent.maximum, 2147483647);\r
60 var alignment = 0.0;\r
61 if (min > 0) {\r
62 alignment = totalAscent.minimum / min;\r
63 alignment = alignment > 1.0 ? 1.0 : alignment < 0.0 ? 0.0 : alignment;\r
64 }return  new javax.swing.SizeRequirements (min, pref, max, alignment);\r
65 }, "~A");\r
66 c$.calculateTiledPositions = Clazz.defineMethod (c$, "calculateTiledPositions", \r
67 function (allocated, total, children, offsets, spans) {\r
68 javax.swing.SizeRequirements.calcTiled (allocated, total, children, offsets, spans, true);\r
69 }, "~N,javax.swing.SizeRequirements,~A,~A,~A");\r
70 c$.calculateTiledPositions = Clazz.defineMethod (c$, "calculateTiledPositions", \r
71 function (allocated, total, children, offsets, spans, forward) {\r
72 javax.swing.SizeRequirements.calcTiled (allocated, total, children, offsets, spans, forward);\r
73 }, "~N,javax.swing.SizeRequirements,~A,~A,~A,~B");\r
74 c$.calcTiled = Clazz.defineMethod (c$, "calcTiled", \r
75 function (allocated, total, children, offsets, spans, forward) {\r
76 var min = 0;\r
77 var pref = 0;\r
78 var max = 0;\r
79 for (var i = 0; i < children.length; i++) {\r
80 min += children[i].minimum;\r
81 pref += children[i].preferred;\r
82 max += children[i].maximum;\r
83 }\r
84 if (allocated >= pref) {\r
85 javax.swing.SizeRequirements.expandedTile (allocated, min, pref, max, children, offsets, spans, forward);\r
86 } else {\r
87 javax.swing.SizeRequirements.compressedTile (allocated, min, pref, max, children, offsets, spans, forward);\r
88 }}, "~N,javax.swing.SizeRequirements,~A,~A,~A,~B");\r
89 c$.compressedTile = Clazz.defineMethod (c$, "compressedTile", \r
90  function (allocated, min, pref, max, request, offsets, spans, forward) {\r
91 var totalPlay = Math.min (pref - allocated, pref - min);\r
92 var factor = (pref - min == 0) ? 0.0 : totalPlay / (pref - min);\r
93 var totalOffset;\r
94 if (forward) {\r
95 totalOffset = 0;\r
96 for (var i = 0; i < spans.length; i++) {\r
97 offsets[i] = totalOffset;\r
98 var req = request[i];\r
99 var play = factor * (req.preferred - req.minimum);\r
100 spans[i] = Clazz.floatToInt (req.preferred - play);\r
101 totalOffset = Math.min (totalOffset + spans[i], 2147483647);\r
102 }\r
103 } else {\r
104 totalOffset = allocated;\r
105 for (var i = 0; i < spans.length; i++) {\r
106 var req = request[i];\r
107 var play = factor * (req.preferred - req.minimum);\r
108 spans[i] = Clazz.floatToInt (req.preferred - play);\r
109 offsets[i] = totalOffset - spans[i];\r
110 totalOffset = Math.max (totalOffset - spans[i], 0);\r
111 }\r
112 }}, "~N,~N,~N,~N,~A,~A,~A,~B");\r
113 c$.expandedTile = Clazz.defineMethod (c$, "expandedTile", \r
114  function (allocated, min, pref, max, request, offsets, spans, forward) {\r
115 var totalPlay = Math.min (allocated - pref, max - pref);\r
116 var factor = (max - pref == 0) ? 0.0 : totalPlay / (max - pref);\r
117 var totalOffset;\r
118 if (forward) {\r
119 totalOffset = 0;\r
120 for (var i = 0; i < spans.length; i++) {\r
121 offsets[i] = totalOffset;\r
122 var req = request[i];\r
123 var play = Clazz.floatToInt (factor * (req.maximum - req.preferred));\r
124 spans[i] = Math.min (req.preferred + play, 2147483647);\r
125 totalOffset = Math.min (totalOffset + spans[i], 2147483647);\r
126 }\r
127 } else {\r
128 totalOffset = allocated;\r
129 for (var i = 0; i < spans.length; i++) {\r
130 var req = request[i];\r
131 var play = Clazz.floatToInt (factor * (req.maximum - req.preferred));\r
132 spans[i] = Math.min (req.preferred + play, 2147483647);\r
133 offsets[i] = totalOffset - spans[i];\r
134 totalOffset = Math.max (totalOffset - spans[i], 0);\r
135 }\r
136 }}, "~N,~N,~N,~N,~A,~A,~A,~B");\r
137 c$.calculateAlignedPositions = Clazz.defineMethod (c$, "calculateAlignedPositions", \r
138 function (allocated, total, children, offsets, spans) {\r
139 javax.swing.SizeRequirements.calcAligned (allocated, total, children, offsets, spans, true);\r
140 }, "~N,javax.swing.SizeRequirements,~A,~A,~A");\r
141 c$.calcAligned = Clazz.defineMethod (c$, "calcAligned", \r
142 function (allocated, total, children, offsets, spans, normal) {\r
143 var totalAlignment = normal ? total.alignment : 1.0 - total.alignment;\r
144 var totalAscent = Clazz.floatToInt (allocated * totalAlignment);\r
145 var totalDescent = allocated - totalAscent;\r
146 for (var i = 0; i < children.length; i++) {\r
147 var req = children[i];\r
148 var alignment = normal ? req.alignment : 1.0 - req.alignment;\r
149 var maxAscent = Clazz.floatToInt (req.maximum * alignment);\r
150 var maxDescent = req.maximum - maxAscent;\r
151 var ascent = Math.min (totalAscent, maxAscent);\r
152 var descent = Math.min (totalDescent, maxDescent);\r
153 offsets[i] = totalAscent - ascent;\r
154 spans[i] = Math.min (ascent + descent, 2147483647);\r
155 }\r
156 }, "~N,javax.swing.SizeRequirements,~A,~A,~A,~B");\r
157 c$.calculateAlignedPositions = Clazz.defineMethod (c$, "calculateAlignedPositions", \r
158 function (allocated, total, children, offsets, spans, normal) {\r
159 javax.swing.SizeRequirements.calcAligned (allocated, total, children, offsets, spans, normal);\r
160 }, "~N,javax.swing.SizeRequirements,~A,~A,~A,~B");\r
161 c$.adjustSizes = Clazz.defineMethod (c$, "adjustSizes", \r
162 function (delta, children) {\r
163 return  Clazz.newIntArray (0, 0);\r
164 }, "~N,~A");\r