Search in sources :

Example 1 with WarbandStats

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;
}
Also used : TableCellRenderer(javax.swing.table.TableCellRenderer) JPanel(javax.swing.JPanel) WarbandsStats(delta.games.lotro.stats.warbands.WarbandsStats) TableColumnController(delta.common.ui.swing.tables.TableColumnController) Comparator(java.util.Comparator) WarbandDefinition(delta.games.lotro.lore.warbands.WarbandDefinition) WarbandStats(delta.games.lotro.stats.warbands.WarbandStats) CellDataProvider(delta.common.ui.swing.tables.CellDataProvider)

Example 2 with WarbandStats

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;
}
Also used : JPanel(javax.swing.JPanel) TableCellRenderer(javax.swing.table.TableCellRenderer) BorderLayout(java.awt.BorderLayout) HashMap(java.util.HashMap) JTable(javax.swing.JTable) WarbandDefinition(delta.games.lotro.lore.warbands.WarbandDefinition) WarbandStats(delta.games.lotro.stats.warbands.WarbandStats)

Aggregations

WarbandDefinition (delta.games.lotro.lore.warbands.WarbandDefinition)2 WarbandStats (delta.games.lotro.stats.warbands.WarbandStats)2 JPanel (javax.swing.JPanel)2 TableCellRenderer (javax.swing.table.TableCellRenderer)2 CellDataProvider (delta.common.ui.swing.tables.CellDataProvider)1 TableColumnController (delta.common.ui.swing.tables.TableColumnController)1 WarbandsStats (delta.games.lotro.stats.warbands.WarbandsStats)1 BorderLayout (java.awt.BorderLayout)1 Comparator (java.util.Comparator)1 HashMap (java.util.HashMap)1 JTable (javax.swing.JTable)1