AbilityPanel.java 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package org.leumasjaffe.charsheet.view.summary;
  2. import javax.swing.JPanel;
  3. import java.awt.GridBagLayout;
  4. import java.awt.GridBagConstraints;
  5. import java.awt.Insets;
  6. import java.util.Arrays;
  7. import java.util.List;
  8. import java.util.function.Function;
  9. import java.awt.Dimension;
  10. import java.awt.Color;
  11. import org.leumasjaffe.charsheet.model.Ability;
  12. import org.leumasjaffe.charsheet.model.observable.IntValue;
  13. import lombok.AccessLevel;
  14. import lombok.experimental.FieldDefaults;
  15. @FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
  16. public class AbilityPanel extends JPanel {
  17. /**
  18. *
  19. */
  20. private static final long serialVersionUID = 1L;
  21. private static final String[] abils = new String[] { "STR", "DEX", "CON", "INT", "WIS", "CHA" };
  22. private static final List<Function<Ability.Scores, IntValue>> funcs = Arrays.asList(
  23. Ability.Scores::getStr, Ability.Scores::getDex, Ability.Scores::getCon,
  24. Ability.Scores::getInt, Ability.Scores::getWis, Ability.Scores::getCha
  25. );
  26. AbilityLine[] lines = new AbilityLine[6];
  27. public AbilityPanel() {
  28. setMaximumSize(new Dimension(210, 150));
  29. setMinimumSize(new Dimension(210, 150));
  30. setPreferredSize(new Dimension(210, 150));
  31. setBackground(Color.WHITE);
  32. GridBagLayout gridBagLayout = new GridBagLayout();
  33. gridBagLayout.columnWidths = new int[]{0, 0};
  34. gridBagLayout.rowHeights = new int[]{0, 0, 0, 0, 0, 0, 0};
  35. gridBagLayout.columnWeights = new double[]{1.0, Double.MIN_VALUE};
  36. gridBagLayout.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
  37. setLayout(gridBagLayout);
  38. for (int i = 0; i < abils.length; ++i) {
  39. lines[i] = addAbility(i, abils[i], funcs.get(i));
  40. }
  41. }
  42. private AbilityLine addAbility(int y, String name, Function<Ability.Scores, IntValue> func) {
  43. AbilityLine abilityLine = new AbilityLine(name, func);
  44. abilityLine.setOpaque(false);
  45. GridBagConstraints gbc_abilityLine = new GridBagConstraints();
  46. gbc_abilityLine.insets = new Insets(0, 0, 0, 5);
  47. gbc_abilityLine.fill = GridBagConstraints.BOTH;
  48. gbc_abilityLine.gridx = 0;
  49. gbc_abilityLine.gridy = y;
  50. add(abilityLine, gbc_abilityLine);
  51. return abilityLine;
  52. }
  53. public void setModel(Ability model) {
  54. for (int i = 0; i < abils.length; ++i) {
  55. lines[i].setModel(model);
  56. }
  57. }
  58. public AbilityLine getLine(int i) {
  59. return lines[i];
  60. }
  61. }