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 / RepaintManager.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  6.3 KB  |  406 lines

  1. package javax.swing;
  2.  
  3. import java.applet.Applet;
  4. import java.awt.Component;
  5. import java.awt.Container;
  6. import java.awt.Dimension;
  7. import java.awt.Image;
  8. import java.awt.Rectangle;
  9. import java.awt.Toolkit;
  10. import java.awt.Window;
  11. import java.awt.image.ImageObserver;
  12. import java.util.Enumeration;
  13. import java.util.Hashtable;
  14. import java.util.Vector;
  15.  
  16. public class RepaintManager {
  17.    Hashtable dirtyComponents = new Hashtable();
  18.    Hashtable tmpDirtyComponents = new Hashtable();
  19.    Vector invalidComponents;
  20.    boolean doubleBufferingEnabled = true;
  21.    Image doubleBuffer;
  22.    Dimension doubleBufferSize;
  23.    private Dimension doubleBufferMaxSize;
  24.    private boolean resetDoubleBuffer;
  25.    private static final Object repaintManagerKey;
  26.    Rectangle tmp = new Rectangle();
  27.    // $FF: synthetic field
  28.    static Class class$javax$swing$RepaintManager;
  29.  
  30.    public static RepaintManager currentManager(Component var0) {
  31.       RepaintManager var1 = (RepaintManager)SwingUtilities.appContextGet(repaintManagerKey);
  32.       if (var1 == null) {
  33.          var1 = new RepaintManager();
  34.          SwingUtilities.appContextPut(repaintManagerKey, var1);
  35.       }
  36.  
  37.       return var1;
  38.    }
  39.  
  40.    public static RepaintManager currentManager(JComponent var0) {
  41.       return currentManager((Component)var0);
  42.    }
  43.  
  44.    public static void setCurrentManager(RepaintManager var0) {
  45.       if (var0 != null) {
  46.          SwingUtilities.appContextPut(repaintManagerKey, var0);
  47.       } else {
  48.          SwingUtilities.appContextRemove(repaintManagerKey);
  49.       }
  50.  
  51.    }
  52.  
  53.    public synchronized void addInvalidComponent(JComponent var1) {
  54.       Object var2 = null;
  55.       Object var3 = var1;
  56.  
  57.       while(true) {
  58.          if (var3 != null) {
  59.             if (var3 instanceof CellRendererPane || ((Component)var3).getPeer() == null) {
  60.                return;
  61.             }
  62.  
  63.             if (!(var3 instanceof JComponent) || !((JComponent)var3).isValidateRoot()) {
  64.                var3 = ((Component)var3).getParent();
  65.                continue;
  66.             }
  67.  
  68.             var2 = var3;
  69.          }
  70.  
  71.          if (var2 == null) {
  72.             return;
  73.          }
  74.  
  75.          Object var4 = null;
  76.          Object var5 = var2;
  77.  
  78.          while(true) {
  79.             if (var5 != null) {
  80.                if (!((Component)var5).isVisible() || ((Component)var5).getPeer() == null) {
  81.                   return;
  82.                }
  83.  
  84.                if (!(var5 instanceof Window) && !(var5 instanceof Applet)) {
  85.                   var5 = ((Component)var5).getParent();
  86.                   continue;
  87.                }
  88.  
  89.                var4 = var5;
  90.             }
  91.  
  92.             if (var4 == null) {
  93.                return;
  94.             }
  95.  
  96.             if (this.invalidComponents == null) {
  97.                this.invalidComponents = new Vector();
  98.             } else {
  99.                int var6 = this.invalidComponents.size();
  100.  
  101.                for(int var7 = 0; var7 < var6; ++var7) {
  102.                   if (var2 == (Component)this.invalidComponents.elementAt(var7)) {
  103.                      return;
  104.                   }
  105.                }
  106.             }
  107.  
  108.             this.invalidComponents.addElement(var2);
  109.             SystemEventQueueUtilities.queueComponentWorkRequest((Component)var4);
  110.             return;
  111.          }
  112.       }
  113.    }
  114.  
  115.    public synchronized void removeInvalidComponent(JComponent var1) {
  116.       if (this.invalidComponents != null) {
  117.          int var2 = this.invalidComponents.indexOf(var1);
  118.          if (var2 != -1) {
  119.             this.invalidComponents.removeElementAt(var2);
  120.          }
  121.       }
  122.  
  123.    }
  124.  
  125.    public synchronized void addDirtyRegion(JComponent var1, int var2, int var3, int var4, int var5) {
  126.       if (var4 > 0 && var5 > 0 && var1 != null) {
  127.          if (var1.getWidth() > 0 && var1.getHeight() > 0) {
  128.             Rectangle var6 = (Rectangle)this.dirtyComponents.get(var1);
  129.             if (var6 != null) {
  130.                SwingUtilities.computeUnion(var2, var3, var4, var5, var6);
  131.             } else {
  132.                Object var7 = null;
  133.                Object var8 = var1;
  134.  
  135.                while(true) {
  136.                   if (var8 != null) {
  137.                      if (!((Component)var8).isVisible() || ((Component)var8).getPeer() == null) {
  138.                         return;
  139.                      }
  140.  
  141.                      if (!(var8 instanceof Window) && !(var8 instanceof Applet)) {
  142.                         var8 = ((Component)var8).getParent();
  143.                         continue;
  144.                      }
  145.  
  146.                      var7 = var8;
  147.                   }
  148.  
  149.                   if (var7 == null) {
  150.                      return;
  151.                   }
  152.  
  153.                   this.dirtyComponents.put(var1, new Rectangle(var2, var3, var4, var5));
  154.                   SystemEventQueueUtilities.queueComponentWorkRequest((Component)var7);
  155.                   return;
  156.                }
  157.             }
  158.          }
  159.       }
  160.    }
  161.  
  162.    public Rectangle getDirtyRegion(JComponent var1) {
  163.       Object var2 = null;
  164.       Rectangle var6;
  165.       synchronized(this) {
  166.          var6 = (Rectangle)this.dirtyComponents.get(var1);
  167.       }
  168.  
  169.       return var6 == null ? new Rectangle(0, 0, 0, 0) : new Rectangle(var6);
  170.    }
  171.  
  172.    public void markCompletelyDirty(JComponent var1) {
  173.       this.addDirtyRegion(var1, 0, 0, Integer.MAX_VALUE, Integer.MAX_VALUE);
  174.    }
  175.  
  176.    public void markCompletelyClean(JComponent var1) {
  177.       synchronized(this) {
  178.          this.dirtyComponents.remove(var1);
  179.       }
  180.    }
  181.  
  182.    public boolean isCompletelyDirty(JComponent var1) {
  183.       Rectangle var2 = this.getDirtyRegion(var1);
  184.       return var2.width == Integer.MAX_VALUE && var2.height == Integer.MAX_VALUE;
  185.    }
  186.  
  187.    public void validateInvalidComponents() {
  188.       Vector var1;
  189.       synchronized(this) {
  190.          if (this.invalidComponents == null) {
  191.             return;
  192.          }
  193.  
  194.          var1 = this.invalidComponents;
  195.          this.invalidComponents = null;
  196.       }
  197.  
  198.       int var3 = var1.size();
  199.  
  200.       for(int var4 = 0; var4 < var3; ++var4) {
  201.          ((Component)var1.elementAt(var4)).validate();
  202.       }
  203.  
  204.    }
  205.  
  206.    public void paintDirtyRegions() {
  207.       synchronized(this) {
  208.          Hashtable var6 = this.tmpDirtyComponents;
  209.          this.tmpDirtyComponents = this.dirtyComponents;
  210.          this.dirtyComponents = var6;
  211.          this.dirtyComponents.clear();
  212.       }
  213.  
  214.       int var2 = this.tmpDirtyComponents.size();
  215.       if (var2 != 0) {
  216.          byte var7 = 0;
  217.          byte var8 = 0;
  218.          int var9 = 0;
  219.          int var10 = 0;
  220.          Vector var3 = new Vector(var2);
  221.          Enumeration var11 = this.tmpDirtyComponents.keys();
  222.  
  223.          while(var11.hasMoreElements()) {
  224.             JComponent var4 = (JComponent)var11.nextElement();
  225.             this.collectDirtyComponents(this.tmpDirtyComponents, var4, var3);
  226.          }
  227.  
  228.          var2 = var3.size();
  229.  
  230.          for(int var1 = 0; var1 < var2; ++var1) {
  231.             JComponent var14 = (JComponent)var3.elementAt(var1);
  232.             Rectangle var15 = (Rectangle)this.tmpDirtyComponents.get(var14);
  233.             var9 = var14.getHeight();
  234.             var10 = var14.getWidth();
  235.             SwingUtilities.computeIntersection(var7, var8, var10, var9, var15);
  236.             var14.paintImmediately(var15.x, var15.y, var15.width, var15.height);
  237.          }
  238.  
  239.          this.tmpDirtyComponents.clear();
  240.       }
  241.    }
  242.  
  243.    void collectDirtyComponents(Hashtable var1, JComponent var2, Vector var3) {
  244.       boolean var12 = false;
  245.       Object var9 = var2;
  246.       Object var8 = var2;
  247.       Rectangle var11 = var2._bounds;
  248.       int var6 = 0;
  249.       int var4 = 0;
  250.       int var7 = 0;
  251.       int var5 = 0;
  252.       this.tmp.setBounds((Rectangle)var1.get(var2));
  253.       SwingUtilities.computeIntersection(0, 0, var11.width, var11.height, this.tmp);
  254.       if (!this.tmp.isEmpty()) {
  255.          if (var2.isOpaque()) {
  256.             var12 = true;
  257.          }
  258.  
  259.          while(true) {
  260.             Container var10 = ((Component)var8).getParent();
  261.             if (var10 == null || !(var10 instanceof JComponent)) {
  262.                if (var2 != var9) {
  263.                   this.tmp.setLocation(this.tmp.x + var6 - var4, this.tmp.y + var7 - var5);
  264.                   Rectangle var13 = (Rectangle)var1.get(var9);
  265.                   SwingUtilities.computeUnion(this.tmp.x, this.tmp.y, this.tmp.width, this.tmp.height, var13);
  266.                }
  267.  
  268.                if (!var3.contains(var9)) {
  269.                   var3.addElement(var9);
  270.                }
  271.  
  272.                return;
  273.             }
  274.  
  275.             var8 = var10;
  276.             if (((JComponent)var10).isOpaque()) {
  277.                var12 = true;
  278.             }
  279.  
  280.             var4 += var11.x;
  281.             var5 += var11.y;
  282.             this.tmp.setLocation(this.tmp.x + var11.x, this.tmp.y + var11.y);
  283.             var11 = ((JComponent)var10)._bounds;
  284.             this.tmp = SwingUtilities.computeIntersection(0, 0, var11.width, var11.height, this.tmp);
  285.             if (this.tmp.isEmpty()) {
  286.                return;
  287.             }
  288.  
  289.             if (var1.get(var10) != null) {
  290.                var9 = var10;
  291.                var6 = var4;
  292.                var7 = var5;
  293.             }
  294.          }
  295.       }
  296.    }
  297.  
  298.    public synchronized String toString() {
  299.       StringBuffer var1 = new StringBuffer();
  300.       if (this.dirtyComponents != null) {
  301.          var1.append("" + this.dirtyComponents);
  302.       }
  303.  
  304.       return var1.toString();
  305.    }
  306.  
  307.    public Image getOffscreenBuffer(Component var1, int var2, int var3) {
  308.       Dimension var7 = this.getDoubleBufferMaximumSize();
  309.       if (this.resetDoubleBuffer) {
  310.          this.doubleBuffer = null;
  311.          this.resetDoubleBuffer = false;
  312.       }
  313.  
  314.       int var5;
  315.       if (var2 < 1) {
  316.          var5 = 1;
  317.       } else if (var2 > var7.width) {
  318.          var5 = var7.width;
  319.       } else {
  320.          var5 = var2;
  321.       }
  322.  
  323.       int var6;
  324.       if (var3 < 1) {
  325.          var6 = 1;
  326.       } else if (var3 > var7.height) {
  327.          var6 = var7.height;
  328.       } else {
  329.          var6 = var3;
  330.       }
  331.  
  332.       if (this.doubleBuffer != null && (this.doubleBuffer.getWidth((ImageObserver)null) < var5 || this.doubleBuffer.getHeight((ImageObserver)null) < var6)) {
  333.          this.doubleBuffer = null;
  334.       }
  335.  
  336.       int var8 = var5;
  337.       int var9 = var6;
  338.       if (this.doubleBuffer != null) {
  339.          var8 = this.doubleBufferSize.width;
  340.          var9 = this.doubleBufferSize.height;
  341.          if (this.doubleBufferSize.width < var5) {
  342.             var8 = var5;
  343.             this.doubleBuffer = null;
  344.          }
  345.  
  346.          if (this.doubleBufferSize.height < var6) {
  347.             var9 = var6;
  348.             this.doubleBuffer = null;
  349.          }
  350.       }
  351.  
  352.       Image var10 = this.doubleBuffer;
  353.       if (this.doubleBuffer == null) {
  354.          var10 = var1.createImage(var8, var9);
  355.          this.doubleBufferSize = new Dimension(var8, var9);
  356.          if (var1 instanceof JComponent) {
  357.             ((JComponent)var1).setCreatedDoubleBuffer(true);
  358.             this.doubleBuffer = var10;
  359.          }
  360.       }
  361.  
  362.       return var10;
  363.    }
  364.  
  365.    public void setDoubleBufferMaximumSize(Dimension var1) {
  366.       this.doubleBufferMaxSize = var1;
  367.       if (this.doubleBuffer != null && (this.doubleBuffer.getWidth((ImageObserver)null) > var1.width || this.doubleBuffer.getHeight((ImageObserver)null) > var1.height)) {
  368.          this.doubleBuffer = null;
  369.       }
  370.  
  371.    }
  372.  
  373.    public Dimension getDoubleBufferMaximumSize() {
  374.       if (this.doubleBufferMaxSize == null) {
  375.          this.doubleBufferMaxSize = Toolkit.getDefaultToolkit().getScreenSize();
  376.       }
  377.  
  378.       return this.doubleBufferMaxSize;
  379.    }
  380.  
  381.    public void setDoubleBufferingEnabled(boolean var1) {
  382.       this.doubleBufferingEnabled = var1;
  383.    }
  384.  
  385.    public boolean isDoubleBufferingEnabled() {
  386.       return this.doubleBufferingEnabled;
  387.    }
  388.  
  389.    void resetDoubleBuffer() {
  390.       this.resetDoubleBuffer = true;
  391.    }
  392.  
  393.    // $FF: synthetic method
  394.    static Class class$(String var0) {
  395.       try {
  396.          return Class.forName(var0);
  397.       } catch (ClassNotFoundException var2) {
  398.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  399.       }
  400.    }
  401.  
  402.    static {
  403.       repaintManagerKey = class$javax$swing$RepaintManager == null ? (class$javax$swing$RepaintManager = class$("javax.swing.RepaintManager")) : class$javax$swing$RepaintManager;
  404.    }
  405. }
  406.