home *** CD-ROM | disk | FTP | other *** search
- package javax.swing;
-
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.Insets;
- import java.awt.LayoutManager2;
- import java.util.Collections;
- import java.util.HashMap;
- import java.util.HashSet;
- import java.util.List;
- import java.util.Map;
- import java.util.Set;
-
- public class SpringLayout implements LayoutManager2 {
- private Map componentConstraints = new HashMap();
- private Spring cyclicReference = Spring.constant(Integer.MIN_VALUE);
- private Set cyclicSprings;
- private Set acyclicSprings;
- public static final String NORTH = "North";
- public static final String SOUTH = "South";
- public static final String EAST = "East";
- public static final String WEST = "West";
- public static final String HORIZONTAL_CENTER = "HorizontalCenter";
- public static final String VERTICAL_CENTER = "VerticalCenter";
- public static final String BASELINE = "Baseline";
- public static final String WIDTH = "Width";
- public static final String HEIGHT = "Height";
- private static String[] ALL_HORIZONTAL = new String[]{"West", "Width", "East", "HorizontalCenter"};
- private static String[] ALL_VERTICAL = new String[]{"North", "Height", "South", "VerticalCenter", "Baseline"};
-
- private void resetCyclicStatuses() {
- this.cyclicSprings = new HashSet();
- this.acyclicSprings = new HashSet();
- }
-
- private void setParent(Container var1) {
- this.resetCyclicStatuses();
- Constraints var2 = this.getConstraints(var1);
- var2.setX(Spring.constant(0));
- var2.setY(Spring.constant(0));
- Spring var3 = var2.getWidth();
- if (var3 instanceof Spring.WidthSpring && ((Spring.WidthSpring)var3).c == var1) {
- var2.setWidth(Spring.constant(0, 0, Integer.MAX_VALUE));
- }
-
- Spring var4 = var2.getHeight();
- if (var4 instanceof Spring.HeightSpring && ((Spring.HeightSpring)var4).c == var1) {
- var2.setHeight(Spring.constant(0, 0, Integer.MAX_VALUE));
- }
-
- }
-
- boolean isCyclic(Spring var1) {
- if (var1 == null) {
- return false;
- } else if (this.cyclicSprings.contains(var1)) {
- return true;
- } else if (this.acyclicSprings.contains(var1)) {
- return false;
- } else {
- this.cyclicSprings.add(var1);
- boolean var2 = var1.isCyclic(this);
- if (!var2) {
- this.acyclicSprings.add(var1);
- this.cyclicSprings.remove(var1);
- } else {
- System.err.println(var1 + " is cyclic. ");
- }
-
- return var2;
- }
- }
-
- private Spring abandonCycles(Spring var1) {
- return this.isCyclic(var1) ? this.cyclicReference : var1;
- }
-
- public void addLayoutComponent(String var1, Component var2) {
- }
-
- public void removeLayoutComponent(Component var1) {
- this.componentConstraints.remove(var1);
- }
-
- private static Dimension addInsets(int var0, int var1, Container var2) {
- Insets var3 = var2.getInsets();
- return new Dimension(var0 + var3.left + var3.right, var1 + var3.top + var3.bottom);
- }
-
- public Dimension minimumLayoutSize(Container var1) {
- this.setParent(var1);
- Constraints var2 = this.getConstraints(var1);
- return addInsets(this.abandonCycles(var2.getWidth()).getMinimumValue(), this.abandonCycles(var2.getHeight()).getMinimumValue(), var1);
- }
-
- public Dimension preferredLayoutSize(Container var1) {
- this.setParent(var1);
- Constraints var2 = this.getConstraints(var1);
- return addInsets(this.abandonCycles(var2.getWidth()).getPreferredValue(), this.abandonCycles(var2.getHeight()).getPreferredValue(), var1);
- }
-
- public Dimension maximumLayoutSize(Container var1) {
- this.setParent(var1);
- Constraints var2 = this.getConstraints(var1);
- return addInsets(this.abandonCycles(var2.getWidth()).getMaximumValue(), this.abandonCycles(var2.getHeight()).getMaximumValue(), var1);
- }
-
- public void addLayoutComponent(Component var1, Object var2) {
- if (var2 instanceof Constraints) {
- this.putConstraints(var1, (Constraints)var2);
- }
-
- }
-
- public float getLayoutAlignmentX(Container var1) {
- return 0.5F;
- }
-
- public float getLayoutAlignmentY(Container var1) {
- return 0.5F;
- }
-
- public void invalidateLayout(Container var1) {
- }
-
- public void putConstraint(String var1, Component var2, int var3, String var4, Component var5) {
- this.putConstraint(var1, var2, Spring.constant(var3), var4, var5);
- }
-
- public void putConstraint(String var1, Component var2, Spring var3, String var4, Component var5) {
- this.putConstraint(var1, var2, Spring.sum(var3, this.getConstraint(var4, var5)));
- }
-
- private void putConstraint(String var1, Component var2, Spring var3) {
- if (var3 != null) {
- this.getConstraints(var2).setConstraint(var1, var3);
- }
-
- }
-
- private Constraints applyDefaults(Component var1, Constraints var2) {
- if (var2 == null) {
- var2 = new Constraints();
- }
-
- if (javax.swing.SpringLayout.Constraints.access$400(var2) == null) {
- javax.swing.SpringLayout.Constraints.access$402(var2, var1);
- }
-
- if (javax.swing.SpringLayout.Constraints.access$500(var2).size() < 2) {
- this.applyDefaults(var2, "West", Spring.constant(0), "Width", Spring.width(var1), javax.swing.SpringLayout.Constraints.access$500(var2));
- }
-
- if (javax.swing.SpringLayout.Constraints.access$600(var2).size() < 2) {
- this.applyDefaults(var2, "North", Spring.constant(0), "Height", Spring.height(var1), javax.swing.SpringLayout.Constraints.access$600(var2));
- }
-
- return var2;
- }
-
- private void applyDefaults(Constraints var1, String var2, Spring var3, String var4, Spring var5, List<String> var6) {
- if (var6.size() == 0) {
- var1.setConstraint(var2, var3);
- var1.setConstraint(var4, var5);
- } else {
- if (var1.getConstraint(var4) == null) {
- var1.setConstraint(var4, var5);
- } else {
- var1.setConstraint(var2, var3);
- }
-
- Collections.rotate(var6, 1);
- }
-
- }
-
- private void putConstraints(Component var1, Constraints var2) {
- this.componentConstraints.put(var1, this.applyDefaults(var1, var2));
- }
-
- public Constraints getConstraints(Component var1) {
- Constraints var2 = (Constraints)this.componentConstraints.get(var1);
- if (var2 == null) {
- if (var1 instanceof JComponent) {
- Object var3 = ((JComponent)var1).getClientProperty(SpringLayout.class);
- if (var3 instanceof Constraints) {
- return this.applyDefaults(var1, (Constraints)var3);
- }
- }
-
- var2 = new Constraints();
- this.putConstraints(var1, var2);
- }
-
- return var2;
- }
-
- public Spring getConstraint(String var1, Component var2) {
- var1 = var1.intern();
- return new SpringProxy(var1, var2, this);
- }
-
- public void layoutContainer(Container var1) {
- this.setParent(var1);
- int var2 = var1.getComponentCount();
- this.getConstraints(var1).reset();
-
- for(int var3 = 0; var3 < var2; ++var3) {
- this.getConstraints(var1.getComponent(var3)).reset();
- }
-
- Insets var12 = var1.getInsets();
- Constraints var4 = this.getConstraints(var1);
- this.abandonCycles(var4.getX()).setValue(0);
- this.abandonCycles(var4.getY()).setValue(0);
- this.abandonCycles(var4.getWidth()).setValue(var1.getWidth() - var12.left - var12.right);
- this.abandonCycles(var4.getHeight()).setValue(var1.getHeight() - var12.top - var12.bottom);
-
- for(int var5 = 0; var5 < var2; ++var5) {
- Component var6 = var1.getComponent(var5);
- Constraints var7 = this.getConstraints(var6);
- int var8 = this.abandonCycles(var7.getX()).getValue();
- int var9 = this.abandonCycles(var7.getY()).getValue();
- int var10 = this.abandonCycles(var7.getWidth()).getValue();
- int var11 = this.abandonCycles(var7.getHeight()).getValue();
- var6.setBounds(var12.left + var8, var12.top + var9, var10, var11);
- }
-
- }
-
- // $FF: synthetic method
- static String[] access$000() {
- return ALL_HORIZONTAL;
- }
-
- // $FF: synthetic method
- static String[] access$100() {
- return ALL_VERTICAL;
- }
- }
-