package mekhq.gui.model;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import javax.swing.SwingConstants;
import mekhq.campaign.Campaign;
import mekhq.campaign.mission.Scenario;
/**
* A table model for displaying scenarios
*/
public class ScenarioTableModel extends DataTableModel {
private static final long serialVersionUID = 534443424190075264L;
Campaign campaign;
private final static int COL_NAME = 0;
private final static int COL_STATUS = 1;
private final static int COL_DATE = 2;
private final static int COL_ASSIGN = 3;
private final static int N_COL = 4;
public ScenarioTableModel(Campaign c) {
data = new ArrayList<Scenario>();
campaign = c;
}
public int getRowCount() {
return data.size();
}
@Override
public int getColumnCount() {
return N_COL;
}
@Override
public String getColumnName(int column) {
switch(column) {
case COL_NAME:
return "Scenario Name";
case COL_STATUS:
return "Resolution";
case COL_DATE:
return "Date";
case COL_ASSIGN:
return "# Units";
default:
return "?";
}
}
public Object getValueAt(int row, int col) {
Scenario scenario = getScenario(row);
if(col == COL_NAME) {
return scenario.getName();
}
if(col == COL_STATUS) {
return scenario.getStatusName();
}
if(col == COL_DATE) {
if(null == scenario.getDate()) {
return "-";
} else {
SimpleDateFormat shortDateFormat = new SimpleDateFormat("MM/dd/yyyy");
return shortDateFormat.format(scenario.getDate());
}
}
if(col == COL_ASSIGN) {
return scenario.getForces(getCampaign()).getAllUnits().size();
}
return "?";
}
public int getColumnWidth(int c) {
switch(c) {
case COL_NAME:
return 100;
case COL_STATUS:
return 50;
default:
return 20;
}
}
public int getAlignment(int col) {
switch(col) {
default:
return SwingConstants.LEFT;
}
}
@Override
public Class<?> getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
@Override
public boolean isCellEditable(int row, int col) {
return false;
}
public Scenario getScenario(int row) {
return (Scenario)data.get(row);
}
private Campaign getCampaign() {
return campaign;
}
}