Package view

Source Code of view.SplashView

package view;

import main.Main;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.Rectangle;
import java.lang.reflect.InvocationTargetException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
import javax.swing.border.EtchedBorder;
import main.Configuracao;
import org.jdesktop.swingx.JXBusyLabel;
import org.pushingpixels.substance.api.SubstanceLookAndFeel;

public final class SplashView {

    private JFrame frmSplash;
    private JPanel contentPane = null;
    private JProgressBar progressBar = null;
    private JLabel lblImagemFundo = null;
    private JXBusyLabel lblMensagem = null;
    private Main mainFrame;
    private int i;

    public SplashView(Main pMainFrame) {
        try {
            Configuracao.getInstance();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        mainFrame = pMainFrame;
        frmSplash = new JFrame();
        createFrame();
        try {
            Thread.sleep(50);
            createProgressBar();
            run();
        } catch (InterruptedException e) {
        }
        frmSplash.dispose();
    }

    private JFrame createFrame() {
        frmSplash.setSize(465, 272);
        frmSplash.setBackground(Color.black);
        frmSplash.setCursor(new Cursor(Cursor.WAIT_CURSOR));
        frmSplash.setContentPane(createContentPane());
        frmSplash.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        frmSplash.setLocationRelativeTo(null);
        frmSplash.setUndecorated(true);
        frmSplash.setVisible(true);
        frmSplash.setAlwaysOnTop(true);
        return frmSplash;
    }

    private JPanel createContentPane() {
        lblMensagem = new JXBusyLabel();
        setText("Iniciando...");
        lblMensagem.setBounds(new Rectangle(9, 190, 266, 30));
        lblMensagem.setHorizontalAlignment(SwingConstants.LEADING);
        lblMensagem.setForeground(Color.WHITE);
        lblMensagem.setFont(new Font("Tahoma", Font.PLAIN, 11));
        lblMensagem.setDelay(160);
        lblMensagem.setIconTextGap(10);
        lblImagemFundo = new JLabel();
        Rectangle imgSize = frmSplash.getBounds();
        imgSize.setSize(frmSplash.getWidth(), frmSplash.getHeight() - 15);
        lblImagemFundo.setBounds(imgSize);
        lblImagemFundo.setIcon(new ImageIcon(Configuracao.getPath() + "images/splash.jpg"));
        contentPane = new JPanel();
        contentPane.setLayout(null);
        contentPane.setBackground(Color.white);
        contentPane.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED));
        contentPane.add(lblMensagem, null);
        contentPane.add(lblImagemFundo, null);
        return contentPane;
    }

    private JProgressBar createProgressBar() {
        if (progressBar == null) {
            progressBar = new JProgressBar(0, 100);
            progressBar.setBackground(new Color(55, 28, 0));
            progressBar.setBounds(new Rectangle(2, 256, 462, 15));
            contentPane.add(createProgressBar(), null);
        }
        return progressBar;
    }

    public void setText(String text) {
        frmSplash.setTitle(text);
        lblMensagem.setText(text);
    }

    public void run() {
        lblMensagem.setBusy(true);
        if (Configuracao.useLaf()) {
            try {
                EventQueue.invokeAndWait(new Runnable() {

                    @Override
                    public void run() {
                        SubstanceLookAndFeel.setSkin(Configuracao.getLaf());
                        setText("Configurando aparência...");
                    }
                });
            } catch (InterruptedException | InvocationTargetException ex) {
                Logger.getLogger(SplashView.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        for (i = 0; i <= 100; i++) {
            if (i == 25) {
                setText("Carregando dados do Sistema...");
            }
            if (i == 60) {
                setText("Atualizando últimas configurações");
            }
            if (i == 95) {
                setText("Finalizando...");
            }

            try {
                EventQueue.invokeAndWait(new Runnable() {

                    @Override
                    public void run() {
                        progressBar.setValue(i);
                    }
                });
            } catch (InterruptedException | InvocationTargetException ex) {
                Logger.getLogger(SplashView.class.getName()).log(Level.SEVERE, null, ex);
            }
            try {
                Thread.sleep(20);
            } catch (InterruptedException e) {
            }
        }
        new Thread(new Runnable() {

            @Override
            public void run() {
                try {
                    EventQueue.invokeAndWait(new Runnable() {

                        @Override
                        public void run() {
                            mainFrame.setVisible(true);
                        }
                    });
                } catch (InterruptedException | InvocationTargetException ex) {
                    Logger.getLogger(SplashView.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }).start();
    }
}
TOP

Related Classes of view.SplashView

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.