summaryrefslogtreecommitdiff
path: root/trunk/pdf-over-gui/src
diff options
context:
space:
mode:
authorTobias Kellner <tobias.kellner@iaik.tugraz.at>2012-11-08 20:07:55 +0100
committerTobias Kellner <tobias.kellner@iaik.tugraz.at>2012-11-08 20:07:55 +0100
commit01692d8e696807881a533d4a4f8fa1b0394de5e4 (patch)
tree32344bc4a24ed9348503167c7057de14814e26a9 /trunk/pdf-over-gui/src
parent4626780495948c96a1aa343c46c062c1635c33ef (diff)
downloadpdf-over-01692d8e696807881a533d4a4f8fa1b0394de5e4.tar.gz
pdf-over-01692d8e696807881a533d4a4f8fa1b0394de5e4.tar.bz2
pdf-over-01692d8e696807881a533d4a4f8fa1b0394de5e4.zip
Only build 1 pkg per OS, load SWT libs @ runtime
Diffstat (limited to 'trunk/pdf-over-gui/src')
-rw-r--r--trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/Main.java21
-rw-r--r--trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/utils/SWTLoader.java89
-rw-r--r--trunk/pdf-over-gui/src/main/jnlp/pdfover.jnlp61
-rw-r--r--trunk/pdf-over-gui/src/main/resources/lib-swt/swt-linux-32.jarbin0 -> 1594280 bytes
-rw-r--r--trunk/pdf-over-gui/src/main/resources/lib-swt/swt-linux-64.jarbin0 -> 1758696 bytes
-rw-r--r--trunk/pdf-over-gui/src/main/resources/lib-swt/swt-mac-32.jarbin0 -> 1755486 bytes
-rw-r--r--trunk/pdf-over-gui/src/main/resources/lib-swt/swt-mac-64.jarbin0 -> 1659145 bytes
-rw-r--r--trunk/pdf-over-gui/src/main/resources/lib-swt/swt-windows-32.jarbin0 -> 1951661 bytes
-rw-r--r--trunk/pdf-over-gui/src/main/resources/lib-swt/swt-windows-64.jarbin0 -> 1938930 bytes
9 files changed, 108 insertions, 63 deletions
diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/Main.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/Main.java
index e650cfc4..42a811be 100644
--- a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/Main.java
+++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/Main.java
@@ -21,6 +21,8 @@ import java.io.File;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import at.asit.pdfover.gui.exceptions.InitializationException;
+import at.asit.pdfover.gui.utils.SWTLoader;
import at.asit.pdfover.gui.workflow.StateMachineImpl;
/**
@@ -37,20 +39,23 @@ public class Main {
* @param args
*/
public static void main(String[] args) {
- StateMachineImpl stateMachine = new StateMachineImpl(args);
-
+ log.debug("Loading SWT libraries"); //$NON-NLS-1$
+ try {
+ SWTLoader.loadSWT();
+ } catch (InitializationException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
File configDir = new File(System.getProperty("user.home")+"/.pdfover"); //$NON-NLS-1$//$NON-NLS-2$
-
if(!configDir.exists()) {
configDir.mkdir();
-
}
-
+
+ StateMachineImpl stateMachine = new StateMachineImpl(args);
+
log.debug("Starting stateMachine ..."); //$NON-NLS-1$
-
stateMachine.start();
-
log.debug("Ended stateMachine ..."); //$NON-NLS-1$
}
-
}
diff --git a/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/utils/SWTLoader.java b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/utils/SWTLoader.java
new file mode 100644
index 00000000..f966bb71
--- /dev/null
+++ b/trunk/pdf-over-gui/src/main/java/at/asit/pdfover/gui/utils/SWTLoader.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2012 by A-SIT, Secure Information Technology Center Austria
+ *
+ * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
+ * the European Commission - subsequent versions of the EUPL (the "Licence");
+ * You may not use this work except in compliance with the Licence.
+ * You may obtain a copy of the Licence at:
+ * http://joinup.ec.europa.eu/software/page/eupl
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the Licence is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing permissions and
+ * limitations under the Licence.
+ */
+package at.asit.pdfover.gui.utils;
+
+// Imports
+import java.io.File;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.net.URLClassLoader;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.asit.pdfover.gui.exceptions.InitializationException;
+
+/**
+ *
+ */
+@SuppressWarnings("nls")
+public class SWTLoader {
+ /**
+ * SLF4J Logger instance
+ **/
+ private static final Logger log = LoggerFactory.getLogger(SWTLoader.class);
+
+ /**
+ * Load the SWT library for this OS
+ * @throws InitializationException Loading failed
+ */
+ public static void loadSWT() throws InitializationException {
+ try {
+ log.debug("loading " + getSwtJarName());
+ URLClassLoader cl = (URLClassLoader)SWTLoader.class.getClassLoader();
+ Method addUrlMethod = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
+ addUrlMethod.setAccessible(true);
+
+ String swtLibPath = "lib-swt/" + getSwtJarName();
+ File swtLib = new File(swtLibPath);
+ if (!swtLib.isFile())
+ throw new SWTLoadFailedException("Library " + swtLibPath + " not found");
+ log.debug("Adding " + swtLib + " to ClassLoader...");
+ addUrlMethod.invoke(cl, swtLib.toURI().toURL());
+ log.debug("Success.");
+ } catch (Exception e) {
+ throw new InitializationException("SWT loading failed", e);
+ }
+ }
+
+ private static int getArchBits() {
+ String arch = System.getProperty("os.arch");
+ return arch.contains("64") ? 64 : 32;
+ }
+
+ private static String getSwtJarName() throws SWTLoadFailedException {
+ String os = System.getProperty("os.name").toLowerCase();
+ if (os.contains("win"))
+ os = "windows";
+ else if (os.contains("mac"))
+ os = "mac";
+ else if (os.contains("linux") || os.contains("nix"))
+ os = "linux";
+ else {
+ log.error("Unknown OS: " + os);
+ throw new SWTLoadFailedException("Unknown OS: " + os);
+ }
+ return "swt-" + os + "-" + getArchBits() + ".jar";
+ }
+
+ private static class SWTLoadFailedException extends Exception {
+ private static final long serialVersionUID = 1L;
+
+ SWTLoadFailedException(String msg) {
+ super(msg);
+ }
+ }
+}
diff --git a/trunk/pdf-over-gui/src/main/jnlp/pdfover.jnlp b/trunk/pdf-over-gui/src/main/jnlp/pdfover.jnlp
index df064c22..ccf8a297 100644
--- a/trunk/pdf-over-gui/src/main/jnlp/pdfover.jnlp
+++ b/trunk/pdf-over-gui/src/main/jnlp/pdfover.jnlp
@@ -21,68 +21,19 @@
<update check="timeout" policy="prompt-update"/>
- <resources os="Linux" arch="i386">
+ <resources os="Linux">
<java version="1.6+"/>
- <jar href="setup_pdfover_linux_x86.jar" main="true"/>
- </resources>
- <resources os="Linux" arch="x86">
- <java version="1.6+"/>
- <jar href="setup_pdfover_linux_x86.jar" main="true"/>
- </resources>
-
- <resources os="Linux" arch="x86_64">
- <java version="1.6+"/>
- <jar href="setup_pdfover_linux_x64.jar" main="true"/>
- </resources>
- <resources os="Linux" arch="amd64">
- <java version="1.6+"/>
- <jar href="setup_pdfover_linux_x64.jar" main="true"/>
- </resources>
- <resources os="Linux" arch="ppc64">
- <java version="1.6+"/>
- <jar href="setup_pdfover_linux_x64.jar" main="true"/>
+ <jar href="setup_pdfover_linux.jar" main="true"/>
</resources>
-
- <resources os="Windows" arch="x86">
+ <resources os="Windows">
<java version="1.6+"/>
- <jar href="setup_pdfover_windows_x86.jar" main="true"/>
+ <jar href="setup_pdfover_windows.jar" main="true"/>
</resources>
- <resources os="Windows" arch="x86_64">
- <java version="1.6+"/>
- <jar href="setup_pdfover_windows_x64.jar" main="true"/>
- </resources>
- <resources os="Windows" arch="amd64">
- <java version="1.6+"/>
- <jar href="setup_pdfover_windows_x64.jar" main="true"/>
- </resources>
-
-
- <resources os="Mac OS X" arch="x86">
- <java version="1.6+"/>
- <jar href="setup_pdfover_mac_x86.jar" main="true"/>
- </resources>
- <resources os="Mac OS X" arch="i386">
- <java version="1.6+"/>
- <jar href="setup_pdfover_mac_x86.jar" main="true"/>
- </resources>
- <resources os="Mac OS X" arch="ppc">
- <java version="1.6+"/>
- <jar href="setup_pdfover_mac_x86.jar" main="true"/>
- </resources>
-
- <resources os="Mac OS X" arch="x86_64">
- <java version="1.6+"/>
- <jar href="setup_pdfover_mac_x64.jar" main="true"/>
- </resources>
- <resources os="Mac OS X" arch="amd64">
- <java version="1.6+"/>
- <jar href="setup_pdfover_mac_x64.jar" main="true"/>
- </resources>
- <resources os="Mac OS X" arch="ppc64">
+ <resources os="Mac OS X">
<java version="1.6+"/>
- <jar href="setup_pdfover_mac_x64.jar" main="true"/>
+ <jar href="setup_pdfover_mac" main="true"/>
</resources>
<application-desc main-class="com.izforge.izpack.installer.Installer"/>
diff --git a/trunk/pdf-over-gui/src/main/resources/lib-swt/swt-linux-32.jar b/trunk/pdf-over-gui/src/main/resources/lib-swt/swt-linux-32.jar
new file mode 100644
index 00000000..95d36dca
--- /dev/null
+++ b/trunk/pdf-over-gui/src/main/resources/lib-swt/swt-linux-32.jar
Binary files differ
diff --git a/trunk/pdf-over-gui/src/main/resources/lib-swt/swt-linux-64.jar b/trunk/pdf-over-gui/src/main/resources/lib-swt/swt-linux-64.jar
new file mode 100644
index 00000000..2141c784
--- /dev/null
+++ b/trunk/pdf-over-gui/src/main/resources/lib-swt/swt-linux-64.jar
Binary files differ
diff --git a/trunk/pdf-over-gui/src/main/resources/lib-swt/swt-mac-32.jar b/trunk/pdf-over-gui/src/main/resources/lib-swt/swt-mac-32.jar
new file mode 100644
index 00000000..7f1718fd
--- /dev/null
+++ b/trunk/pdf-over-gui/src/main/resources/lib-swt/swt-mac-32.jar
Binary files differ
diff --git a/trunk/pdf-over-gui/src/main/resources/lib-swt/swt-mac-64.jar b/trunk/pdf-over-gui/src/main/resources/lib-swt/swt-mac-64.jar
new file mode 100644
index 00000000..e16cfa1f
--- /dev/null
+++ b/trunk/pdf-over-gui/src/main/resources/lib-swt/swt-mac-64.jar
Binary files differ
diff --git a/trunk/pdf-over-gui/src/main/resources/lib-swt/swt-windows-32.jar b/trunk/pdf-over-gui/src/main/resources/lib-swt/swt-windows-32.jar
new file mode 100644
index 00000000..eff617af
--- /dev/null
+++ b/trunk/pdf-over-gui/src/main/resources/lib-swt/swt-windows-32.jar
Binary files differ
diff --git a/trunk/pdf-over-gui/src/main/resources/lib-swt/swt-windows-64.jar b/trunk/pdf-over-gui/src/main/resources/lib-swt/swt-windows-64.jar
new file mode 100644
index 00000000..1e46b588
--- /dev/null
+++ b/trunk/pdf-over-gui/src/main/resources/lib-swt/swt-windows-64.jar
Binary files differ