From cb54b309678b3757aff24062ece9e17b98b6798c Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Fri, 29 May 2020 01:15:56 +0100 Subject: [PATCH] apply steps at the end, add ability to cancel wizard --- .../muwire/gui/wizard/WizardController.groovy | 12 +++++++++++- gui/griffon-app/lifecycle/Ready.groovy | 7 +++++++ .../com/muwire/gui/wizard/WizardModel.groovy | 1 + .../com/muwire/gui/wizard/WizardView.groovy | 17 ++++++++++++++--- 4 files changed, 33 insertions(+), 4 deletions(-) diff --git a/gui/griffon-app/controllers/com/muwire/gui/wizard/WizardController.groovy b/gui/griffon-app/controllers/com/muwire/gui/wizard/WizardController.groovy index e2d817e3..633fcd6c 100644 --- a/gui/griffon-app/controllers/com/muwire/gui/wizard/WizardController.groovy +++ b/gui/griffon-app/controllers/com/muwire/gui/wizard/WizardController.groovy @@ -36,7 +36,17 @@ class WizardController { @ControllerAction void finish() { - + model.steps.each { + it.apply(model.muSettings, model.i2pProps) + } + model.finished['applied'] = true + view.hide() + } + + @ControllerAction + void cancel() { + model.finished['applied'] = false + view.hide() } private void recalcButtons() { diff --git a/gui/griffon-app/lifecycle/Ready.groovy b/gui/griffon-app/lifecycle/Ready.groovy index 13cb77c7..30c35adc 100644 --- a/gui/griffon-app/lifecycle/Ready.groovy +++ b/gui/griffon-app/lifecycle/Ready.groovy @@ -64,8 +64,15 @@ class Ready extends AbstractLifecycleHandler { params['embeddedRouterAvailable'] = embeddedRouterAvailable params['muSettings'] = props params['i2pProps'] = i2pProps + def finished = [:] + params['finished'] = finished application.mvcGroupManager.createMVCGroup("wizard", params) + + if (!finished['applied']) { + JOptionPane.showMessageDialog(parent, "MuWire will now exit") + System.exit(0) + } // props.incompleteLocation = new File(home, "incompletes") diff --git a/gui/griffon-app/models/com/muwire/gui/wizard/WizardModel.groovy b/gui/griffon-app/models/com/muwire/gui/wizard/WizardModel.groovy index c5c1e579..a5f64c98 100644 --- a/gui/griffon-app/models/com/muwire/gui/wizard/WizardModel.groovy +++ b/gui/griffon-app/models/com/muwire/gui/wizard/WizardModel.groovy @@ -14,6 +14,7 @@ class WizardModel { boolean embeddedRouterAvailable MuWireSettings muSettings Properties i2pProps + def finished final List steps = [new NicknameStep(), new DirectoriesStep()] diff --git a/gui/griffon-app/views/com/muwire/gui/wizard/WizardView.groovy b/gui/griffon-app/views/com/muwire/gui/wizard/WizardView.groovy index 50fd4199..a15d9897 100644 --- a/gui/griffon-app/views/com/muwire/gui/wizard/WizardView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/wizard/WizardView.groovy @@ -35,9 +35,15 @@ class WizardView { } } panel (constraints : BorderLayout.SOUTH) { - button(text : "Previous", enabled : bind {model.previousButtonEnabled}, previousAction) - button(text : "Next", enabled : bind {model.nextButtonEnabled}, nextAction) - button(text : "Finish", enabled : bind {model.finishButtonEnabled}, finishAction) + gridLayout(rows:1, cols:2) + panel { + button(text : "Cancel", cancelAction) + } + panel { + button(text : "Previous", enabled : bind {model.previousButtonEnabled}, previousAction) + button(text : "Next", enabled : bind {model.nextButtonEnabled}, nextAction) + button(text : "Finish", enabled : bind {model.finishButtonEnabled}, finishAction) + } } } } @@ -60,4 +66,9 @@ class WizardView { }) dialog.show() } + + void hide() { + dialog.setVisible(false) + mvcGroup.destroy() + } } \ No newline at end of file