package org.appwork.utils.swing;
import java.awt.Component;
import java.awt.Container;
import java.awt.FocusTraversalPolicy;
import java.util.ArrayList;
import javax.swing.JComponent;
public class FocusPolicy extends FocusTraversalPolicy {
private ArrayList<JComponent> order;
public FocusPolicy(JComponent... components) {
this.order = new ArrayList<JComponent>(components.length);
for (JComponent c : components) {
order.add(c);
}
}
public JComponent getComponentAfter(Container focusCycleRoot, Component aJComponent) {
int idx = (order.indexOf(aJComponent) + 1) % order.size();
return order.get(idx);
}
public JComponent getComponentBefore(Container focusCycleRoot, Component aJComponent) {
int idx = order.indexOf(aJComponent) - 1;
if (idx < 0) {
idx = order.size() - 1;
}
return order.get(idx);
}
public JComponent getDefaultComponent(Container focusCycleRoot) {
return order.get(0);
}
public JComponent getLastComponent(Container focusCycleRoot) {
return order.get(order.size() - 1);
}
public JComponent getFirstComponent(Container focusCycleRoot) {
return order.get(0);
}
}