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