001    package org.springframework.richclient.application.setup;
002    
003    import java.awt.Color;
004    import java.awt.Dimension;
005    import java.awt.Font;
006    import java.awt.Graphics;
007    import java.awt.Graphics2D;
008    import java.awt.Insets;
009    import java.awt.RenderingHints;
010    
011    import javax.swing.JComponent;
012    import javax.swing.JLabel;
013    import javax.swing.JPanel;
014    
015    import org.springframework.richclient.layout.GridBagLayoutBuilder;
016    import org.springframework.richclient.util.LabelUtils;
017    import org.springframework.richclient.wizard.AbstractWizardPage;
018    
019    /**
020     * @author cro
021     */
022    public class SetupIntroWizardPage extends AbstractWizardPage {
023        private static final Color TITLE_COLOR = new Color(48, 48, 48);
024    
025        public SetupIntroWizardPage() {
026            super("intro");
027        }
028    
029        protected JComponent createControl() {
030            GridBagLayoutBuilder builder = new GridBagLayoutBuilder();
031    
032            builder.setDefaultInsets(new Insets(10, 20, 0, 0));
033    
034            builder.append(createWelcomeToLabel(), 1, 1, true, false);
035            builder.nextLine();
036            builder.append(createTitleLabel(), 1, 1, true, false, new Insets(10, 20, 15, 0));
037    
038            builder.nextLine();
039            builder.append(createDescriptionLabel(), 1, 1, true, false);
040    
041            builder.nextLine();
042            builder.append(createSpacer(0, 0), 1, 1, true, true);
043    
044            JPanel control = builder.getPanel();
045            control.setOpaque(false);
046            return control;
047        }
048    
049        protected JLabel createTitleLabel() {
050            JLabel bigTitleLabel = new JLabel(getMessage("setup.intro.title")) {
051                public void paintComponent(Graphics g) {
052                    Graphics2D g2 = (Graphics2D)g;
053                    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
054                    super.paintComponent(g2);
055                }
056            };
057            Font font = new Font(bigTitleLabel.getFont().getFontName(), Font.BOLD, 22);
058            bigTitleLabel.setFont(font);
059            bigTitleLabel.setForeground(TITLE_COLOR);
060            return bigTitleLabel;
061        }
062    
063        private JLabel createWelcomeToLabel() {
064            JLabel welcomeToLabel = new JLabel(this.getMessage("setup.intro.welcomeTo"));
065            Font font = new Font(welcomeToLabel.getFont().getFontName(), Font.BOLD, welcomeToLabel.getFont().getSize());
066    
067            welcomeToLabel.setFont(font);
068            welcomeToLabel.setForeground(TITLE_COLOR);
069    
070            return welcomeToLabel;
071        }
072    
073        private JLabel createDescriptionLabel() {
074            return new JLabel(LabelUtils.htmlBlock(getMessage("setup.intro.description")));
075        }
076    
077        private JComponent createSpacer(final int x, final int y) {
078            JPanel spacer = new JPanel() {
079                public Dimension getPreferredSize() {
080                    return new Dimension(x, y);
081                }
082            };
083            spacer.setOpaque(false);
084            return spacer;
085        }
086    }