home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / JLayeredPane.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  5.1 KB  |  341 lines

  1. package javax.swing;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Container;
  6. import java.awt.Graphics;
  7. import java.awt.LayoutManager;
  8. import java.awt.Rectangle;
  9. import java.util.Hashtable;
  10. import javax.accessibility.Accessible;
  11. import javax.accessibility.AccessibleContext;
  12.  
  13. public class JLayeredPane extends JComponent implements Accessible {
  14.    public static final Integer DEFAULT_LAYER = new Integer(0);
  15.    public static final Integer PALETTE_LAYER = new Integer(100);
  16.    public static final Integer MODAL_LAYER = new Integer(200);
  17.    public static final Integer POPUP_LAYER = new Integer(300);
  18.    public static final Integer DRAG_LAYER = new Integer(400);
  19.    public static final Integer FRAME_CONTENT_LAYER = new Integer(-30000);
  20.    public static final String LAYER_PROPERTY = "layeredContainerLayer";
  21.    private Hashtable componentToLayer;
  22.    private boolean optimizedDrawingPossible = true;
  23.  
  24.    public JLayeredPane() {
  25.       ((Container)this).setLayout((LayoutManager)null);
  26.    }
  27.  
  28.    private void validateOptimizedDrawing() {
  29.       boolean var1 = false;
  30.       Object var2 = ((Component)this).getTreeLock();
  31.       synchronized(var2) {
  32.          Object var5 = null;
  33.          int var3 = 0;
  34.  
  35.          for(int var4 = ((Container)this).getComponentCount(); var3 < var4; ++var3) {
  36.             Integer var8 = null;
  37.             if ((((Container)this).getComponent(var3) instanceof JInternalFrame || ((Container)this).getComponent(var3) instanceof JComponent && (var8 = (Integer)((JComponent)((Container)this).getComponent(var3)).getClientProperty("layeredContainerLayer")) != null) && (var8 == null || !var8.equals(FRAME_CONTENT_LAYER))) {
  38.                var1 = true;
  39.                break;
  40.             }
  41.          }
  42.       }
  43.  
  44.       if (var1) {
  45.          this.optimizedDrawingPossible = false;
  46.       } else {
  47.          this.optimizedDrawingPossible = true;
  48.       }
  49.  
  50.    }
  51.  
  52.    protected void addImpl(Component var1, Object var2, int var3) {
  53.       int var4 = DEFAULT_LAYER;
  54.       if (var2 instanceof Integer) {
  55.          var4 = (Integer)var2;
  56.          this.setLayer(var1, var4);
  57.       } else {
  58.          var4 = this.getLayer(var1);
  59.       }
  60.  
  61.       int var5 = this.insertIndexForLayer(var4, var3);
  62.       super.addImpl(var1, var2, var5);
  63.       var1.validate();
  64.       var1.repaint();
  65.       this.validateOptimizedDrawing();
  66.    }
  67.  
  68.    public void remove(int var1) {
  69.       ((Container)this).getComponent(var1);
  70.       super.remove(var1);
  71.       this.validateOptimizedDrawing();
  72.    }
  73.  
  74.    public boolean isOptimizedDrawingEnabled() {
  75.       return this.optimizedDrawingPossible;
  76.    }
  77.  
  78.    public static void putLayer(JComponent var0, int var1) {
  79.       Integer var2 = new Integer(var1);
  80.       var0.putClientProperty("layeredContainerLayer", var2);
  81.    }
  82.  
  83.    public static int getLayer(JComponent var0) {
  84.       Integer var1;
  85.       return (var1 = (Integer)var0.getClientProperty("layeredContainerLayer")) != null ? var1 : DEFAULT_LAYER;
  86.    }
  87.  
  88.    public static JLayeredPane getLayeredPaneAbove(Component var0) {
  89.       if (var0 == null) {
  90.          return null;
  91.       } else {
  92.          Container var1;
  93.          for(var1 = var0.getParent(); var1 != null && !(var1 instanceof JLayeredPane); var1 = ((Component)var1).getParent()) {
  94.          }
  95.  
  96.          return (JLayeredPane)var1;
  97.       }
  98.    }
  99.  
  100.    public void setLayer(Component var1, int var2) {
  101.       this.setLayer(var1, var2, -1);
  102.    }
  103.  
  104.    public void setLayer(Component var1, int var2, int var3) {
  105.       Integer var4 = this.getObjectForLayer(var2);
  106.       if (var2 == this.getLayer(var1) && var3 == this.getPosition(var1)) {
  107.          if (var1 instanceof JComponent) {
  108.             ((JComponent)this).repaint(((JComponent)var1)._bounds);
  109.          } else {
  110.             ((JComponent)this).repaint(var1.getBounds());
  111.          }
  112.  
  113.       } else {
  114.          if (var1 instanceof JComponent) {
  115.             ((JComponent)var1).putClientProperty("layeredContainerLayer", var4);
  116.          } else {
  117.             this.getComponentToLayer().put(var1, var4);
  118.          }
  119.  
  120.          if (var1.getParent() != null && var1.getParent() == this) {
  121.             ((Container)this).remove(var1);
  122.             ((Container)this).add(var1, (Object)null, var3);
  123.             if (var1 instanceof JComponent) {
  124.                ((JComponent)this).repaint(((JComponent)var1)._bounds);
  125.             } else {
  126.                ((JComponent)this).repaint(var1.getBounds());
  127.             }
  128.  
  129.          } else {
  130.             if (var1 instanceof JComponent) {
  131.                ((JComponent)this).repaint(((JComponent)var1)._bounds);
  132.             } else {
  133.                ((JComponent)this).repaint(var1.getBounds());
  134.             }
  135.  
  136.          }
  137.       }
  138.    }
  139.  
  140.    public int getLayer(Component var1) {
  141.       Integer var2;
  142.       if (var1 instanceof JComponent) {
  143.          var2 = (Integer)((JComponent)var1).getClientProperty("layeredContainerLayer");
  144.       } else {
  145.          var2 = (Integer)this.getComponentToLayer().get(var1);
  146.       }
  147.  
  148.       return var2 == null ? DEFAULT_LAYER : var2;
  149.    }
  150.  
  151.    public int getIndexOf(Component var1) {
  152.       int var3 = ((Container)this).getComponentCount();
  153.  
  154.       for(int var2 = 0; var2 < var3; ++var2) {
  155.          if (var1 == ((Container)this).getComponent(var2)) {
  156.             return var2;
  157.          }
  158.       }
  159.  
  160.       return -1;
  161.    }
  162.  
  163.    public void moveToFront(Component var1) {
  164.       this.setPosition(var1, 0);
  165.    }
  166.  
  167.    public void moveToBack(Component var1) {
  168.       this.setPosition(var1, this.getComponentCountInLayer(this.getLayer(var1)));
  169.    }
  170.  
  171.    public void setPosition(Component var1, int var2) {
  172.       this.setLayer(var1, this.getLayer(var1), var2);
  173.    }
  174.  
  175.    public int getPosition(Component var1) {
  176.       int var7 = 0;
  177.       int var3 = ((Container)this).getComponentCount();
  178.       int var6 = this.getIndexOf(var1);
  179.       if (var6 == -1) {
  180.          return -1;
  181.       } else {
  182.          int var4 = this.getLayer(var1);
  183.  
  184.          for(int var2 = var6 - 1; var2 >= 0; --var2) {
  185.             int var5 = this.getLayer(((Container)this).getComponent(var2));
  186.             if (var5 != var4) {
  187.                return var7;
  188.             }
  189.  
  190.             ++var7;
  191.          }
  192.  
  193.          return var7;
  194.       }
  195.    }
  196.  
  197.    public int highestLayer() {
  198.       return ((Container)this).getComponentCount() > 0 ? this.getLayer(((Container)this).getComponent(0)) : 0;
  199.    }
  200.  
  201.    public int lowestLayer() {
  202.       int var1 = ((Container)this).getComponentCount();
  203.       return var1 > 0 ? this.getLayer(((Container)this).getComponent(var1 - 1)) : 0;
  204.    }
  205.  
  206.    public int getComponentCountInLayer(int var1) {
  207.       int var5 = 0;
  208.       int var3 = ((Container)this).getComponentCount();
  209.  
  210.       for(int var2 = 0; var2 < var3; ++var2) {
  211.          int var4 = this.getLayer(((Container)this).getComponent(var2));
  212.          if (var4 == var1) {
  213.             ++var5;
  214.          } else if (var5 > 0 || var4 < var1) {
  215.             break;
  216.          }
  217.       }
  218.  
  219.       return var5;
  220.    }
  221.  
  222.    public Component[] getComponentsInLayer(int var1) {
  223.       int var5 = 0;
  224.       Component[] var6 = new Component[this.getComponentCountInLayer(var1)];
  225.       int var3 = ((Container)this).getComponentCount();
  226.  
  227.       for(int var2 = 0; var2 < var3; ++var2) {
  228.          int var4 = this.getLayer(((Container)this).getComponent(var2));
  229.          if (var4 == var1) {
  230.             var6[var5++] = ((Container)this).getComponent(var2);
  231.          } else if (var5 > 0 || var4 < var1) {
  232.             break;
  233.          }
  234.       }
  235.  
  236.       return var6;
  237.    }
  238.  
  239.    public void paint(Graphics var1) {
  240.       if (((JComponent)this).isOpaque()) {
  241.          Rectangle var2 = var1.getClipBounds();
  242.          Color var3 = ((Component)this).getBackground();
  243.          if (var3 == null) {
  244.             var3 = Color.lightGray;
  245.          }
  246.  
  247.          var1.setColor(var3);
  248.          var1.fillRect(var2.x, var2.y, var2.width, var2.height);
  249.       }
  250.  
  251.       super.paint(var1);
  252.    }
  253.  
  254.    protected Hashtable getComponentToLayer() {
  255.       if (this.componentToLayer == null) {
  256.          this.componentToLayer = new Hashtable(4);
  257.       }
  258.  
  259.       return this.componentToLayer;
  260.    }
  261.  
  262.    protected Integer getObjectForLayer(int var1) {
  263.       Integer var2;
  264.       switch (var1) {
  265.          case 0:
  266.             var2 = DEFAULT_LAYER;
  267.             break;
  268.          case 100:
  269.             var2 = PALETTE_LAYER;
  270.             break;
  271.          case 200:
  272.             var2 = MODAL_LAYER;
  273.             break;
  274.          case 300:
  275.             var2 = POPUP_LAYER;
  276.             break;
  277.          case 400:
  278.             var2 = DRAG_LAYER;
  279.             break;
  280.          default:
  281.             var2 = new Integer(var1);
  282.       }
  283.  
  284.       return var2;
  285.    }
  286.  
  287.    protected int insertIndexForLayer(int var1, int var2) {
  288.       int var6 = -1;
  289.       int var7 = -1;
  290.       int var4 = ((Container)this).getComponentCount();
  291.  
  292.       for(int var3 = 0; var3 < var4; ++var3) {
  293.          int var5 = this.getLayer(((Container)this).getComponent(var3));
  294.          if (var6 == -1 && var5 == var1) {
  295.             var6 = var3;
  296.          }
  297.  
  298.          if (var5 < var1) {
  299.             if (var3 == 0) {
  300.                var6 = 0;
  301.                var7 = 0;
  302.             } else {
  303.                var7 = var3;
  304.             }
  305.             break;
  306.          }
  307.       }
  308.  
  309.       if (var6 == -1 && var7 == -1) {
  310.          return var4;
  311.       } else {
  312.          if (var6 != -1 && var7 == -1) {
  313.             var7 = var4;
  314.          }
  315.  
  316.          if (var7 != -1 && var6 == -1) {
  317.             var6 = var7;
  318.          }
  319.  
  320.          if (var2 == -1) {
  321.             return var7;
  322.          } else {
  323.             return var2 > -1 && var6 + var2 <= var7 ? var6 + var2 : var7;
  324.          }
  325.       }
  326.    }
  327.  
  328.    protected String paramString() {
  329.       String var1 = this.optimizedDrawingPossible ? "true" : "false";
  330.       return super.paramString() + ",optimizedDrawingPossible=" + var1;
  331.    }
  332.  
  333.    public AccessibleContext getAccessibleContext() {
  334.       if (super.accessibleContext == null) {
  335.          super.accessibleContext = new AccessibleJLayeredPane(this);
  336.       }
  337.  
  338.       return super.accessibleContext;
  339.    }
  340. }
  341.