/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * WurstStatusWindow.java
 *
 * Created on 05.12.2011, 21:30:17
 */
package de.peeeq.wurstio.gui;

import de.peeeq.wurstscript.WLogger;
import org.eclipse.jdt.annotation.Nullable;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;

/**
 * @author Frotty
 */
public class WurstStatusWindow extends javax.swing.JFrame {

    private javax.swing.JLabel currentStatus;
    private javax.swing.JProgressBar progressBar;
    private javax.swing.JLabel title;

    /**
     * Creates new form WurstStatusWindow
     */
    public WurstStatusWindow() {
        super("Progress");

        BufferedImage image = null;
        try {
            image = ImageIO.read(getClass().getClassLoader().getResource("icon.png"));
        } catch (IOException e) {
            WLogger.severe(e);
        }
        setIconImage(image);


        try {
            UIManager.setLookAndFeel(
                    UIManager.getSystemLookAndFeelClassName());
        } catch (Exception ex) {
            java.util.logging.Logger.getLogger(WurstStatusWindow.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }

        progressBar = new javax.swing.JProgressBar();
        title = new javax.swing.JLabel();
        currentStatus = new javax.swing.JLabel();

        progressBar.setDoubleBuffered(true);

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

        title.setFont(new java.awt.Font("Tahoma", Font.BOLD, 12)); // NOI18N
        title.setText("WurstScript");

        currentStatus.setDoubleBuffered(true);
        currentStatus.setText("starting...");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                                .addContainerGap()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                        .addComponent(progressBar, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 600, 600)
                                        .addComponent(title, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
                                        .addComponent(currentStatus, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 600, 600))
                                .addContainerGap())
        );
        layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(layout.createSequentialGroup()
                                .addContainerGap()
                                .addComponent(title, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(5, 5, 5)
                                .addComponent(currentStatus)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addContainerGap(12, Short.MAX_VALUE))
        );

        pack();

        GuiUtils.setWindowToCenterOfScreen(this);
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);

        setVisible(true);
    }


    public void sendProgress(@Nullable String whatsRunningNow, double percent) {
        if (whatsRunningNow != null && whatsRunningNow.length() > 1) {
            currentStatus.setText(whatsRunningNow);
        }
        if (percent >= 0.0 && percent <= 1.0) {
            progressBar.setValue((int) (percent * 100));
        }

    }

    public void sendFinished() {
        dispose();
    }
}
