com.izforge.izpack.installer.multiunpacker.ProgressDialog Maven / Gradle / Ivy
package com.izforge.izpack.installer.multiunpacker;
import javax.swing.*;
import java.awt.*;
/**
* Created by IntelliJ IDEA.
*
* @author Anthonin Bonnefoy
*/
public class ProgressDialog extends JWindow
{
private static final long serialVersionUID = -6558347134501630050L;
private JProgressBar progressBar;
private ProgressDialogThread thread;
public ProgressDialog()
{
initialize();
this.thread = new ProgressDialogThread();
}
private void initialize()
{
JPanel main = new JPanel();
main.setLayout(new BoxLayout(main, BoxLayout.PAGE_AXIS));
JLabel label = new JLabel("Loading...");
main.add(label);
JPanel progress = new JPanel();
progress.setLayout(new BoxLayout(progress, BoxLayout.LINE_AXIS));
progressBar = new JProgressBar();
progressBar.setMaximum(100);
progressBar.setValue(0);
progress.add(progressBar);
progress.add(Box.createHorizontalGlue());
main.add(Box.createVerticalStrut(5));
main.add(progress);
main.add(Box.createVerticalGlue());
this.add(main);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int height = screenSize.height / 2;
int width = screenSize.width / 2;
this.pack();
Dimension dialogSize = this.getSize();
int myheight = dialogSize.height / 2;
int mywidth = dialogSize.width / 2;
this.setLocation(width - mywidth, height - myheight);
}
public void startProgress()
{
this.setVisible(true);
this.thread.init(this.progressBar);
this.thread.start();
}
public void stopProgress()
{
this.setVisible(false);
this.thread.requestStop();
}
}
class ProgressDialogThread extends Thread
{
private boolean stopRequested;
private JProgressBar progressBar;
public ProgressDialogThread()
{
super("ProgressThread");
}
public void requestStop()
{
stopRequested = true;
}
public void init(JProgressBar progressBar)
{
this.progressBar = progressBar;
}
@Override
public void run()
{
int count = 0;
boolean up = true;
while (!stopRequested)
{
if (up)
{
count++;
if (count >= 100)
{
up = false;
}
}
else
{
count--;
if (count <= 0)
{
up = true;
}
}
this.progressBar.setValue(count);
try
{
Thread.sleep(100);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}