home *** CD-ROM | disk | FTP | other *** search
- package com.sun.java.swing;
-
- import java.awt.AWTEvent;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dialog;
- import java.awt.Rectangle;
- import java.awt.Window;
- import java.awt.event.InputEvent;
- import java.awt.event.KeyEvent;
- import java.util.Vector;
-
- public class DefaultFocusManager extends FocusManager {
- public void processKeyEvent(Component var1, KeyEvent var2) {
- if (var2.getKeyCode() == 9 || var2.getKeyChar() == '\t') {
- if (var1 instanceof JComponent) {
- JComponent var3 = (JComponent)var1;
- if (var3.isManagingFocus() && (((InputEvent)var2).getModifiers() & 2) != 2) {
- return;
- }
- }
-
- if (((AWTEvent)var2).getID() != 401) {
- ((InputEvent)var2).consume();
- return;
- }
-
- if ((((InputEvent)var2).getModifiers() & 1) == 1) {
- this.focusPreviousComponent(var1);
- } else {
- this.focusNextComponent(var1);
- }
-
- ((InputEvent)var2).consume();
- }
-
- }
-
- public void focusNextComponent(Component var1) {
- if (var1 instanceof JComponent) {
- JComponent var2 = (JComponent)var1;
- Container var4 = this.getFocusRoot(var2);
- if (var4 != null) {
- Component var3 = this.getFocusableComponentAfter(var2, var4, true);
- if (var3 != null) {
- if (var3 instanceof JComponent) {
- ((JComponent)var3).grabFocus();
- return;
- }
-
- var3.requestFocus();
- }
- }
- }
-
- }
-
- public void focusPreviousComponent(Component var1) {
- if (var1 instanceof JComponent) {
- JComponent var2 = (JComponent)var1;
- Container var4 = this.getFocusRoot(var2);
- if (var4 != null) {
- Component var3 = this.getFocusableComponentAfter(var2, var4, false);
- if (var3 != null) {
- if (var3 instanceof JComponent) {
- ((JComponent)var3).grabFocus();
- return;
- }
-
- var3.requestFocus();
- }
- }
- }
-
- }
-
- Container getFocusRoot(Component var1) {
- for(Container var2 = var1.getParent(); var2 != null; var2 = ((Component)var2).getParent()) {
- if (var2 instanceof JComponent && ((JComponent)var2).isFocusCycleRoot() || var2 instanceof Window || var2 instanceof Dialog) {
- return var2;
- }
- }
-
- return null;
- }
-
- private Component getFocusableComponentAfter(Component var1, Container var2, boolean var3) {
- Component var5 = var1;
- Component var4 = var1;
-
- do {
- if (var3) {
- var4 = this.getNextComponent(var4, var2, true);
- } else {
- var4 = this.getPreviousComponent(var4, var2);
- }
- } while(var4 != null && var4 != var5 && (!var4.isFocusTraversable() || !var4.isEnabled()));
-
- return var4;
- }
-
- private Component getNextComponent(Component var1, Container var2, boolean var3) {
- Object var4 = null;
- if (var3 && (var1 instanceof JComponent && !((JComponent)var1).isManagingFocus() || !(var1 instanceof JComponent)) && var1 instanceof Container && ((Container)var1).getComponentCount() > 0) {
- return this.getFirstComponent((Container)var1);
- } else {
- Container var5 = var1.getParent();
- Component var6 = this.getComponentAfter(var5, var1);
- if (var6 != null) {
- return var6;
- } else {
- return (Component)(var5 == var2 ? var2 : this.getNextComponent(var5, var2, false));
- }
- }
- }
-
- private Component getPreviousComponent(Component var1, Container var2) {
- Container var3 = var1.getParent();
- if (var1 == var2) {
- return this.getDeepestLastComponent(var2);
- } else {
- Component var4 = this.getComponentBefore(var3, var1);
- return (Component)(var4 != null ? this.getDeepestLastComponent(var4) : var3);
- }
- }
-
- private Component getDeepestLastComponent(Component var1) {
- return (var1 instanceof JComponent && !((JComponent)var1).isManagingFocus() || !(var1 instanceof JComponent)) && var1 instanceof Container && ((Container)var1).getComponentCount() > 0 ? this.getDeepestLastComponent(this.getLastComponent((Container)var1)) : var1;
- }
-
- public Component getFirstComponent(Container var1) {
- Component[] var2 = this.childrenTabOrder(var1);
- return var2.length > 0 ? var2[0] : null;
- }
-
- public Component getLastComponent(Container var1) {
- Component[] var2 = this.childrenTabOrder(var1);
- return var2.length > 0 ? var2[var2.length - 1] : null;
- }
-
- public Component getComponentBefore(Container var1, Component var2) {
- Component[] var3 = this.childrenTabOrder(var1);
- int var4 = 1;
-
- for(int var5 = var3.length; var4 < var5; ++var4) {
- if (var3[var4] == var2) {
- return var3[var4 - 1];
- }
- }
-
- return null;
- }
-
- public Component getComponentAfter(Container var1, Component var2) {
- Component[] var3 = this.childrenTabOrder(var1);
- int var4 = 0;
-
- for(int var5 = var3.length - 1; var4 < var5; ++var4) {
- if (var3[var4] == var2) {
- return var3[var4 + 1];
- }
- }
-
- return null;
- }
-
- public boolean compareTabOrder(Component var1, Component var2) {
- int var4;
- int var6;
- if (var1 instanceof JComponent) {
- var4 = ((JComponent)var1).getY();
- var6 = ((JComponent)var1).getX();
- } else {
- Rectangle var3 = var1.getBounds();
- var4 = var3.y;
- var6 = var3.x;
- }
-
- int var5;
- int var7;
- if (var2 instanceof JComponent) {
- var5 = ((JComponent)var2).getY();
- var7 = ((JComponent)var2).getX();
- } else {
- Rectangle var8 = var2.getBounds();
- var5 = var8.y;
- var7 = var8.x;
- }
-
- if (Math.abs(var4 - var5) < 10) {
- return var6 < var7;
- } else {
- return var4 < var5;
- }
- }
-
- Component[] childrenTabOrder(Container var1) {
- Component[] var2 = var1.getComponents();
- boolean var7 = false;
- int var4 = 0;
-
- int var6;
- for(var6 = var2.length; var4 < var6; ++var4) {
- if (!var7 && var2[var4] instanceof JComponent && ((JComponent)var2[var4]).getNextFocusableComponent() != null) {
- var7 = true;
- }
-
- for(int var5 = var4; var5 < var6; ++var5) {
- if (var4 != var5 && this.compareTabOrder(var2[var5], var2[var4])) {
- Component var3 = var2[var4];
- var2[var4] = var2[var5];
- var2[var5] = var3;
- }
- }
- }
-
- if (var7) {
- Vector var10 = new Vector(var6);
-
- for(int var11 = 0; var11 < var6; ++var11) {
- var10.addElement(var2[var11]);
- }
-
- for(int var12 = 0; var12 < var6; ++var12) {
- int var8;
- Component var9;
- if (var2[var12] instanceof JComponent && (var9 = ((JComponent)var2[var12]).getNextFocusableComponent()) != null && (var8 = var10.indexOf(var9)) != -1) {
- var10.removeElementAt(var8);
- var10.insertElementAt(var9, var12 + 1);
- }
- }
-
- for(int var13 = 0; var13 < var6; ++var13) {
- var2[var13] = (Component)var10.elementAt(var13);
- }
- }
-
- return var2;
- }
- }
-