FileDocCategorySizeDatePackage
SplashTask.javaAPI DocApache Ant 1.708294Wed Dec 13 06:16:20 GMT 2006org.apache.tools.ant.taskdefs.optional.splash

SplashTask

public class SplashTask extends org.apache.tools.ant.Task
Creates a splash screen. The splash screen is displayed for the duration of the build and includes a handy progress bar as well. Use in conjunction with the sound task to provide interest whilst waiting for your builds to complete...
since
Ant1.5

Fields Summary
private String
imgurl
private String
proxy
private String
user
private String
password
private String
port
private int
showDuration
private boolean
useProxy
private static SplashScreen
splash
Constructors Summary
Methods Summary
public voidexecute()
Execute the task.

throws
BuildException on error

        if (splash != null) {
            splash.setVisible(false);
            getProject().removeBuildListener(splash);
            splash.dispose();
            splash = null;
        }

        log("Creating new SplashScreen", Project.MSG_VERBOSE);
        InputStream in = null;

        if (imgurl != null) {
            try {
                URLConnection conn = null;

                if (useProxy && (proxy != null && proxy.length() > 0)
                    && (port != null && port.length() > 0)) {

                    log("Using proxied Connection",  Project.MSG_DEBUG);
                    System.getProperties().put("http.proxySet", "true");
                    System.getProperties().put("http.proxyHost", proxy);
                    System.getProperties().put("http.proxyPort", port);

                    URL url = new URL(imgurl);

                    conn = url.openConnection();
                    if (user != null && user.length() > 0) {
                        // converted from sun internal classes to
                        // new Base64Converter
                        // utility class extracted from Get task
                        String encodedcreds =
                            new Base64Converter().encode(user + ":" + password);
                        conn.setRequestProperty("Proxy-Authorization",
                                                encodedcreds);
                    }

                } else {
                    System.getProperties().put("http.proxySet", "false");
                    System.getProperties().put("http.proxyHost", "");
                    System.getProperties().put("http.proxyPort", "");
                    log("Using Direction HTTP Connection", Project.MSG_DEBUG);
                    URL url = new URL(imgurl);
                    conn = url.openConnection();
                }
                conn.setDoInput(true);
                conn.setDoOutput(false);

                in = conn.getInputStream();

                // Catch everything - some of the above return nulls,
                // throw exceptions or generally misbehave
                // in the event of a problem etc

            } catch (Throwable ioe) {
                log("Unable to download image, trying default Ant Logo",
                    Project.MSG_DEBUG);
                log("(Exception was \"" + ioe.getMessage() + "\"",
                    Project.MSG_DEBUG);
            }
        }

        if (in == null) {
            ClassLoader cl = SplashTask.class.getClassLoader();
            if (cl != null) {
                in = cl.getResourceAsStream("images/ant_logo_large.gif");
            } else {
                in = ClassLoader
                    .getSystemResourceAsStream("images/ant_logo_large.gif");
            }
        }

        boolean success = false;
        if (in != null) {
            DataInputStream din = new DataInputStream(in);
            try {
                ByteArrayOutputStream bout = new ByteArrayOutputStream();
                int data;
                while ((data = din.read()) != -1) {
                    bout.write((byte) data);
                }

                log("Got ByteArray, creating splash",  Project.MSG_DEBUG);

                try {
                    ImageIcon img = new ImageIcon(bout.toByteArray());
                    splash = new SplashScreen(img);
                    success = true;
                } catch (Throwable e) {
                    logHeadless(e);
                }
            } catch (Exception e) {
                throw new BuildException(e);
            } finally {
                try {
                    din.close();
                } catch (IOException ioe) {
                    // swallow if there was an error before so that
                    // original error will be passed up
                    if (success) {
                        throw new BuildException(ioe);
                    }
                }
            }
        } else {
            try {
                splash = new SplashScreen("Image Unavailable.");
                success = true;
            } catch (Throwable e) {
                logHeadless(e);
            }
        }

        if (success) {
            splash.setVisible(true);
            splash.toFront();
            getProject().addBuildListener(splash);
            try {
                Thread.sleep(showDuration);
            } catch (InterruptedException e) {
                // Ignore Exception
            }
        }
    
private voidlogHeadless(java.lang.Throwable e)

        log("failed to display SplashScreen, caught "
            + e.getClass().getName() + " with message: " + e.getMessage(),
            Project.MSG_WARN);
    
public voidsetImageURL(java.lang.String imgurl)
A URL pointing to an image to display; optional, default antlogo.gif from the classpath.

param
imgurl the url string pointing to the image


                                
        
        this.imgurl = imgurl;
    
public voidsetPassword(java.lang.String password)
Proxy password; required if user is set.

param
password the proxy password

        this.password = password;
    
public voidsetPort(java.lang.String port)
Proxy port; optional, default 80.

param
port the proxy port

        this.port = port;
    
public voidsetProxy(java.lang.String proxy)
name of proxy; optional.

param
proxy the name of the proxy host

        this.proxy = proxy;
    
public voidsetShowduration(int duration)
how long to show the splash screen in milliseconds, optional; default 5000 ms.

param
duration the spash duration in milliseconds

        this.showDuration = duration;
    
public voidsetUseproxy(boolean useProxy)
flag to enable proxy settings; optional, deprecated : consider using <setproxy> instead

param
useProxy if ture, enable proxy settings
deprecated
since 1.5.x. Use org.apache.tools.ant.taskdefs.optional.SetProxy

        this.useProxy = useProxy;
    
public voidsetUser(java.lang.String user)
Proxy user; optional, default =none.

param
user the proxy user

        this.user = user;