home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / DefaultFocusManager.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  3.9 KB  |  273 lines

  1. package javax.swing;
  2.  
  3. import java.awt.AWTEvent;
  4. import java.awt.Component;
  5. import java.awt.Container;
  6. import java.awt.Dialog;
  7. import java.awt.Rectangle;
  8. import java.awt.Window;
  9. import java.awt.event.InputEvent;
  10. import java.awt.event.KeyEvent;
  11. import java.util.Stack;
  12.  
  13. public class DefaultFocusManager extends FocusManager {
  14.    Stack history = new Stack();
  15.  
  16.    public void processKeyEvent(Component var1, KeyEvent var2) {
  17.       if (var2.getKeyCode() == 9 || var2.getKeyChar() == '\t') {
  18.          if (var1 instanceof JComponent) {
  19.             JComponent var3 = (JComponent)var1;
  20.             if (var3.isManagingFocus()) {
  21.                int var4 = ((InputEvent)var2).getModifiers() & 2;
  22.                if (var4 != 2 || var2.getKeyCode() == 73) {
  23.                   return;
  24.                }
  25.             }
  26.          }
  27.  
  28.          if (((AWTEvent)var2).getID() != 401) {
  29.             ((InputEvent)var2).consume();
  30.             return;
  31.          }
  32.  
  33.          if ((((InputEvent)var2).getModifiers() & 1) == 1) {
  34.             this.focusPreviousComponent(var1);
  35.          } else {
  36.             this.focusNextComponent(var1);
  37.          }
  38.  
  39.          ((InputEvent)var2).consume();
  40.       }
  41.  
  42.    }
  43.  
  44.    public void focusNextComponent(Component var1) {
  45.       if (var1 instanceof JComponent) {
  46.          JComponent var2 = (JComponent)var1;
  47.          Container var4 = this.getFocusRoot(var2);
  48.          if (!this.history.empty() && this.history.peek() != var1) {
  49.             this.history.removeAllElements();
  50.          }
  51.  
  52.          if (var4 != null) {
  53.             Component var3 = this.getFocusableComponentAfter(var2, var4, true);
  54.             if (var3 != null) {
  55.                if (this.history.empty() || this.history.peek() == var1) {
  56.                   this.history.push(var3);
  57.                }
  58.  
  59.                if (var3 instanceof JComponent) {
  60.                   ((JComponent)var3).grabFocus();
  61.                } else {
  62.                   var3.requestFocus();
  63.                }
  64.             }
  65.          }
  66.       }
  67.  
  68.    }
  69.  
  70.    public void focusPreviousComponent(Component var1) {
  71.       if (var1 instanceof JComponent) {
  72.          JComponent var2 = (JComponent)var1;
  73.          Container var4 = this.getFocusRoot(var2);
  74.          if (!this.history.empty() && this.history.peek() == var1) {
  75.             this.history.pop();
  76.             if (!this.history.empty()) {
  77.                Component var5 = (Component)this.history.peek();
  78.                if (var5 instanceof JComponent) {
  79.                   ((JComponent)var5).grabFocus();
  80.                } else {
  81.                   var5.requestFocus();
  82.                }
  83.  
  84.                return;
  85.             }
  86.          }
  87.  
  88.          this.history.removeAllElements();
  89.          if (var4 != null) {
  90.             Component var3 = this.getFocusableComponentAfter(var2, var4, false);
  91.             if (var3 != null) {
  92.                if (var3 instanceof JComponent) {
  93.                   ((JComponent)var3).grabFocus();
  94.                } else {
  95.                   var3.requestFocus();
  96.                }
  97.             }
  98.          }
  99.       }
  100.  
  101.    }
  102.  
  103.    Container getFocusRoot(Component var1) {
  104.       for(Container var2 = var1.getParent(); var2 != null; var2 = ((Component)var2).getParent()) {
  105.          if (var2 instanceof JComponent && ((JComponent)var2).isFocusCycleRoot() || var2 instanceof Window || var2 instanceof Dialog) {
  106.             return var2;
  107.          }
  108.       }
  109.  
  110.       return null;
  111.    }
  112.  
  113.    private Component getFocusableComponentAfter(Component var1, Container var2, boolean var3) {
  114.       Component var5 = var1;
  115.       Component var4 = var1;
  116.  
  117.       do {
  118.          if (var3) {
  119.             var4 = this.getNextComponent(var4, var2, true);
  120.          } else {
  121.             var4 = this.getPreviousComponent(var4, var2);
  122.          }
  123.       } while(var4 != null && var4 != var5 && (!var4.isVisible() || !var4.isFocusTraversable() || !var4.isEnabled()));
  124.  
  125.       return var4;
  126.    }
  127.  
  128.    private Component getNextComponent(Component var1, Container var2, boolean var3) {
  129.       Object var4 = null;
  130.       if (var3 && var1.isVisible() && (!(var1 instanceof JComponent) || !((JComponent)var1).isManagingFocus()) && var1 instanceof Container && ((Container)var1).getComponentCount() > 0) {
  131.          return this.getFirstComponent((Container)var1);
  132.       } else {
  133.          Container var5 = var1.getParent();
  134.          Component var6 = this.getComponentAfter(var5, var1);
  135.          if (var6 != null) {
  136.             return var6;
  137.          } else {
  138.             return (Component)(var5 == var2 ? var2 : this.getNextComponent(var5, var2, false));
  139.          }
  140.       }
  141.    }
  142.  
  143.    private Component getPreviousComponent(Component var1, Container var2) {
  144.       Container var3 = var1.getParent();
  145.       if (var1 == var2) {
  146.          return this.getDeepestLastComponent(var2);
  147.       } else {
  148.          Component var4 = this.getComponentBefore(var3, var1);
  149.          return (Component)(var4 != null ? this.getDeepestLastComponent(var4) : var3);
  150.       }
  151.    }
  152.  
  153.    private Component getDeepestLastComponent(Component var1) {
  154.       return var1.isVisible() && (var1 instanceof JComponent && !((JComponent)var1).isManagingFocus() || !(var1 instanceof JComponent)) && var1 instanceof Container && ((Container)var1).getComponentCount() > 0 ? this.getDeepestLastComponent(this.getLastComponent((Container)var1)) : var1;
  155.    }
  156.  
  157.    public Component getFirstComponent(Container var1) {
  158.       Component[] var2 = this.childrenTabOrder(var1);
  159.       return var2.length > 0 ? var2[0] : null;
  160.    }
  161.  
  162.    public Component getLastComponent(Container var1) {
  163.       Component[] var2 = this.childrenTabOrder(var1);
  164.       return var2.length > 0 ? var2[var2.length - 1] : null;
  165.    }
  166.  
  167.    public Component getComponentBefore(Container var1, Component var2) {
  168.       Component var3;
  169.       return (var3 = this.inverseGetNextFocusable(var1, var2)) != null ? var3 : this.tabOrderPreviousComponent(var1, var2);
  170.    }
  171.  
  172.    public Component getComponentAfter(Container var1, Component var2) {
  173.       Component var3;
  174.       return var2 instanceof JComponent && (var3 = ((JComponent)var2).getNextFocusableComponent()) != null ? var3 : this.tabOrderNextComponent(var1, var2);
  175.    }
  176.  
  177.    public boolean compareTabOrder(Component var1, Component var2) {
  178.       int var4;
  179.       int var6;
  180.       if (var1 instanceof JComponent) {
  181.          var4 = ((JComponent)var1).getY();
  182.          var6 = ((JComponent)var1).getX();
  183.       } else {
  184.          Rectangle var3 = var1.getBounds();
  185.          var4 = var3.y;
  186.          var6 = var3.x;
  187.       }
  188.  
  189.       int var5;
  190.       int var7;
  191.       if (var2 instanceof JComponent) {
  192.          var5 = ((JComponent)var2).getY();
  193.          var7 = ((JComponent)var2).getX();
  194.       } else {
  195.          Rectangle var8 = var2.getBounds();
  196.          var5 = var8.y;
  197.          var7 = var8.x;
  198.       }
  199.  
  200.       if (Math.abs(var4 - var5) < 10) {
  201.          return var6 < var7;
  202.       } else {
  203.          return var4 < var5;
  204.       }
  205.    }
  206.  
  207.    private Component tabOrderNextComponent(Container var1, Component var2) {
  208.       Component[] var3 = this.childrenTabOrder(var1);
  209.       int var5 = var3.length;
  210.       if (var5 == 1) {
  211.          return null;
  212.       } else {
  213.          for(int var4 = 0; var4 < var5 - 1; ++var4) {
  214.             if (var3[var4] == var2) {
  215.                return var3[var4 + 1];
  216.             }
  217.          }
  218.  
  219.          return null;
  220.       }
  221.    }
  222.  
  223.    private Component tabOrderPreviousComponent(Container var1, Component var2) {
  224.       Component[] var3 = this.childrenTabOrder(var1);
  225.       int var5 = var3.length;
  226.       if (var5 == 1) {
  227.          return null;
  228.       } else {
  229.          for(int var4 = 1; var4 < var5; ++var4) {
  230.             if (var3[var4] == var2) {
  231.                return var3[var4 - 1];
  232.             }
  233.          }
  234.  
  235.          return null;
  236.       }
  237.    }
  238.  
  239.    private Component inverseGetNextFocusable(Container var1, Component var2) {
  240.       Component[] var3 = var1.getComponents();
  241.       int var4 = 0;
  242.  
  243.       for(int var5 = var3.length; var4 < var5; ++var4) {
  244.          if (var3[var4] instanceof JComponent && ((JComponent)var3[var4]).getNextFocusableComponent() == var2) {
  245.             return var3[var4];
  246.          }
  247.       }
  248.  
  249.       return null;
  250.    }
  251.  
  252.    Component[] childrenTabOrder(Container var1) {
  253.       Component[] var2 = var1.getComponents();
  254.       int var4 = 0;
  255.  
  256.       for(int var6 = var2.length; var4 < var6; ++var4) {
  257.          for(int var5 = var4; var5 < var6; ++var5) {
  258.             if (var4 != var5 && this.compareTabOrder(var2[var5], var2[var4])) {
  259.                Component var3 = var2[var4];
  260.                var2[var4] = var2[var5];
  261.                var2[var5] = var3;
  262.             }
  263.          }
  264.       }
  265.  
  266.       return var2;
  267.    }
  268.  
  269.    void clearHistory() {
  270.       this.history.removeAllElements();
  271.    }
  272. }
  273.