package org.javabuilders.swing.handler.type;
import java.awt.Component;
import java.awt.Container;
import java.util.ArrayList;
import java.util.List;
import javax.swing.LayoutFocusTraversalPolicy;
/**
* Used for controlling control focus
* @author Jacek Furmankiewicz
*/
@SuppressWarnings("serial")
public class Focus extends LayoutFocusTraversalPolicy {
private List<Component> components = new ArrayList<Component>();
@Override
public Component getComponentAfter(Container aContainer, Component aComponent) {
int i = components.indexOf(aComponent) + 1;
if (i >= components.size()) {
i = 0;
}
return components.get(i);
}
@Override
public Component getComponentBefore(Container aContainer, Component aComponent) {
int i = components.indexOf(aComponent) + 1;
if (i < 0) {
i = components.size() - 1;
}
return components.get(i);
}
@Override
public Component getDefaultComponent(Container aContainer) {
return components.get(0);
}
@Override
public Component getFirstComponent(Container aContainer) {
return components.get(0);
}
@Override
public Component getLastComponent(Container aContainer) {
return components.get(components.size() - 1);
}
/**
* @return the components
*/
public List<Component> getComponents() {
return components;
}
/**
* @param components the components to set
*/
public void setComponents(List<Component> components) {
this.components = components;
}
}