package org.ripple.power.ui.table;
import java.awt.Color;
import java.awt.Component;
import javax.swing.JLabel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;
import org.ripple.power.utils.GraphicsUtils;
public final class AddressTable extends ColorTable {
/**
*
*/
private static final long serialVersionUID = 1L;
public static final int DATE = 1;
public static final int NAME = 2;
public static final int TYPE = 3;
public static final int AMOUNT = 4;
public static final int STATUS = 5;
public static final int ADDRESS = 6;
public static final int CUR = 7;
public static final int ICON = 8;
public static final int INFO = 9;
public static final int INTEGER = 10;
public static final int SERVICES = 11;
public static final int HASH = 12;
public static final int MESSAGE = 13;
public static final int YESNO = 14;
public AddressTable(TableModel tableModel, int[] columnTypes) {
super(tableModel);
JTableHeader header = getTableHeader();
header.setBackground(new Color(70, 70, 70));
header.setForeground(Color.WHITE);
header.setFont(GraphicsUtils.getFont(14));
Component component;
TableCellRenderer renderer;
TableColumn column;
TableColumnModel columnModel = getColumnModel();
TableCellRenderer headRenderer = getTableHeader().getDefaultRenderer();
if (headRenderer instanceof DefaultTableCellRenderer) {
DefaultTableCellRenderer defaultRenderer = (DefaultTableCellRenderer) headRenderer;
defaultRenderer.setHorizontalAlignment(JLabel.CENTER);
}
int columnCount = tableModel.getColumnCount();
if (columnCount > columnTypes.length) {
throw new IllegalArgumentException(
"columnCount > columnTypes.length ! More columns than column types.");
}
for (int i = 0; i < columnCount; i++) {
Object value = null;
column = columnModel.getColumn(i);
switch (columnTypes[i]) {
case DATE: // 日期
column.setCellRenderer(new DateRenderer());
value = "1970-01-01";
break;
case NAME: // 别名(max length 20)
value = "mmmmmmmmmmmmmmmmmmmm";
break;
case TYPE:// 状态(max length 10)
column.setCellRenderer(new StringRenderer(JLabel.CENTER));
value = "mmmmmmmmmm";
break;
case AMOUNT:// 钱数
column.setCellRenderer(new AmountRenderer());
value = "0.000000";
break;
case STATUS: // 状态
column.setCellRenderer(new StringRenderer(JLabel.CENTER));
value = "none";
break;
case ADDRESS: // 地址长度(max length 34)
value = "0123456789AbCdEfGhIjKlMnOpQrStUvWx";
break;
case CUR: // 地址长度(max length 34)
column.setCellRenderer(new StringRenderer(JLabel.CENTER));
value = "XRP";
break;
case ICON: // 图片
column.setCellRenderer(new ImageRenderer(JLabel.CENTER));
break;
case INFO:
column.setCellRenderer(new InfoRenderer(JLabel.LEFT));
break;
case INTEGER:
value = "mmmmmn";
break;
case SERVICES:
column.setCellRenderer(new StringRenderer(JLabel.CENTER));
value = "Mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm";
break;
case HASH:
column.setCellRenderer(new StringRenderer(JLabel.RIGHT));
value = "nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn";
break;
case MESSAGE:
value = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
break;
case YESNO:
column.setCellRenderer(new YesNoRenderer());
value = "mmmmmn";
break;
default:
throw new IllegalArgumentException("Unsupported column type "
+ columnTypes[i]);
}
component = headRenderer.getTableCellRendererComponent(this,
tableModel.getColumnName(i), false, false, 0, i);
int headWidth = component.getPreferredSize().width;
renderer = column.getCellRenderer();
if (renderer == null) {
renderer = getDefaultRenderer(tableModel.getColumnClass(i));
}
component = renderer.getTableCellRendererComponent(this, value,
false, false, 0, i);
int cellWidth = component.getPreferredSize().width;
column.setPreferredWidth(Math.max(headWidth + 5, cellWidth + 5));
}
setAutoResizeMode(AUTO_RESIZE_ALL_COLUMNS);
}
}