use of delta.games.lotro.stats.warbands.WarbandStats in project lotro-companion by dmorcellet.
the class WarbandsTableController method buildCharacterColumn.
private TableColumnController<WarbandDefinition, WarbandStats> buildCharacterColumn(CharacterFile character) {
final WarbandsStats warbandsStats = loadToonStats(character);
CellDataProvider<WarbandDefinition, WarbandStats> cell = new CellDataProvider<WarbandDefinition, WarbandStats>() {
@Override
public WarbandStats getData(WarbandDefinition item) {
return warbandsStats.getWarbandStats(item, true);
}
};
String id = character.getIdentifier();
TableColumnController<WarbandDefinition, WarbandStats> column = new TableColumnController<WarbandDefinition, WarbandStats>(id, "Stats", WarbandStats.class, cell);
// Cell renderer
TableCellRenderer renderer = buildStatCellRenderer(warbandsStats);
column.setCellRenderer(renderer);
// Header renderer
JPanel headerPanel = buildToonHeaderPanel(character);
TableCellRenderer headerRenderer = buildSimpleCellRenderer(headerPanel);
column.setHeaderCellRenderer(headerRenderer);
int minWidth = headerPanel.getPreferredSize().width;
column.setMinWidth(minWidth);
column.setPreferredWidth(minWidth);
// Comparator
Comparator<WarbandStats> statsComparator = new Comparator<WarbandStats>() {
@Override
public int compare(WarbandStats w1, WarbandStats w2) {
Long d1 = w1.getMostRecentDate();
Long d2 = w2.getMostRecentDate();
if (d1 == null) {
if (d2 == null)
return 0;
return -1;
}
if (d2 == null)
return 1;
return d1.compareTo(d2);
}
};
column.setComparator(statsComparator);
return column;
}
use of delta.games.lotro.stats.warbands.WarbandStats in project lotro-companion by dmorcellet.
the class WarbandsTableController method buildStatCellRenderer.
private TableCellRenderer buildStatCellRenderer(final WarbandsStats warbandsStats) {
// Map warband ID -> stats panel
final Map<String, JPanel> cellPanels = new HashMap<String, JPanel>();
TableCellRenderer renderer = new TableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
WarbandStats stats = (WarbandStats) value;
JPanel panel = null;
if (stats != null) {
WarbandDefinition warband = stats.getDefinition();
panel = cellPanels.get(warband.getName());
if (panel == null) {
panel = buildStatsPanel(stats);
cellPanels.put(warband.getName(), panel);
}
} else {
panel = GuiFactory.buildPanel(new BorderLayout());
}
return panel;
}
};
return renderer;
}
Aggregations