| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- package org.leumasjaffe.charsheet.view.skills;
- import javax.swing.JPanel;
- import org.leumasjaffe.charsheet.model.Ability;
- import org.leumasjaffe.charsheet.model.DDCharacter;
- import org.leumasjaffe.charsheet.model.observable.IntValue;
- import org.leumasjaffe.charsheet.model.skill.DDSkill;
- import org.leumasjaffe.charsheet.util.AbilityHelper;
- import org.leumasjaffe.format.StringHelper;
- import org.leumasjaffe.observer.IndirectObservableListener;
- import org.leumasjaffe.observer.ObservableListener;
- import org.leumasjaffe.observer.ObserverDispatch;
- import lombok.AccessLevel;
- import lombok.experimental.FieldDefaults;
- import java.awt.GridBagLayout;
- import javax.swing.JCheckBox;
- import java.awt.GridBagConstraints;
- import javax.swing.JLabel;
- import java.awt.Insets;
- import java.awt.Dimension;
- import javax.swing.JTextField;
- import java.awt.Color;
- import javax.swing.border.MatteBorder;
- import javax.swing.SwingConstants;
- @FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
- public class SkillLine extends JPanel {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- ObservableListener<JTextField, Ability.Scores> modifierListener;
- ObservableListener<JTextField, IntValue> skillListener;
- IndirectObservableListener<JTextField, DDCharacter> totalListener;
- public SkillLine(final DDCharacter chara, final DDSkill skill) {
- setBorder(new MatteBorder(0, 0, 1, 0, (Color) new Color(0, 0, 0)));
- setPreferredSize(new Dimension(550, 22));
- GridBagLayout gridBagLayout = new GridBagLayout();
- gridBagLayout.columnWidths = new int[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
- gridBagLayout.rowHeights = new int[]{0, 0};
- gridBagLayout.columnWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, Double.MIN_VALUE};
- gridBagLayout.rowWeights = new double[]{0.0, Double.MIN_VALUE};
- setLayout(gridBagLayout);
-
- JCheckBox checkBoxIsClassSkill = new JCheckBox("");
- checkBoxIsClassSkill.setToolTipText("Class Skill?");
- checkBoxIsClassSkill.setSelected(chara.isClassSkill(skill.getName()));
- checkBoxIsClassSkill.setEnabled(false);
- GridBagConstraints gbc_checkBoxIsClassSkill = new GridBagConstraints();
- gbc_checkBoxIsClassSkill.insets = new Insets(1, 0, 0, 0);
- gbc_checkBoxIsClassSkill.gridx = 0;
- gbc_checkBoxIsClassSkill.gridy = 0;
- add(checkBoxIsClassSkill, gbc_checkBoxIsClassSkill);
-
- JLabel lblName = new JLabel(skill.getName());
- lblName.setMaximumSize(new Dimension(150, 14));
- lblName.setMinimumSize(new Dimension(150, 14));
- lblName.setPreferredSize(new Dimension(150, 14));
- GridBagConstraints gbc_lblName = new GridBagConstraints();
- gbc_lblName.fill = GridBagConstraints.HORIZONTAL;
- gbc_lblName.insets = new Insets(1, 0, 0, 0);
- gbc_lblName.gridx = 1;
- gbc_lblName.gridy = 0;
- add(lblName, gbc_lblName);
-
- JLabel lblAbil = new JLabel(skill.getAbility());
- lblAbil.setMaximumSize(new Dimension(30, 14));
- lblAbil.setMinimumSize(new Dimension(30, 14));
- lblAbil.setPreferredSize(new Dimension(30, 14));
- GridBagConstraints gbc_lblAbil = new GridBagConstraints();
- gbc_lblAbil.insets = new Insets(1, 0, 0, 0);
- gbc_lblAbil.anchor = GridBagConstraints.EAST;
- gbc_lblAbil.gridx = 2;
- gbc_lblAbil.gridy = 0;
- add(lblAbil, gbc_lblAbil);
-
- JTextField total = new JTextField();
- total.setToolTipText("Skill Modifier");
- total.setHorizontalAlignment(SwingConstants.CENTER);
- total.setEditable(false);
- total.setMinimumSize(new Dimension(30, 20));
- total.setMaximumSize(new Dimension(30, 20));
- total.setPreferredSize(new Dimension(30, 20));
- GridBagConstraints gbc_total = new GridBagConstraints();
- gbc_total.insets = new Insets(1, 0, 0, 0);
- gbc_total.fill = GridBagConstraints.HORIZONTAL;
- gbc_total.gridx = 3;
- gbc_total.gridy = 0;
- add(total, gbc_total);
- total.setColumns(10);
-
- JLabel label = new JLabel("=");
- GridBagConstraints gbc_label = new GridBagConstraints();
- gbc_label.anchor = GridBagConstraints.EAST;
- gbc_label.insets = new Insets(1, 0, 0, 1);
- gbc_label.gridx = 4;
- gbc_label.gridy = 0;
- add(label, gbc_label);
-
- JTextField modifier = new JTextField();
- modifier.setToolTipText("Ability Modifier");
- modifier.setHorizontalAlignment(SwingConstants.CENTER);
- modifier.setEditable(false);
- modifier.setMinimumSize(new Dimension(30, 20));
- modifier.setMaximumSize(new Dimension(30, 20));
- modifier.setPreferredSize(new Dimension(30, 20));
- GridBagConstraints gbc_modifier = new GridBagConstraints();
- gbc_modifier.insets = new Insets(1, 0, 0, 0);
- gbc_modifier.fill = GridBagConstraints.HORIZONTAL;
- gbc_modifier.gridx = 5;
- gbc_modifier.gridy = 0;
- add(modifier, gbc_modifier);
- modifier.setColumns(10);
-
- JLabel label_1 = new JLabel("+");
- GridBagConstraints gbc_label_1 = new GridBagConstraints();
- gbc_label_1.anchor = GridBagConstraints.EAST;
- gbc_label_1.insets = new Insets(1, 0, 0, 1);
- gbc_label_1.gridx = 6;
- gbc_label_1.gridy = 0;
- add(label_1, gbc_label_1);
-
- JTextField ranks = new JTextField(StringHelper.toString(skill.getRanks()));
- ranks.setToolTipText("Ranks");
- ranks.setHorizontalAlignment(SwingConstants.CENTER);
- ranks.setEditable(false);
- ranks.setMinimumSize(new Dimension(30, 20));
- ranks.setMaximumSize(new Dimension(30, 20));
- ranks.setPreferredSize(new Dimension(30, 20));
- GridBagConstraints gbc_ranks = new GridBagConstraints();
- gbc_ranks.insets = new Insets(1, 0, 0, 0);
- gbc_ranks.fill = GridBagConstraints.HORIZONTAL;
- gbc_ranks.gridx = 7;
- gbc_ranks.gridy = 0;
- add(ranks, gbc_ranks);
- ranks.setColumns(10);
-
- JLabel label_2 = new JLabel("+");
- GridBagConstraints gbc_label_2 = new GridBagConstraints();
- gbc_label_2.insets = new Insets(1, 0, 0, 1);
- gbc_label_2.anchor = GridBagConstraints.EAST;
- gbc_label_2.gridx = 8;
- gbc_label_2.gridy = 0;
- add(label_2, gbc_label_2);
-
- JTextField misc = new JTextField();
- misc.setToolTipText("Miscellaneous Modifier");
- misc.setHorizontalAlignment(SwingConstants.CENTER);
- misc.setMinimumSize(new Dimension(30, 20));
- misc.setMaximumSize(new Dimension(30, 20));
- misc.setPreferredSize(new Dimension(30, 20));
- GridBagConstraints gbc_misc = new GridBagConstraints();
- gbc_misc.insets = new Insets(1, 0, 0, 0);
- gbc_misc.fill = GridBagConstraints.HORIZONTAL;
- gbc_misc.gridx = 9;
- gbc_misc.gridy = 0;
- add(misc, gbc_misc);
- misc.setColumns(10);
-
-
- if ( skill.getAbility().isEmpty() ) {
- totalListener = new IndirectObservableListener<>(total,
- (c, v) -> {
- c.setText(StringHelper.toString(skill.getRanks()));
- });
- modifierListener = null;
- totalListener.setObserved(chara, skill.getRanks());
- } else {
- totalListener = new IndirectObservableListener<>(total,
- (c, v) -> {
- final float skillRanks = skill.getRanks().value();
- final int mod = AbilityHelper.get(chara, skill).modifier();
- c.setText(StringHelper.toString(skillRanks + mod));
- });
- modifierListener = new ObservableListener<>(modifier,
- ( c, v ) -> c.setText(StringHelper.toString(v.modifier())));
-
- final Ability.Scores abilScore = AbilityHelper.get(chara, skill);
- totalListener.setObserved(chara, skill.getRanks(), abilScore);
- modifierListener.setObserved(abilScore);
- }
- skillListener = new ObservableListener<>(ranks, (c, v) -> {
- c.setText(StringHelper.toString(v));
- });
- skillListener.setObserved(skill.getRanks());
- }
-
- @Override
- public void removeNotify() {
- super.removeNotify();
- ObserverDispatch.unsubscribeAll(totalListener);
- ObserverDispatch.unsubscribeAll(modifierListener);
- ObserverDispatch.unsubscribeAll(skillListener);
- }
- }
|