package mekhq.gui.model;
import java.awt.Component;
import java.util.ArrayList;
import javax.swing.AbstractListModel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
import mekhq.IconPackage;
import mekhq.campaign.Campaign;
import mekhq.campaign.personnel.Person;
import mekhq.gui.BasicInfo;
/**
* A table model for displaying personnel in the infirmary
*/
public class PatientTableModel extends AbstractListModel<Person> {
private static final long serialVersionUID = -1615929049408417297L;
ArrayList<Person> patients;
Campaign campaign;
public PatientTableModel(Campaign c) {
patients = new ArrayList<Person>();
campaign = c;
}
//fill table with values
public void setData(ArrayList<Person> data) {
patients = data;
this.fireContentsChanged(this, 0, patients.size());
//fireTableDataChanged();
}
@Override
public Person getElementAt(int index) {
if (index < 0 || index >= patients.size()) {
return null;
}
return patients.get(index);
}
@Override
public int getSize() {
return patients.size();
}
private Campaign getCampaign() {
return campaign;
}
public PatientTableModel.Renderer getRenderer(IconPackage icons) {
return new PatientTableModel.Renderer(icons);
}
public class Renderer extends BasicInfo implements ListCellRenderer<Object> {
public Renderer(IconPackage icons) {
super(icons);
}
private static final long serialVersionUID = -406535109900807837L;
public Component getListCellRendererComponent(
JList<?> list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus) {
Component c = this;
setOpaque(true);
Person p = (Person)getElementAt(index);
if (getCampaign().getCampaignOptions().useAdvancedMedical()) {
setText(p.getInjuriesDesc(), "black");
} else {
setText(p.getPatientDesc(), "black");
}
if (isSelected) {
highlightBorder();
} else {
unhighlightBorder();
}
setPortrait(p);
return c;
}
}
}