package mekhq.gui.model;
import java.util.Vector;
import javax.swing.event.TreeModelListener;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
import mekhq.campaign.Campaign;
import mekhq.campaign.force.Force;
import mekhq.campaign.unit.Unit;
public class OrgTreeModel implements TreeModel {
private Force rootForce;
private Vector<TreeModelListener> listeners = new Vector<TreeModelListener>();
private Campaign campaign;
public OrgTreeModel(Campaign c) {
campaign = c;
rootForce = campaign.getForces();
}
@Override
public Object getChild(Object parent, int index) {
if(parent instanceof Force) {
return ((Force)parent).getAllChildren(campaign).get(index);
}
return null;
}
@Override
public int getChildCount(Object parent) {
if(parent instanceof Force) {
return ((Force)parent).getAllChildren(campaign).size();
}
return 0;
}
@Override
public int getIndexOfChild(Object parent, Object child) {
if(parent instanceof Force) {
return ((Force)parent).getAllChildren(campaign).indexOf(child);
}
return 0;
}
@Override
public Object getRoot() {
return rootForce;
}
@Override
public boolean isLeaf(Object node) {
return node instanceof Unit || (node instanceof Force && ((Force)node).getAllChildren(campaign).size() == 0);
}
@Override
public void valueForPathChanged(TreePath arg0, Object arg1) {
// TODO Auto-generated method stub
}
public void addTreeModelListener( TreeModelListener listener ) {
if ( listener != null && !listeners.contains( listener ) ) {
listeners.addElement( listener );
}
}
public void removeTreeModelListener( TreeModelListener listener ) {
if ( listener != null ) {
listeners.removeElement( listener );
}
}
}