private static void displayProgressWindow() {
		JFrame frame = new JFrame();
		frame.setSize(400, 100);
		frame.setLocationRelativeTo(null);
		frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		frame.setTitle(Vars.INSTALATION_DIR + " installation");
		frame.setVisible(true);
		JPanel panel = new JPanel(new BorderLayout());
		JPanel subPanel = new JPanel(new BorderLayout());
		JProgressBar bar = new JProgressBar();
		JLabel label = new JLabel("Downloading LWJGL...");
		JButton cancel = new JButton("Cancel");
		panel.add(bar, BorderLayout.CENTER);
		subPanel.add(label, BorderLayout.WEST);
		subPanel.add(cancel, BorderLayout.EAST);
		panel.add(subPanel, BorderLayout.NORTH);
		bar.setMinimum(0);
		bar.setMaximum(1000);
		bar.setStringPainted(true);
		frame.add(panel);

		try {
			while (true) {
				if (getStage() == 0) {
					bar.setValue((int) (getProgress() / (double) getFileSize() * 1000));
				}
				else if (getStage() == 1) {
					bar.setIndeterminate(true);
					label.setText("Extracting LWJGL...");
				}
				else if (getStage() == -1) {
					if (!downloadThread.isAlive()) break;
					bar.setIndeterminate(false);
					bar.setValue(1000);
					label.setText("Finished installation!");
					cancel.setEnabled(false);
				}
				else {
					bar.setIndeterminate(true);
					for (int key : tasks.keySet()) {
						if (key == getStage()) {
							label.setText(tasks.get(key).getTitle());
						}
					}
				}
				Thread.sleep(50);
			}
		}
		catch (Exception e) {
			e.printStackTrace();
		}

		frame.setVisible(false);
	}