1 Clazz.declarePackage ("javax.swing");
2 Clazz.load (["java.awt.LayoutManager2"], "javax.swing.OverlayLayout", ["java.awt.AWTError", "$.Dimension", "javax.swing.SizeRequirements"], function () {
3 c$ = Clazz.decorateAsClass (function () {
9 Clazz.instantialize (this, arguments);
10 }, javax.swing, "OverlayLayout", null, java.awt.LayoutManager2);
11 Clazz.makeConstructor (c$,
14 }, "java.awt.Container");
15 Clazz.defineMethod (c$, "getTarget",
19 Clazz.overrideMethod (c$, "invalidateLayout",
21 this.checkContainer (target);
22 this.xChildren = null;
23 this.yChildren = null;
26 }, "java.awt.Container");
27 Clazz.defineMethod (c$, "addLayoutComponent",
28 function (name, comp) {
29 this.invalidateLayout (comp.getParent ());
30 }, "~S,java.awt.Component");
31 Clazz.overrideMethod (c$, "removeLayoutComponent",
33 this.invalidateLayout (comp.getParent ());
34 }, "java.awt.Component");
35 Clazz.defineMethod (c$, "addLayoutComponent",
36 function (comp, constraints) {
37 this.invalidateLayout (comp.getParent ());
38 }, "java.awt.Component,~O");
39 Clazz.overrideMethod (c$, "preferredLayoutSize",
41 this.checkContainer (target);
42 this.checkRequests ();
43 var size = new java.awt.Dimension (this.xTotal.preferred, this.yTotal.preferred);
44 var insets = target.getInsets ();
45 size.width += insets.left + insets.right;
46 size.height += insets.top + insets.bottom;
48 }, "java.awt.Container");
49 Clazz.overrideMethod (c$, "minimumLayoutSize",
51 this.checkContainer (target);
52 this.checkRequests ();
53 var size = new java.awt.Dimension (this.xTotal.minimum, this.yTotal.minimum);
54 var insets = target.getInsets ();
55 size.width += insets.left + insets.right;
56 size.height += insets.top + insets.bottom;
58 }, "java.awt.Container");
59 Clazz.overrideMethod (c$, "maximumLayoutSize",
61 this.checkContainer (target);
62 this.checkRequests ();
63 var size = new java.awt.Dimension (this.xTotal.maximum, this.yTotal.maximum);
64 var insets = target.getInsets ();
65 size.width += insets.left + insets.right;
66 size.height += insets.top + insets.bottom;
68 }, "java.awt.Container");
69 Clazz.overrideMethod (c$, "getLayoutAlignmentX",
71 this.checkContainer (target);
72 this.checkRequests ();
73 return this.xTotal.alignment;
74 }, "java.awt.Container");
75 Clazz.overrideMethod (c$, "getLayoutAlignmentY",
77 this.checkContainer (target);
78 this.checkRequests ();
79 return this.yTotal.alignment;
80 }, "java.awt.Container");
81 Clazz.overrideMethod (c$, "layoutContainer",
83 this.checkContainer (target);
84 this.checkRequests ();
85 var nChildren = target.getComponentCount ();
86 var xOffsets = Clazz.newIntArray (nChildren, 0);
87 var xSpans = Clazz.newIntArray (nChildren, 0);
88 var yOffsets = Clazz.newIntArray (nChildren, 0);
89 var ySpans = Clazz.newIntArray (nChildren, 0);
90 var alloc = target.getSize ();
91 var $in = target.getInsets ();
92 alloc.width -= $in.left + $in.right;
93 alloc.height -= $in.top + $in.bottom;
94 javax.swing.SizeRequirements.calculateAlignedPositions (alloc.width, this.xTotal, this.xChildren, xOffsets, xSpans);
95 javax.swing.SizeRequirements.calculateAlignedPositions (alloc.height, this.yTotal, this.yChildren, yOffsets, ySpans);
96 for (var i = 0; i < nChildren; i++) {
97 var c = target.getComponent (i);
98 c.setBounds ($in.left + xOffsets[i], $in.top + yOffsets[i], xSpans[i], ySpans[i]);
100 }, "java.awt.Container");
101 Clazz.defineMethod (c$, "checkContainer",
103 if (this.target !== target) {
104 throw new java.awt.AWTError ("OverlayLayout can't be shared");
105 }}, "java.awt.Container");
106 Clazz.defineMethod (c$, "checkRequests",
108 if (this.xChildren == null || this.yChildren == null) {
109 var n = this.target.getComponentCount ();
110 this.xChildren = new Array (n);
111 this.yChildren = new Array (n);
112 for (var i = 0; i < n; i++) {
113 var c = this.target.getComponent (i);
114 var min = c.getMinimumSize ();
115 var typ = c.getPreferredSize ();
116 var max = c.getMaximumSize ();
117 this.xChildren[i] = new javax.swing.SizeRequirements (min.width, typ.width, max.width, c.getAlignmentX ());
118 this.yChildren[i] = new javax.swing.SizeRequirements (min.height, typ.height, max.height, c.getAlignmentY ());
120 this.xTotal = javax.swing.SizeRequirements.getAlignedSizeRequirements (this.xChildren);
121 this.yTotal = javax.swing.SizeRequirements.getAlignedSizeRequirements (this.yChildren);