home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / copyjava.exe / com / sun / java / swing / JComponent.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  25.5 KB  |  1,432 lines

  1. package com.sun.java.swing;
  2.  
  3. import com.sun.java.accessibility.AccessibleContext;
  4. import com.sun.java.swing.border.Border;
  5. import com.sun.java.swing.event.AncestorListener;
  6. import com.sun.java.swing.event.EventListenerList;
  7. import com.sun.java.swing.plaf.ComponentUI;
  8. import java.applet.Applet;
  9. import java.awt.AWTEvent;
  10. import java.awt.Component;
  11. import java.awt.Container;
  12. import java.awt.Dimension;
  13. import java.awt.Graphics;
  14. import java.awt.Image;
  15. import java.awt.Insets;
  16. import java.awt.Point;
  17. import java.awt.Rectangle;
  18. import java.awt.Window;
  19. import java.awt.event.ActionEvent;
  20. import java.awt.event.ActionListener;
  21. import java.awt.event.FocusEvent;
  22. import java.awt.event.InputEvent;
  23. import java.awt.event.KeyEvent;
  24. import java.awt.event.MouseEvent;
  25. import java.awt.image.ImageObserver;
  26. import java.awt.peer.LightweightPeer;
  27. import java.beans.PropertyChangeListener;
  28. import java.beans.PropertyChangeSupport;
  29. import java.beans.PropertyVetoException;
  30. import java.beans.VetoableChangeListener;
  31. import java.beans.VetoableChangeSupport;
  32. import java.io.Serializable;
  33. import java.util.Dictionary;
  34. import java.util.Enumeration;
  35. import java.util.Hashtable;
  36. import java.util.Vector;
  37.  
  38. public abstract class JComponent extends Container implements Serializable {
  39.    private Dimension preferredSize;
  40.    private Dimension minimumSize;
  41.    private Dimension maximumSize;
  42.    private Float alignmentX;
  43.    private Float alignmentY;
  44.    private AncestorNotifier ancestorNotifier;
  45.    Rectangle _bounds = new Rectangle();
  46.    // $FF: renamed from: ui com.sun.java.swing.plaf.ComponentUI
  47.    protected ComponentUI field_0;
  48.    protected EventListenerList listenerList = new EventListenerList();
  49.    private Hashtable clientProperties;
  50.    private VetoableChangeSupport vetoableChangeSupport;
  51.    private Autoscroller autoscroller;
  52.    private int flags;
  53.    private Border border;
  54.    private transient Rectangle tmpRect;
  55.    public static final int WHEN_FOCUSED = 0;
  56.    public static final int WHEN_ANCESTOR_OF_FOCUSED_COMPONENT = 1;
  57.    public static final int WHEN_IN_FOCUSED_WINDOW = 2;
  58.    public static final int UNDEFINED_CONDITION = -1;
  59.    private static final String KEYBOARD_BINDINGS_KEY = "_KeyboardBindings";
  60.    public static final String TOOL_TIP_TEXT_KEY = "ToolTipText";
  61.    private static final String NEXT_FOCUS = "nextFocus";
  62.    private static final int REQUEST_FOCUS_DISABLED = 0;
  63.    private static final int IS_DOUBLE_BUFFERED = 1;
  64.    private static final int ANCESTOR_USING_BUFFER = 2;
  65.    private static final int IS_PAINTING_TILE = 3;
  66.    private static final int HAS_FOCUS = 4;
  67.    private static final int IS_OPAQUE = 5;
  68.    protected AccessibleContext accessibleContext;
  69.    private PropertyChangeSupport changeSupport;
  70.    // $FF: synthetic field
  71.    static Class class$com$sun$java$swing$JComponent$KeyboardState;
  72.  
  73.    public JComponent() {
  74.       ((Component)this).enableEvents(4L);
  75.    }
  76.  
  77.    public void updateUI() {
  78.    }
  79.  
  80.    protected void setUI(ComponentUI var1) {
  81.       if (this.field_0 != null) {
  82.          this.field_0.uninstallUI(this);
  83.       }
  84.  
  85.       ComponentUI var2 = this.field_0;
  86.       this.field_0 = var1;
  87.       if (this.field_0 != null) {
  88.          this.field_0.installUI(this);
  89.       }
  90.  
  91.       ((Container)this).invalidate();
  92.       this.firePropertyChange("UI", var2, this.field_0);
  93.    }
  94.  
  95.    public String getUIClassID() {
  96.       return "not a pluggable look and feel class";
  97.    }
  98.  
  99.    protected Graphics getComponentGraphics(Graphics var1) {
  100.       Object var2 = var1;
  101.       if (this.field_0 != null && DebugGraphics.debugComponentCount() != 0 && this.shouldDebugGraphics() != 0 && !(var1 instanceof DebugGraphics)) {
  102.          if (var1 instanceof SwingGraphics) {
  103.             if (!(((SwingGraphics)var1).subGraphics() instanceof DebugGraphics)) {
  104.                DebugGraphics var3 = new DebugGraphics(((SwingGraphics)var1).subGraphics(), this);
  105.                var2 = SwingGraphics.createSwingGraphics(var3);
  106.             }
  107.          } else {
  108.             var2 = new DebugGraphics(var1, this);
  109.          }
  110.       }
  111.  
  112.       ((Graphics)var2).setColor(((Component)this).getForeground());
  113.       ((Graphics)var2).setFont(((Component)this).getFont());
  114.       return (Graphics)var2;
  115.    }
  116.  
  117.    protected void paintComponent(Graphics var1) {
  118.       if (this.field_0 != null) {
  119.          SwingGraphics var2 = SwingGraphics.createSwingGraphics(var1.create());
  120.  
  121.          try {
  122.             this.field_0.update(var2, this);
  123.          } finally {
  124.             ((Graphics)var2).dispose();
  125.          }
  126.  
  127.       }
  128.    }
  129.  
  130.    protected void paintChildren(Graphics var1) {
  131.       boolean var3 = false;
  132.       SwingGraphics var4;
  133.       if (var1 instanceof SwingGraphics) {
  134.          var4 = (SwingGraphics)var1;
  135.       } else {
  136.          var4 = SwingGraphics.createSwingGraphics(var1);
  137.          var3 = true;
  138.       }
  139.  
  140.       Object var5 = ((Component)this).getTreeLock();
  141.       synchronized(var5){}
  142.  
  143.       try {
  144.          for(int var7 = ((Container)this).getComponentCount() - 1; var7 >= 0; --var7) {
  145.             Component var8 = ((Container)this).getComponent(var7);
  146.             if (var8 != null && isLightweightComponent(var8) && var8.isVisible()) {
  147.                boolean var2 = var8 instanceof JComponent;
  148.                Rectangle var9;
  149.                if (var2) {
  150.                   if (this.tmpRect == null) {
  151.                      this.tmpRect = new Rectangle();
  152.                   }
  153.  
  154.                   var9 = this.tmpRect;
  155.                   ((JComponent)var8).getBounds(var9);
  156.                } else {
  157.                   var9 = var8.getBounds();
  158.                }
  159.  
  160.                if (var4.isClipIntersecting(var9)) {
  161.                   Graphics var10 = SwingGraphics.createGraphics(var1, var9.x, var9.y, var9.width, var9.height);
  162.                   boolean var11 = false;
  163.  
  164.                   try {
  165.                      if (var2) {
  166.                         if (this.getFlag(2)) {
  167.                            ((JComponent)var8).setFlag(2, true);
  168.                            var11 = true;
  169.                         }
  170.  
  171.                         if (this.getFlag(3)) {
  172.                            ((JComponent)var8).setFlag(3, true);
  173.                            var11 = true;
  174.                         }
  175.  
  176.                         ((JComponent)var8).paint(var10);
  177.                      } else {
  178.                         var8.paint(var10);
  179.                      }
  180.                   } finally {
  181.                      var10.dispose();
  182.                      if (var11) {
  183.                         ((JComponent)var8).setFlag(2, false);
  184.                         ((JComponent)var8).setFlag(3, false);
  185.                      }
  186.  
  187.                   }
  188.                }
  189.             }
  190.          }
  191.       } catch (Throwable var19) {
  192.          throw var19;
  193.       }
  194.  
  195.       if (var3) {
  196.          var4.recycle();
  197.       }
  198.  
  199.    }
  200.  
  201.    protected void paintBorder(Graphics var1) {
  202.       Border var2 = this.getBorder();
  203.       if (var2 != null) {
  204.          var2.paintBorder(this, var1, 0, 0, this.getWidth(), this.getHeight());
  205.       }
  206.  
  207.    }
  208.  
  209.    public void update(Graphics var1) {
  210.       this.paint(var1);
  211.    }
  212.  
  213.    public void paint(Graphics var1) {
  214.       if (this.getWidth() != 0 && this.getHeight() != 0) {
  215.          Graphics var2 = this.getComponentGraphics(var1);
  216.          boolean var3;
  217.          if (var2 instanceof SwingGraphics) {
  218.             var3 = false;
  219.          } else {
  220.             var3 = true;
  221.          }
  222.  
  223.          SwingGraphics var4 = SwingGraphics.createSwingGraphics(var2);
  224.          Object var5 = null;
  225.          RepaintManager var6 = RepaintManager.currentManager(this);
  226.          int var7 = var4.getClipX();
  227.          int var8 = var4.getClipY();
  228.          int var9 = var4.getClipWidth();
  229.          int var10 = var4.getClipHeight();
  230.          if (var9 > this.getWidth()) {
  231.             var9 = this.getWidth();
  232.          }
  233.  
  234.          if (var10 > this.getHeight()) {
  235.             var10 = this.getHeight();
  236.          }
  237.  
  238.          if (var6.isDoubleBufferingEnabled() && !this.getFlag(2) && this.isDoubleBuffered()) {
  239.             Image var21 = var6.getOffscreenBuffer(this, var9, var10);
  240.             if (var3) {
  241.                var4.recycle();
  242.                var3 = false;
  243.             }
  244.  
  245.             var4 = SwingGraphics.createSwingGraphics(var21.getGraphics());
  246.             var4.translate(-var7, -var8);
  247.             int var11 = var21.getWidth((ImageObserver)null);
  248.             int var12 = var21.getHeight((ImageObserver)null);
  249.             if (var11 > var9) {
  250.                var11 = var9;
  251.             }
  252.  
  253.             if (var12 > var10) {
  254.                var12 = var10;
  255.             }
  256.  
  257.             try {
  258.                this.setFlag(2, true);
  259.                this.setFlag(3, true);
  260.                int var13 = 0;
  261.  
  262.                for(int var15 = var9; var13 < var15; var13 += var11) {
  263.                   int var14 = 0;
  264.  
  265.                   for(int var16 = var10; var14 < var16; var14 += var12) {
  266.                      if (var14 + var12 >= var16 && var13 + var11 >= var15) {
  267.                         this.setFlag(3, false);
  268.                      }
  269.  
  270.                      var4.translate(-var13, -var14);
  271.                      var4.setClip(var7 + var13, var8 + var14, var11, var12);
  272.                      if (!this.rectangleIsObscured(var7, var8, var11, var12)) {
  273.                         this.paintComponent(var4);
  274.                         this.paintBorder(var4);
  275.                      }
  276.  
  277.                      this.paintChildren(var4);
  278.                      var1.drawImage(var21, var7 + var13, var8 + var14, this);
  279.                      var4.translate(var13, var14);
  280.                   }
  281.                }
  282.             } finally {
  283.                this.setFlag(2, false);
  284.                this.setFlag(3, false);
  285.                var4.dispose();
  286.             }
  287.          } else {
  288.             if (!this.rectangleIsObscured(var7, var8, var9, var10)) {
  289.                this.paintComponent(var4);
  290.                this.paintBorder(var4);
  291.             }
  292.  
  293.             this.paintChildren(var4);
  294.          }
  295.  
  296.          if (var3) {
  297.             var4.recycle();
  298.          }
  299.  
  300.       }
  301.    }
  302.  
  303.    public boolean isPaintingTile() {
  304.       return this.getFlag(3);
  305.    }
  306.  
  307.    public boolean isFocusCycleRoot() {
  308.       return false;
  309.    }
  310.  
  311.    public boolean isManagingFocus() {
  312.       return false;
  313.    }
  314.  
  315.    public void setNextFocusableComponent(Component var1) {
  316.       this.putClientProperty("nextFocus", var1);
  317.    }
  318.  
  319.    public Component getNextFocusableComponent() {
  320.       return (Component)this.getClientProperty("nextFocus");
  321.    }
  322.  
  323.    public void setRequestFocusEnabled(boolean var1) {
  324.       this.setFlag(0, !var1);
  325.    }
  326.  
  327.    public boolean isRequestFocusEnabled() {
  328.       return !this.getFlag(0);
  329.    }
  330.  
  331.    public void requestFocus() {
  332.       if (this.isRequestFocusEnabled()) {
  333.          super.requestFocus();
  334.       }
  335.  
  336.    }
  337.  
  338.    public void grabFocus() {
  339.       super.requestFocus();
  340.    }
  341.  
  342.    public void setPreferredSize(Dimension var1) {
  343.       this.preferredSize = var1;
  344.    }
  345.  
  346.    public Dimension getPreferredSize() {
  347.       if (this.preferredSize != null) {
  348.          return this.preferredSize;
  349.       } else {
  350.          Dimension var1 = null;
  351.          if (this.field_0 != null) {
  352.             var1 = this.field_0.getPreferredSize(this);
  353.          }
  354.  
  355.          return var1 != null ? var1 : super.getPreferredSize();
  356.       }
  357.    }
  358.  
  359.    public void setMaximumSize(Dimension var1) {
  360.       this.maximumSize = var1;
  361.    }
  362.  
  363.    public Dimension getMaximumSize() {
  364.       if (this.maximumSize != null) {
  365.          return this.maximumSize;
  366.       } else {
  367.          Dimension var1 = null;
  368.          if (this.field_0 != null) {
  369.             var1 = this.field_0.getMaximumSize(this);
  370.          }
  371.  
  372.          return var1 != null ? var1 : super.getMaximumSize();
  373.       }
  374.    }
  375.  
  376.    public void setMinimumSize(Dimension var1) {
  377.       this.minimumSize = var1;
  378.    }
  379.  
  380.    public Dimension getMinimumSize() {
  381.       if (this.minimumSize != null) {
  382.          return this.minimumSize;
  383.       } else {
  384.          Dimension var1 = null;
  385.          if (this.field_0 != null) {
  386.             var1 = this.field_0.getMinimumSize(this);
  387.          }
  388.  
  389.          return var1 != null ? var1 : super.getMinimumSize();
  390.       }
  391.    }
  392.  
  393.    public boolean contains(int var1, int var2) {
  394.       return this.field_0 != null ? this.field_0.contains(this, var1, var2) : super.contains(var1, var2);
  395.    }
  396.  
  397.    public void setBorder(Border var1) {
  398.       Border var2 = this.border;
  399.       this.border = var1;
  400.       this.firePropertyChange("border", var2, var1);
  401.       ((Container)this).invalidate();
  402.    }
  403.  
  404.    public Border getBorder() {
  405.       return this.border;
  406.    }
  407.  
  408.    public Insets getInsets() {
  409.       return this.border != null ? this.border.getBorderInsets(this) : super.getInsets();
  410.    }
  411.  
  412.    public float getAlignmentY() {
  413.       return this.alignmentY != null ? this.alignmentY : super.getAlignmentY();
  414.    }
  415.  
  416.    public void setAlignmentY(float var1) {
  417.       this.alignmentY = new Float(var1 > 1.0F ? 1.0F : (var1 < 0.0F ? 0.0F : var1));
  418.    }
  419.  
  420.    public float getAlignmentX() {
  421.       return this.alignmentX != null ? this.alignmentX : super.getAlignmentX();
  422.    }
  423.  
  424.    public void setAlignmentX(float var1) {
  425.       this.alignmentX = new Float(var1 > 1.0F ? 1.0F : (var1 < 0.0F ? 0.0F : var1));
  426.    }
  427.  
  428.    public Graphics getGraphics() {
  429.       if (this.shouldDebugGraphics() != 0) {
  430.          DebugGraphics var1 = new DebugGraphics(super.getGraphics(), this);
  431.          return var1;
  432.       } else {
  433.          return SwingGraphics.createSwingGraphics(super.getGraphics());
  434.       }
  435.    }
  436.  
  437.    public void setDebugGraphicsOptions(int var1) {
  438.       DebugGraphics.setDebugOptions(this, var1);
  439.    }
  440.  
  441.    public int getDebugGraphicsOptions() {
  442.       return DebugGraphics.getDebugOptions(this);
  443.    }
  444.  
  445.    int shouldDebugGraphics() {
  446.       return DebugGraphics.shouldComponentDebug(this);
  447.    }
  448.  
  449.    public void registerKeyboardAction(ActionListener var1, String var2, KeyStroke var3, int var4) {
  450.       boolean var6 = false;
  451.       synchronized(this){}
  452.  
  453.       Hashtable var5;
  454.       try {
  455.          var5 = (Hashtable)this.getClientProperty("_KeyboardBindings");
  456.          if (var5 == null) {
  457.             var5 = new Hashtable();
  458.             this.putClientProperty("_KeyboardBindings", var5);
  459.             var6 = true;
  460.          }
  461.       } catch (Throwable var13) {
  462.          throw var13;
  463.       }
  464.  
  465.       synchronized(var5){}
  466.  
  467.       try {
  468.          var5.put(var3, new KeyboardBinding(var1, var2, var3, var4));
  469.       } catch (Throwable var12) {
  470.          throw var12;
  471.       }
  472.  
  473.       if (var6) {
  474.          ((Component)this).enableEvents(8L);
  475.       }
  476.  
  477.    }
  478.  
  479.    public void registerKeyboardAction(ActionListener var1, KeyStroke var2, int var3) {
  480.       this.registerKeyboardAction(var1, (String)null, var2, var3);
  481.    }
  482.  
  483.    private Hashtable keyboardBindings() {
  484.       synchronized(this){}
  485.  
  486.       Hashtable var1;
  487.       try {
  488.          var1 = (Hashtable)this.getClientProperty("_KeyboardBindings");
  489.       } catch (Throwable var4) {
  490.          throw var4;
  491.       }
  492.  
  493.       return var1;
  494.    }
  495.  
  496.    public void unregisterKeyboardAction(KeyStroke var1) {
  497.       Hashtable var2 = this.keyboardBindings();
  498.       if (var2 != null) {
  499.          synchronized(var2){}
  500.  
  501.          try {
  502.             var2.remove(var1);
  503.          } catch (Throwable var5) {
  504.             throw var5;
  505.          }
  506.  
  507.          var2.size();
  508.       }
  509.    }
  510.  
  511.    public KeyStroke[] getRegisteredKeyStrokes() {
  512.       Hashtable var1 = this.keyboardBindings();
  513.       if (var1 == null) {
  514.          return new KeyStroke[0];
  515.       } else {
  516.          synchronized(var1){}
  517.  
  518.          KeyStroke[] var2;
  519.          try {
  520.             var2 = new KeyStroke[var1.size()];
  521.             int var3 = 0;
  522.  
  523.             for(Enumeration var4 = var1.keys(); var4.hasMoreElements(); var2[var3++] = (KeyStroke)var4.nextElement()) {
  524.             }
  525.          } catch (Throwable var7) {
  526.             throw var7;
  527.          }
  528.  
  529.          return var2;
  530.       }
  531.    }
  532.  
  533.    public int getConditionForKeyStroke(KeyStroke var1) {
  534.       Hashtable var2 = this.keyboardBindings();
  535.       if (var2 == null) {
  536.          return -1;
  537.       } else {
  538.          synchronized(var2){}
  539.  
  540.          int var3;
  541.          try {
  542.             KeyboardBinding var6 = (KeyboardBinding)var2.get(var1);
  543.             if (var6 == null) {
  544.                return -1;
  545.             }
  546.  
  547.             var3 = var6.getCondition();
  548.          } catch (Throwable var8) {
  549.             throw var8;
  550.          }
  551.  
  552.          return var3;
  553.       }
  554.    }
  555.  
  556.    public ActionListener getActionForKeyStroke(KeyStroke var1) {
  557.       Hashtable var2 = this.keyboardBindings();
  558.       if (var2 == null) {
  559.          return null;
  560.       } else {
  561.          synchronized(var2){}
  562.  
  563.          ActionListener var3;
  564.          try {
  565.             KeyboardBinding var6 = (KeyboardBinding)var2.get(var1);
  566.             if (var6 == null) {
  567.                return null;
  568.             }
  569.  
  570.             var3 = var6.getAction();
  571.          } catch (Throwable var8) {
  572.             throw var8;
  573.          }
  574.  
  575.          return var3;
  576.       }
  577.    }
  578.  
  579.    public void resetKeyboardActions() {
  580.       synchronized(this){}
  581.  
  582.       try {
  583.          Hashtable var3 = (Hashtable)this.getClientProperty("_KeyboardBindings");
  584.          if (var3 != null) {
  585.             var3.clear();
  586.          }
  587.       } catch (Throwable var5) {
  588.          throw var5;
  589.       }
  590.  
  591.    }
  592.  
  593.    public boolean requestDefaultFocus() {
  594.       Component[] var1 = ((Container)this).getComponents();
  595.  
  596.       for(int var2 = 0; var2 < var1.length; ++var2) {
  597.          if (var1[var2].isFocusTraversable()) {
  598.             if (var1[var2] instanceof JComponent) {
  599.                ((JComponent)var1[var2]).grabFocus();
  600.             } else {
  601.                var1[var2].requestFocus();
  602.             }
  603.  
  604.             return true;
  605.          }
  606.  
  607.          if (var1[var2] instanceof JComponent && !((JComponent)var1[var2]).isManagingFocus() && ((JComponent)var1[var2]).requestDefaultFocus()) {
  608.             return true;
  609.          }
  610.       }
  611.  
  612.       return false;
  613.    }
  614.  
  615.    public void setVisible(boolean var1) {
  616.       if (var1 != ((Component)this).isVisible()) {
  617.          super.setVisible(var1);
  618.          Container var2 = ((Component)this).getParent();
  619.          if (var2 != null) {
  620.             Rectangle var3 = ((Component)this).getBounds();
  621.             ((Component)var2).repaint(var3.x, var3.y, var3.width, var3.height);
  622.          }
  623.       }
  624.  
  625.    }
  626.  
  627.    public boolean isFocusTraversable() {
  628.       boolean var1 = false;
  629.       synchronized(this){}
  630.  
  631.       Hashtable var2;
  632.       try {
  633.          var2 = (Hashtable)this.getClientProperty("_KeyboardBindings");
  634.       } catch (Throwable var11) {
  635.          throw var11;
  636.       }
  637.  
  638.       if (var2 != null) {
  639.          synchronized(var2){}
  640.  
  641.          try {
  642.             Enumeration var5 = var2.keys();
  643.  
  644.             while(var5.hasMoreElements()) {
  645.                KeyboardBinding var6 = (KeyboardBinding)var2.get(var5.nextElement());
  646.                if (var6.getCondition() == 0) {
  647.                   var1 = true;
  648.                   break;
  649.                }
  650.             }
  651.          } catch (Throwable var12) {
  652.             throw var12;
  653.          }
  654.       }
  655.  
  656.       return var1;
  657.    }
  658.  
  659.    protected void processFocusEvent(FocusEvent var1) {
  660.       switch (((AWTEvent)var1).getID()) {
  661.          case 1004:
  662.             this.setFlag(4, true);
  663.             break;
  664.          case 1005:
  665.             this.setFlag(4, false);
  666.       }
  667.  
  668.       super.processFocusEvent(var1);
  669.    }
  670.  
  671.    protected void processComponentKeyEvent(KeyEvent var1) {
  672.    }
  673.  
  674.    protected void processKeyEvent(KeyEvent var1) {
  675.       boolean var3 = false;
  676.       if (FocusManager.isFocusManagerEnabled()) {
  677.          FocusManager var4 = FocusManager.getCurrentManager();
  678.          var4.processKeyEvent(this, var1);
  679.          if (((InputEvent)var1).isConsumed()) {
  680.             return;
  681.          }
  682.       }
  683.  
  684.       super.processKeyEvent(var1);
  685.       if (!((InputEvent)var1).isConsumed()) {
  686.          this.processComponentKeyEvent(var1);
  687.       }
  688.  
  689.       if (((AWTEvent)var1).getID() == 401) {
  690.          var3 = true;
  691.          if (!com.sun.java.swing.JComponent.KeyboardState.keyIsPressed(var1.getKeyCode())) {
  692.             com.sun.java.swing.JComponent.KeyboardState.registerKeyPressed(var1.getKeyCode());
  693.          }
  694.       } else if (((AWTEvent)var1).getID() == 402) {
  695.          if (com.sun.java.swing.JComponent.KeyboardState.keyIsPressed(var1.getKeyCode())) {
  696.             var3 = true;
  697.             com.sun.java.swing.JComponent.KeyboardState.registerKeyReleased(var1.getKeyCode());
  698.          }
  699.       } else if (((AWTEvent)var1).getID() == 400) {
  700.          var3 = true;
  701.       }
  702.  
  703.       if (!((InputEvent)var1).isConsumed()) {
  704.          if (var3 && ((AWTEvent)var1).getID() == 401) {
  705.             boolean var6 = this.processKeyBindings(var1, true);
  706.             if (var6) {
  707.                ((InputEvent)var1).consume();
  708.                return;
  709.             }
  710.          } else if (var3 && ((AWTEvent)var1).getID() == 402) {
  711.             boolean var5 = this.processKeyBindings(var1, false);
  712.             if (var5) {
  713.                ((InputEvent)var1).consume();
  714.                return;
  715.             }
  716.          } else if (var3 && ((AWTEvent)var1).getID() == 400) {
  717.             boolean var2 = this.processKeyBindings(var1, false);
  718.             if (var2) {
  719.                ((InputEvent)var1).consume();
  720.             }
  721.          }
  722.  
  723.       }
  724.    }
  725.  
  726.    KeyboardBinding bindingForKeyStroke(KeyStroke var1, int var2) {
  727.       KeyboardBinding var5 = null;
  728.       synchronized(this){}
  729.  
  730.       Hashtable var3;
  731.       try {
  732.          var3 = (Hashtable)this.getClientProperty("_KeyboardBindings");
  733.       } catch (Throwable var13) {
  734.          throw var13;
  735.       }
  736.  
  737.       if (var3 != null) {
  738.          synchronized(var3){}
  739.  
  740.          try {
  741.             KeyboardBinding var4 = (KeyboardBinding)var3.get(var1);
  742.             if (var4 != null) {
  743.                ActionListener var8 = var4.getAction();
  744.                if (var8 instanceof Action && !((Action)var8).isEnabled()) {
  745.                   var8 = null;
  746.                }
  747.  
  748.                if (var8 != null) {
  749.                   switch (var4.getCondition()) {
  750.                      case 0:
  751.                         if (var2 == 0) {
  752.                            var5 = var4;
  753.                         }
  754.                         break;
  755.                      case 1:
  756.                         if (var2 == 0 || var2 == 1) {
  757.                            var5 = var4;
  758.                         }
  759.                         break;
  760.                      case 2:
  761.                         if (var2 == 0 || var2 == 2 || var2 == 1) {
  762.                            var5 = var4;
  763.                         }
  764.                   }
  765.                }
  766.             }
  767.          } catch (Throwable var14) {
  768.             throw var14;
  769.          }
  770.       }
  771.  
  772.       return var5;
  773.    }
  774.  
  775.    boolean processKeyBinding(KeyEvent var1, int var2, boolean var3) {
  776.       boolean var4 = !var3;
  777.       Object var5 = null;
  778.       if (((Component)this).isEnabled()) {
  779.          KeyboardBinding var8;
  780.          if (((AWTEvent)var1).getID() == 400) {
  781.             var8 = this.bindingForKeyStroke(KeyStroke.getKeyStroke(var1.getKeyChar()), var2);
  782.          } else {
  783.             var8 = this.bindingForKeyStroke(KeyStroke.getKeyStroke(var1.getKeyCode(), ((InputEvent)var1).getModifiers(), var4), var2);
  784.          }
  785.  
  786.          if (var8 != null) {
  787.             ActionListener var7 = var8.getAction();
  788.             if (var7 != null) {
  789.                var7.actionPerformed(new ActionEvent(this, 1001, var8.getCommand()));
  790.                return true;
  791.             }
  792.          }
  793.       }
  794.  
  795.       return false;
  796.    }
  797.  
  798.    boolean processKeyBindings(KeyEvent var1, boolean var2) {
  799.       Vector var4 = new Vector();
  800.       if (this.processKeyBinding(var1, 0, var2)) {
  801.          return true;
  802.       } else {
  803.          var4.addElement(this);
  804.  
  805.          Container var3;
  806.          for(var3 = ((Component)this).getParent(); var3 != null && !(var3 instanceof Window) && !(var3 instanceof Applet); var3 = ((Component)var3).getParent()) {
  807.             if (var3 instanceof JComponent) {
  808.                if (((JComponent)var3).processKeyBinding(var1, 1, var2)) {
  809.                   return true;
  810.                }
  811.  
  812.                var4.addElement(var3);
  813.             }
  814.          }
  815.  
  816.          return var3 != null ? processKeyBindingsForAllComponents(var1, var3, var4, var2) : false;
  817.       }
  818.    }
  819.  
  820.    static boolean processKeyBindingsForAllComponents(KeyEvent var0, Container var1, Vector var2, boolean var3) {
  821.       if (var1 instanceof JComponent && !var2.contains(var1) && ((JComponent)var1).processKeyBinding(var0, 2, var3)) {
  822.          return true;
  823.       } else {
  824.          Component[] var5 = var1.getComponents();
  825.  
  826.          for(int var4 = 0; var4 < var5.length; ++var4) {
  827.             if (var5[var4] instanceof Container && processKeyBindingsForAllComponents(var0, (Container)var5[var4], var2, var3)) {
  828.                return true;
  829.             }
  830.          }
  831.  
  832.          return false;
  833.       }
  834.    }
  835.  
  836.    public void setToolTipText(String var1) {
  837.       this.putClientProperty("ToolTipText", var1);
  838.       ToolTipManager var2 = ToolTipManager.sharedInstance();
  839.       if (var1 != null) {
  840.          var2.registerComponent(this);
  841.       } else {
  842.          var2.unregisterComponent(this);
  843.       }
  844.    }
  845.  
  846.    public String getToolTipText() {
  847.       return (String)this.getClientProperty("ToolTipText");
  848.    }
  849.  
  850.    public String getToolTipText(MouseEvent var1) {
  851.       return this.getToolTipText();
  852.    }
  853.  
  854.    public Point getToolTipLocation(MouseEvent var1) {
  855.       return null;
  856.    }
  857.  
  858.    public JToolTip createToolTip() {
  859.       JToolTip var1 = new JToolTip();
  860.       var1.setComponent(this);
  861.       return var1;
  862.    }
  863.  
  864.    public void scrollRectToVisible(Rectangle var1) {
  865.       int var3 = this.getX();
  866.       int var4 = this.getY();
  867.  
  868.       Container var2;
  869.       for(var2 = ((Component)this).getParent(); var2 != null && !(var2 instanceof JComponent); var2 = ((Component)var2).getParent()) {
  870.          Rectangle var5 = ((Component)var2).getBounds();
  871.          var3 += var5.x;
  872.          var4 += var5.y;
  873.       }
  874.  
  875.       if (var2 != null) {
  876.          var1.x += var3;
  877.          var1.y += var4;
  878.          ((JComponent)var2).scrollRectToVisible(var1);
  879.          var1.x -= var3;
  880.          var1.y -= var4;
  881.       }
  882.  
  883.    }
  884.  
  885.    public void setAutoscrolls(boolean var1) {
  886.       if (var1) {
  887.          if (this.autoscroller == null) {
  888.             this.autoscroller = new Autoscroller(this);
  889.             return;
  890.          }
  891.       } else if (this.autoscroller != null) {
  892.          this.autoscroller.stop();
  893.          this.autoscroller = null;
  894.       }
  895.  
  896.    }
  897.  
  898.    public boolean getAutoscrolls() {
  899.       return this.autoscroller != null;
  900.    }
  901.  
  902.    protected void processMouseMotionEvent(MouseEvent var1) {
  903.       boolean var2 = true;
  904.       if (this.autoscroller != null && ((AWTEvent)var1).getID() == 506) {
  905.          var2 = !this.autoscroller.timer.isRunning();
  906.          this.autoscroller.mouseDragged(var1);
  907.       }
  908.  
  909.       if (var2) {
  910.          super.processMouseMotionEvent(var1);
  911.       }
  912.  
  913.    }
  914.  
  915.    void superProcessMouseMotionEvent(MouseEvent var1) {
  916.       super.processMouseMotionEvent(var1);
  917.    }
  918.  
  919.    public AccessibleContext getAccessibleContext() {
  920.       return this.accessibleContext;
  921.    }
  922.  
  923.    private Dictionary getClientProperties() {
  924.       if (this.clientProperties == null) {
  925.          this.clientProperties = new Hashtable(2);
  926.       }
  927.  
  928.       return this.clientProperties;
  929.    }
  930.  
  931.    public final Object getClientProperty(Object var1) {
  932.       return this.getClientProperties().get(var1);
  933.    }
  934.  
  935.    public final void putClientProperty(Object var1, Object var2) {
  936.       Object var3 = this.getClientProperties().get(var1);
  937.       if (var2 != null) {
  938.          this.getClientProperties().put(var1, var2);
  939.       } else {
  940.          this.getClientProperties().remove(var1);
  941.       }
  942.  
  943.       this.firePropertyChange(var1.toString(), var3, var2);
  944.    }
  945.  
  946.    public static boolean isLightweightComponent(Component var0) {
  947.       return var0.getPeer() instanceof LightweightPeer;
  948.    }
  949.  
  950.    public void reshape(int var1, int var2, int var3, int var4) {
  951.       if (((Component)this).isShowing()) {
  952.          if (this._bounds.x + this._bounds.width > var1 && this._bounds.y + this._bounds.height > var2 && this._bounds.x < var1 + var3 && this._bounds.y < var2 + var4) {
  953.             Rectangle[] var5 = SwingUtilities.computeDifference(((Component)this).getBounds(), new Rectangle(var1, var2, var3, var4));
  954.             Container var8 = ((Component)this).getParent();
  955.             int var6 = 0;
  956.  
  957.             for(int var7 = var5.length; var6 < var7; ++var6) {
  958.                ((Component)var8).repaint(var5[var6].x, var5[var6].y, var5[var6].width, var5[var6].height);
  959.             }
  960.          } else {
  961.             ((Component)this).getParent().repaint(this._bounds.x, this._bounds.y, this._bounds.width, this._bounds.height);
  962.          }
  963.       }
  964.  
  965.       this._bounds.setBounds(var1, var2, var3, var4);
  966.       super.reshape(var1, var2, var3, var4);
  967.    }
  968.  
  969.    public void setBounds(Rectangle var1) {
  970.       this._bounds.setBounds(var1);
  971.       super.setBounds(var1);
  972.    }
  973.  
  974.    public Rectangle getBounds(Rectangle var1) {
  975.       if (var1 == null) {
  976.          return new Rectangle(this.getX(), this.getY(), this.getWidth(), this.getHeight());
  977.       } else {
  978.          var1.setBounds(this.getX(), this.getY(), this.getWidth(), this.getHeight());
  979.          return var1;
  980.       }
  981.    }
  982.  
  983.    public Dimension getSize(Dimension var1) {
  984.       if (var1 == null) {
  985.          return new Dimension(this.getWidth(), this.getHeight());
  986.       } else {
  987.          var1.setSize(this.getWidth(), this.getHeight());
  988.          return var1;
  989.       }
  990.    }
  991.  
  992.    public Point getLocation(Point var1) {
  993.       if (var1 == null) {
  994.          return new Point(this.getX(), this.getY());
  995.       } else {
  996.          var1.setLocation(this.getX(), this.getY());
  997.          return var1;
  998.       }
  999.    }
  1000.  
  1001.    public int getX() {
  1002.       return this._bounds.x;
  1003.    }
  1004.  
  1005.    public int getY() {
  1006.       return this._bounds.y;
  1007.    }
  1008.  
  1009.    public int getWidth() {
  1010.       return this._bounds.width;
  1011.    }
  1012.  
  1013.    public int getHeight() {
  1014.       return this._bounds.height;
  1015.    }
  1016.  
  1017.    public boolean hasFocus() {
  1018.       return this.getFlag(4);
  1019.    }
  1020.  
  1021.    public boolean isOpaque() {
  1022.       return this.getFlag(5);
  1023.    }
  1024.  
  1025.    public void setOpaque(boolean var1) {
  1026.       boolean var2 = this.getFlag(5);
  1027.       this.setFlag(5, var1);
  1028.       this.firePropertyChange("opaque", var2, var1);
  1029.    }
  1030.  
  1031.    boolean rectangleIsObscured(int var1, int var2, int var3, int var4) {
  1032.       Component[] var5 = ((Container)this).getComponents();
  1033.       if (var5 == null) {
  1034.          return false;
  1035.       } else {
  1036.          for(int var6 = 0; var6 < var5.length; ++var6) {
  1037.             Component var7 = var5[var6];
  1038.             Rectangle var8;
  1039.             if (var7 instanceof JComponent) {
  1040.                var8 = ((JComponent)var7)._bounds;
  1041.             } else {
  1042.                var8 = var7.getBounds();
  1043.             }
  1044.  
  1045.             if (var1 >= var8.x && var1 + var3 <= var8.x + var8.width && var2 >= var8.y && var2 + var4 <= var8.y + var8.height) {
  1046.                if (var7 instanceof JComponent) {
  1047.                   return ((JComponent)var7).isOpaque();
  1048.                }
  1049.  
  1050.                return false;
  1051.             }
  1052.          }
  1053.  
  1054.          return false;
  1055.       }
  1056.    }
  1057.  
  1058.    static final void computeVisibleRect(Component var0, Rectangle var1) {
  1059.       Container var2 = var0.getParent();
  1060.       Rectangle var3 = var0.getBounds();
  1061.       if (var2 != null && !(var2 instanceof Window) && !(var2 instanceof Applet)) {
  1062.          computeVisibleRect(var2, var1);
  1063.          var1.x -= var3.x;
  1064.          var1.y -= var3.y;
  1065.          SwingUtilities.computeIntersection(0, 0, var3.width, var3.height, var1);
  1066.       } else {
  1067.          var1.setBounds(0, 0, var3.width, var3.height);
  1068.       }
  1069.    }
  1070.  
  1071.    public void computeVisibleRect(Rectangle var1) {
  1072.       computeVisibleRect(this, var1);
  1073.    }
  1074.  
  1075.    public Rectangle getVisibleRect() {
  1076.       Rectangle var1 = new Rectangle();
  1077.       this.computeVisibleRect(var1);
  1078.       return var1;
  1079.    }
  1080.  
  1081.    protected void firePropertyChange(String var1, Object var2, Object var3) {
  1082.       if (this.changeSupport != null) {
  1083.          this.changeSupport.firePropertyChange(var1, var2, var3);
  1084.       }
  1085.  
  1086.    }
  1087.  
  1088.    public void firePropertyChange(String var1, byte var2, byte var3) {
  1089.       if (this.changeSupport != null && var2 != var3) {
  1090.          this.changeSupport.firePropertyChange(var1, new Byte(var2), new Byte(var3));
  1091.       }
  1092.  
  1093.    }
  1094.  
  1095.    public void firePropertyChange(String var1, char var2, char var3) {
  1096.       if (this.changeSupport != null && var2 != var3) {
  1097.          this.changeSupport.firePropertyChange(var1, new Character(var2), new Character(var3));
  1098.       }
  1099.  
  1100.    }
  1101.  
  1102.    public void firePropertyChange(String var1, short var2, short var3) {
  1103.       if (this.changeSupport != null && var2 != var3) {
  1104.          this.changeSupport.firePropertyChange(var1, new Short(var2), new Short(var3));
  1105.       }
  1106.  
  1107.    }
  1108.  
  1109.    public void firePropertyChange(String var1, int var2, int var3) {
  1110.       if (this.changeSupport != null && var2 != var3) {
  1111.          this.changeSupport.firePropertyChange(var1, new Integer(var2), new Integer(var3));
  1112.       }
  1113.  
  1114.    }
  1115.  
  1116.    public void firePropertyChange(String var1, long var2, long var4) {
  1117.       if (this.changeSupport != null && var2 != var4) {
  1118.          this.changeSupport.firePropertyChange(var1, new Long(var2), new Long(var4));
  1119.       }
  1120.  
  1121.    }
  1122.  
  1123.    public void firePropertyChange(String var1, float var2, float var3) {
  1124.       if (this.changeSupport != null && var2 != var3) {
  1125.          this.changeSupport.firePropertyChange(var1, new Float(var2), new Float(var3));
  1126.       }
  1127.  
  1128.    }
  1129.  
  1130.    public void firePropertyChange(String var1, double var2, double var4) {
  1131.       if (this.changeSupport != null && var2 != var4) {
  1132.          this.changeSupport.firePropertyChange(var1, new Double(var2), new Double(var4));
  1133.       }
  1134.  
  1135.    }
  1136.  
  1137.    public void firePropertyChange(String var1, boolean var2, boolean var3) {
  1138.       if (this.changeSupport != null && var2 != var3) {
  1139.          this.changeSupport.firePropertyChange(var1, new Boolean(var2), new Boolean(var3));
  1140.       }
  1141.  
  1142.    }
  1143.  
  1144.    public synchronized void addPropertyChangeListener(PropertyChangeListener var1) {
  1145.       if (this.changeSupport == null) {
  1146.          this.changeSupport = new PropertyChangeSupport(this);
  1147.       }
  1148.  
  1149.       this.changeSupport.addPropertyChangeListener(var1);
  1150.    }
  1151.  
  1152.    public synchronized void removePropertyChangeListener(PropertyChangeListener var1) {
  1153.       if (this.changeSupport != null) {
  1154.          this.changeSupport.removePropertyChangeListener(var1);
  1155.       }
  1156.  
  1157.    }
  1158.  
  1159.    protected void fireVetoableChange(String var1, Object var2, Object var3) throws PropertyVetoException {
  1160.       if (this.vetoableChangeSupport != null) {
  1161.          this.vetoableChangeSupport.fireVetoableChange(var1, var2, var3);
  1162.       }
  1163.    }
  1164.  
  1165.    public synchronized void addVetoableChangeListener(VetoableChangeListener var1) {
  1166.       if (this.vetoableChangeSupport == null) {
  1167.          this.vetoableChangeSupport = new VetoableChangeSupport(this);
  1168.       }
  1169.  
  1170.       this.vetoableChangeSupport.addVetoableChangeListener(var1);
  1171.    }
  1172.  
  1173.    public synchronized void removeVetoableChangeListener(VetoableChangeListener var1) {
  1174.       if (this.vetoableChangeSupport != null) {
  1175.          this.vetoableChangeSupport.removeVetoableChangeListener(var1);
  1176.       }
  1177.    }
  1178.  
  1179.    public Container getTopLevelAncestor() {
  1180.       for(Object var1 = this; var1 != null; var1 = ((Component)var1).getParent()) {
  1181.          if (var1 instanceof Window || var1 instanceof Applet) {
  1182.             return (Container)var1;
  1183.          }
  1184.       }
  1185.  
  1186.       return null;
  1187.    }
  1188.  
  1189.    public void addAncestorListener(AncestorListener var1) {
  1190.       if (this.ancestorNotifier == null) {
  1191.          this.ancestorNotifier = new AncestorNotifier(this);
  1192.       }
  1193.  
  1194.       this.ancestorNotifier.addAncestorListener(var1);
  1195.    }
  1196.  
  1197.    public void removeAncestorListener(AncestorListener var1) {
  1198.       if (this.ancestorNotifier != null) {
  1199.          this.ancestorNotifier.removeAncestorListener(var1);
  1200.          if (this.ancestorNotifier.listenerList.getListenerList().length == 0) {
  1201.             this.ancestorNotifier.removeAllListeners();
  1202.             this.ancestorNotifier = null;
  1203.          }
  1204.  
  1205.       }
  1206.    }
  1207.  
  1208.    public void addNotify() {
  1209.       super.addNotify();
  1210.       this.firePropertyChange("ancestor", (Object)null, ((Component)this).getParent());
  1211.    }
  1212.  
  1213.    public void removeNotify() {
  1214.       super.removeNotify();
  1215.       this.firePropertyChange("ancestor", ((Component)this).getParent(), (Object)null);
  1216.    }
  1217.  
  1218.    public void repaint(long var1, int var3, int var4, int var5, int var6) {
  1219.       RepaintManager.currentManager(this).addDirtyRegion(this, var3, var4, var5, var6);
  1220.    }
  1221.  
  1222.    public void repaint(Rectangle var1) {
  1223.       this.repaint(0L, var1.x, var1.y, var1.width, var1.height);
  1224.    }
  1225.  
  1226.    public void revalidate() {
  1227.       if (SwingUtilities.isEventDispatchThread()) {
  1228.          ((Container)this).invalidate();
  1229.          RepaintManager.currentManager(this).addInvalidComponent(this);
  1230.       } else {
  1231.          1 var1 = new 1(this);
  1232.          SwingUtilities.invokeLater(var1);
  1233.       }
  1234.    }
  1235.  
  1236.    public boolean isValidateRoot() {
  1237.       return false;
  1238.    }
  1239.  
  1240.    public boolean isOptimizedDrawingEnabled() {
  1241.       return true;
  1242.    }
  1243.  
  1244.    public void paintImmediately(int var1, int var2, int var3, int var4) {
  1245.       Object var5 = this;
  1246.       if (((Component)this).isShowing()) {
  1247.          while(!((JComponent)var5).isOpaque()) {
  1248.             Container var6 = ((Component)var5).getParent();
  1249.             if (var6 == null) {
  1250.                break;
  1251.             }
  1252.  
  1253.             Rectangle var7;
  1254.             if (var5 instanceof JComponent) {
  1255.                var7 = ((JComponent)var5)._bounds;
  1256.             } else {
  1257.                var7 = ((Component)var5).getBounds();
  1258.             }
  1259.  
  1260.             var1 += var7.x;
  1261.             var2 += var7.y;
  1262.             var5 = var6;
  1263.             if (!(var6 instanceof JComponent)) {
  1264.                break;
  1265.             }
  1266.          }
  1267.  
  1268.          if (var5 instanceof JComponent) {
  1269.             ((JComponent)var5)._paintImmediately(var1, var2, var3, var4);
  1270.          } else {
  1271.             ((Component)var5).repaint(var1, var2, var3, var4);
  1272.          }
  1273.       }
  1274.    }
  1275.  
  1276.    public void paintImmediately(Rectangle var1) {
  1277.       this.paintImmediately(var1.x, var1.y, var1.width, var1.height);
  1278.    }
  1279.  
  1280.    void _paintImmediately(int var1, int var2, int var3, int var4) {
  1281.       Rectangle var7 = new Rectangle(var1, var2, var3, var4);
  1282.       if (this.tmpRect == null) {
  1283.          this.tmpRect = new Rectangle();
  1284.       }
  1285.  
  1286.       this.tmpRect.x = this.tmpRect.y = 0;
  1287.       int var9 = 0;
  1288.       int var10 = 0;
  1289.       boolean var11 = false;
  1290.       boolean var12 = false;
  1291.       boolean var13 = false;
  1292.       JComponent var14 = null;
  1293.       JComponent var15 = this;
  1294.       RepaintManager var16 = RepaintManager.currentManager(this);
  1295.  
  1296.       Object var6;
  1297.       for(var6 = this; var6 != null && !(var6 instanceof Window) && !(var6 instanceof Applet); var6 = ((Component)var6).getParent()) {
  1298.          if (var6 instanceof JComponent && !((JComponent)var6).isOptimizedDrawingEnabled()) {
  1299.             var15 = (JComponent)var6;
  1300.             var10 = 0;
  1301.             var9 = 0;
  1302.             var13 = false;
  1303.          }
  1304.  
  1305.          if (var16.isDoubleBufferingEnabled() && var6 instanceof JComponent && ((JComponent)var6).isDoubleBuffered()) {
  1306.             var13 = true;
  1307.             var14 = (JComponent)var6;
  1308.          }
  1309.  
  1310.          Rectangle var8;
  1311.          if (var6 instanceof JComponent) {
  1312.             var8 = ((JComponent)var6)._bounds;
  1313.          } else {
  1314.             var8 = ((Component)var6).getBounds();
  1315.          }
  1316.  
  1317.          this.tmpRect.width = var8.width;
  1318.          this.tmpRect.height = var8.height;
  1319.          SwingUtilities.computeIntersection(this.tmpRect.x, this.tmpRect.y, this.tmpRect.width, this.tmpRect.height, var7);
  1320.          var7.x += var8.x;
  1321.          var7.y += var8.y;
  1322.          var9 += var8.x;
  1323.          var10 += var8.y;
  1324.       }
  1325.  
  1326.       if (var6 != null && ((Component)var6).getPeer() != null) {
  1327.          var7.x -= var9;
  1328.          var7.y -= var10;
  1329.  
  1330.          SwingGraphics var5;
  1331.          try {
  1332.             var5 = SwingGraphics.createSwingGraphics(var15.getGraphics());
  1333.          } catch (NullPointerException var22) {
  1334.             var5 = null;
  1335.             ((Throwable)var22).printStackTrace();
  1336.          }
  1337.  
  1338.          if (var5 == null) {
  1339.             System.err.println("In paintImmediately null graphics");
  1340.          } else if (var13) {
  1341.             Image var17 = var16.getOffscreenBuffer(var14, var7.width, var7.height);
  1342.             this.paintWithBuffer(var15, var5, var7, var17);
  1343.             ((Graphics)var5).dispose();
  1344.          } else {
  1345.             ((Graphics)var5).setClip(var7.x, var7.y, var7.width, var7.height);
  1346.  
  1347.             try {
  1348.                var15.paint(var5);
  1349.             } finally {
  1350.                ((Graphics)var5).dispose();
  1351.             }
  1352.  
  1353.          }
  1354.       }
  1355.    }
  1356.  
  1357.    private void paintWithBuffer(JComponent var1, Graphics var2, Rectangle var3, Image var4) {
  1358.       SwingGraphics var5 = SwingGraphics.createSwingGraphics(var4.getGraphics());
  1359.       int var6 = var4.getWidth((ImageObserver)null);
  1360.       int var7 = var4.getHeight((ImageObserver)null);
  1361.       if (var6 > var3.width) {
  1362.          var6 = var3.width;
  1363.       }
  1364.  
  1365.       if (var7 > var3.height) {
  1366.          var7 = var3.height;
  1367.       }
  1368.  
  1369.       try {
  1370.          var1.setFlag(2, true);
  1371.          var1.setFlag(3, true);
  1372.          int var8 = var3.x;
  1373.  
  1374.          for(int var10 = var3.x + var3.width; var8 < var10; var8 += var6) {
  1375.             int var9 = var3.y;
  1376.  
  1377.             for(int var11 = var3.y + var3.height; var9 < var11; var9 += var7) {
  1378.                if (var9 + var7 >= var11 && var8 + var6 >= var10) {
  1379.                   var1.setFlag(3, false);
  1380.                }
  1381.  
  1382.                ((Graphics)var5).translate(-var8, -var9);
  1383.                ((Graphics)var5).setClip(var8, var9, var6, var7);
  1384.                var1.paint(var5);
  1385.                var2.setClip(var8, var9, var6, var7);
  1386.                var2.drawImage(var4, var8, var9, var1);
  1387.                ((Graphics)var5).translate(var8, var9);
  1388.             }
  1389.          }
  1390.       } finally {
  1391.          var1.setFlag(2, false);
  1392.          var1.setFlag(3, false);
  1393.          ((Graphics)var5).dispose();
  1394.       }
  1395.  
  1396.    }
  1397.  
  1398.    private void setFlag(int var1, boolean var2) {
  1399.       if (var2) {
  1400.          this.flags |= 1 << var1;
  1401.       } else {
  1402.          this.flags &= ~(1 << var1);
  1403.       }
  1404.    }
  1405.  
  1406.    private boolean getFlag(int var1) {
  1407.       int var2 = 1 << var1;
  1408.       return (this.flags & var2) == var2;
  1409.    }
  1410.  
  1411.    public void setDoubleBuffered(boolean var1) {
  1412.       this.setFlag(1, var1);
  1413.    }
  1414.  
  1415.    public boolean isDoubleBuffered() {
  1416.       return this.getFlag(1);
  1417.    }
  1418.  
  1419.    public JRootPane getRootPane() {
  1420.       return SwingUtilities.getRootPane(this);
  1421.    }
  1422.  
  1423.    // $FF: synthetic method
  1424.    static Class class$(String var0) {
  1425.       try {
  1426.          return Class.forName(var0);
  1427.       } catch (ClassNotFoundException var2) {
  1428.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  1429.       }
  1430.    }
  1431. }
  1432.