|
|
@@ -12,6 +12,11 @@ import org.leumasjaffe.charsheet.view.skills.SkillLine;
|
|
|
import lombok.AccessLevel;
|
|
|
import lombok.experimental.FieldDefaults;
|
|
|
import java.awt.Dimension;
|
|
|
+import java.awt.Insets;
|
|
|
+import javax.swing.JLabel;
|
|
|
+import javax.swing.JTextField;
|
|
|
+import java.awt.Component;
|
|
|
+import javax.swing.Box;
|
|
|
|
|
|
@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
|
|
|
public class SkillTab extends JPanel {
|
|
|
@@ -20,21 +25,98 @@ public class SkillTab extends JPanel {
|
|
|
*/
|
|
|
private static final long serialVersionUID = 1L;
|
|
|
JPanel skillPanel;
|
|
|
+ JTextField txtTotalSkillPoints;
|
|
|
+ JTextField txtClassSkills;
|
|
|
+ JTextField txtCrossClass;
|
|
|
|
|
|
public SkillTab() {
|
|
|
setPreferredSize(new Dimension(600, 300));
|
|
|
GridBagLayout gridBagLayout = new GridBagLayout();
|
|
|
gridBagLayout.columnWidths = new int[]{0, 0};
|
|
|
- gridBagLayout.rowHeights = new int[]{0, 0};
|
|
|
+ gridBagLayout.rowHeights = new int[]{0, 0, 0};
|
|
|
gridBagLayout.columnWeights = new double[]{1.0, Double.MIN_VALUE};
|
|
|
- gridBagLayout.rowWeights = 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.BOTH;
|
|
|
+ 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, 0, 0, 0, 0};
|
|
|
+ gbl_panel.rowHeights = new int[]{0, 0};
|
|
|
+ gbl_panel.columnWeights = new double[]{0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, Double.MIN_VALUE};
|
|
|
+ gbl_panel.rowWeights = new double[]{0.0, Double.MIN_VALUE};
|
|
|
+ panel.setLayout(gbl_panel);
|
|
|
+
|
|
|
+ JLabel lblTotalSkillPoints = new JLabel("Total Skill Points:");
|
|
|
+ GridBagConstraints gbc_lblTotalSkillPoints = new GridBagConstraints();
|
|
|
+ gbc_lblTotalSkillPoints.insets = new Insets(0, 0, 0, 5);
|
|
|
+ gbc_lblTotalSkillPoints.anchor = GridBagConstraints.EAST;
|
|
|
+ gbc_lblTotalSkillPoints.gridx = 0;
|
|
|
+ gbc_lblTotalSkillPoints.gridy = 0;
|
|
|
+ panel.add(lblTotalSkillPoints, gbc_lblTotalSkillPoints);
|
|
|
+
|
|
|
+ txtTotalSkillPoints = new JTextField();
|
|
|
+ txtTotalSkillPoints.setEditable(false);
|
|
|
+ GridBagConstraints gbc_txtTotalSkillPoints = new GridBagConstraints();
|
|
|
+ gbc_txtTotalSkillPoints.insets = new Insets(0, 0, 0, 5);
|
|
|
+ gbc_txtTotalSkillPoints.fill = GridBagConstraints.HORIZONTAL;
|
|
|
+ gbc_txtTotalSkillPoints.gridx = 1;
|
|
|
+ gbc_txtTotalSkillPoints.gridy = 0;
|
|
|
+ panel.add(txtTotalSkillPoints, gbc_txtTotalSkillPoints);
|
|
|
+ txtTotalSkillPoints.setColumns(10);
|
|
|
+
|
|
|
+ Component horizontalStrut = Box.createHorizontalStrut(20);
|
|
|
+ GridBagConstraints gbc_horizontalStrut = new GridBagConstraints();
|
|
|
+ gbc_horizontalStrut.insets = new Insets(0, 0, 0, 5);
|
|
|
+ gbc_horizontalStrut.gridx = 2;
|
|
|
+ gbc_horizontalStrut.gridy = 0;
|
|
|
+ panel.add(horizontalStrut, gbc_horizontalStrut);
|
|
|
+
|
|
|
+ JLabel lblMaxRanksClasscross = new JLabel("Max Ranks Class/Cross Class:");
|
|
|
+ GridBagConstraints gbc_lblMaxRanksClasscross = new GridBagConstraints();
|
|
|
+ gbc_lblMaxRanksClasscross.insets = new Insets(0, 0, 0, 5);
|
|
|
+ gbc_lblMaxRanksClasscross.anchor = GridBagConstraints.EAST;
|
|
|
+ gbc_lblMaxRanksClasscross.gridx = 3;
|
|
|
+ gbc_lblMaxRanksClasscross.gridy = 0;
|
|
|
+ panel.add(lblMaxRanksClasscross, gbc_lblMaxRanksClasscross);
|
|
|
+
|
|
|
+ txtClassSkills = new JTextField();
|
|
|
+ txtClassSkills.setEditable(false);
|
|
|
+ GridBagConstraints gbc_txtClassSkills = new GridBagConstraints();
|
|
|
+ gbc_txtClassSkills.insets = new Insets(0, 0, 0, 5);
|
|
|
+ gbc_txtClassSkills.fill = GridBagConstraints.HORIZONTAL;
|
|
|
+ gbc_txtClassSkills.gridx = 4;
|
|
|
+ gbc_txtClassSkills.gridy = 0;
|
|
|
+ panel.add(txtClassSkills, gbc_txtClassSkills);
|
|
|
+ txtClassSkills.setColumns(10);
|
|
|
+
|
|
|
+ JLabel label = new JLabel("/");
|
|
|
+ GridBagConstraints gbc_label = new GridBagConstraints();
|
|
|
+ gbc_label.insets = new Insets(0, 0, 0, 5);
|
|
|
+ gbc_label.anchor = GridBagConstraints.EAST;
|
|
|
+ gbc_label.gridx = 5;
|
|
|
+ gbc_label.gridy = 0;
|
|
|
+ panel.add(label, gbc_label);
|
|
|
+
|
|
|
+ txtCrossClass = new JTextField();
|
|
|
+ txtCrossClass.setEditable(false);
|
|
|
+ GridBagConstraints gbc_txtCrossClass = new GridBagConstraints();
|
|
|
+ gbc_txtCrossClass.fill = GridBagConstraints.HORIZONTAL;
|
|
|
+ gbc_txtCrossClass.gridx = 6;
|
|
|
+ gbc_txtCrossClass.gridy = 0;
|
|
|
+ panel.add(txtCrossClass, gbc_txtCrossClass);
|
|
|
+ txtCrossClass.setColumns(10);
|
|
|
+
|
|
|
JScrollPane scrollPane = new JScrollPane();
|
|
|
GridBagConstraints gbc_scrollPane = new GridBagConstraints();
|
|
|
gbc_scrollPane.fill = GridBagConstraints.BOTH;
|
|
|
gbc_scrollPane.gridx = 0;
|
|
|
- gbc_scrollPane.gridy = 0;
|
|
|
+ gbc_scrollPane.gridy = 1;
|
|
|
add(scrollPane, gbc_scrollPane);
|
|
|
|
|
|
skillPanel = new JPanel();
|
|
|
@@ -43,11 +125,19 @@ public class SkillTab extends JPanel {
|
|
|
}
|
|
|
|
|
|
public void setModel(final DDCharacter model) {
|
|
|
+ // TODO (sjaffe): Observables
|
|
|
skillPanel.removeAll();
|
|
|
+ int[] totalPoints = new int[1];
|
|
|
+ totalPoints[0] = 0;
|
|
|
final DDSkills skills = model.getSkills();
|
|
|
skills.getSkills().stream().forEach( skill -> {
|
|
|
skillPanel.add(new SkillLine(model, skill));
|
|
|
+ totalPoints[0] += skill.getPointsSpent();
|
|
|
});
|
|
|
+ txtTotalSkillPoints.setText(Integer.toString(totalPoints[0]));
|
|
|
+ int classSkill = model.getLevel() + 3;
|
|
|
+ txtClassSkills.setText(Integer.toString(classSkill));
|
|
|
+ txtCrossClass.setText(Integer.toString(classSkill / 2));
|
|
|
}
|
|
|
|
|
|
}
|