add eclipseCon Europe 2015 samples & slides
diff --git a/presentations/EclipseCon Europe 2015/.project b/presentations/EclipseCon Europe 2015/.project
new file mode 100644
index 0000000..ab3c1d5
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>EclipseCon Europe 2015</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+	</buildSpec>
+	<natures>
+	</natures>
+</projectDescription>
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/bullet.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/bullet.png
new file mode 100644
index 0000000..658d126
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/bullet.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/code_build_module_docs.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/code_build_module_docs.png
new file mode 100644
index 0000000..12c63e2
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/code_build_module_docs.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/code_charts.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/code_charts.png
new file mode 100644
index 0000000..07087d5
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/code_charts.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/code_invoke_java.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/code_invoke_java.png
new file mode 100644
index 0000000..70643f2
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/code_invoke_java.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/code_module_extension.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/code_module_extension.png
new file mode 100644
index 0000000..6119987
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/code_module_extension.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/code_simple_module.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/code_simple_module.png
new file mode 100644
index 0000000..6ec0fbf
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/code_simple_module.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/coming_soon.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/coming_soon.png
new file mode 100644
index 0000000..7c6483e
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/coming_soon.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/eclipse256.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/eclipse256.png
new file mode 100644
index 0000000..7e5bbdc
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/eclipse256.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/evaluation.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/evaluation.png
new file mode 100644
index 0000000..10bfac1
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/evaluation.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/java.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/java.png
new file mode 100644
index 0000000..b069023
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/java.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/not_supported.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/not_supported.png
new file mode 100644
index 0000000..9ed9246
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/not_supported.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/script.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/script.png
new file mode 100644
index 0000000..dc6fde5
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/script.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_advanced_chart.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_advanced_chart.png
new file mode 100644
index 0000000..aaeb908
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_advanced_chart.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_code_completion.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_code_completion.png
new file mode 100644
index 0000000..ad6bfce
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_code_completion.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_code_completion_help.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_code_completion_help.png
new file mode 100644
index 0000000..d767a0f
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_code_completion_help.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_compile_class.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_compile_class.png
new file mode 100644
index 0000000..7795f1e
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_compile_class.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_debugging.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_debugging.png
new file mode 100644
index 0000000..f095e08
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_debugging.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_invoke_java.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_invoke_java.png
new file mode 100644
index 0000000..9386e78
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_invoke_java.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_invoke_result.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_invoke_result.png
new file mode 100644
index 0000000..223a6e0
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_invoke_result.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_launch_configuration.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_launch_configuration.png
new file mode 100644
index 0000000..a267e54
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_launch_configuration.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_load_module.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_load_module.png
new file mode 100644
index 0000000..8d2e6a1
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_load_module.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_modules_explorer.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_modules_explorer.png
new file mode 100644
index 0000000..e7d4203
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_modules_explorer.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_online_help.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_online_help.png
new file mode 100644
index 0000000..b640c78
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_online_help.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_script_explorer.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_script_explorer.png
new file mode 100644
index 0000000..d5c01d3
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_script_explorer.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_script_locations.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_script_locations.png
new file mode 100644
index 0000000..f534cc8
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_script_locations.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_script_popup.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_script_popup.png
new file mode 100644
index 0000000..8a8fa48
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_script_popup.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_script_ui_context.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_script_ui_context.png
new file mode 100644
index 0000000..7655bd9
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_script_ui_context.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_script_ui_menu.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_script_ui_menu.png
new file mode 100644
index 0000000..7352c81
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_script_ui_menu.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_script_ui_toolbar.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_script_ui_toolbar.png
new file mode 100644
index 0000000..09dbbbf
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_script_ui_toolbar.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_shell.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_shell.png
new file mode 100644
index 0000000..c5d13b1
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_shell.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_shell_basic.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_shell_basic.png
new file mode 100644
index 0000000..f52aaad
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_shell_basic.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_shell_basic_console.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_shell_basic_console.png
new file mode 100644
index 0000000..be52ade
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_shell_basic_console.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_shell_eclipse.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_shell_eclipse.png
new file mode 100644
index 0000000..3d1e767
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_shell_eclipse.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_shell_jars.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_shell_jars.png
new file mode 100644
index 0000000..ab33efe
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_shell_jars.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_simple_chart.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_simple_chart.png
new file mode 100644
index 0000000..714e5a9
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_simple_chart.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_unit_testing.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_unit_testing.png
new file mode 100644
index 0000000..c8dbf16
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_unit_testing.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_wrap_instance.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_wrap_instance.png
new file mode 100644
index 0000000..50b56c3
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/scrn_wrap_instance.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/shell_java_1.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/shell_java_1.png
new file mode 100644
index 0000000..bc79603
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/shell_java_1.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/shell_java_2.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/shell_java_2.png
new file mode 100644
index 0000000..054e8d5
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/shell_java_2.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/shell_java_3.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/shell_java_3.png
new file mode 100644
index 0000000..3d13b38
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/shell_java_3.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/images/supported.png b/presentations/EclipseCon Europe 2015/01 Slides/content/images/supported.png
new file mode 100644
index 0000000..4e491ac
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/images/supported.png
Binary files differ
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/index.html b/presentations/EclipseCon Europe 2015/01 Slides/content/index.html
new file mode 100644
index 0000000..b1b4d63
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/index.html
@@ -0,0 +1,415 @@
+<!doctype html>
+<html lang="en">
+<head>
+<meta charset="utf-8" />
+<meta name="viewport" content="width=1024" />
+<meta name="apple-mobile-web-app-capable" content="yes" />
+<title>I love scripting, EclipseCon Europe 2015</title>
+
+<meta name="description"
+	content="EclipseCon presentation of the Eclipse Advanced Scripting Environment." />
+<meta name="author" content="Christian Pontesegger" />
+
+<link
+	href="http://fonts.googleapis.com/css?family=Open+Sans:regular,semibold,italic,italicsemibold|PT+Sans:400,700,400italic,700italic|PT+Serif:400,700,400italic,700italic"
+	rel="stylesheet" />
+
+<!--
+        
+        Impress.js doesn't depend on any external stylesheets. It adds all of the styles it needs for the
+        presentation to work.
+        
+        This style below contains styles only for demo presentation. Browse it to see how impress.js
+        classes are used to style presentation steps, or how to apply fallback styles, but I don't want
+        you to use them directly in your presentation.
+        
+        Be creative, build your own. We don't really want all impress.js presentations to look the same,
+        do we?
+        
+        When creating your own presentation get rid of this file. Start from scratch, it's fun!
+        
+    -->
+<link href="style.css" rel="stylesheet" />
+<link rel="shortcut icon" href="favicon.png" />
+<link rel="apple-touch-icon" href="apple-touch-icon.png" />
+
+<link href='https://fonts.googleapis.com/css?family=Marck+Script&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
+</head>
+
+<!--
+    
+    Body element is used by impress.js to set some useful class names, that will allow you to detect
+    the support and state of the presentation in CSS or other scripts.
+    
+    First very useful class name is `impress-not-supported`. This class means, that browser doesn't
+    support features required by impress.js, so you should apply some fallback styles in your CSS.
+    It's not necessary to add it manually on this element. If the script detects that browser is not
+    good enough it will add this class, but keeping it in HTML means that users without JavaScript
+    will also get fallback styles.
+    
+    When impress.js script detects that browser supports all required features, this class name will
+    be removed.
+    
+    The class name on body element also depends on currently active presentation step. More details about
+    it can be found later, when `hint` element is being described.
+    
+-->
+<body class="impress-not-supported">
+
+	<!--
+    For example this fallback message is only visible when there is `impress-not-supported` class on body.
+-->
+	<div class="fallback-message">
+		<p>
+			Your browser <b>doesn't support the features required</b> by impress.js, so you are presented
+			with a simplified version of this presentation.
+		</p>
+		<p>
+			For the best experience please use the latest <b>Chrome</b>, <b>Safari</b> or <b>Firefox</b>
+			browser.
+		</p>
+	</div>
+
+	<div id="impress">
+		<div id="title" class="step slide" data-x="10000" data-y="22000" data-scale="40">
+			<div id="i_love">I love scripting</div>
+			<div id="copyright" class="bottomright">EclipseCon Europe 2015<br />by Christian Pontesegger</div>
+		</div>
+
+		<div id="ide-support" class="step slide" data-x="-55" data-y="45" data-scale="0.52">
+		</div>
+
+		<div id="engines" class="step slide" data-x="60" data-y="45" data-scale="0.52">
+		</div>
+
+		<div id="bigPicture" class="step slide" data-x="0" data-y="0" >
+			<p id="picture_java" class="box eclipse">
+				<img src="images/java.png" />
+			</p>
+
+			<img id="picture_script1" src="images/script.png" />
+			<img id="picture_script2" src="images/script.png" />
+			<img id="picture_script3" src="images/script.png" />
+			<img id="picture_script4" src="images/script.png" />
+			<img id="picture_script5" src="images/script.png" />
+
+			<p id="picture_ease" class="box eclipse">
+				EASE<br />Eclipse Advanced Scripting Environment
+			</p>
+
+			<p id="picture_jsdt" class="ideSupport box eclipse">JSDT</p>
+			<p id="picture_pydev" class="ideSupport box eclipse">PyDev</p>
+			<p id="picture_ggts" class="ideSupport box eclipse">GGTS</p>
+			<p id="picture_rdt" class="ideSupport box eclipse">RDT</p>
+
+			<p id="picture_eclipse" class="box eclipse">
+				Eclipse<br /> <img src="images/eclipse256.png" />
+			</p>
+
+			<p id="picture_rhino" class="engine box eclipse">Rhino</p>
+			<p id="picture_jython" class="engine box eclipse">Jython</p>
+			<p id="picture_groovy" class="engine box eclipse">Groovy</p>
+			<p id="picture_jruby" class="engine box eclipse">JRuby</p>
+		</div>
+
+		<div id="shell_main" class="step slide background" data-x="0" data-y="-1500">
+			<h1>An interactive script shell</h1>
+			<img class="center" src="images/scrn_shell.png" />
+		</div>
+
+		<div id="shell_jre" class="step slide" data-x="0" data-y="-2500">
+			<h1>... with access to the Java runtime</h1>
+			<div id="jre1" class="code">
+				<img src="images/shell_java_1.png" />
+			</div>
+			<div id="jre2" class="code">
+				<img src="images/shell_java_2.png" />
+			</div>
+			<div id="jre3" class="code">
+				<img src="images/shell_java_3.png" />
+			</div>
+		</div>
+
+		<div id="shell_jars" class="step slide" data-x="-700" data-y="-3500">
+			<h1>... your JARs</h1>
+			<img class="center" src="images/scrn_shell_jars.png" />
+		</div>
+
+		<div id="shell_eclipse" class="step slide" data-x="700" data-y="-3500">
+			<h1>... and Eclipse</h1>
+			<img class="center" src="images/scrn_shell_eclipse.png" />
+			<p class="bottomright">with all its plug-ins</p>
+		</div>
+
+		<div id="code_completion" class="step slide background" data-x="1500" data-y="-1200" data-rotate="45">
+			<h1>Powerful code completion</h1>
+			<img class="center" src="images/scrn_code_completion.png" />
+		</div>
+
+		<div id="code_completion_help" class="step slide" data-x="2200" data-y="-1900" data-rotate="45">
+			<h1>... with help tooltips</h1>
+			<img class="center" src="images/scrn_code_completion_help.png" width="880" />
+			<img id="coming_soon" src="images/coming_soon.png" width="300" />
+		</div>
+
+		<div id="modules_explorer" class="step slide background" data-x="2000" data-y="0" data-rotate="90">
+			<h1>Use modules for common tasks</h1>
+			<ul class="left">
+				<li>Launch support</li>
+				<li>Preferences</li>
+				<li>access Services</li>
+				<li>perform UI tasks</li>
+				<li>Script multithreading</li>
+				<li>Resource handling</li>
+			</ul>
+			<img class="right" src="images/scrn_modules_explorer.png" />
+		</div>
+
+		<div id="load_modules" class="step slide" data-x="3000" data-y="0" data-rotate="90">
+			<h1>... loaded dynamically during runtime</h1>
+			<img class="center" src="images/scrn_load_module.png" />
+		</div>
+
+		<div id="wrap_java_instance" class="step slide" data-x="4000" data-y="-1250" data-rotate="90">
+			<h1>Wrap any java object</h1>
+			<img class="center" src="images/scrn_wrap_instance.png" />
+		</div>
+
+		<div id="register_pojo" class="step slide" data-x="4000" data-y="0" data-rotate="90">
+			<h1>Register POJOs</h1>
+			<img id="pojo1" src="images/code_simple_module.png" />
+			<img id="pojo2" src="images/code_module_extension.png" />
+		</div>
+
+		<div id="write_modules" class="step slide" data-x="4000" data-y="1250" data-rotate="90">
+			<h1>or write sophisticated modules</h1>
+			<ul class="center">
+				<li>select methods/fields to export</li>
+				<li>have optional parameters</li>
+				<li>provide method aliases</li>
+				<li>deprecate methods</li>
+			</ul>
+			<a class="centerbottom" href="http://codeandme.blogspot.co.at/2014/10/writing-modules-for-ease.html">Read the
+				detailed tutorial</a>
+		</div>
+
+		<div id="module_docs" class="step slide" data-x="5000" data-y="-625" data-rotate="90">
+			<h1>Consistent documentation</h1>
+			<img class="center" src="images/scrn_online_help.png" />
+		</div>
+
+		<div id="module_docs_build" class="step slide" data-x="5000" data-y="625" data-rotate="90">
+			<h1>created @ build time</h1>
+			<img class="center code" src="images/code_build_module_docs.png" />
+		</div>
+
+		<div id="launch_config" class="step slide background" data-x="1500" data-y="1200" data-rotate="135">
+			<h1>Launch support</h1>
+			<img class="center" src="images/scrn_launch_configuration.png" />
+		</div>
+
+		<div id="debug_config" class="step slide" data-x="2200" data-y="1900" data-rotate="135">
+			<h1>Integrated debugger</h1>
+			<img class="center" src="images/scrn_debugging.png" />
+		</div>
+
+		<div id="script_libraries" class="step slide background" data-x="0" data-y="1500" data-rotate="180">
+			<h1>Create script libraries</h1>
+			<img class="left" src="images/scrn_script_explorer.png" />
+			<ul class="right">
+				<li>record shell scripts</li>
+				<li>load from known location</li>
+				<li>customize display structure</li>
+				<li>modify scripts</li>
+				<li>execute scripts</li>
+			</ul>
+		</div>
+
+		<div id="script_repositories" class="step slide" data-x="0" data-y="2500" data-rotate="180">
+			<h1>Share with colleagues</h1>
+			<img class="center" src="images/scrn_script_locations.png" />
+			<p class="bottomright">... or the world</p>
+		</div>
+
+		<div id="script_ui_integration" class="step slide" data-x="0" data-y="3500" data-rotate="180">
+			<h1>Enhance your UI</h1>
+			<div id="toolbar">
+				<img src="images/scrn_script_ui_toolbar.png" />
+				<p>... toolbars</p>
+			</div>
+			<div id="menu">
+				<img src="images/scrn_script_ui_menu.png" />
+				<p>... view menus</p>
+			</div>
+			<div id="context">
+				<img src="images/scrn_script_ui_context.png" />
+				<p>... context menus</p>
+			</div>
+			<a class="bottomright" href="http://codeandme.blogspot.co.at/2014/12/ease-scripts-conquer-ui.html">Read the
+				detailed tutorial</a>
+		</div>
+
+		<div id="charts" class="step slide background" data-x="-1500" data-y="1200" data-rotate="225" >
+			<p>Live charts</p>
+			<img src="images/code_charts.png" /> <img src="images/scrn_simple_chart.png" /> <img
+				src="images/scrn_advanced_chart.png" /> <a
+				href="http://codeandme.blogspot.co.at/2015/04/live-charting-with-ease.html">Read the
+				detailed tutorial</a>
+		</div>
+
+		<div id="unit_tests" class="step slide background" data-x="-2000" data-y="0" data-rotate="270" >
+			<h1>Scripted unit testing</h1>
+			<img class="left" src="images/scrn_unit_testing.png" />
+			<ul class="right">
+				<li>UI support</li>
+				<li>Error markers in files</li>
+				<li>Reporting</li>
+				<li>integrates with Hudson/Jenkins</li>
+			</ul>
+			<a class="bottomright" href="http://codeandme.blogspot.co.at/2015/05/unit-testing-with-scripts-in-ease.html">Read
+				the detailed tutorial</a>
+		</div>
+
+		<div id="java_code" class="step slide background" data-x="-1500" data-y="-1200" data-rotate="315">
+			<h1>Interact with Java source</h1>
+			<img class="center" src="images/code_invoke_java.png" />
+		</div>
+
+		<div id="java_load" class="step slide" data-x="-2200" data-y="-1900" data-rotate="315">
+			<h1>... load classes from workspace</h1>
+			<img class="center" src="images/scrn_compile_class.png" />
+		</div>
+
+		<div id="java_invoke" class="step slide" data-x="-2900" data-y="-2600" data-rotate="315">
+			<h1>INVOKE !</h1>
+			<img class="center" src="images/scrn_invoke_java.png" />
+			<img id="java_result" src="images/scrn_invoke_result.png" />
+			<p class="bottomright">... and we do not launch a new JRE.</p>
+		</div>
+
+		<div id="engine_integration" class="step slide" data-x="-3000" data-y="-4000" >
+			<h1>Supported engines</h1>
+			<table class="center">
+				<tr>
+					<th class="rotate"></th>
+					<th class="rotate"><div><span>Launch</span></div></th>
+					<th class="rotate"><div><span>Shell</span></div></th>
+					<th class="rotate"><div><span>Modules</span></div></th>
+					<th class="rotate"><div><span>Scripts</span></div></th>
+					<th class="rotate"><div><span>Unit Test</span></div></th>
+					<th class="rotate"><div><span>Debug</span></div></th>
+				</tr>
+				<tr>
+					<td>Rhino</td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+				</tr>
+				<tr>
+					<td>Nashorn</td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/not_supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/not_supported.png" width="20" alt="ok"/></td>
+				</tr>
+				<tr>
+					<td>Jython</td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/not_supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+				</tr>
+				<tr>
+					<td>Groovy</td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/not_supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/not_supported.png" width="20" alt="ok"/></td>
+				</tr>
+				<tr>
+					<td>JRuby</td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/not_supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/not_supported.png" width="20" alt="ok"/></td>
+				</tr>
+				<tr>
+					<td>JVM</td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/not_supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/not_supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/not_supported.png" width="20" alt="ok"/></td>
+					<td><img src="images/not_supported.png" width="20" alt="ok"/></td>
+				</tr>
+			</table>
+		</div>
+
+
+
+		<div id="conclusion" class="step slide" data-x="10000" data-y="8000" data-scale="40">
+			<div>That's why</div>
+		</div>
+
+		<div id="get_in_touch" class="step slide" data-x="80000" data-y="8000" data-scale="40">
+			<h1>Get in touch</h1>
+			<p id="link1" class="center"><a href="https://eclipse.org/ease">eclipse.org/ease</a></p>
+			<p id="link2" class="center"><a href="https://codeandme.blogspot.com">codeandme.blogspot.com</a></p>
+		</div>
+
+		<div id="evaluation" class="step slide" data-x="170000" data-y="8000" data-scale="40">
+			<img class="center" src="images/evaluation.png" />
+		</div>
+
+	</div>
+
+	<!--
+    
+    Hint is not related to impress.js in any way.
+    
+    But it can show you how to use impress.js features in creative way.
+    
+    When the presentation step is shown (selected) its element gets the class of "active" and the body element
+    gets the class based on active step id `impress-on-ID` (where ID is the step's id)... It may not be
+    so clear because of all these "ids" in previous sentence, so for example when the first step (the one with
+    the id of `bored`) is active, body element gets a class of `impress-on-bored`.
+    
+    This class is used by this hint below. Check CSS file to see how it's shown with delayed CSS animation when
+    the first step of presentation is visible for a couple of seconds.
+    
+    ...
+    
+    And when it comes to this piece of JavaScript below ... kids, don't do this at home ;)
+    It's just a quick and dirty workaround to get different hint text for touch devices.
+    In a real world it should be at least placed in separate JS file ... and the touch content should be
+    probably just hidden somewhere in HTML - not hard-coded in the script.
+    
+    Just sayin' ;)
+    
+-->
+	<div class="hint">
+		<p>Use a spacebar or arrow keys to navigate</p>
+	</div>
+	<script>
+		if ("ontouchstart" in document.documentElement) {
+			document.querySelector(".hint").innerHTML = "<p>Tap on the left or right to navigate</p>";
+		}
+	</script>
+
+	<script src="http://impress.github.io/impress.js/js/impress.js"></script>
+	<script>
+		impress().init();
+	</script>
+</body>
+</html>
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/content/style.css b/presentations/EclipseCon Europe 2015/01 Slides/content/style.css
new file mode 100644
index 0000000..22d53e1
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/content/style.css
@@ -0,0 +1,783 @@
+/*
+    We start with a good ol' reset.
+    That's the one by Eric Meyer http://meyerweb.com/eric/tools/css/reset/
+
+    You can probably argue if it is needed here, or not, but for sure it
+    doesn't do any harm and gives us a fresh start.
+*/
+html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p,
+	blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn,
+	em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var,
+	b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend,
+	table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas,
+	details, embed, figure, figcaption, footer, header, hgroup, menu, nav,
+	output, ruby, section, summary, time, mark, audio, video {
+	margin: 0;
+	padding: 0;
+	border: 0;
+	font-size: 100%;
+	font: inherit;
+	vertical-align: baseline;
+}
+
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure, footer, header, hgroup,
+	menu, nav, section {
+	display: block;
+}
+
+body {
+	line-height: 1;
+}
+
+ol, ul {
+	list-style: none;
+}
+
+blockquote, q {
+	quotes: none;
+}
+
+blockquote:before, blockquote:after, q:before, q:after {
+	content: '';
+	content: none;
+}
+
+table {
+	border-collapse: collapse;
+	border-spacing: 0;
+}
+
+/*
+    Now here is when interesting things start to appear.
+
+    We set up <body> styles with default font and nice gradient in the background.
+    And yes, there is a lot of repetition there because of -prefixes but we don't
+    want to leave anybody behind.
+*/
+body {
+	font-family: 'PT Sans', sans-serif;
+	min-height: 740px;
+	background: rgb(215, 215, 215);
+	background: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 500, from(rgb(240, 240,
+		240)), to(rgb(190, 190, 190)));
+	background: -webkit-radial-gradient(rgb(240, 240, 240),
+		rgb(190, 190, 190));
+	background: -moz-radial-gradient(rgb(240, 240, 240), rgb(190, 190, 190));
+	background: -ms-radial-gradient(rgb(240, 240, 240), rgb(190, 190, 190));
+	background: -o-radial-gradient(rgb(240, 240, 240), rgb(190, 190, 190));
+	background: radial-gradient(rgb(240, 240, 240), rgb(190, 190, 190));
+}
+
+/*
+    ... and give links a nice look.
+*/
+a {
+	color: blue;
+	text-decoration: underline;
+	padding: 0 0.1em;
+	text-shadow: -1px -1px 2px rgba(100, 100, 100, 0.9);
+	border-radius: 0.2em;
+	-webkit-transition: 0.5s;
+	-moz-transition: 0.5s;
+	-ms-transition: 0.5s;
+	-o-transition: 0.5s;
+	transition: 0.5s;
+}
+
+a:hover, a:focus {
+	background: rgba(255, 255, 255, 1);
+	text-shadow: -1px -1px 2px rgba(100, 100, 100, 0.5);
+}
+
+/*
+    All of the content will be still fully accessible for them, but I want
+    them to know that they are missing something - that's what the demo is
+    about, isn't it?
+
+    And then we hide the message, when support is detected in the browser.
+*/
+.fallback-message {
+	font-family: sans-serif;
+	line-height: 1.3;
+	width: 780px;
+	padding: 10px 10px 0;
+	margin: 20px auto;
+	border: 1px solid #E4C652;
+	border-radius: 10px;
+	background: #EEDC94;
+}
+
+.fallback-message p {
+	margin-bottom: 10px;
+}
+
+.impress-supported .fallback-message {
+	display: none;
+}
+
+/*
+    Now let's style the presentation steps.
+
+    We start with basics to make sure it displays correctly in everywhere ...
+*/
+.step {
+	position: relative;
+	width: 900px;
+	padding: 40px;
+	margin: 20px auto;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	-ms-box-sizing: border-box;
+	-o-box-sizing: border-box;
+	box-sizing: border-box;
+	font-family: 'PT Serif', georgia, serif;
+	font-size: 48px;
+	line-height: 1.5;
+	
+	transition: background-color 1s ease-in; 	
+}
+
+.step.active {
+	background: rgb(232, 232, 202);
+	transition: background-color 1s ease-in;
+	
+	border: 1px solid rgba(82, 82, 52, .3);
+	border-radius: 10px;
+	box-shadow: 0 10px 30px rgba(0, 0, 0, .6);
+}
+
+.background {
+	background: rgb(232, 232, 202);
+}
+
+/*
+    ... and we enhance the styles for impress.js.
+
+    Basically we remove the margin and make inactive steps a little bit transparent.
+*/
+.impress-enabled .step {
+	margin: 0;
+}
+
+.impress-enabled .step * {
+	opacity: 0.4;	
+	-webkit-transition: opacity 1s;
+	-moz-transition: opacity 1s;
+	-ms-transition: opacity 1s;
+	-o-transition: opacity 1s;
+	transition: opacity 1s;
+}
+
+.impress-enabled .step.active * {
+	opacity: 1;
+	-webkit-transition: opacity 1s;
+	-moz-transition: opacity 1s;
+	-ms-transition: opacity 1s;
+	-o-transition: opacity 1s;
+	transition: opacity 1s;
+}
+
+/*
+    These 'slide' step styles were heavily inspired by HTML5 Slides:
+    http://html5slides.googlecode.com/svn/trunk/styles.css
+*/
+.slide {
+	display: block;
+	width: 900px;
+	height: 700px;
+	padding: 40px 60px;
+
+	color: rgb(102, 102, 102);
+	text-shadow: 0 2px 2px rgba(0, 0, 0, .1);
+	font-family: 'Open Sans', Arial, sans-serif;
+	font-size: 30px;
+	line-height: 36px;
+	letter-spacing: -1px;
+}
+
+/*
+    The last step is an overview.
+    There is no content in it, so we make sure it's not visible because we want
+    to be able to click on other steps.
+
+*/
+#overview {
+	display: none
+}
+
+/*
+    We also make other steps visible and give them a pointer cursor using the
+    `impress-on-` class.
+*/
+.impress-on-overview .step {
+	opacity: 1;
+	cursor: pointer;
+}
+
+/*
+    Now, when we have all the steps styled let's give users a hint how to navigate
+    around the presentation.
+
+    The best way to do this would be to use JavaScript, show a delayed hint for a
+    first time users, then hide it and store a status in cookie or localStorage...
+
+    But I wanted to have some CSS fun and avoid additional scripting...
+
+    Let me explain it first, so maybe the transition magic will be more readable
+    when you read the code.
+
+    First of all I wanted the hint to appear only when user is idle for a while.
+    You can't detect the 'idle' state in CSS, but I delayed a appearing of the
+    hint by 5s using transition-delay.
+
+    You also can't detect in CSS if the user is a first-time visitor, so I had to
+    make an assumption that I'll only show the hint on the first step. And when
+    the step is changed hide the hint, because I can assume that user already
+    knows how to navigate.
+
+    To summarize it - hint is shown when the user is on the first step for longer
+    than 5 seconds.
+
+    The other problem I had was caused by the fact that I wanted the hint to fade
+    in and out. It can be easily achieved by transitioning the opacity property.
+    But that also meant that the hint was always on the screen, even if totally
+    transparent. It covered part of the screen and you couldn't correctly clicked
+    through it.
+    Unfortunately you cannot transition between display `block` and `none` in pure
+    CSS, so I needed a way to not only fade out the hint but also move it out of
+    the screen.
+
+    I solved this problem by positioning the hint below the bottom of the screen
+    with CSS transform and moving it up to show it. But I also didn't want this move
+    to be visible. I wanted the hint only to fade in and out visually, so I delayed
+    the fade in transition, so it starts when the hint is already in its correct
+    position on the screen.
+
+    I know, it sounds complicated ... maybe it would be easier with the code?
+*/
+.hint {
+	/*
+        We hide the hint until presentation is started and from browsers not supporting
+        impress.js, as they will have a linear scrollable view ...
+    */
+	display: none;
+	/*
+        ... and give it some fixed position and nice styles.
+    */
+	position: fixed;
+	left: 0;
+	right: 0;
+	bottom: 200px;
+	background: rgba(0, 0, 0, 0.5);
+	color: #EEE;
+	text-align: center;
+	font-size: 50px;
+	padding: 20px;
+	z-index: 100;
+	/*
+        By default we don't want the hint to be visible, so we make it transparent ...
+    */
+	opacity: 0;
+	/*
+        ... and position it below the bottom of the screen (relative to it's fixed position)
+    */
+	-webkit-transform: translateY(400px);
+	-moz-transform: translateY(400px);
+	-ms-transform: translateY(400px);
+	-o-transform: translateY(400px);
+	transform: translateY(400px);
+	/*
+        Now let's imagine that the hint is visible and we want to fade it out and move out
+        of the screen.
+
+        So we define the transition on the opacity property with 1s duration and another
+        transition on transform property delayed by 1s so it will happen after the fade out
+        on opacity finished.
+
+        This way user will not see the hint moving down.
+    */
+	-webkit-transition: opacity 1s, -webkit-transform 0.5s 1s;
+	-moz-transition: opacity 1s, -moz-transform 0.5s 1s;
+	-ms-transition: opacity 1s, -ms-transform 0.5s 1s;
+	-o-transition: opacity 1s, -o-transform 0.5s 1s;
+	transition: opacity 1s, transform 0.5s 1s;
+}
+
+/*
+    Now we 'enable' the hint when presentation is initialized ...
+*/
+.impress-enabled .hint {
+	display: block
+}
+
+/*
+    There is one funny thing I just realized.
+
+    Thanks to this workaround above everything except #impress element is invisible
+    for click events. That means that the hint element is also not clickable.
+    So basically all of this transforms and delayed transitions trickery was probably
+    not needed at all...
+
+    But it was fun to learn about it, wasn't it?
+*/
+
+/*
+    And now we start to style each step separately.
+
+    I agree that this may be not the most efficient, object-oriented and
+    scalable way of styling, but most of steps have quite a custom look
+    and typography tricks here and there, so they had to be styled separately.
+
+    First is the title step with a big <h1> (no room for padding) and some
+    3D positioning along Z axis.
+*/
+
+/*
+	Slide: IDE Support (ide-support)
+
+	Display Eclipse & supported scripting IDEs
+*/
+
+.impress-on-ide-support .step #picture_eclipse,
+.impress-on-ide-support .step #picture_eclipse *,
+.impress-on-ide-support .step .ideSupport
+{
+	opacity: 1;
+}
+
+/*
+	Slide: Engine Support (engines)
+
+	Display Eclipse & supported script engines
+*/
+
+.impress-on-engines .step #picture_eclipse,
+.impress-on-engines .step #picture_eclipse *,
+.impress-on-engines .step .engine
+{
+	opacity: 1;
+}
+
+.impress-on-conclusion .step #title,
+.impress-on-conclusion .step #title *
+{
+	opacity: 1;
+}
+
+
+.top {
+	position: absolute;
+	top: 20px;
+}
+.bottom {
+	position: absolute;
+	bottom: 20px;
+}
+.left {
+	position: absolute;
+	left: 80px;
+
+	top: 55%;
+  	transform: translate(0%, -50%);
+}
+.right {
+	position: absolute;
+	right: 80px;
+	
+	top: 55%;
+  	transform: translate(0%, -50%);
+}
+
+.bottomright {
+	position: absolute;
+	right: 80px;
+	bottom: 50px;	
+}
+
+h1 {
+	font-size: 1.5em;
+	text-align: center;
+	color: #444466;
+	
+	padding-top: 50px;
+}
+
+
+div.code {
+	background-image: url("images/script.png");
+	background-repeat: no-repeat;
+	background-size: 32px 32px;
+	background-position: 10px 10px;
+	padding-left: 60px;
+}
+
+.code {
+	background: white;
+	border: 1px solid black;
+	border-radius: 5px;
+	padding: 5px 10px 5px 10px;
+}
+
+li {
+	margin-top: 10px;
+}
+
+.center {
+  position: fixed;
+  top: 55%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+}
+
+.centerbottom {
+  position: fixed;
+  bottom: 50px;
+  left: 50%;
+  transform: translate(-50%, 0%);
+}
+
+th.rotate {
+  /* Something you can count on */
+  height: 70px;
+  white-space: nowrap;
+}
+
+th.rotate > div {
+  transform: 
+    /* Magic Numbers */
+    translate(10px, 20px)
+    /* 45 is really 360 - 45 */
+    rotate(300deg);
+  width: 50px;
+}
+
+th.rotate > div > span {
+  padding: 5px 10px;
+}
+
+table {
+	font-size: 0.6em;
+    border-collapse: collapse;
+}
+
+td {
+    border: 1px solid #ccc;
+    text-align: center;
+    vertical-align: bottom;
+}
+
+td {
+	padding: 5px 20px 5px 20px;
+}
+
+tr:nth-child(even) {
+	background: rgb(212, 212, 162);
+}
+
+img {
+	max-height: 450px;
+}
+
+ul {
+    list-style-image: url('images/bullet.png');
+}
+/*
+	Slide: 'Shell JRE access'
+*/
+#shell_jre #jre1 {
+	position: absolute;
+	top: 250px;
+	left: 100px;
+}
+
+#shell_jre #jre2 {
+	position: absolute;
+	top: 350px;
+	left: 200px;
+}
+#shell_jre #jre3 {
+	position: absolute;
+	top: 450px;
+	left: 300px;
+}
+
+#code_completion_help #coming_soon {
+	position: absolute;
+	top: 370px;
+	left: 650px;
+	transform: rotate(-5deg);
+}
+
+
+/*
+	Slide: 'Register POJOs'
+*/
+
+#pojo1 {
+	position: absolute;
+	top: 150px;
+	left: 40px;
+	width: 400px;
+}
+
+#pojo2 {
+	position: absolute;
+	top: 400px;
+	left: 250px;
+	width: 600px;
+}
+
+/*
+	Slide: 'Script UI integration'
+*/
+#script_ui_integration #toolbar {
+	position: absolute;
+	top: 150px;
+	left: 40px;
+}
+
+#script_ui_integration #menu {
+	position: absolute;
+	top: 320px;
+	left: 40px;
+}
+
+#script_ui_integration #context {
+	position: absolute;
+	top: 200px;
+	right: 40px;
+}
+
+
+/*
+	Slide: 'I love scripting'
+*/
+#title #i_love {
+	font-family: 'Marck Script', cursive;
+	font-size: 2.5em;
+	text-align: center;
+	color: #444466;
+	
+	padding-top: 200px;
+}
+
+#title #copyright {
+	font-size: 0.8em;
+}
+
+/*
+	Slide: 'Conclusion'
+*/
+#conclusion > div {
+	font-family: 'Marck Script', cursive;
+	font-size: 2em;
+	text-align: center;
+	color: #444466;
+	
+	padding-top: 200px;
+}
+
+
+/*
+	Slide: 'Invoke java'
+*/
+#java_invoke #java_result {
+	position: absolute;
+	top: 400px;
+	left: 600px;
+}
+
+/*
+	Slide: 'Get in touch'
+*/
+
+#get_in_touch #link1 {
+  transform: translate(-50%, -100px);
+}
+
+#get_in_touch #link2 {
+  transform: translate(-50%, 0px);
+}
+
+/*
+	Slide: 'The whole picture' (picture)
+
+	Display how EASE interacts with Eclipse, engines and java
+*/
+
+#picture_eclipse {
+	left: 280px;
+	top: 220px;
+
+	width: 340px;
+	height: 315px;
+
+	font-size: 48px;
+	
+	padding-top: 30px;
+}
+
+#picture_eclipse img {
+	margin-top: 70px;	
+	width: 40%;
+}
+
+#picture_jsdt {
+	left: 165px;
+	top: 220px;
+
+	width: 100px;
+	height: 80px;
+}
+
+#picture_pydev {
+	left: 165px;
+	top: 309px;
+
+	width: 100px;
+	height: 80px;
+}
+
+#picture_ggts {
+	left: 165px;
+	top: 397px;
+
+	width: 100px;
+	height: 80px;
+}
+
+#picture_rdt {
+	left: 165px;
+	top: 485px;
+
+	width: 100px;
+	height: 80px;
+}
+
+#picture_rhino {
+	left: 635px;
+	top: 220px;
+
+	width: 100px;
+	height: 80px;
+}
+
+#picture_jython {
+	left: 635px;
+	top: 309px;
+
+	width: 100px;
+	height: 80px;
+}
+
+#picture_groovy {
+	left: 635px;
+	top: 397px;
+
+	width: 100px;
+	height: 80px;
+}
+
+#picture_jruby {
+	left: 635px;
+	top: 485px;
+
+	width: 100px;
+	height: 80px;
+}
+
+#picture_java {
+	left: 20px;
+	top: 20px;
+
+	width: 860px;
+	height: 660px;
+
+	border: 1px solid #8C6C9C;
+	background: linear-gradient(to bottom, #FFFFEE, #FFFFCC);
+	color: #330066;
+	font-size: 20px;
+}
+
+#picture_java img {
+	width: 15%;
+	height: 15%;
+
+	margin-top: 550px;
+}
+
+#picture_ease {
+	left: 165px;
+	top: 120px;
+
+	width: 565px;
+	height: 80px;
+}
+
+#picture_script1 {
+	position: absolute;
+	left: 250px;
+	top: 40px;
+	width: 50px;
+		
+  transition: all 3s ease-in;
+}
+
+#picture_script2 {
+	position: absolute;
+	left: 350px;
+	top: 40px;
+	width: 50px;
+
+  transition: all 3.5s ease-in;
+}
+
+#picture_script3 {
+	position: absolute;
+	left: 450px;
+	top: 40px;
+	width: 50px;
+
+  transition: all 4s ease-in;
+}
+
+#picture_script4 {
+	position: absolute;
+	left: 550px;
+	top: 40px;
+	width: 50px;
+
+  transition: all 4.5s ease-in;
+}
+
+#picture_script5 {
+	position: absolute;
+	left: 650px;
+	top: 40px;
+	width: 50px;
+
+  transition: all 5s ease-in;
+}
+
+
+
+.blue {
+	color: blue;
+}
+
+.box {
+	display: block;
+	border-radius: 10px;
+	text-align: center;
+	position: absolute;
+}
+
+.eclipse {
+	border: 1px solid #8C6C9C;
+	background: linear-gradient(to bottom, #E1D5E7, #8C6C9C);
+	color: #330066;
+	font-size: 20px;
+}
+
+    
\ No newline at end of file
diff --git a/presentations/EclipseCon Europe 2015/01 Slides/open slides.js b/presentations/EclipseCon Europe 2015/01 Slides/open slides.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/01 Slides/open slides.js
diff --git a/presentations/EclipseCon Europe 2015/02 Script Shell/01 Hello World.js b/presentations/EclipseCon Europe 2015/02 Script Shell/01 Hello World.js
new file mode 100644
index 0000000..f7ace93
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/02 Script Shell/01 Hello World.js
@@ -0,0 +1,15 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Christian Pontesegger and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:	Christian Pontesegger - initial API and implementation
+ * description: 	Hello World
+ *******************************************************************************/
+
+print("This is EclipseCon Euope 2015");
+print("-----------------------------");
+print();
+print("Thanks for being here to celebrate our 10th birthday!");
\ No newline at end of file
diff --git a/presentations/EclipseCon Europe 2015/02 Script Shell/02 Java class access.js b/presentations/EclipseCon Europe 2015/02 Script Shell/02 Java class access.js
new file mode 100644
index 0000000..49828a7
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/02 Script Shell/02 Java class access.js
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Christian Pontesegger and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:	Christian Pontesegger - initial API and implementation
+ * description: 	Access java classes
+ *******************************************************************************/
+
+// access classes from JRE
+new java.io.File("/");
+root = new java.io.File("/");
+root.exists();
+
+// access classes from eclipse
+org.eclipse.core.runtime.Platform;
+org.eclipse.core.runtime.Platform.getInstallLocation().getURL();
\ No newline at end of file
diff --git a/presentations/EclipseCon Europe 2015/02 Script Shell/03 Create sample project.js b/presentations/EclipseCon Europe 2015/02 Script Shell/03 Create sample project.js
new file mode 100644
index 0000000..aefed08
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/02 Script Shell/03 Create sample project.js
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Christian Pontesegger and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:	Christian Pontesegger - initial API and implementation
+ * description: 	Script to create a sample project, not meant for productive use
+ *******************************************************************************/
+
+var projectName = "EclipseCon 2015 Sample project";
+var files = [
+             ["Disclaimer.txt", "This is the disclaimer"], 
+             ["HowTo.txt", "TODO: write HowTo Content"], 
+             ["License.txt", "This project is licensed under the EPL."]
+            ];
+
+print("Creating sample project");
+
+// @type org.eclipse.core.resources.IWorkspaceRoot
+wsRoot = org.eclipse.core.resources.ResourcesPlugin.getWorkspace().getRoot();
+
+// @type org.eclipse.core.resources.IProject
+newProject = wsRoot.getProject(projectName);
+
+// create project
+if (!newProject.exists()) {
+	print("\tcreating project");
+	newProject.create(null);
+	newProject.open(null);
+} else
+	print("\tproject already exists");
+	
+
+// now create files
+for each (fileDescription in files) {
+	
+	// @type org.eclipse.core.resources.IFile
+	file = newProject.getFile(fileDescription[0]);
+	if (!file.exists()) {
+		print("\tcreating file " + fileDescription[0]);
+		fileInput = new java.io.ByteArrayInputStream(new java.lang.String(fileDescription[1]).getBytes());
+		file.create(fileInput, true, null);
+	} else
+		print("\tfile " + fileDescription[0] + " already exists");
+}
+
diff --git "a/presentations/EclipseCon Europe 2015/02 Script Shell/04 Create sample project \050using modules\051.js" "b/presentations/EclipseCon Europe 2015/02 Script Shell/04 Create sample project \050using modules\051.js"
new file mode 100644
index 0000000..da16e16
--- /dev/null
+++ "b/presentations/EclipseCon Europe 2015/02 Script Shell/04 Create sample project \050using modules\051.js"
@@ -0,0 +1,22 @@
+var files = [
+             ["Disclaimer.txt", "This is the disclaimer"], 
+             ["HowTo.txt", "TODO: write HowTo Content"], 
+             ["License.txt", "This project is licensed under the EPL."]
+            ];
+
+
+print("Creating sample project");
+
+loadModule('/System/Resources');
+loadModule('/System/UI');
+
+// create project
+projectName = showInputDialog("Please provide the name of the project to create", "EclipseCon 2015 Sample project", "Create Project");
+if (projectName != null) {
+	createProject(projectName);
+
+	// now create files
+	for each (fileDescription in files)
+		writeFile("workspace://" + projectName + "/" + fileDescription[0], fileDescription[1]);
+}
+
diff --git a/presentations/EclipseCon Europe 2015/03 External libraries/04 ASCII art.js b/presentations/EclipseCon Europe 2015/03 External libraries/04 ASCII art.js
new file mode 100644
index 0000000..f6fdcbe
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/03 External libraries/04 ASCII art.js
@@ -0,0 +1,25 @@
+var libraryURL = "http://central.maven.org/maven2/com/github/lalyos/jfiglet/0.0.7/jfiglet-0.0.7.jar";
+var libraryLocation = "project://03 External libraries/libs/jfiglet-0.0.7.jar";
+
+include("Helpers.js");
+
+// verify that external library is available
+loadModule('/System/Resources');
+if (!fileExists(libraryLocation)) {
+	downloadLibrary(libraryURL, libraryLocation);
+
+	if (!fileExists(libraryLocation)) {
+		printError("jfiglet library not available, please download from "
+				+ libraryURL);
+		exit();
+	}
+}
+
+// load external library
+loadJar(libraryLocation);
+// load directly from the web
+// loadJar(libraryURL);
+
+// draw ASCII art
+com.github.lalyos.jfiglet.FigletFont
+		.convertOneLine("I      love      scripting");
\ No newline at end of file
diff --git a/presentations/EclipseCon Europe 2015/03 External libraries/Helpers.js b/presentations/EclipseCon Europe 2015/03 External libraries/Helpers.js
new file mode 100644
index 0000000..92f3c2b
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/03 External libraries/Helpers.js
@@ -0,0 +1,15 @@
+/**
+ * Download a binary file from the web.
+ * @param link URI to download from
+ * @param targetLocation workspace location to store the file to
+ */
+function downloadLibrary(link, targetLocation) {
+	target = getFile(targetLocation, false);
+	if (!target.exists()) {
+		input = new java.net.URL(link).openStream();
+		target.create(input, true, null);
+		input.close();
+
+	} else
+		printError("target library '" + targetLocation + "' already exists.");
+}
\ No newline at end of file
diff --git a/presentations/EclipseCon Europe 2015/03 External libraries/libs/readme.txt b/presentations/EclipseCon Europe 2015/03 External libraries/libs/readme.txt
new file mode 100644
index 0000000..3031e8d
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/03 External libraries/libs/readme.txt
@@ -0,0 +1,3 @@
+This directory should host a file called 'jfiglet-0.0.7.jar'.
+If it is not available and the sample script cannot download the file, try to manually fetch it from
+http://central.maven.org/maven2/com/github/lalyos/jfiglet/0.0.7/jfiglet-0.0.7.jar
\ No newline at end of file
diff --git a/presentations/EclipseCon Europe 2015/05 Example Scripts/01 Current Time.js b/presentations/EclipseCon Europe 2015/05 Example Scripts/01 Current Time.js
new file mode 100644
index 0000000..763c0f2
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/05 Example Scripts/01 Current Time.js
@@ -0,0 +1,13 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Christian Pontesegger and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:	Christian Pontesegger - initial API and implementation
+ * description: 	Hello World
+ *******************************************************************************/
+
+var formatter = java.text.SimpleDateFormat("yyyy-MM-dd, HH:mm:ss")
+print(formatter.format(java.lang.System.currentTimeMillis()));
diff --git a/presentations/EclipseCon Europe 2015/05 Example Scripts/02 Title Clock.js b/presentations/EclipseCon Europe 2015/05 Example Scripts/02 Title Clock.js
new file mode 100644
index 0000000..252680b
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/05 Example Scripts/02 Title Clock.js
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Christian Pontesegger and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:	Christian Pontesegger - initial API and implementation
+ * description: 	Hello World
+ * name:			Examples/Title Clock
+ *******************************************************************************/
+
+var formatter = java.text.SimpleDateFormat("yyyy-MM-dd, HH:mm:ss")
+time = formatter.format(java.lang.System.currentTimeMillis());
+
+// change application title
+loadModule('/System/UI');
+executeUI('getShell().setText("' + time + '")');
+
+// sleep 1s
+java.lang.Thread.sleep(1000);
+
+// restart script
+loadModule('/System/Scripting');
+fork("02 Title Clock.js");
\ No newline at end of file
diff --git a/presentations/EclipseCon Europe 2015/05 Example Scripts/06 Extract HTML anchors.js b/presentations/EclipseCon Europe 2015/05 Example Scripts/06 Extract HTML anchors.js
new file mode 100644
index 0000000..6a57f03
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/05 Example Scripts/06 Extract HTML anchors.js
@@ -0,0 +1,13 @@
+loadModule('/System/Resources');
+
+content = readStream(new java.net.URL("http://www.eclipse.org").openStream())
+
+// convert to JS string
+content = content + "";
+
+// find anchor tags
+anchors = content.match(/<a\s*href=".*?"\s*>/g);
+
+for each (anchor in anchors)
+	print(anchor);
+
diff --git a/presentations/EclipseCon Europe 2015/05 Example Scripts/Task start.js b/presentations/EclipseCon Europe 2015/05 Example Scripts/Task start.js
new file mode 100644
index 0000000..973c1f0
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/05 Example Scripts/Task start.js
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Christian Pontesegger and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:	Christian Pontesegger - initial API and implementation
+ * description: 	Start a timer
+ * name:			Task/start
+ * toolbar:			Project Explorer
+ * image:			http://files.softicons.com/download/system-icons/crystal-project-icons-by-everaldo-coelho/png/16x16/actions/agt_start_here.png
+ *******************************************************************************/
+
+start = java.lang.System.currentTimeMillis();
+
+loadModule('/System/Scripting');
+setSharedObject("Task/start", start, true, true);
+
diff --git a/presentations/EclipseCon Europe 2015/05 Example Scripts/Task stop.js b/presentations/EclipseCon Europe 2015/05 Example Scripts/Task stop.js
new file mode 100644
index 0000000..1fcf240
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/05 Example Scripts/Task stop.js
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Christian Pontesegger and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:	Christian Pontesegger - initial API and implementation
+ * description: 	Stop timer and display elapsed time
+ * name:			Task/stop
+ * toolbar:			Project Explorer
+ * image:			http://tdiv.free.fr/stop.png
+ *******************************************************************************/
+
+loadModule('/System/UI');
+loadModule('/System/Scripting');
+
+start = getSharedObject("Task/start");
+
+if (start != null) {
+	stop = java.lang.System.currentTimeMillis();
+	showInfoDialog("Your task took " + ((stop - start)/1000) + " seconds");
+	setSharedObject("Task/start", null, true, true);
+
+} else 
+	showInfoDialog("No active task available");
diff --git a/presentations/EclipseCon Europe 2015/06 Cool things/05 Charting.js b/presentations/EclipseCon Europe 2015/06 Cool things/05 Charting.js
new file mode 100644
index 0000000..ec38efa
--- /dev/null
+++ b/presentations/EclipseCon Europe 2015/06 Cool things/05 Charting.js
@@ -0,0 +1,31 @@
+loadModule('/Charting');
+loadModule('/System/Platform');
+
+var servers = ["localhost", "www.eclipse.org", "www.google.com", "www.adelaidecitycouncil.com"];
+
+figure("Ping Statistics");
+clear();
+setXLabel("Ping attempt")
+setYLabel("Time [ms]")
+
+for each (address in servers) {
+	series(address);
+	for (var count = 1; count < 20; count++) {
+
+		// run 'ping' command
+		process = runProcess("ping", [ "-c 1", address ]);
+		while (!process.isFinished())
+			;
+
+		// parse output
+		output = process.getOutput();
+		start = output.indexOf("time=");
+		if (start != -1) {
+			end = output.indexOf(" ms", start);
+			if (end != -1) {
+				time = parseFloat(output.substring(start + 5, end));
+				plotPoint(count, time);
+			}
+		}
+	}
+}