|
|
@@ -37,6 +37,8 @@ import javax.swing.JLabel;
|
|
|
@SuppressWarnings("serial")
|
|
|
@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
|
|
|
class UpdateClassWithLevelPanel extends JPanel {
|
|
|
+ static int LEARN_SPELL_INDEX = 1;
|
|
|
+
|
|
|
@FieldDefaults(level=AccessLevel.PUBLIC, makeFinal=true)
|
|
|
public class BoolArray extends Observable {
|
|
|
boolean data[] = new boolean[] {false, false, false};
|
|
|
@@ -45,6 +47,7 @@ class UpdateClassWithLevelPanel extends JPanel {
|
|
|
ObservableListener<Consumer<Boolean>, BoolArray> listener;
|
|
|
JTabbedPane tabbedPane;
|
|
|
@NonFinal LevelUpSpellPanel learnSpells = null;
|
|
|
+ @NonFinal ObservableListener<UpdateClassWithLevelPanel, BoolArray> learnAndPrepareListener = null;
|
|
|
|
|
|
public UpdateClassWithLevelPanel(LevelUpClassInfo info, VoidVoidFunction back,
|
|
|
Consumer<Boolean> setReady) {
|
|
|
@@ -84,18 +87,18 @@ class UpdateClassWithLevelPanel extends JPanel {
|
|
|
if (sb.learnsSpells()) {
|
|
|
LevelUpSpellPanel spells = new LevelUpSpellPanel(LEARN,
|
|
|
new SelectSpellsPanel.Info(info.ddCharacter, info.ddClass),
|
|
|
- readyCount, 1);
|
|
|
+ readyCount, LEARN_SPELL_INDEX);
|
|
|
tabbedPane.addTab("Learn Spells", null, spells, null);
|
|
|
if (sb.preparesSpells()) {
|
|
|
- // TODO: use Observable?
|
|
|
- spells.addPropertyChangeListener(SelectSpellsPanel.READY, e -> {
|
|
|
- if ((Boolean) e.getNewValue()) {
|
|
|
- createPrepareLearnedSpellPanel(info, spells);
|
|
|
+ learnAndPrepareListener = new ObservableListener<>(this, (c, v) -> {
|
|
|
+ if (v.data[LEARN_SPELL_INDEX]) {
|
|
|
+ c.createPrepareLearnedSpellPanel(info, spells);
|
|
|
} else {
|
|
|
- tabbedPane.remove(learnSpells);
|
|
|
- learnSpells = null;
|
|
|
+ c.tabbedPane.remove(learnSpells);
|
|
|
+ c.learnSpells = null;
|
|
|
}
|
|
|
});
|
|
|
+ learnAndPrepareListener.setObserved(readyCount);
|
|
|
}
|
|
|
}
|
|
|
else if (sb.preparesSpells()) {
|
|
|
@@ -162,4 +165,11 @@ class UpdateClassWithLevelPanel extends JPanel {
|
|
|
readyCount, 2);
|
|
|
tabbedPane.addTab("Prepare Spells", null, learnSpells, null);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void removeNotify() {
|
|
|
+ super.removeNotify();
|
|
|
+ ObserverDispatch.unsubscribeAll(listener);
|
|
|
+ ObserverDispatch.unsubscribeAll(learnAndPrepareListener);
|
|
|
+ }
|
|
|
}
|