|
|
@@ -1,128 +1,32 @@
|
|
|
package org.leumasjaffe.charsheet.view.skills;
|
|
|
|
|
|
-import javax.swing.JPanel;
|
|
|
-
|
|
|
import lombok.AccessLevel;
|
|
|
import lombok.experimental.FieldDefaults;
|
|
|
-import java.awt.GridBagLayout;
|
|
|
-import javax.swing.JScrollPane;
|
|
|
-import javax.swing.JTextField;
|
|
|
|
|
|
-import org.jdesktop.swingx.VerticalLayout;
|
|
|
-import org.leumasjaffe.charsheet.model.Ability;
|
|
|
import org.leumasjaffe.charsheet.model.DDCharacter;
|
|
|
import org.leumasjaffe.charsheet.model.DDCharacterClass;
|
|
|
-import org.leumasjaffe.charsheet.model.observable.IntValue;
|
|
|
-import org.leumasjaffe.charsheet.model.skill.DDSkills;
|
|
|
-import org.leumasjaffe.observer.ObservableListener;
|
|
|
-import org.leumasjaffe.observer.ObserverDispatch;
|
|
|
|
|
|
import java.awt.GridBagConstraints;
|
|
|
-import java.awt.Insets;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
|
|
|
-import javax.swing.JLabel;
|
|
|
import javax.swing.JButton;
|
|
|
-import javax.swing.JDialog;
|
|
|
-import java.awt.Dimension;
|
|
|
|
|
|
+@SuppressWarnings("serial")
|
|
|
@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
|
|
|
-public class SkillLevelUpDialog extends JPanel {
|
|
|
-
|
|
|
- /**
|
|
|
- *
|
|
|
- */
|
|
|
- private static final long serialVersionUID = 1L;
|
|
|
- private ObservableListener<JTextField, IntValue> purchaseListener;
|
|
|
+public class SkillLevelUpDialog extends SkillLevelUpPanel {
|
|
|
+ JButton btnSubmitSkillChange;
|
|
|
|
|
|
public SkillLevelUpDialog(final DDCharacter chara, final DDCharacterClass cclass) {
|
|
|
- final IntValue pointsAvaliable = new IntValue(Math.max(1, cclass.getSkillPoints() +
|
|
|
- Ability.modifier(chara.getAbilities().getInt().baseModifier())));
|
|
|
-
|
|
|
- GridBagLayout gridBagLayout = new GridBagLayout();
|
|
|
- gridBagLayout.columnWidths = new int[]{0, 0};
|
|
|
- gridBagLayout.rowHeights = new int[]{0, 0, 0};
|
|
|
- gridBagLayout.columnWeights = new double[]{1.0, Double.MIN_VALUE};
|
|
|
- gridBagLayout.rowWeights = new double[]{0.0, 1.0, Double.MIN_VALUE};
|
|
|
- setLayout(gridBagLayout);
|
|
|
-
|
|
|
- JPanel panel = new JPanel();
|
|
|
- GridBagConstraints gbc_panel = new GridBagConstraints();
|
|
|
- gbc_panel.insets = new Insets(0, 0, 5, 0);
|
|
|
- gbc_panel.fill = GridBagConstraints.HORIZONTAL;
|
|
|
- gbc_panel.gridx = 0;
|
|
|
- gbc_panel.gridy = 0;
|
|
|
- add(panel, gbc_panel);
|
|
|
- GridBagLayout gbl_panel = new GridBagLayout();
|
|
|
- gbl_panel.columnWidths = new int[]{0, 0, 0, 0};
|
|
|
- gbl_panel.rowHeights = new int[]{0, 0};
|
|
|
- gbl_panel.columnWeights = new double[]{0.0, 1.0, 0.0, Double.MIN_VALUE};
|
|
|
- gbl_panel.rowWeights = new double[]{0.0, Double.MIN_VALUE};
|
|
|
- panel.setLayout(gbl_panel);
|
|
|
-
|
|
|
- JLabel lblPointsRemaining = new JLabel("Points Remaining:");
|
|
|
- GridBagConstraints gbc_lblPointsRemaining = new GridBagConstraints();
|
|
|
- gbc_lblPointsRemaining.insets = new Insets(0, 0, 0, 5);
|
|
|
- gbc_lblPointsRemaining.anchor = GridBagConstraints.EAST;
|
|
|
- gbc_lblPointsRemaining.gridx = 0;
|
|
|
- gbc_lblPointsRemaining.gridy = 0;
|
|
|
- panel.add(lblPointsRemaining, gbc_lblPointsRemaining);
|
|
|
-
|
|
|
- JTextField pointsRemaining = new JTextField();
|
|
|
- pointsRemaining.setEditable(false);
|
|
|
- GridBagConstraints gbc_pointsRemaining = new GridBagConstraints();
|
|
|
- gbc_pointsRemaining.insets = new Insets(0, 0, 0, 5);
|
|
|
- gbc_pointsRemaining.fill = GridBagConstraints.HORIZONTAL;
|
|
|
- gbc_pointsRemaining.gridx = 1;
|
|
|
- gbc_pointsRemaining.gridy = 0;
|
|
|
- panel.add(pointsRemaining, gbc_pointsRemaining);
|
|
|
- pointsRemaining.setColumns(10);
|
|
|
-
|
|
|
- JScrollPane scrollPane = new JScrollPane();
|
|
|
- GridBagConstraints gbc_scrollPane = new GridBagConstraints();
|
|
|
- gbc_scrollPane.fill = GridBagConstraints.BOTH;
|
|
|
- gbc_scrollPane.gridx = 0;
|
|
|
- gbc_scrollPane.gridy = 1;
|
|
|
- add(scrollPane, gbc_scrollPane);
|
|
|
-
|
|
|
- JPanel skillPanel = new JPanel();
|
|
|
- skillPanel.setMinimumSize(new Dimension(300, 200));
|
|
|
- scrollPane.setViewportView(skillPanel);
|
|
|
- skillPanel.setLayout(new VerticalLayout());
|
|
|
-
|
|
|
- JButton btnSubmitSkillChange = new JButton("Submit Skill Change");
|
|
|
+ super(chara, cclass);
|
|
|
+ btnSubmitSkillChange = new JButton("Submit Skill Change");
|
|
|
btnSubmitSkillChange.setEnabled(false);
|
|
|
GridBagConstraints gbc_btnSubmitSkillChange = new GridBagConstraints();
|
|
|
gbc_btnSubmitSkillChange.gridx = 2;
|
|
|
gbc_btnSubmitSkillChange.gridy = 0;
|
|
|
- panel.add(btnSubmitSkillChange, gbc_btnSubmitSkillChange);
|
|
|
-
|
|
|
- final List<SkillLevelUpLine> lines = new ArrayList<>();
|
|
|
- final DDSkills skills = chara.getSkills();
|
|
|
- skills.getSkills().stream().forEach( skill -> {
|
|
|
- SkillLevelUpLine line = new SkillLevelUpLine(chara, cclass, skill, pointsAvaliable);
|
|
|
- skillPanel.add(line);
|
|
|
- lines.add(line);
|
|
|
- });
|
|
|
-
|
|
|
- purchaseListener = new ObservableListener<>(pointsRemaining, (c, v) -> {
|
|
|
- btnSubmitSkillChange.setEnabled(v.value() == 0);
|
|
|
- c.setText(Integer.toString(v.value()));
|
|
|
- });
|
|
|
- purchaseListener.setObserved(pointsAvaliable);
|
|
|
-
|
|
|
- btnSubmitSkillChange.addActionListener(e -> {
|
|
|
- ((JDialog) this.getParent().getParent().getParent()).dispose();
|
|
|
- lines.stream().forEach(l -> {
|
|
|
- l.applyChange();
|
|
|
- });
|
|
|
- });
|
|
|
+ getPanel().add(btnSubmitSkillChange, gbc_btnSubmitSkillChange);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void removeNotify() {
|
|
|
- super.removeNotify();
|
|
|
- ObserverDispatch.unsubscribeAll(purchaseListener);
|
|
|
+ public void setIsReady(boolean b) {
|
|
|
+ btnSubmitSkillChange.setEnabled(b);
|
|
|
}
|
|
|
}
|