diff options
Diffstat (limited to 'javainstaller2/src/JavaSetup/org/openoffice/setup/Util/DialogFocusTraversalPolicy.java')
-rw-r--r-- | javainstaller2/src/JavaSetup/org/openoffice/setup/Util/DialogFocusTraversalPolicy.java | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/javainstaller2/src/JavaSetup/org/openoffice/setup/Util/DialogFocusTraversalPolicy.java b/javainstaller2/src/JavaSetup/org/openoffice/setup/Util/DialogFocusTraversalPolicy.java new file mode 100644 index 000000000000..ae9950841968 --- /dev/null +++ b/javainstaller2/src/JavaSetup/org/openoffice/setup/Util/DialogFocusTraversalPolicy.java @@ -0,0 +1,115 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +package org.openoffice.setup.Util; + +import java.awt.FocusTraversalPolicy; +import javax.swing.JComponent; + +public class DialogFocusTraversalPolicy extends FocusTraversalPolicy { + + private JComponent order[]; + private java.util.List list; + + public DialogFocusTraversalPolicy(JComponent _order[]) { + order = _order; + list = java.util.Arrays.asList(order); + } + + public java.awt.Component getFirstComponent(java.awt.Container focusCycleRoot) { + return order[0]; + } + + public java.awt.Component getLastComponent(java.awt.Container focusCycleRoot) { + return order[order.length - 1]; + } + + public java.awt.Component getComponentAfter(java.awt.Container focusCycleRoot, java.awt.Component aComponent) { + int index = 0,x = -1; + index = list.indexOf(aComponent); + index++; // increasing automatically + if(!order[index % order.length].isEnabled() || + !order[index % order.length].isVisible()) { + x = index; + index = -1; + for (; x != order.length; x++) { + if(order[x].isEnabled() && order[x].isVisible()) { + index = x; + break; + } + } + if(index == -1) { + x = list.indexOf(aComponent); + for(int y = 0; y <= x; y++) { + if(order[y].isEnabled() && order[x].isVisible()) { + index = y; + break; + } + } + } + } + return order[ index % order.length]; + } + + public java.awt.Component getComponentBefore(java.awt.Container focusCycleRoot, java.awt.Component aComponent) { + int index = list.indexOf(aComponent), x = -1; + index--; + if(!order[(index + order.length) % order.length].isEnabled() || + !order[(index + order.length) % order.length].isVisible()) { + x = index; + index = -1; + for(; x >= 0; x--) { + if(order[x].isEnabled() && order[x].isVisible()) { + index = x; + break; + } + } + // if nothing has changed + if(index == -1) { + x = list.indexOf(aComponent); + for(int y = order.length -1; y >= x; y--) { + if(order[y].isEnabled() && order[x].isVisible()) { + index = y; + break; + } + } + } + } + return order[ (index + order.length) % order.length]; + } + + public java.awt.Component getDefaultComponent(java.awt.Container focusCycleRoot) { + return order[0]; + } + + public java.awt.Component getInitialComponent(java.awt.Window window) { + return order[0]; + } + +} + + |