AbilityLine.java 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package org.leumasjaffe.charsheet.view.summary;
  2. import javax.swing.JPanel;
  3. import javax.swing.JLabel;
  4. import java.awt.Color;
  5. import java.awt.Font;
  6. import javax.swing.border.LineBorder;
  7. import org.leumasjaffe.charsheet.model.Ability;
  8. import org.leumasjaffe.charsheet.model.observable.IntValue;
  9. import lombok.AccessLevel;
  10. import lombok.experimental.FieldDefaults;
  11. import java.awt.GridBagLayout;
  12. import java.util.function.Function;
  13. import java.awt.GridBagConstraints;
  14. import java.awt.Dimension;
  15. import javax.swing.SwingConstants;
  16. @FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
  17. public class AbilityLine extends JPanel {
  18. /**
  19. *
  20. */
  21. private static final long serialVersionUID = 1L;
  22. Function<Ability.Scores, IntValue> access;
  23. AbilityBox ability;
  24. AbilityBox temporary;
  25. public AbilityLine(final String name, Function<Ability.Scores, IntValue> func) {
  26. this.access = func;
  27. setMaximumSize(new Dimension(220, 26));
  28. setMinimumSize(new Dimension(220, 26));
  29. setPreferredSize(new Dimension(220, 26));
  30. GridBagLayout gridBagLayout = new GridBagLayout();
  31. gridBagLayout.columnWidths = new int[]{50, 70, 70, 0};
  32. gridBagLayout.rowHeights = new int[]{26, 0};
  33. gridBagLayout.columnWeights = new double[]{0.0, 0.0, 0.0, Double.MIN_VALUE};
  34. gridBagLayout.rowWeights = new double[]{0.0, Double.MIN_VALUE};
  35. setLayout(gridBagLayout);
  36. JLabel title = new JLabel(name.toUpperCase());
  37. title.setHorizontalAlignment(SwingConstants.CENTER);
  38. title.setForeground(Color.WHITE);
  39. title.setOpaque(true);
  40. title.setMaximumSize(new Dimension(50, 25));
  41. title.setMinimumSize(new Dimension(50, 25));
  42. title.setPreferredSize(new Dimension(50, 25));
  43. title.setBorder(new LineBorder(Color.WHITE));
  44. title.setFont(new Font("Tahoma", Font.BOLD, 18));
  45. title.setBackground(Color.BLACK);
  46. GridBagConstraints gbc_title = new GridBagConstraints();
  47. gbc_title.fill = GridBagConstraints.HORIZONTAL;
  48. gbc_title.gridx = 0;
  49. gbc_title.gridy = 0;
  50. add(title, gbc_title);
  51. ability = new AbilityBox(name, "Ability");
  52. GridBagConstraints gbc_ability = new GridBagConstraints();
  53. gbc_ability.fill = GridBagConstraints.HORIZONTAL;
  54. gbc_ability.gridx = 1;
  55. gbc_ability.gridy = 0;
  56. add(ability, gbc_ability);
  57. temporary = new AbilityBox(name, "Temporary");
  58. temporary.setOpaque(true);
  59. temporary.setBackground(Color.LIGHT_GRAY);
  60. GridBagConstraints gbc_temporary = new GridBagConstraints();
  61. gbc_temporary.fill = GridBagConstraints.HORIZONTAL;
  62. gbc_temporary.gridx = 2;
  63. gbc_temporary.gridy = 0;
  64. add(temporary, gbc_temporary);
  65. }
  66. public void setModel(Ability model) {
  67. this.ability.setModel(access.apply(model.getBase()));
  68. this.temporary.setModel(access.apply(model.getTemp()));
  69. }
  70. }