diff options
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.java | 26 |
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(); } |