Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2008-2011 the original author or authors.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package info.joseluismartin.gui.form;
 
 
 
FocusTraversalProvider for BoxFormBuilder

Author(s):
Jose Luis Martin - (jlm@joseluismartin.info)
 
 	
 	private static final Log log = LogFactory.getLog(FormFocusTransversalPolicy.class);
 	
 	public Component getComponentAfter(Container container,
 			Component component) {
 		
 		// Fix awt bug looking for ComboBoxEditor instead ComboBox
 		// see http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6205817
 		if (component.getParent() instanceof JComboBox)
 				component = component.getParent();
 	
 		int index = .indexOf(component);
 		
 		if (index == -1) { // not owner
 			Container childContainer =  getTopmostProvider(containercomponent);
 			if (childContainer == null)
 				return getFirstComponent(container);
 			
 			FocusTraversalPolicy ftp = childContainer.getFocusTraversalPolicy();
 			if (ftp != null && ftp != this) {
 				Component next =  ftp.getComponentAfter(childContainercomponent);
 				if (next != ftp.getFirstComponent(container)) 
 					return next;
 				
 				// child cycle
 				do {
 					index = .indexOf(childContainer);
 					childContainer = childContainer.getParent();
 				} while (index == -1 || childContainer == null);
 				
 				if (index == -1) {
 					.warn("I can't figure what is the next component");
 					return getFirstComponent(container);
 				}
 			}
 		}
 		
 		index++;
 		
 		if (index < .size() && index >= 0) {
 			Component c = getComponent(index);
 			if (c.isEnabled() && c.isFocusable()) 
 				return c;
 			else 
 				return getComponentAfter(containerc);
 		}
 		
 		return getFirstComponent(container);
 	}
 
 
 	private Component getComponent(int index) {
 		Component c =  .get(index);
 		Container cc = null;
 		if (c instanceof Container) {
 			cc  = (Containerc;
 			else if (cc instanceof JScrollPane) {
 				if (((JScrollPanecc).getViewport().getComponentCount() > 0)
 				c = ((JScrollPanecc).getViewport().getComponent(0);
 			}
 		}
		return c != null ? c : cc;
	}
			Component aComponent) {
		int index = .indexOf(aComponent);
		index--;
		if (index < .size() && index >= 0) {
			Component c = getComponent(index);
			if (c.isEnabled()) 
				return c;
			else 
				return getComponentBefore(aContainerc);
		}
		return getLastComponent(aContainer);
	}
	public Component getDefaultComponent(Container aContainer) {
		if (.size() > 0) {
			return getComponent(0);
		}
		return null;
	}
	public Component getFirstComponent(Container aContainer) {
		return getDefaultComponent(aContainer);
	}
	public Component getLastComponent(Container aContainer) {
		if (!.isEmpty()) {
			if (c.isEnabled())
				return c;
			else
				return getComponentBefore(aContainerc);
		}
		return null;
	}
	public void add(Component c) {
	}

Parameters:
component
Returns:
		Container c = null;
		while ((c = component.getParent()) != null) {
				component = c;
		}
		return null;
	}
	 Container getTopmostProvider(Container focusCycleRootComponent aComponent) {
	        Container aCont = aComponent.getParent();
	        Container ftp = null;
	        while (aCont  != focusCycleRoot && aCont != null) {
	            if (aCont.isFocusTraversalPolicyProvider()) {
	                ftp = aCont;
	            }
	            aCont = aCont.getParent();
	        }
	        if (aCont == null) {
	            return null;
	        }
	        return ftp;
	    }
New to GrepCode? Check out our FAQ X