home *** CD-ROM | disk | FTP | other *** search
- package com.sun.java.swing;
-
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.Image;
- import java.awt.Rectangle;
- import java.awt.Toolkit;
- import java.awt.image.ImageObserver;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Vector;
-
- public class RepaintManager {
- Hashtable dirtyComponents = new Hashtable();
- boolean doubleBufferingEnabled = true;
- Image doubleBuffer;
- Dimension doubleBufferMaxSize = Toolkit.getDefaultToolkit().getScreenSize();
- Vector invalidComponents;
- Timer flushTimer;
- boolean actionPending;
- RepaintListener repaintListener = new RepaintListener(this);
- private static final Object repaintManagerKey;
- // $FF: synthetic field
- static Class class$com$sun$java$swing$RepaintManager;
-
- public static RepaintManager currentManager(JComponent var0) {
- RepaintManager var1 = (RepaintManager)SwingUtilities.appContextGet(repaintManagerKey);
- if (var1 == null) {
- var1 = new RepaintManager();
- SwingUtilities.appContextPut(repaintManagerKey, var1);
- }
-
- return var1;
- }
-
- public static void setCurrentManager(RepaintManager var0) {
- if (var0 != null) {
- SwingUtilities.appContextPut(repaintManagerKey, var0);
- } else {
- SwingUtilities.appContextRemove(repaintManagerKey);
- }
- }
-
- void setupTimer() {
- if (this.flushTimer == null) {
- this.flushTimer = new Timer(0, this.repaintListener);
- this.flushTimer.setRepeats(false);
- this.flushTimer.setCoalesce(true);
- }
-
- if (this.flushTimer.isRunning()) {
- this.flushTimer.stop();
- }
-
- this.flushTimer.start();
- }
-
- public synchronized void addInvalidComponent(JComponent var1) {
- Object var2 = null;
-
- for(Object var3 = var1; var3 != null; var3 = ((Component)var3).getParent()) {
- if (var3 instanceof CellRendererPane) {
- return;
- }
-
- if (var3 instanceof JComponent && ((JComponent)var3).isValidateRoot()) {
- var2 = var3;
- }
- }
-
- if (var2 != null) {
- if (this.invalidComponents == null) {
- this.invalidComponents = new Vector();
- }
-
- int var5 = 0;
-
- for(int var6 = this.invalidComponents.size(); var5 < var6; ++var5) {
- Component var4 = (Component)this.invalidComponents.elementAt(var5);
- if (var4 == var2) {
- return;
- }
- }
-
- this.invalidComponents.addElement(var2);
- if (!this.actionPending) {
- this.actionPending = true;
- this.setupTimer();
- }
- }
-
- }
-
- public synchronized void removeInvalidComponent(JComponent var1) {
- if (this.invalidComponents != null) {
- int var2 = this.invalidComponents.indexOf(var1);
- if (var2 != -1) {
- this.invalidComponents.removeElementAt(var2);
- }
- }
-
- }
-
- public synchronized void addDirtyRegion(JComponent var1, int var2, int var3, int var4, int var5) {
- Rectangle var6 = null;
- if (var4 > 0 && var5 > 0) {
- if (((Component)var1).isShowing()) {
- if (this.dirtyComponents == null) {
- this.dirtyComponents = new Hashtable();
- } else {
- var6 = (Rectangle)this.dirtyComponents.get(var1);
- }
-
- if (var6 == null) {
- var6 = new Rectangle(var2, var3, var4, var5);
- this.dirtyComponents.put(var1, var6);
- } else {
- SwingUtilities.computeUnion(var2, var3, var4, var5, var6);
- }
-
- if (!this.actionPending) {
- this.actionPending = true;
- this.setupTimer();
- }
-
- }
- }
- }
-
- public Rectangle getDirtyRegion(JComponent var1) {
- Rectangle var2 = null;
- synchronized(this){}
-
- try {
- if (this.dirtyComponents != null) {
- var2 = (Rectangle)this.dirtyComponents.get(var1);
- }
- } catch (Throwable var5) {
- throw var5;
- }
-
- return var2 == null ? new Rectangle(0, 0, 0, 0) : new Rectangle(var2);
- }
-
- public void markCompletelyDirty(JComponent var1) {
- this.addDirtyRegion(var1, 0, 0, Integer.MAX_VALUE, Integer.MAX_VALUE);
- }
-
- public void markCompletelyClean(JComponent var1) {
- synchronized(this){}
-
- try {
- if (this.dirtyComponents != null) {
- this.dirtyComponents.remove(var1);
- }
- } catch (Throwable var4) {
- throw var4;
- }
-
- }
-
- public boolean isCompletelyDirty(JComponent var1) {
- Rectangle var2 = this.getDirtyRegion(var1);
- return var2.width == Integer.MAX_VALUE && var2.height == Integer.MAX_VALUE;
- }
-
- public void repaintDirtyRegions() {
- synchronized(this){}
-
- try {
- this.actionPending = false;
- if (this.flushTimer != null) {
- this.flushTimer.stop();
- }
- } catch (Throwable var3) {
- throw var3;
- }
-
- this.validateInvalidComponents();
- this.paintDirtyRegions();
- }
-
- public void validateInvalidComponents() {
- synchronized(this){}
-
- Vector var1;
- try {
- if (this.invalidComponents == null) {
- return;
- }
-
- var1 = this.invalidComponents;
- this.invalidComponents = null;
- } catch (Throwable var7) {
- throw var7;
- }
-
- int var2 = 0;
-
- for(int var3 = var1.size(); var2 < var3; ++var2) {
- ((Component)var1.elementAt(var2)).validate();
- }
-
- }
-
- public void paintDirtyRegions() {
- synchronized(this){}
-
- Hashtable var3;
- try {
- if (this.dirtyComponents == null) {
- return;
- }
-
- var3 = this.dirtyComponents;
- this.dirtyComponents = null;
- } catch (Throwable var10) {
- throw var10;
- }
-
- int var2 = var3.size();
- if (var2 != 0) {
- Vector var4 = new Vector(var2);
- Enumeration var8 = var3.keys();
-
- while(var8.hasMoreElements()) {
- JComponent var5 = (JComponent)var8.nextElement();
- this.collectDirtyComponents(var3, var5, var4);
- }
-
- var2 = var4.size();
-
- for(int var1 = 0; var1 < var2; ++var1) {
- JComponent var12 = (JComponent)var4.elementAt(var1);
- Rectangle var6 = (Rectangle)var3.get(var12);
- Rectangle var7 = ((Component)var12).getBounds();
- var7.x = var7.y = 0;
- var6 = var6.intersection(var7);
- var12.paintImmediately(var6.x, var6.y, var6.width, var6.height);
- }
-
- }
- }
-
- void collectDirtyComponents(Hashtable var1, JComponent var2, Vector var3) {
- boolean var13 = false;
- Object var9 = var2;
- Object var8 = var2;
- Rectangle var12 = var2._bounds;
- int var6 = 0;
- int var4 = 0;
- int var7 = 0;
- int var5 = 0;
- Rectangle var11 = new Rectangle((Rectangle)var1.get(var2));
- SwingUtilities.computeIntersection(0, 0, var12.width, var12.height, var11);
- if (!var11.isEmpty()) {
- if (var2.isOpaque()) {
- var13 = true;
- }
-
- while(true) {
- Container var10 = ((Component)var8).getParent();
- if (var10 == null || !(var10 instanceof JComponent)) {
- if (var2 != var9) {
- var11.setLocation(var11.x + var6 - var4, var11.y + var7 - var5);
- Rectangle var14 = (Rectangle)var1.get(var9);
- SwingUtilities.computeUnion(var11.x, var11.y, var11.width, var11.height, var14);
- }
-
- if (!var3.contains(var9)) {
- var3.addElement(var9);
- }
-
- return;
- }
-
- var8 = var10;
- if (((JComponent)var10).isOpaque()) {
- var13 = true;
- }
-
- var4 += var12.x;
- var5 += var12.y;
- var11.setLocation(var11.x + var12.x, var11.y + var12.y);
- var12 = ((JComponent)var10)._bounds;
- var11 = SwingUtilities.computeIntersection(0, 0, var12.width, var12.height, var11);
- if (var11.isEmpty()) {
- return;
- }
-
- if (var1.get(var10) != null) {
- var9 = var10;
- var6 = var4;
- var7 = var5;
- }
- }
- }
- }
-
- public synchronized String toString() {
- StringBuffer var1 = new StringBuffer();
- if (this.dirtyComponents != null) {
- var1.append(String.valueOf(this.dirtyComponents));
- }
-
- return var1.toString();
- }
-
- public Image getOffscreenBuffer(Component var1, int var2, int var3) {
- int var4;
- if (var2 > this.doubleBufferMaxSize.width) {
- var4 = this.doubleBufferMaxSize.width;
- } else {
- var4 = var2;
- }
-
- int var5;
- if (var3 > this.doubleBufferMaxSize.height) {
- var5 = this.doubleBufferMaxSize.height;
- } else {
- var5 = var3;
- }
-
- if (this.doubleBuffer != null && (this.doubleBuffer.getWidth((ImageObserver)null) < var4 || this.doubleBuffer.getHeight((ImageObserver)null) < var5)) {
- this.doubleBuffer = null;
- }
-
- if (this.doubleBuffer == null) {
- this.doubleBuffer = var1.createImage(var4, var5);
- }
-
- return this.doubleBuffer;
- }
-
- public void setDoubleBufferMaximumSize(Dimension var1) {
- this.doubleBufferMaxSize = var1;
- if (this.doubleBuffer != null && (this.doubleBuffer.getWidth((ImageObserver)null) > var1.width || this.doubleBuffer.getHeight((ImageObserver)null) > var1.height)) {
- this.doubleBuffer = null;
- }
-
- }
-
- public Dimension getDoubleBufferMaximumSize() {
- return this.doubleBufferMaxSize;
- }
-
- public void setDoubleBufferingEnabled(boolean var1) {
- this.doubleBufferingEnabled = var1;
- if (!this.doubleBufferingEnabled) {
- this.doubleBuffer = null;
- }
-
- }
-
- public boolean isDoubleBufferingEnabled() {
- return this.doubleBufferingEnabled;
- }
-
- // $FF: synthetic method
- static Class class$(String var0) {
- try {
- return Class.forName(var0);
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
- }
-
- static {
- repaintManagerKey = class$com$sun$java$swing$RepaintManager != null ? class$com$sun$java$swing$RepaintManager : (class$com$sun$java$swing$RepaintManager = class$("com.sun.java.swing.RepaintManager"));
- }
- }
-