/*
* Copyright (c) 2010-2016, Sikuli.org, sikulix.com
* Released under the MIT License.
*
*/
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.sikuli.basics;
import java.awt.Color;
import java.awt.Container;
import java.util.Date;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSeparator;
import org.sikuli.script.RunTime;
/**
*
* @author rhocke
*/
public class SplashFrame extends JFrame {
private static JFrame splash = null;
private static long start = 0;
public static void displaySplash(String[] args) {
if (args == null) {
if (splash != null) {
splash.dispose();
}
if (start > 0) {
Debug.log(3, "Sikuli-Script startup: " + ((new Date()).getTime() - start));
start = 0;
}
return;
}
if (args.length > 0 && (args[0].contains("-testSetup") || args[0].startsWith("-i"))) {
start = (new Date()).getTime();
String[] splashArgs = new String[]{
"splash", "#", "#" + RunTime.get().SikuliVersionScript, "", "#", "#... starting - please wait ..."};
for (String e : args) {
splashArgs[3] += e + " ";
}
splashArgs[3] = splashArgs[3].trim();
splash = new SplashFrame(splashArgs);
}
}
public static void displaySplashFirstTime(String[] args) {
if (args == null) {
if (splash != null) {
splash.dispose();
}
if (start > 0) {
Debug.log(3, "Sikuli-IDE environment setup: " + ((new Date()).getTime() - start));
start = 0;
}
return;
}
start = (new Date()).getTime();
String[] splashArgs = new String[]{
"splash", "#", "#" + RunTime.get().SikuliVersionIDE, "", "#", "#... setting up environement - please wait ..."};
splash = new SplashFrame(splashArgs);
}
private JLabel lbl, txt;
private Container pane;
private int proSize;
private int fw, fh;
public SplashFrame(String type) {
init(new String[]{type});
}
public SplashFrame(String[] args) {
init(args);
}
private void init(String[] args) {
setResizable(false);
setUndecorated(true);
pane = getContentPane();
if ("download".equals(args[0])) {
pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS));
pane.add(new JLabel(" "));
lbl = new JLabel("");
lbl.setAlignmentX(CENTER_ALIGNMENT);
pane.add(lbl);
pane.add(new JLabel(" "));
txt = new JLabel("... waiting");
txt.setAlignmentX(CENTER_ALIGNMENT);
pane.add(txt);
fw = 350;
fh = 80;
}
if ("splash".equals(args[0])) {
pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS));
pane.setBackground(Color.yellow);
int n = args.length;
String e;
int l = 0;
int nlbl = 0;
for (int i = 1; i < n; i++) {
e = args[i];
if (e.length() > l) {
l = e.length();
}
if (e.length() > 1 && e.startsWith("#")) {
nlbl++;
}
}
JLabel[] lbls = new JLabel[nlbl];
nlbl = 0;
for (int i = 1; i < n; i++) {
e = args[i];
if (e.startsWith("#")) {
if (e.length() > 1) {
lbls[nlbl] = new JLabel(e.substring(1));
lbls[nlbl].setAlignmentX(CENTER_ALIGNMENT);
pane.add(lbls[nlbl]);
nlbl++;
}
pane.add(new JSeparator());
} else {
pane.add(new JLabel(e));
}
}
fw = 10 + 10*l;
fh = 10 + n*15 + nlbl*15;
}
pack();
setSize(fw, fh);
setLocationRelativeTo(null);
setVisible(true);
}
public void setProFile(String proFile) {
lbl.setText("Downloading: " + proFile);
}
public void setProSize(int proSize) {
this.proSize = proSize;
}
public void setProDone(int done) {
if (done < 0) {
txt.setText(" ..... failed !!!");
} else if (proSize > 0) {
txt.setText(done + " % out of " + proSize + " KB");
} else {
txt.setText(done + " KB out of ??? KB");
}
repaint();
}
public void closeAfter(int secs) {
try {
Thread.sleep(secs*1000);
} catch (InterruptedException ex) {
}
setVisible(false);
}
}