package mekhq.gui.model;
import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
public class RankTableModel extends DefaultTableModel {
private static final long serialVersionUID = 534443424190075264L;
public final static int COL_NAME_RATE = 0;
public final static int COL_NAME_MW = 1;
public final static int COL_NAME_ASF = 2;
public final static int COL_NAME_VEE = 3;
public final static int COL_NAME_NAVAL = 4;
public final static int COL_NAME_INF = 5;
public final static int COL_NAME_TECH = 6;
public final static int COL_OFFICER = 7;
public final static int COL_PAYMULT = 8;
public final static int COL_NUM = 9;
public RankTableModel(Object[][] ranksArray, String[] rankColNames) {
super(ranksArray, rankColNames);
}
@Override
public boolean isCellEditable(int row, int column) {
return !(column == COL_NAME_RATE || column == COL_OFFICER);
}
@Override
public Class<?> getColumnClass(int c) {
switch (c) {
case COL_NAME_RATE:
case COL_NAME_MW:
case COL_NAME_ASF:
case COL_NAME_VEE:
case COL_NAME_NAVAL:
case COL_NAME_INF:
case COL_NAME_TECH:
return String.class;
case COL_OFFICER:
return Boolean.class;
case COL_PAYMULT:
return Double.class;
default:
return getValueAt(0, c).getClass();
}
}
public int getColumnWidth(int c) {
switch (c) {
case COL_NAME_RATE:
return 100;
case COL_NAME_MW:
case COL_NAME_ASF:
case COL_NAME_VEE:
case COL_NAME_NAVAL:
case COL_NAME_INF:
case COL_NAME_TECH:
return 500;
case COL_OFFICER:
case COL_PAYMULT:
return 250;
default:
return 500;
}
}
public int getAlignment(int col) {
switch(col) {
case COL_NAME_RATE:
case COL_NAME_MW:
case COL_NAME_ASF:
case COL_NAME_VEE:
case COL_NAME_NAVAL:
case COL_NAME_INF:
case COL_NAME_TECH:
return SwingConstants.LEFT;
default:
return SwingConstants.CENTER;
}
}
public String getTooltip(int row, int col) {
switch(col) {
case COL_NAME_RATE:
return "Rank's Rating";
case COL_NAME_MW:
return "Rank Name for MechWarriors (Used as the default if it doesn't exist for another job)";
case COL_NAME_ASF:
return "Rank Name for ASF Pilots";
case COL_NAME_VEE:
return "Rank Name for Vehicle Crewmen";
case COL_NAME_NAVAL:
return "Rank Name for Naval Personnel (Used as the default for ASF if that column isn't filled)";
case COL_NAME_INF:
return "Rank Name for Infantry Troopers";
case COL_NAME_TECH:
return "Rank Name for Technicians";
default:
return "ERROR: Default Case Returned In RankTableModel.getTooltip!";
}
}
public TableCellRenderer getRenderer() {
return new RankTableModel.Renderer();
}
public class Renderer extends DefaultTableCellRenderer {
private static final long serialVersionUID = 9054581142945717303L;
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected,
hasFocus, row, column);
setOpaque(true);
int actualCol = table.convertColumnIndexToModel(column);
int actualRow = table.convertRowIndexToModel(row);
setHorizontalAlignment(getAlignment(actualCol));
setToolTipText(getTooltip(actualRow, actualCol));
setForeground(Color.BLACK);
if (isSelected) {
setBackground(Color.DARK_GRAY);
setForeground(Color.WHITE);
} else {
// tiger stripes
if ((row % 2) == 0) {
setBackground(new Color(220, 220, 220));
} else {
setBackground(Color.WHITE);
}
}
return this;
}
}
}