1 Clazz.declarePackage ("java.awt");
2 Clazz.load (["java.awt.LayoutManager"], "java.awt.FlowLayout", ["java.awt.Dimension"], function () {
3 c$ = Clazz.decorateAsClass (function () {
8 this.alignOnBaseline = false;
9 Clazz.instantialize (this, arguments);
10 }, java.awt, "FlowLayout", null, [java.awt.LayoutManager, java.io.Serializable]);
11 Clazz.makeConstructor (c$,
13 this.construct (1, 5, 5);
15 Clazz.makeConstructor (c$,
17 this.construct (align, 5, 5);
19 Clazz.makeConstructor (c$,
20 function (align, hgap, vgap) {
23 this.setAlignment (align);
25 Clazz.defineMethod (c$, "getAlignment",
29 Clazz.defineMethod (c$, "setAlignment",
31 this.newAlign = align;
44 Clazz.defineMethod (c$, "getHgap",
48 Clazz.defineMethod (c$, "setHgap",
52 Clazz.defineMethod (c$, "getVgap",
56 Clazz.defineMethod (c$, "setVgap",
60 Clazz.defineMethod (c$, "setAlignOnBaseline",
61 function (alignOnBaseline) {
62 this.alignOnBaseline = alignOnBaseline;
64 Clazz.defineMethod (c$, "getAlignOnBaseline",
66 return this.alignOnBaseline;
68 Clazz.overrideMethod (c$, "addLayoutComponent",
69 function (name, comp) {
70 }, "~S,java.awt.Component");
71 Clazz.overrideMethod (c$, "removeLayoutComponent",
73 }, "java.awt.Component");
74 Clazz.overrideMethod (c$, "preferredLayoutSize",
77 var dim = new java.awt.Dimension (0, 0);
78 var nmembers = target.getComponentCount ();
79 var firstVisibleComponent = true;
80 var useBaseline = this.getAlignOnBaseline ();
83 for (var i = 0; i < nmembers; i++) {
84 var m = target.getComponent (i);
86 var d = m.getPreferredSize ();
87 dim.height = Math.max (dim.height, d.height);
88 if (firstVisibleComponent) {
89 firstVisibleComponent = false;
91 dim.width += this.hgap;
92 }dim.width += d.width;
94 var baseline = m.getBaseline (d.width, d.height);
96 maxAscent = Math.max (maxAscent, baseline);
97 maxDescent = Math.max (maxDescent, d.height - baseline);
100 dim.height = Math.max (maxAscent + maxDescent, dim.height);
101 }var insets = target.getInsets ();
102 dim.width += insets.left + insets.right + this.hgap * 2;
103 dim.height += insets.top + insets.bottom + this.vgap * 2;
105 }}, "java.awt.Container");
106 Clazz.overrideMethod (c$, "minimumLayoutSize",
109 var useBaseline = this.getAlignOnBaseline ();
110 var dim = new java.awt.Dimension (0, 0);
111 var nmembers = target.getComponentCount ();
114 var firstVisibleComponent = true;
115 for (var i = 0; i < nmembers; i++) {
116 var m = target.getComponent (i);
118 var d = m.getMinimumSize ();
119 dim.height = Math.max (dim.height, d.height);
120 if (firstVisibleComponent) {
121 firstVisibleComponent = false;
123 dim.width += this.hgap;
124 }dim.width += d.width;
126 var baseline = m.getBaseline (d.width, d.height);
128 maxAscent = Math.max (maxAscent, baseline);
129 maxDescent = Math.max (maxDescent, dim.height - baseline);
132 dim.height = Math.max (maxAscent + maxDescent, dim.height);
133 }var insets = target.getInsets ();
134 dim.width += insets.left + insets.right + this.hgap * 2;
135 dim.height += insets.top + insets.bottom + this.vgap * 2;
137 }}, "java.awt.Container");
138 Clazz.defineMethod (c$, "moveComponents",
139 function (target, x, y, width, height, rowStart, rowEnd, ltr, useBaseline, ascent, descent) {
140 switch (this.newAlign) {
142 x += ltr ? 0 : width;
145 x += Clazz.doubleToInt (width / 2);
148 x += ltr ? width : 0;
157 var nonbaselineHeight = 0;
158 var baselineOffset = 0;
161 for (var i = rowStart; i < rowEnd; i++) {
162 var m = target.getComponent (i);
164 if (ascent[i] >= 0) {
165 maxAscent = Math.max (maxAscent, ascent[i]);
166 maxDescent = Math.max (maxDescent, descent[i]);
168 nonbaselineHeight = Math.max (m.getHeight (), nonbaselineHeight);
170 height = Math.max (maxAscent + maxDescent, nonbaselineHeight);
171 baselineOffset = Clazz.doubleToInt ((height - maxAscent - maxDescent) / 2);
172 }for (var i = rowStart; i < rowEnd; i++) {
173 var m = target.getComponent (i);
174 if (m.isVisible ()) {
176 if (useBaseline && ascent[i] >= 0) {
177 cy = y + baselineOffset + maxAscent - ascent[i];
179 cy = y + Clazz.doubleToInt ((height - m.height) / 2);
181 m.setLocation (x, cy);
183 m.setLocation (target.width - x - m.width, cy);
184 }x += m.width + this.hgap;
187 }, "java.awt.Container,~N,~N,~N,~N,~N,~N,~B,~B,~A,~A");
188 Clazz.overrideMethod (c$, "layoutContainer",
190 System.out.println ("FlowLayout laying out " + target);
192 var insets = target.getInsets ();
193 var maxwidth = target.width - (insets.left + insets.right + this.hgap * 2);
194 var nmembers = target.getComponentCount ();
196 var y = insets.top + this.vgap;
199 var ltr = target.getComponentOrientation ().isLeftToRight ();
200 var useBaseline = this.getAlignOnBaseline ();
204 ascent = Clazz.newIntArray (nmembers, 0);
205 descent = Clazz.newIntArray (nmembers, 0);
206 }for (var i = 0; i < nmembers; i++) {
207 var m = target.getComponent (i);
208 if (m.isVisible ()) {
209 var d = m.getPreferredSize ();
210 m.setSize (d.width, d.height);
212 var baseline = m.getBaseline (d.width, d.height);
214 ascent[i] = baseline;
215 descent[i] = d.height - baseline;
218 }}if ((x == 0) || ((x + d.width) <= maxwidth)) {
222 rowh = Math.max (rowh, d.height);
224 rowh = this.moveComponents (target, insets.left + this.hgap, y, maxwidth - x, rowh, start, i, ltr, useBaseline, ascent, descent);
226 y += this.vgap + rowh;
230 this.moveComponents (target, insets.left + this.hgap, y, maxwidth - x, rowh, start, nmembers, ltr, useBaseline, ascent, descent);
231 }}, "java.awt.Container");
232 Clazz.overrideMethod (c$, "toString",
235 switch (this.align) {
240 str = ",align=center";
243 str = ",align=right";
246 str = ",align=leading";
249 str = ",align=trailing";
252 return this.getClass ().getName () + "[hgap=" + this.hgap + ",vgap=" + this.vgap + str + "]";
254 Clazz.defineStatics (c$,