001    package org.springframework.richclient.application.setup;
002    
003    import java.awt.BorderLayout;
004    import java.awt.Container;
005    
006    import javax.swing.JComponent;
007    
008    import org.springframework.richclient.command.AbstractCommand;
009    import org.springframework.richclient.command.ActionCommand;
010    import org.springframework.richclient.command.CommandGroup;
011    import org.springframework.richclient.components.GradientPanel;
012    import org.springframework.richclient.util.GuiStandardUtils;
013    import org.springframework.richclient.wizard.Wizard;
014    import org.springframework.richclient.wizard.WizardDialog;
015    import org.springframework.richclient.wizard.WizardPage;
016    
017    /**
018     * @author cro
019     */
020    public class SetupWizardDialog extends WizardDialog {
021    
022        private Container pageControlBackup;
023    
024        private GradientPanel firstPageControl;
025    
026        private ActionCommand nextCommand;
027    
028        public SetupWizardDialog(Wizard wizard) {
029            super(wizard);
030            this.setTitle(getApplicationName());
031            this.setResizable(false);
032        }
033    
034        protected JComponent createDialogContentPane() {
035            createFirstPageControl();
036            return super.createDialogContentPane();
037        }
038    
039        protected JComponent createFirstPageControl() {
040            firstPageControl = new GradientPanel();
041            firstPageControl.setLayout(new BorderLayout());
042            firstPageControl.add(createFirstPageButtonBar(), BorderLayout.SOUTH);
043            return firstPageControl;
044        }
045    
046        protected JComponent createFirstPageButtonBar() {
047            CommandGroup dialogCommandGroup = CommandGroup.createCommandGroup(null, getIntroPageCommandGroupMembers());
048            JComponent buttonBar = dialogCommandGroup.createButtonBar();
049            GuiStandardUtils.attachDialogBorder(buttonBar);
050            buttonBar.setOpaque(false);
051            return buttonBar;
052        }
053    
054        protected Object[] getIntroPageCommandGroupMembers() {
055            nextCommand = new ActionCommand("nextCommand") {
056                public void doExecuteCommand() {
057                    onNext();
058                }
059            };
060    
061            return new AbstractCommand[] { nextCommand, getCancelCommand() };
062        }
063    
064        public void showPage(WizardPage page) {
065            if (page.getPreviousPage() == null) {
066                // is intro page? --> better way to find it out?
067                super.showPage(page);
068                pageControlBackup = getDialogContentPane();
069                firstPageControl.add(page.getControl(), BorderLayout.CENTER);
070                this.getDialog().setContentPane(firstPageControl);
071            }
072            else {
073                if (pageControlBackup != null) {
074                    getDialog().setContentPane(pageControlBackup);
075                    //stop adding the content pane in future
076                    pageControlBackup = null;
077                }
078                super.showPage(page);
079            }
080        }
081    
082    }