package org.leumasjaffe.charsheet.view.summary; import javax.swing.JPanel; import java.awt.GridBagLayout; import java.awt.GridBagConstraints; import java.awt.Insets; import java.util.Arrays; import java.util.List; import java.util.function.Function; import java.awt.Dimension; import java.awt.Color; import org.leumasjaffe.charsheet.model.Ability; import org.leumasjaffe.charsheet.model.observable.IntValue; import lombok.AccessLevel; import lombok.experimental.FieldDefaults; @FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true) public class AbilityPanel extends JPanel { /** * */ private static final long serialVersionUID = 1L; private static final String[] abils = new String[] { "STR", "DEX", "CON", "INT", "WIS", "CHA" }; private static final List> funcs = Arrays.asList( Ability.Scores::getStr, Ability.Scores::getDex, Ability.Scores::getCon, Ability.Scores::getInt, Ability.Scores::getWis, Ability.Scores::getCha ); AbilityLine[] lines = new AbilityLine[6]; public AbilityPanel() { setMaximumSize(new Dimension(210, 150)); setMinimumSize(new Dimension(210, 150)); setPreferredSize(new Dimension(210, 150)); setBackground(Color.WHITE); GridBagLayout gridBagLayout = new GridBagLayout(); gridBagLayout.columnWidths = new int[]{0, 0}; gridBagLayout.rowHeights = new int[]{0, 0, 0, 0, 0, 0, 0}; gridBagLayout.columnWeights = new double[]{1.0, Double.MIN_VALUE}; gridBagLayout.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE}; setLayout(gridBagLayout); for (int i = 0; i < abils.length; ++i) { lines[i] = addAbility(i, abils[i], funcs.get(i)); } } private AbilityLine addAbility(int y, String name, Function func) { AbilityLine abilityLine = new AbilityLine(name, func); abilityLine.setOpaque(false); GridBagConstraints gbc_abilityLine = new GridBagConstraints(); gbc_abilityLine.insets = new Insets(0, 0, 0, 5); gbc_abilityLine.fill = GridBagConstraints.BOTH; gbc_abilityLine.gridx = 0; gbc_abilityLine.gridy = y; add(abilityLine, gbc_abilityLine); return abilityLine; } public void setModel(Ability model) { for (int i = 0; i < abils.length; ++i) { lines[i].setModel(model); } } public AbilityLine getLine(int i) { return lines[i]; } }