Bläddra i källkod

Tidying up code by letting a class chose what parts of the model it needs instead of giving them to it.

Sam Jaffe 8 år sedan
förälder
incheckning
d5da5ea9dd

+ 6 - 7
src/org/leumasjaffe/charsheet/view/magic/SpellPanel.java

@@ -55,13 +55,13 @@ public class SpellPanel extends JPanel {
 		spellsPane.addTab("Prepared", null, preparedPane, "Spells the character can use today");
 
 		final IntValue value = Ability.fields.get(cclass.getProto().getSpells().get().getAbility()).apply(chara.getAbilities().getBase());
-		generateSpellTree((l) -> new SpellsPerDayHeader(l, model.numSpellsPerDayRemainingAtLevel(l), model.numSpellsPerDayAtLevel(l), value),
-				i -> model.spellsPreparedAtLevel(i), preparedPane);
+		generateSpellTree((l) -> new SpellLevelPerDayPanel(new SpellsPerDayHeader(l, model, value), dclass, l),
+				preparedPane);
 
 		JScrollPane knownPane = new JScrollPane();
 		spellsPane.addTab("Known", null, knownPane, "Spells the player knows for this class");
-		generateSpellTree((l) -> new SpellsKnownHeader(l, model.numSpellsKnownAtLevel(l), value), 
-				i -> model.spellsKnownAtLevel(i), knownPane);
+		generateSpellTree((l) -> new SpellLevelPanel(new SpellsKnownHeader(l, model, value), dclass, l), 
+				knownPane);
 	}
 
 	private static int calcHighestSpellLevel(final DDCharacterClass cclass) {
@@ -80,13 +80,12 @@ public class SpellPanel extends JPanel {
 		return level;
 	}
 
-	private void generateSpellTree(final Function<Integer, JPanel> getPanel,
-			final Function<Integer, Collection<DDSpell>> getSpells, final JScrollPane preparedPane) {
+	private void generateSpellTree(final Function<Integer, JPanel> getPanel, final JScrollPane preparedPane) {
 		JPanel root = new JPanel();
 		root.setLayout(new VerticalLayout());
 		
 		for (int i = 0; i < highestSpellLevel; ++i) {
-			root.add(new SpellLevelPanel(getPanel.apply(i), dclass, i));
+			root.add(getPanel.apply(i));
 		}
 		
 		preparedPane.setViewportView(root);

+ 3 - 2
src/org/leumasjaffe/charsheet/view/magic/SpellsKnownHeader.java

@@ -9,6 +9,7 @@ import javax.swing.JPanel;
 import javax.swing.JTextField;
 
 import org.leumasjaffe.charsheet.model.Ability;
+import org.leumasjaffe.charsheet.model.magic.DDSpellbook;
 import org.leumasjaffe.charsheet.model.observable.IntValue;
 import org.leumasjaffe.charsheet.util.StringHelper;
 import java.awt.Dimension;
@@ -19,7 +20,7 @@ public class SpellsKnownHeader extends JPanel {
 	 */
 	private static final long serialVersionUID = 1L;
 
-	public SpellsKnownHeader(int level, int elems, IntValue ability) {
+	public SpellsKnownHeader(int level, DDSpellbook model, IntValue ability) {
 		setPreferredSize(new Dimension(350, 20));
 		GridBagLayout gridBagLayout = new GridBagLayout();
 		gridBagLayout.columnWidths = new int[]{0, 30, 0, 30, 0, 30, 0, 0};
@@ -75,7 +76,7 @@ public class SpellsKnownHeader extends JPanel {
 		gbc_lblSpellsPerDay.gridy = 0;
 		add(lblSpellsPerDay, gbc_lblSpellsPerDay);
 		
-		JTextField textFieldRemaining = new JTextField(StringHelper.toString(elems, -1, "--"));
+		JTextField textFieldRemaining = new JTextField(StringHelper.toString(model.numSpellsKnownAtLevel(level), -1, "--"));
 		textFieldRemaining.setPreferredSize(new Dimension(30, 20));
 		textFieldRemaining.setMaximumSize(new Dimension(30, 20));
 		GridBagConstraints gbc_textFieldRemaining = new GridBagConstraints();

+ 4 - 4
src/org/leumasjaffe/charsheet/view/magic/SpellsPerDayHeader.java

@@ -13,14 +13,14 @@ import org.leumasjaffe.charsheet.model.magic.DDSpellbook;
 import org.leumasjaffe.charsheet.model.observable.IntValue;
 import java.awt.Dimension;
 
-public class SpellsPerDayHeader extends JPanel {
+class SpellsPerDayHeader extends JPanel {
 	/**
 	 * 
 	 */
 	private static final long serialVersionUID = 1L;
 	private JTextField textFieldRemaining;
 
-	public SpellsPerDayHeader(int level, int elems, int perDay, IntValue ability) {
+	public SpellsPerDayHeader(int level, DDSpellbook model, IntValue ability) {
 		setPreferredSize(new Dimension(350, 20));
 		GridBagLayout gridBagLayout = new GridBagLayout();
 		gridBagLayout.columnWidths = new int[]{0, 30, 0, 30, 0, 30, 0, 30, 0, 0};
@@ -72,7 +72,7 @@ public class SpellsPerDayHeader extends JPanel {
 		gbc_lblSpellsPerDay.gridy = 0;
 		add(lblSpellsPerDay, gbc_lblSpellsPerDay);
 		
-		textFieldRemaining = new JTextField(Integer.toString(perDay));
+		textFieldRemaining = new JTextField(Integer.toString(model.numSpellsPerDayRemainingAtLevel(level)));
 		GridBagConstraints gbc_textFieldRemaining = new GridBagConstraints();
 		gbc_textFieldRemaining.fill = GridBagConstraints.HORIZONTAL;
 		gbc_textFieldRemaining.insets = new Insets(0, 0, 0, 5);
@@ -89,7 +89,7 @@ public class SpellsPerDayHeader extends JPanel {
 		gbc_label.gridy = 0;
 		add(label, gbc_label);
 		
-		JTextField textFieldOutOf = new JTextField(Integer.toString(perDay));
+		JTextField textFieldOutOf = new JTextField(Integer.toString(model.numSpellsPerDayAtLevel(level)));
 		GridBagConstraints gbc_textFieldOutOf = new GridBagConstraints();
 		gbc_textFieldOutOf.insets = new Insets(0, 0, 0, 5);
 		gbc_textFieldOutOf.fill = GridBagConstraints.HORIZONTAL;