diff --git a/diylc/diylc-library/lib/diylc-core.jar b/diylc/diylc-library/lib/diylc-core.jar
index b2eb8a90..e0eb7807 100644
Binary files a/diylc/diylc-library/lib/diylc-core.jar and b/diylc/diylc-library/lib/diylc-core.jar differ
diff --git a/diylc/diylc-swing/DIYLCStarter.launch b/diylc/diylc-swing/DIYLCStarter.launch
index 6c49e423..a996d2b3 100644
--- a/diylc/diylc-swing/DIYLCStarter.launch
+++ b/diylc/diylc-swing/DIYLCStarter.launch
@@ -12,5 +12,5 @@
-
+
diff --git a/diylc/diylc-swing/lib/diylc-core.jar b/diylc/diylc-swing/lib/diylc-core.jar
index b2eb8a90..e0eb7807 100644
Binary files a/diylc/diylc-swing/lib/diylc-core.jar and b/diylc/diylc-swing/lib/diylc-core.jar differ
diff --git a/diylc/diylc-swing/library/main.jar b/diylc/diylc-swing/library/main.jar
index b7a290b8..06d562c0 100644
Binary files a/diylc/diylc-swing/library/main.jar and b/diylc/diylc-swing/library/main.jar differ
diff --git a/diylc/diylc-swing/splash.png b/diylc/diylc-swing/splash.png
index c157d178..d326e7e1 100644
Binary files a/diylc/diylc-swing/splash.png and b/diylc/diylc-swing/splash.png differ
diff --git a/diylc/diylc-swing/src/org/diylc/DIYLCStarter.java b/diylc/diylc-swing/src/org/diylc/DIYLCStarter.java
index b8c8e3a8..12954b9a 100644
--- a/diylc/diylc-swing/src/org/diylc/DIYLCStarter.java
+++ b/diylc/diylc-swing/src/org/diylc/DIYLCStarter.java
@@ -1,17 +1,24 @@
package org.diylc;
+import java.awt.AlphaComposite;
+import java.awt.Graphics2D;
+import java.awt.Point;
+import java.awt.SplashScreen;
import java.io.File;
import java.io.FileInputStream;
import java.net.URL;
import java.util.Properties;
+import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
+import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.diylc.appframework.miscutils.ConfigurationManager;
import org.diylc.appframework.miscutils.PropertyInjector;
+import org.diylc.images.IconLoader;
import org.diylc.presenter.Presenter;
import org.diylc.swing.gui.MainFrame;
import org.diylc.swing.gui.TemplateDialog;
@@ -34,6 +41,7 @@ public class DIYLCStarter {
* @param args
*/
public static void main(String[] args) {
+
URL url = DIYLCStarter.class.getResource("log4j.properties");
Properties properties = new Properties();
try {
@@ -43,6 +51,45 @@ public class DIYLCStarter {
LOG.error("Could not initialize log4j configuration", e);
}
+ // Initialize splash screen
+ final SplashScreen splash = SplashScreen.getSplashScreen();
+ if (splash != null) {
+ final Graphics2D g = splash.createGraphics();
+ if (g != null) {
+ Thread t = new Thread(new Runnable() {
+
+ @Override
+ public void run() {
+ for (int i = 90; i >= 0; i--) {
+ if (!splash.isVisible())
+ return;
+ final int frame = i;
+ SwingUtilities.invokeLater(new Runnable() {
+
+ @Override
+ public void run() {
+ renderSplashFrame(splash, g, frame);
+ splash.update();
+ }
+ });
+ try {
+ Thread.sleep(10);
+ } catch (InterruptedException e) {
+ }
+ }
+ }
+ });
+ t.start();
+ }
+ }
+
+// try {
+// Thread.sleep(20000);
+// } catch (InterruptedException e1) {
+// // TODO Auto-generated catch block
+// e1.printStackTrace();
+// }
+
ConfigurationManager.initialize("diylc");
LOG.debug("Java version: " + System.getProperty("java.runtime.version") + " by "
@@ -96,4 +143,68 @@ public class DIYLCStarter {
LOG.error("Could not read config.properties file", e);
}
}
+
+ // Splash screen stuff below
+
+ private static ImageIcon resistor = null;
+
+ public static ImageIcon getResistor() {
+ if (resistor == null) {
+ resistor = (ImageIcon)IconLoader.SplashResistor.getIcon();
+ }
+ return resistor;
+ }
+
+ private static ImageIcon film = null;
+
+ public static ImageIcon getFilm() {
+ if (film == null) {
+ film = (ImageIcon)IconLoader.SplashFilm.getIcon();
+ }
+ return film;
+ }
+
+ private static ImageIcon ceramic = null;
+
+ public static ImageIcon getCeramic() {
+ if (ceramic == null) {
+ ceramic = (ImageIcon)IconLoader.SplashCeramic.getIcon();
+ }
+ return ceramic;
+ }
+
+ private static ImageIcon electrolytic = null;
+
+ public static ImageIcon getElectrolytic() {
+ if (electrolytic == null) {
+ electrolytic = (ImageIcon)IconLoader.SplashElectrolytic.getIcon();
+ }
+ return electrolytic;
+ }
+
+ private static ImageIcon splash = null;
+
+ public static ImageIcon getSplash() {
+ if (splash == null) {
+ splash = (ImageIcon)IconLoader.Splash.getIcon();
+ }
+ return splash;
+ }
+
+ private static Point resistorTarget = new Point(112, 114);
+ private static Point filmTarget = new Point(233, 113);
+ private static Point electrolyticTarget = new Point(261, 23);
+ private static Point ceramicTarget = new Point(352, 22);
+
+ private static int pxPerFrame = 3;
+
+ static void renderSplashFrame(SplashScreen splash, Graphics2D g, int frame) {
+ g.setComposite(AlphaComposite.Clear);
+ getSplash().paintIcon(null, g, 0, 0);
+ g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.7f));
+ getResistor().paintIcon(null, g, resistorTarget.x - pxPerFrame * frame, resistorTarget.y);
+ getFilm().paintIcon(null, g, filmTarget.x, filmTarget.y + pxPerFrame * frame);
+ getElectrolytic().paintIcon(null, g, electrolyticTarget.x, electrolyticTarget.y - pxPerFrame * frame);
+ getCeramic().paintIcon(null, g, ceramicTarget.x + pxPerFrame * frame, ceramicTarget.y);
+ }
}
diff --git a/diylc/diylc-swing/src/org/diylc/images/IconLoader.java b/diylc/diylc-swing/src/org/diylc/images/IconLoader.java
index 31571a70..1df772ea 100644
--- a/diylc/diylc-swing/src/org/diylc/images/IconLoader.java
+++ b/diylc/diylc-swing/src/org/diylc/images/IconLoader.java
@@ -40,7 +40,8 @@ public enum IconLoader {
"flip_horizontal.png"), FlipVertical("flip_vertical.png"), MagicWand("magic_wand.png"), PinGrey("pin_grey.png"), PinGreen(
"pin_green.png"), CoffeebeanEdit("coffeebean_edit.png"), ApplicationEdit("application_edit.png"), ComponentAdd(
"component_add.png"), History("history.png"), DocumentPlain("document_plain.png"), FitToSize("fit_to_size.png"), DocumentsGear(
- "documents_gear.png");
+ "documents_gear.png"), SplashResistor("splash_resistor.png"), SplashCeramic("splash_ceramic.png"), SplashElectrolytic(
+ "splash_electrolytic.png"), SplashFilm("splash_film.png"), Splash("splash.png");
protected String name;
diff --git a/diylc/diylc-swing/src/org/diylc/images/splash.png b/diylc/diylc-swing/src/org/diylc/images/splash.png
new file mode 100644
index 00000000..d326e7e1
Binary files /dev/null and b/diylc/diylc-swing/src/org/diylc/images/splash.png differ
diff --git a/diylc/diylc-swing/src/org/diylc/images/splash_ceramic.png b/diylc/diylc-swing/src/org/diylc/images/splash_ceramic.png
new file mode 100644
index 00000000..8d6560e7
Binary files /dev/null and b/diylc/diylc-swing/src/org/diylc/images/splash_ceramic.png differ
diff --git a/diylc/diylc-swing/src/org/diylc/images/splash_electrolytic.png b/diylc/diylc-swing/src/org/diylc/images/splash_electrolytic.png
new file mode 100644
index 00000000..e072656a
Binary files /dev/null and b/diylc/diylc-swing/src/org/diylc/images/splash_electrolytic.png differ
diff --git a/diylc/diylc-swing/src/org/diylc/images/splash_film.png b/diylc/diylc-swing/src/org/diylc/images/splash_film.png
new file mode 100644
index 00000000..fc90b736
Binary files /dev/null and b/diylc/diylc-swing/src/org/diylc/images/splash_film.png differ
diff --git a/diylc/diylc-swing/src/org/diylc/images/splash_resistor.png b/diylc/diylc-swing/src/org/diylc/images/splash_resistor.png
new file mode 100644
index 00000000..5e201bfd
Binary files /dev/null and b/diylc/diylc-swing/src/org/diylc/images/splash_resistor.png differ