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

org.sikuli.basics.SplashFrame Maven / Gradle / Ivy

There is a newer version: 2.0.5
Show newest version
/*
 * 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);
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy