All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.valkyriercp.application.splash.MacOSXSplashScreen Maven / Gradle / Ivy

There is a newer version: 1.3
Show newest version
package org.valkyriercp.application.splash;

import org.valkyriercp.progress.*;

import javax.swing.*;
import java.awt.*;

/**
 * MacOSX style splash screen inspired by a blog post by Romain Guy.
 *
 * @author Peter De Bruycker
 */
public class MacOSXSplashScreen extends AbstractSplashScreen implements MonitoringSplashScreen {
	private InfiniteProgressPanel progressPanel = new InfiniteProgressPanel();;

	protected Component createContentPane() {
		progressPanel.setPreferredSize(new Dimension(400, 250));
		progressPanel.shield = 0.5f;
		progressPanel.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
		progressPanel.setBackground(takeScreenshot());

		return progressPanel;
	}

	private Image takeScreenshot() {
		// take a screenshot
		try {
			Robot robot = new Robot();
			Toolkit tk = Toolkit.getDefaultToolkit();
			Dimension dim = tk.getScreenSize();
			return robot.createScreenCapture(new Rectangle(0, 0, dim.width, dim.height));
		}
		catch (AWTException e) {
			e.printStackTrace();
			return null;
		}
	}

	public org.valkyriercp.progress.ProgressMonitor getProgressMonitor() {
		return new InfiniteProgressPanelProgressMonitor(progressPanel);
	}
}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy