aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/splash
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/splash')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/splash/SplashScreen.java181
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/splash/SplashTask.java297
2 files changed, 478 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/splash/SplashScreen.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/splash/SplashScreen.java
new file mode 100644
index 00000000..5de84cca
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/splash/SplashScreen.java
@@ -0,0 +1,181 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.tools.ant.taskdefs.optional.splash;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.swing.BorderFactory;
+import javax.swing.ImageIcon;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JProgressBar;
+import javax.swing.JWindow;
+
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.BuildListener;
+
+class SplashScreen extends JWindow implements ActionListener, BuildListener {
+ private static final int FONT_SIZE = 12;
+ private JLabel text;
+ private JProgressBar pb;
+ private int total;
+ private static final int MIN = 0;
+ private static final int MAX = 200;
+ private Pattern progressRegExpPattern;
+
+ public SplashScreen(String msg) {
+ this(msg, null, null);
+ }
+
+ public SplashScreen(ImageIcon img) {
+ this(img, null, null);
+ }
+
+ public SplashScreen(String msg, String progressRegExp, String displayText) {
+ init(null, progressRegExp, displayText);
+ setText(msg);
+ }
+
+ public SplashScreen(ImageIcon img, String progressRegExp,
+ String displayText) {
+ init(img, progressRegExp, displayText);
+ }
+
+ protected void init(ImageIcon img) {
+ init(img, null, null);
+ }
+
+ protected void init(ImageIcon img, String progressRegExp,
+ String displayText) {
+ if (progressRegExp != null) {
+ progressRegExpPattern = Pattern.compile(progressRegExp);
+ }
+
+ JPanel pan = (JPanel) getContentPane();
+ JLabel piccy;
+ if (img == null) {
+ piccy = new JLabel();
+ } else {
+ piccy = new JLabel(img);
+ }
+
+ piccy.setBorder(BorderFactory.createLineBorder(Color.black, 1));
+ if (displayText == null) {
+ displayText = "Building....";
+ }
+ text = new JLabel(displayText, JLabel.CENTER);
+ text.setFont(new Font("Sans-Serif", Font.BOLD, FONT_SIZE));
+ text.setBorder(BorderFactory.createEtchedBorder());
+
+ pb = new JProgressBar(MIN, MAX);
+ pb.setBorder(BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
+ JPanel pan2 = new JPanel();
+ pan2.setLayout(new BorderLayout());
+
+ pan2.add(text, BorderLayout.NORTH);
+ pan2.add(pb, BorderLayout.SOUTH);
+
+ pan.setLayout(new BorderLayout());
+ pan.add(piccy, BorderLayout.CENTER);
+ pan.add(pan2, BorderLayout.SOUTH);
+
+ pan.setBorder(BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
+
+ pack();
+
+ Dimension size = getSize();
+ Dimension scr = Toolkit.getDefaultToolkit().getScreenSize();
+ int x = (scr.width - size.width) / 2;
+ int y = (scr.height - size.height) / 2;
+ setBounds(x, y, size.width, size.height);
+ }
+
+ public void setText(String txt) {
+ text.setText(txt);
+ }
+
+ public void actionPerformed(ActionEvent a) {
+ if (!hasProgressPattern()) {
+ if (total < MAX) {
+ total++;
+ } else {
+ total = MIN;
+ }
+ pb.setValue(total);
+ }
+ }
+
+ public void buildStarted(BuildEvent event) {
+ actionPerformed(null);
+ }
+
+ public void buildFinished(BuildEvent event) {
+ pb.setValue(MAX);
+ setVisible(false);
+ dispose();
+ }
+ public void targetStarted(BuildEvent event) {
+ actionPerformed(null);
+ }
+
+ public void targetFinished(BuildEvent event) {
+ actionPerformed(null);
+ }
+
+ public void taskStarted(BuildEvent event) {
+ actionPerformed(null);
+ }
+
+ public void taskFinished(BuildEvent event) {
+ actionPerformed(null);
+ }
+
+ public void messageLogged(BuildEvent event) {
+ actionPerformed(null);
+ if (hasProgressPattern()) {
+ String message = event.getMessage();
+ Matcher matcher = progressRegExpPattern.matcher(message);
+ if (matcher != null && matcher.matches()) {
+ String gr = matcher.group(1);
+ try {
+ int i = Math.min(new Integer(gr).intValue() * 2, MAX);
+ pb.setValue(i);
+ } catch (NumberFormatException e) {
+ //TODO: how to reach logger?!?
+ //log("Number parsing error in progressRegExp", Project.MSG_VERBOSE);
+
+ }
+ }
+ }
+ }
+
+ protected boolean hasProgressPattern() {
+ return progressRegExpPattern != null;
+ }
+
+}
+
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/splash/SplashTask.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/splash/SplashTask.java
new file mode 100644
index 00000000..3a73bdf7
--- /dev/null
+++ b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/splash/SplashTask.java
@@ -0,0 +1,297 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.tools.ant.taskdefs.optional.splash;
+
+import java.io.ByteArrayOutputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.net.URLConnection;
+
+import javax.swing.ImageIcon;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.taskdefs.optional.net.SetProxy;
+import org.apache.tools.ant.util.Base64Converter;
+
+/**
+ * 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
+ */
+public class SplashTask extends Task {
+ private static final int DEFAULT_SHOW_DURATION = 5000;
+
+ private String imgurl = null;
+ private String proxy = null;
+ private String user = null;
+ private String password = null;
+ private String port = "80";
+ private int showDuration = DEFAULT_SHOW_DURATION;
+ private boolean useProxy = false;
+ private String progressRegExp = null;
+ private String displayText = null;
+
+ private static SplashScreen splash = null;
+
+ /**
+ * A URL pointing to an image to display; optional, default antlogo.gif
+ * from the classpath.
+ * @param imgurl the url string pointing to the image
+ */
+ public void setImageURL(String imgurl) {
+ this.imgurl = imgurl;
+ }
+
+ /**
+ * flag to enable proxy settings; optional, deprecated : consider
+ * using &lt;setproxy&gt; instead
+ * @param useProxy if ture, enable proxy settings
+ * @deprecated since 1.5.x.
+ * Use org.apache.tools.ant.taskdefs.optional.net.SetProxy
+ */
+ @Deprecated
+ public void setUseproxy(boolean useProxy) {
+ this.useProxy = useProxy;
+ }
+
+ /**
+ * name of proxy; optional.
+ * @param proxy the name of the proxy host
+ * @deprecated since 1.5.x.
+ * Use org.apache.tools.ant.taskdefs.optional.net.SetProxy
+ */
+ @Deprecated
+ public void setProxy(String proxy) {
+ this.proxy = proxy;
+ }
+
+ /**
+ * Proxy port; optional, default 80.
+ * @param port the proxy port
+ * @deprecated since 1.5.x.
+ * Use org.apache.tools.ant.taskdefs.optional.net.SetProxy
+ */
+ @Deprecated
+ public void setPort(String port) {
+ this.port = port;
+ }
+
+ /**
+ * Proxy user; optional, default =none.
+ * @param user the proxy user
+ * @deprecated since 1.5.x.
+ * Use org.apache.tools.ant.taskdefs.optional.net.SetProxy
+ */
+ @Deprecated
+ public void setUser(String user) {
+ this.user = user;
+ }
+
+ /**
+ * Proxy password; required if <tt>user</tt> is set.
+ * @param password the proxy password
+ * @deprecated since 1.5.x.
+ * Use org.apache.tools.ant.taskdefs.optional.net.SetProxy
+ */
+ @Deprecated
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ /**
+ * how long to show the splash screen in milliseconds,
+ * optional; default 5000 ms.
+ * @param duration the splash duration in milliseconds
+ */
+ public void setShowduration(int duration) {
+ this.showDuration = duration;
+ }
+
+
+ /**
+ * Progress regular expression which is used to parse the output
+ * and dig out current progress optional; if not provided,
+ * progress is increased every action and log output line
+ * @param progressRegExp Progress regular expression, exactly one
+ * group pattern must exists, and it represents the progress
+ * number (0-100) (i.e "Progress: (.*)%")
+ * @since Ant 1.8.0
+ */
+ public void setProgressRegExp(String progressRegExp) {
+ this.progressRegExp = progressRegExp;
+ }
+
+ /**
+ * Sets the display text presented in the splash window.
+ * optional; defaults to "Building ..."
+ * @param displayText the display text presented the splash window
+ * @since Ant 1.8.0
+ */
+ public void setDisplayText(String displayText) {
+ this.displayText = displayText;
+ }
+
+ /**
+ * Execute the task.
+ * @throws BuildException on error
+ */
+ @Override
+ public void execute() throws BuildException {
+ 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;
+
+ SetProxy sp = new SetProxy();
+ sp.setProxyHost(proxy);
+ if (port != null) {
+ sp.setProxyPort(Integer.parseInt(port));
+ }
+ sp.setProxyUser(user);
+ sp.setProxyPassword(password);
+ sp.applyWebProxySettings();
+
+ 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");
+
+ 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");
+ 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, progressRegExp, displayText);
+ 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.", progressRegExp,
+ displayText);
+ 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 void logHeadless(Throwable e) {
+ log("failed to display SplashScreen, caught "
+ + e.getClass().getName() + " with message: " + e.getMessage(),
+ Project.MSG_WARN);
+ }
+
+}