summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/Wizard.java
diff options
context:
space:
mode:
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/Wizard.java')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/Wizard.java26
1 files changed, 23 insertions, 3 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/Wizard.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/Wizard.java
index 3c5e27ba..6490180b 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/Wizard.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/Wizard.java
@@ -275,14 +275,14 @@ public abstract class Wizard extends JDialog {
if (outOfOrderPage != null) {
outOfOrderPage.onPageLeave();
}
- dispose();
+ cleanup();
}
}
protected final void doFinish() {
if (isPostFinish) {
postFinishPage.onPageLeave();
- dispose();
+ cleanup();
return;
}
if (!btnFinish.isEnabled())
@@ -297,7 +297,7 @@ public abstract class Wizard extends JDialog {
}
postFinishPage = performFinish();
if (postFinishPage == null) {
- dispose();
+ cleanup();
} else {
isPostFinish = true;
btnPrev.setVisible(false);
@@ -355,5 +355,25 @@ public abstract class Wizard extends JDialog {
protected WizardPage performFinish() {
return null;
}
+
+ /**
+ * Called when this wizard is closed, either by aborting or
+ * by finishing it.
+ */
+ private final void cleanup()
+ {
+ doCleanup();
+ dispose();
+ pages.clear();
+ postFinishPage = null;
+ outOfOrderPage = null;
+ }
+
+ /**
+ * Force all derived wizards to think about what
+ * references they might want to free when they're
+ * being closed.
+ */
+ protected abstract void doCleanup();
}