@Subscribe public void onWizardPopoverHideEvent(WizardPopoverHideEvent event) { if (getWizardModel().getPanelName().equals(event.getPanelName())) { if (getWizardModel().isDirty() && !event.isExitCancel()) { // User has authorised the underlying panel to be closed hide(wizardModel.getPanelName(), true); } } }
/** * @param wizardModel The overall wizard data model containing the aggregate information of all * components in the wizard * @param isExiting True if the exit button should trigger an application shutdown * @param wizardParameter An optional parameter that can be referenced during construction * @param escapeIsCancel If true, ESC cancels the wizard, if false, it does nothing */ protected AbstractWizard( M wizardModel, boolean isExiting, Optional wizardParameter, boolean escapeIsCancel) { Preconditions.checkNotNull(wizardModel, "'model' must be present"); log.debug("Building wizard..."); this.wizardModel = wizardModel; this.exiting = isExiting; this.wizardParameter = wizardParameter; // Subscribe to events ViewEvents.subscribe(this); CoreEvents.subscribe(this); // Optionally bind the ESC key to a Cancel event (escape to safety) if (escapeIsCancel) { wizardScreenHolder .getInputMap(JPanel.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) .put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "quit"); wizardScreenHolder.getActionMap().put("quit", getCancelAction()); } // TODO Bind the ENTER key to a Next/Finish/Apply event to speed up data entry through keyboard // wizardPanel.getInputMap(JPanel.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "next"); // wizardPanel.getActionMap().put("next", getNextAction(null)); log.debug("Populating view map and firing initial state view events..."); // Populate based on the current locale populateWizardViewMap(wizardViewMap); // Once all the views are created allow events to occur for (Map.Entry<String, AbstractWizardPanelView> entry : wizardViewMap.entrySet()) { // Ensure the panel is in the correct starting state entry.getValue().fireInitialStateViewEvents(); } wizardScreenHolder.setMinimumSize( new Dimension(MultiBitUI.WIZARD_MIN_WIDTH, MultiBitUI.WIZARD_MIN_HEIGHT)); wizardScreenHolder.setPreferredSize( new Dimension(MultiBitUI.WIZARD_MIN_WIDTH, MultiBitUI.WIZARD_MIN_HEIGHT)); wizardScreenHolder.setSize( new Dimension(MultiBitUI.WIZARD_MIN_WIDTH, MultiBitUI.WIZARD_MIN_HEIGHT)); // Show the panel specified by the initial state show(wizardModel.getPanelName()); }