initial commit in accordance with CQ 3784
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/.classpath b/plugins/org.eclipse.objectteams.otdt.samples/.classpath
new file mode 100644
index 0000000..987380a
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="con" path="OTRE"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/.project b/plugins/org.eclipse.objectteams.otdt.samples/.project
new file mode 100644
index 0000000..24bb107
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/.project
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.objectteams.otdt.samples</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.objectteams.otdt.builder.OTJBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.objectteams.otdt.OTJavaNature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/META-INF/MANIFEST.MF b/plugins/org.eclipse.objectteams.otdt.samples/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..0770ae5
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/META-INF/MANIFEST.MF
@@ -0,0 +1,27 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: OTSamples2 Plug-in
+Bundle-SymbolicName: org.eclipse.objectteams.otdt.samples;singleton:=true
+Bundle-Version: 1.4.0.qualifier
+Bundle-Activator: org.eclipse.objectteams.otdt.internal.samples.OTSamplesPlugin
+Bundle-Vendor: The TOPPrax consortium
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.ui.intro,
+ org.eclipse.pde.ui,
+ org.eclipse.objectteams.otdt.ui,
+ org.eclipse.core.resources,
+ org.eclipse.ui.ide,
+ org.eclipse.ui.forms,
+ org.eclipse.objectteams.otequinox,
+ org.eclipse.ui.intro.universal,
+ org.eclipse.objectteams.otdt,
+ org.eclipse.debug.ui,
+ org.eclipse.debug.core,
+ org.eclipse.jdt.core,
+ org.eclipse.objectteams.otdt.ui.help,
+ org.eclipse.jdt.debug.ui
+Export-Package: org.eclipse.objectteams.otdt.internal.samples
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/build.properties b/plugins/org.eclipse.objectteams.otdt.samples/build.properties
new file mode 100644
index 0000000..6fb1c73
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/build.properties
@@ -0,0 +1,14 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+               .,\
+               samples/,\
+               css/,\
+               intro/,\
+               META-INF/,\
+               plugin.properties,\
+               graphics/,\
+               bin/
+src.includes = .classpath,\
+               .project,\
+               build.properties
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/css/samples.css b/plugins/org.eclipse.objectteams.otdt.samples/css/samples.css
new file mode 100644
index 0000000..5a4871b
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/css/samples.css
@@ -0,0 +1,17 @@
+#swt .content-link img {

+	background-image : url(graphics/obj_48/samplered_obj.gif);

+}

+

+#swt .content-link:hover img {

+	background-image : url(graphics/obj_48/sampleredhov_obj.gif);

+}

+

+#workbench .content-link img {

+	background-image : url(graphics/obj_48/samplepurp_obj.gif);

+}

+

+#workbench .content-link:hover img {

+	background-image : url(graphics/obj_48/samplepurphov_obj.gif);

+}

+

+

diff --git a/plugins/org.eclipse.objectteams.otdt.samples/css/swt.properties b/plugins/org.eclipse.objectteams.otdt.samples/css/swt.properties
new file mode 100644
index 0000000..2ca9189
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/css/swt.properties
@@ -0,0 +1,27 @@
+###############################################################################
+# Copyright (c) 2000, 2004 IBM Corporation 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
+# $Id$
+# 
+# Please visit http://www.eclipse.org/objectteams for updates and contact.
+# 
+# Contributors:
+#     IBM Corporation - initial API and implementation
+# 	  Fraunhofer FIRST - Initial API and implementation
+# 	  Technical University Berlin - Initial API and implementation
+###############################################################################
+overview.page-content.overview-links.java.link-icon = css/graphics/obj_48/javadev_obj.gif
+
+tutorials.page-content.java.layout.ncolumns = 2
+tutorials.page-content.java.hello-world.link-icon = css/graphics/obj_48/javaapp_obj.gif
+tutorials.page-content.java.applet.link-icon = css/graphics/obj_48/javaapplet_obj.gif
+tutorials.page-content.java.swt.link-icon = css/graphics/obj_48/swtapp_obj.gif
+tutorials.page-content.java.ant.link-icon = css/graphics/obj_48/script_obj.gif
+
+
+
+
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/overview48.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/overview48.gif
new file mode 100644
index 0000000..7da24bd
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/overview48.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/overview48sel.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/overview48sel.gif
new file mode 100644
index 0000000..3d1c45b
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/overview48sel.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/overview72.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/overview72.gif
new file mode 100644
index 0000000..d34b4b3
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/overview72.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/samples48.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/samples48.gif
new file mode 100644
index 0000000..3213de6
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/samples48.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/samples48sel.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/samples48sel.gif
new file mode 100644
index 0000000..f9c0469
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/samples48sel.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/samples72.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/samples72.gif
new file mode 100644
index 0000000..4c63a9a
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/samples72.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/tutorials48.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/tutorials48.gif
new file mode 100644
index 0000000..1a3f06a
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/tutorials48.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/tutorials48sel.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/tutorials48sel.gif
new file mode 100644
index 0000000..3d687bd
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/tutorials48sel.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/tutorials72.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/tutorials72.gif
new file mode 100644
index 0000000..a2aa343
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/tutorials72.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/wb48.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/wb48.gif
new file mode 100644
index 0000000..c2fd06a
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/wb48.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/whatsnew48.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/whatsnew48.gif
new file mode 100644
index 0000000..2bfb9be
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/whatsnew48.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/whatsnew48sel.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/whatsnew48sel.gif
new file mode 100644
index 0000000..0da843f
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/whatsnew48sel.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/whatsnew72.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/whatsnew72.gif
new file mode 100644
index 0000000..74bf6ff
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/ctool/whatsnew72.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/dtool/back.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/dtool/back.gif
new file mode 100644
index 0000000..f0d0929
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/dtool/back.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/dtool/forward.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/dtool/forward.gif
new file mode 100644
index 0000000..dbe58b2
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/dtool/forward.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/back.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/back.gif
new file mode 100644
index 0000000..1c81cb6
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/back.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/forward.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/forward.gif
new file mode 100644
index 0000000..3e4a4f4
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/forward.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/overview48.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/overview48.gif
new file mode 100644
index 0000000..8e2f8c1
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/overview48.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/overview48sel.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/overview48sel.gif
new file mode 100644
index 0000000..1275a4a
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/overview48sel.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/overview72.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/overview72.gif
new file mode 100644
index 0000000..e3f7648
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/overview72.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/samples48.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/samples48.gif
new file mode 100644
index 0000000..63d405b
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/samples48.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/samples48sel.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/samples48sel.gif
new file mode 100644
index 0000000..4c3135d
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/samples48sel.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/samples72.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/samples72.gif
new file mode 100644
index 0000000..9216426
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/samples72.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/tutorials48.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/tutorials48.gif
new file mode 100644
index 0000000..718ca6c
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/tutorials48.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/tutorials48sel.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/tutorials48sel.gif
new file mode 100644
index 0000000..10680e5
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/tutorials48sel.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/tutorials72.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/tutorials72.gif
new file mode 100644
index 0000000..bab3498
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/tutorials72.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/wb48.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/wb48.gif
new file mode 100644
index 0000000..50ca287
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/wb48.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/whatsnew48.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/whatsnew48.gif
new file mode 100644
index 0000000..6e00d7a
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/whatsnew48.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/whatsnew48sel.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/whatsnew48sel.gif
new file mode 100644
index 0000000..be9fa0c
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/whatsnew48sel.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/whatsnew72.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/whatsnew72.gif
new file mode 100644
index 0000000..410093b
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/etool/whatsnew72.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/newprj_wiz.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/newprj_wiz.gif
new file mode 100644
index 0000000..858f4c9
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/newprj_wiz.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/community_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/community_obj.gif
new file mode 100644
index 0000000..5d132a8
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/community_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/communityhov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/communityhov_obj.gif
new file mode 100644
index 0000000..acb2a58
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/communityhov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/features_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/features_obj.gif
new file mode 100644
index 0000000..364fd48
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/features_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/featureshov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/featureshov_obj.gif
new file mode 100644
index 0000000..fbfdf03
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/featureshov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/javaapp_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/javaapp_obj.gif
new file mode 100644
index 0000000..ce00d50
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/javaapp_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/javaapphov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/javaapphov_obj.gif
new file mode 100644
index 0000000..35e9f58
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/javaapphov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/javaapplet_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/javaapplet_obj.gif
new file mode 100644
index 0000000..b19a952
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/javaapplet_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/javaapplethov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/javaapplethov_obj.gif
new file mode 100644
index 0000000..5da3db9
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/javaapplethov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/javadev_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/javadev_obj.gif
new file mode 100644
index 0000000..f6526a2
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/javadev_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/javadevhov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/javadevhov_obj.gif
new file mode 100644
index 0000000..36b47d3
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/javadevhov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/migrate_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/migrate_obj.gif
new file mode 100644
index 0000000..0c2fe88
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/migrate_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/migratehov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/migratehov_obj.gif
new file mode 100644
index 0000000..ee34e2a
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/migratehov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/new_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/new_obj.gif
new file mode 100644
index 0000000..f46b81b
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/new_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/newhov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/newhov_obj.gif
new file mode 100644
index 0000000..593e63b
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/newhov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/plugin_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/plugin_obj.gif
new file mode 100644
index 0000000..d92d2c5
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/plugin_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/pluginhov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/pluginhov_obj.gif
new file mode 100644
index 0000000..1de8ccc
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/pluginhov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/rcpapp_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/rcpapp_obj.gif
new file mode 100644
index 0000000..830ab56
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/rcpapp_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/rcpapphov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/rcpapphov_obj.gif
new file mode 100644
index 0000000..5bd80a9
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/rcpapphov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/samplepurp_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/samplepurp_obj.gif
new file mode 100644
index 0000000..c4e56fc
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/samplepurp_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/samplepurphov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/samplepurphov_obj.gif
new file mode 100644
index 0000000..60481e2
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/samplepurphov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/samplered_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/samplered_obj.gif
new file mode 100644
index 0000000..f6d104e
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/samplered_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/sampleredhov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/sampleredhov_obj.gif
new file mode 100644
index 0000000..687d6b2
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/sampleredhov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/script_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/script_obj.gif
new file mode 100644
index 0000000..b48b7cd
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/script_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/scripthov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/scripthov_obj.gif
new file mode 100644
index 0000000..d67203e
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/scripthov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/swtapp_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/swtapp_obj.gif
new file mode 100644
index 0000000..9ba9a33
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/swtapp_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/swtapphov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/swtapphov_obj.gif
new file mode 100644
index 0000000..c4fbb5d
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/swtapphov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/teamsup_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/teamsup_obj.gif
new file mode 100644
index 0000000..4b9def9
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/teamsup_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/teamsuphov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/teamsuphov_obj.gif
new file mode 100644
index 0000000..4bdf819
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/teamsuphov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/updates_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/updates_obj.gif
new file mode 100644
index 0000000..1608b30
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/updates_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/updateshov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/updateshov_obj.gif
new file mode 100644
index 0000000..22a0ace
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/updateshov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/wbbasics_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/wbbasics_obj.gif
new file mode 100644
index 0000000..8b82563
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/wbbasics_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/wbbasicshov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/wbbasicshov_obj.gif
new file mode 100644
index 0000000..230be9c
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/icons/obj48/wbbasicshov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/community_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/community_obj.gif
new file mode 100644
index 0000000..5d132a8
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/community_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/communityhov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/communityhov_obj.gif
new file mode 100644
index 0000000..acb2a58
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/communityhov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/features_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/features_obj.gif
new file mode 100644
index 0000000..364fd48
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/features_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/featureshov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/featureshov_obj.gif
new file mode 100644
index 0000000..fbfdf03
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/featureshov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/javaapp_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/javaapp_obj.gif
new file mode 100644
index 0000000..ce00d50
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/javaapp_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/javaapphov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/javaapphov_obj.gif
new file mode 100644
index 0000000..35e9f58
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/javaapphov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/javaapplet_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/javaapplet_obj.gif
new file mode 100644
index 0000000..b19a952
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/javaapplet_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/javaapplethov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/javaapplethov_obj.gif
new file mode 100644
index 0000000..5da3db9
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/javaapplethov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/javadev_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/javadev_obj.gif
new file mode 100644
index 0000000..f6526a2
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/javadev_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/javadevhov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/javadevhov_obj.gif
new file mode 100644
index 0000000..36b47d3
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/javadevhov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/migrate_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/migrate_obj.gif
new file mode 100644
index 0000000..0c2fe88
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/migrate_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/migratehov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/migratehov_obj.gif
new file mode 100644
index 0000000..ee34e2a
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/migratehov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/new_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/new_obj.gif
new file mode 100644
index 0000000..f46b81b
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/new_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/newhov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/newhov_obj.gif
new file mode 100644
index 0000000..593e63b
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/newhov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/plugin_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/plugin_obj.gif
new file mode 100644
index 0000000..d92d2c5
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/plugin_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/pluginhov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/pluginhov_obj.gif
new file mode 100644
index 0000000..1de8ccc
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/pluginhov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/rcpapp_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/rcpapp_obj.gif
new file mode 100644
index 0000000..830ab56
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/rcpapp_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/rcpapphov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/rcpapphov_obj.gif
new file mode 100644
index 0000000..5bd80a9
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/rcpapphov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/samplepurp_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/samplepurp_obj.gif
new file mode 100644
index 0000000..c4e56fc
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/samplepurp_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/samplepurphov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/samplepurphov_obj.gif
new file mode 100644
index 0000000..60481e2
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/samplepurphov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/samplered_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/samplered_obj.gif
new file mode 100644
index 0000000..f6d104e
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/samplered_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/sampleredhov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/sampleredhov_obj.gif
new file mode 100644
index 0000000..687d6b2
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/sampleredhov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/script_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/script_obj.gif
new file mode 100644
index 0000000..b48b7cd
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/script_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/scripthov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/scripthov_obj.gif
new file mode 100644
index 0000000..d67203e
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/scripthov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/swtapp_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/swtapp_obj.gif
new file mode 100644
index 0000000..9ba9a33
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/swtapp_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/swtapphov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/swtapphov_obj.gif
new file mode 100644
index 0000000..c4fbb5d
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/swtapphov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/teamsup_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/teamsup_obj.gif
new file mode 100644
index 0000000..4b9def9
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/teamsup_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/teamsuphov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/teamsuphov_obj.gif
new file mode 100644
index 0000000..4bdf819
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/teamsuphov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/updates_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/updates_obj.gif
new file mode 100644
index 0000000..1608b30
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/updates_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/updateshov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/updateshov_obj.gif
new file mode 100644
index 0000000..22a0ace
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/updateshov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/wbbasics_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/wbbasics_obj.gif
new file mode 100644
index 0000000..8b82563
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/wbbasics_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/wbbasicshov_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/wbbasicshov_obj.gif
new file mode 100644
index 0000000..230be9c
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/graphics/obj_48/wbbasicshov_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/intro/css/graphics/otapp_obj.gif b/plugins/org.eclipse.objectteams.otdt.samples/intro/css/graphics/otapp_obj.gif
new file mode 100644
index 0000000..d501aef
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/intro/css/graphics/otapp_obj.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/intro/css/graphics/otapphov_obj.png b/plugins/org.eclipse.objectteams.otdt.samples/intro/css/graphics/otapphov_obj.png
new file mode 100644
index 0000000..3724dd3
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/intro/css/graphics/otapphov_obj.png
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/intro/css/graphics/sample.gif b/plugins/org.eclipse.objectteams.otdt.samples/intro/css/graphics/sample.gif
new file mode 100644
index 0000000..5ff1ffc
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/intro/css/graphics/sample.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/intro/css/graphics/sample_hov.gif b/plugins/org.eclipse.objectteams.otdt.samples/intro/css/graphics/sample_hov.gif
new file mode 100644
index 0000000..6874164
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/intro/css/graphics/sample_hov.gif
Binary files differ
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/intro/css/samples.css b/plugins/org.eclipse.objectteams.otdt.samples/intro/css/samples.css
new file mode 100644
index 0000000..729fa8c
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/intro/css/samples.css
@@ -0,0 +1,16 @@
+

+a#stopwatchsample img { background-image : url('graphics/otapp_obj.gif'); }

+a#stopwatchsample:hover img { background-image : url('graphics/otapphov_obj.png'); }

+

+a#observersample img { background-image : url('graphics/otapp_obj.gif'); }

+a#observersample:hover img { background-image : url('graphics/otapphov_obj.png'); }

+

+a#flightbonussample img { background-image : url('graphics/otapp_obj.gif'); }

+a#flightbonussample:hover img { background-image : url('graphics/otapphov_obj.png'); }

+

+a#ordersystemsample img { background-image : url('graphics/otapp_obj.gif'); }

+a#ordersystemsample:hover img { background-image : url('graphics/otapphov_obj.png'); }

+

+a#atmsample img { background-image : url('graphics/otapp_obj.gif'); }

+a#atmsample:hover img { background-image : url('graphics/otapphov_obj.png'); }

+

diff --git a/plugins/org.eclipse.objectteams.otdt.samples/intro/css/swt-intro.properties b/plugins/org.eclipse.objectteams.otdt.samples/intro/css/swt-intro.properties
new file mode 100644
index 0000000..bcea8ec
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/intro/css/swt-intro.properties
@@ -0,0 +1,21 @@
+###############################################################################
+# Copyright 2004, 2010 Fraunhofer Gesellschaft, Munich, Germany,
+# for its Fraunhofer Institute and Computer Architecture and Software
+# Technology (FIRST), Berlin, Germany and Technical University Berlin,
+# Germany.
+# 
+# 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
+# $Id$
+# 
+# Please visit http://www.eclipse.org/objectteams for updates and contact.
+# 
+# Contributors:
+# 	  Fraunhofer FIRST - Initial API and implementation
+# 	  Technical University Berlin - Initial API and implementation
+###############################################################################
+
+samples.stopwatchsample.link-icon = intro/css/graphics/otapp_obj.gif
+samples.stopwatchsample.hover-icon = intro/css/graphics/otapphov_obj.png
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/intro/samplesExtension.xml b/plugins/org.eclipse.objectteams.otdt.samples/intro/samplesExtension.xml
new file mode 100644
index 0000000..c6a70f0
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/intro/samplesExtension.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<introContent>
+  <!-- Extension to the SDK Samples Page. -->
+  <extensionContent id="org.eclipse.objectteams.otdt.samples.samplesExtension" 
+  						name="Object Teams Samples"
+  						alt-style="/css/swt.properties"
+  						style="/css/samples.css"
+						path="samples/@">
+	
+	  <anchor id="otSampleAnchor"/>
+      <group label="Object Teams Samples" id="swt" style-id="samples-group">
+      <text style-id="group-description">Explore Object Teams development through code samples.</text>
+      <link label="Object Teams samples" url="http://org.eclipse.ui.intro/showPage?id=otsamples" id="otsamples" style-id="sample-link">
+        <text>A small collection of Object Teams samples
+        </text>
+      </link>
+      </group>
+
+  </extensionContent>
+  
+  <page style="css/samples.css" alt-style="css/swt.properties" id="otsamples" style-id="page">
+    <title style-id="intro-header">Welcome to Eclipse 3.0</title>
+    <group id="background-image" filteredFrom="swt"/>
+    <group id="curve-image" filteredFrom="swt"/>
+    <include path="overview/navigation-links"/>
+    
+	<group id="page-content" >
+	  <group id="content-header" label="Object Teams/Java Samples" filteredFrom="html"></group>
+	  <text style-id="page-title" id="page-title" filteredFrom="swt">Object Teams/Java Samples</text>
+	  <text style-id="page-description" id="page-description">Explore Object Teams by installing some prefabricated samples.</text>
+      <group id="workbench" style-id="samples-group">
+        <link label="OTSample-StopWatch" url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;id=org.eclipse.objectteams.otdt.samples.stopwatch" id="stopwatchsample" style-id="sample-link">
+		  <text>This implementation of a simple stop watch demonstrates how the Model-View-Controller pattern can be applied in Object Teams. 
+
+			The example gives a basic overview over these concepts: 
+			   (1) team and role classes, 
+			   (2) method bindings, and
+			   (3) lifting a base object to its role.</text></link>
+        <link label="OTSample-Observer" url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;id=org.eclipse.objectteams.otdt.samples.observer" id="observersample" style-id="sample-link">
+		  <text>A reusable implementation of the standard Observer pattern with two applications.
+					  
+			A fine point in this example is the temporary deactivation of a team to avoid the "jumping aspects" problem.</text></link>		  
+		<link label="OTSample-Flightbonus" url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;id=org.eclipse.objectteams.otdt.samples.flightbooking" id="flightbonussample" style-id="sample-link">
+          <text>This examples demonstrates, how a reusable collaboration for collecting bonus points 
+			can be integrated into an existing application for flight booking.
+			
+			It shows a typical decomposition into three parts: 
+			   (1) a core application, 
+			   (2) an abstract collaboration, and
+			   (3) a connector which combines the other two modules.</text></link>	
+        <link label="OTSample-Ordersystem" url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;id=org.eclipse.objectteams.otdt.samples.ordersystem" id="ordersystemsample" style-id="sample-link">        
+        	<text>A comprehensive example showing different patterns of applying Object Teams.
+			It implements three components: a storage, reservation of items, and orders.</text></link>
+        <link label="OTSample-ATM" url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;id=org.eclipse.objectteams.otdt.samples.atm" id="atmsample" style-id="sample-link">        
+    	    <text>An example showing the use of guard predicates in Object Teams. 
+    	    
+        	It implements a simple ATM that adds specific behaviour to specific groups of accounts:
+        	   (1) Foreign accounts are charged additional fees,
+        	   (2) The balance of foreign cannot be queried,
+        	   (3) Subscribed accounts receive a gratification for each crediting operation performed at the ATM.</text></link>
+     </group>        
+	</group>
+  </page>
+</introContent>
+	
+						
\ No newline at end of file
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/intro/samplesExtensionContentOT.xml b/plugins/org.eclipse.objectteams.otdt.samples/intro/samplesExtensionContentOT.xml
new file mode 100644
index 0000000..2d7eb84
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/intro/samplesExtensionContentOT.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<introContent>
+  <!-- Extension to the SDK Samples Page. -->
+
+  <extensionContent id="org.eclipse.objectteams.otdt.samples.samplesExtension" 
+  						name="Object Teams Samples"
+  						alt-style="css/swt-intro.properties"
+  						style="css/samples.css"
+						path="samples/@">
+      <group label="Object Teams Samples" id="content-group" style-id="content-group">
+		  <text style-id="group-description">Explore Object Teams development through code samples.</text>
+<!--		  
+		  <link label="Object Teams samples" 
+				url="http://org.eclipse.ui.intro/showPage?id=otsamples" 
+				id="otsamples" 
+				style-id="content-link">
+			<text>A small collection of Object Teams samples
+			</text>
+		  </link>	
+-->
+        <link label="OTSample-StopWatch" 
+        	  url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;class=org.eclipse.pde.internal.ui.samples.ShowSampleAction&amp;id=org.eclipse.objectteams.otdt.samples.stopwatch" 
+        	  id="stopwatchsample" 
+        	  style-id="content-link">
+		  <text>This implementation of a simple stop watch demonstrates how the Model-View-Controller pattern can be applied in Object Teams. 
+
+			The example gives a basic overview over these concepts: 
+			   (1) team and role classes, 
+			   (2) method bindings, and
+			   (3) lifting a base object to its role.
+		  </text>
+		</link>
+        <link label="OTSample-Observer" url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;class=org.eclipse.pde.internal.ui.samples.ShowSampleAction&amp;id=org.eclipse.objectteams.otdt.samples.observer" id="observersample" style-id="content-link">
+		  <text>A reusable implementation of the standard Observer pattern with two applications.
+					  
+			A fine point in this example is the temporary deactivation of a team to avoid the "jumping aspects" problem.</text></link>		  
+		<link label="OTSample-Flightbonus" url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;class=org.eclipse.pde.internal.ui.samples.ShowSampleAction&amp;id=org.eclipse.objectteams.otdt.samples.flightbooking" id="flightbonussample" style-id="content-link">
+          <text>This examples demonstrates, how a reusable collaboration for collecting bonus points 
+			can be integrated into an existing application for flight booking.
+			
+			It shows a typical decomposition into three parts: 
+			   (1) a core application, 
+			   (2) an abstract collaboration, and
+			   (3) a connector which combines the other two modules.</text></link>	
+        <link label="OTSample-Ordersystem" url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;class=org.eclipse.pde.internal.ui.samples.ShowSampleAction&amp;id=org.eclipse.objectteams.otdt.samples.ordersystem" id="ordersystemsample" style-id="content-link">        
+        	<text>A comprehensive example showing different patterns of applying Object Teams.
+			It implements three components: a storage, reservation of items, and orders.
+			Also a GUI is provided which is cleanly separated into Model/View/Controller</text></link>
+        <link label="OTSample-ATM" url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;class=org.eclipse.pde.internal.ui.samples.ShowSampleAction&amp;id=org.eclipse.objectteams.otdt.samples.atm" id="atmsample" style-id="content-link">        
+    	    <text>An example showing the use of guard predicates in Object Teams. 
+    	    
+        	It implements a simple ATM that adds specific behaviour to specific groups of accounts:
+        	   (1) Foreign accounts are charged additional fees,
+        	   (2) The balance of foreign cannot be queried,
+        	   (3) Subscribed accounts receive a gratification for each crediting operation performed at the ATM.</text></link>
+
+		  <anchor id="otSampleAnchor"/>
+      </group>
+  </extensionContent>
+<!--
+  <page style="css/samples.css" alt-style="css/swt.properties" id="otsamples" style-id="page">
+      <title style-id="intro-header">Welcome to Eclipse 3.0</title>
+    <group id="background-image" filteredFrom="swt"/>
+    <group id="curve-image" filteredFrom="swt"/>
+    <include path="overview/navigation-links"/>
+    
+	<group id="page-content" >
+	  <group id="content-header" label="Object Teams/Java Samples" filteredFrom="html"></group>
+	  <text style-id="page-title" id="page-title" filteredFrom="swt">Object Teams/Java Samples</text>
+	  <text style-id="page-description" id="page-description">Explore Object Teams by installing some prefabricated samples.</text>
+      <group id="workbench" style-id="samples-group">
+        <link label="OTSample-StopWatch" url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;id=org.eclipse.objectteams.otdt.samples.stopwatch" id="stopwatchsample" style-id="sample-link">
+		  <text>This implementation of a simple stop watch demonstrates how the Model-View-Controller pattern can be applied in Object Teams. 
+
+			The example gives a basic overview over these concepts: 
+			   (1) team and role classes, 
+			   (2) method bindings, and
+			   (3) lifting a base object to its role.</text></link>
+        <link label="OTSample-Observer" url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;id=org.eclipse.objectteams.otdt.samples.observer" id="observersample" style-id="sample-link">
+		  <text>A reusable implementation of the standard Observer pattern with two applications.
+					  
+			A fine point in this example is the temporary deactivation of a team to avoid the "jumping aspects" problem.</text></link>		  
+		<link label="OTSample-Flightbonus" url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;id=org.eclipse.objectteams.otdt.samples.flightbooking" id="flightbonussample" style-id="sample-link">
+          <text>This examples demonstrates, how a reusable collaboration for collecting bonus points 
+			can be integrated into an existing application for flight booking.
+			
+			It shows a typical decomposition into three parts: 
+			   (1) a core application, 
+			   (2) an abstract collaboration, and
+			   (3) a connector which combines the other two modules.</text></link>	
+        <link label="OTSample-Ordersystem" url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;id=org.eclipse.objectteams.otdt.samples.ordersystem" id="ordersystemsample" style-id="sample-link">        
+        	<text>A comprehensive example showing different patterns of applying Object Teams.
+			It implements three components: a storage, reservation of items, and orders.</text></link>
+        <link label="OTSample-ATM" url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;id=org.eclipse.objectteams.otdt.samples.atm" id="atmsample" style-id="sample-link">        
+    	    <text>An example showing the use of guard predicates in Object Teams. 
+    	    
+        	It implements a simple ATM that adds specific behaviour to specific groups of accounts:
+        	   (1) Foreign accounts are charged additional fees,
+        	   (2) The balance of foreign cannot be queried,
+        	   (3) Subscribed accounts receive a gratification for each crediting operation performed at the ATM.</text></link>
+     </group>        
+	</group>
+  </page>
+-->
+</introContent>
+
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/plugin.properties b/plugins/org.eclipse.objectteams.otdt.samples/plugin.properties
new file mode 100644
index 0000000..c99bb88
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/plugin.properties
@@ -0,0 +1,12 @@
+category.objectteams = Object Teams
+
+sample.stopwatch.name = Stop Watch Example
+sample.stopwatch.desc = A simple stop watch application demonstrating how the Model-View-Controller pattern can be applied in Object Teams.
+sample.observer.name = Observer Pattern Example
+sample.observer.desc = Implementation and application of the standard Observer pattern with Object Teams.
+sample.flightbooking.name = Flight Bonus Example
+sample.flightbooking.desc = This example demonstrates, how a reusable collaboration for collecting bonus points can be integrated into an existing application for flight booking.
+sample.ordersystem.name = Order System Example
+sample.ordersystem.desc = A comprehensive example showing different patterns of applying Object Teams. It implements three components: a storage, reservations of items, and orders plus a MVC GUI. 
+sample.atm.name = ATM Example
+sample.atm.desc = An example showing the use of guard predicates in Object Teams. It implements a simple ATM that adds specific behaviour to specific groups of accounts.
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/plugin.xml b/plugins/org.eclipse.objectteams.otdt.samples/plugin.xml
new file mode 100644
index 0000000..2cc0518
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/plugin.xml
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+
+   <extension point="org.eclipse.pde.ui.samples">
+      <!-- the launchTarget attribute is not specified in the XML schema extension point description, however it is used in the code :-/ -->
+      <sample
+            launchTarget="org.eclipse.objectteams.stopwatch.Main"
+            name="%sample.stopwatch.name"
+            perspectiveId="org.eclipse.objectteams.otdt.ui.OTJavaPerspective"
+            targetViewId="org.eclipse.jdt.ui.PackageExplorer"
+            launcher="org.eclipse.jdt.debug.ui.launchConfigurations.JavaApplicationLaunchShortcut"
+            id="org.eclipse.objectteams.otdt.samples.stopwatch">
+         <description>%sample.stopwatch.desc
+         </description>
+         <project
+               name="OTSample-StopWatch"
+               archive="samples/stopwatch.zip"
+               selectReveal="Main.java">
+         </project>
+         <activity id="org.eclipse.javaDevelopment"/>
+         <activity id="org.eclipse.debugging"/>
+      </sample>
+      <sample
+            name="%sample.observer.name"
+            perspectiveId="org.eclipse.objectteams.otdt.ui.OTJavaPerspective"
+            targetViewId="org.eclipse.jdt.ui.PackageExplorer"
+            launcher="org.eclipse.jdt.debug.ui.launchConfigurations.JavaApplicationLaunchShortcut"
+            id="org.eclipse.objectteams.otdt.samples.observer">
+         <description>%sample.observer.desc
+         </description>
+         <activity id="org.eclipse.javaDevelopment"/>
+         <activity id="org.eclipse.debugging"/>
+         <project
+               name="OTSample-Observer"
+               archive="samples/observer.zip"
+               selectReveal="pattern/ObserverPattern.java">
+         </project>
+      </sample>
+      <!-- the launchTarget attribute is not specified in the XML schema extension point description, however it is used in the code :-/ -->
+      <sample
+            launchTarget="org.eclipse.objectteams.flightbooking.Main"
+            name="%sample.flightbooking.name"
+            perspectiveId="org.eclipse.objectteams.otdt.ui.OTJavaPerspective"
+            targetViewId="org.eclipse.jdt.ui.PackageExplorer"
+            launcher="org.eclipse.jdt.debug.ui.launchConfigurations.JavaApplicationLaunchShortcut"
+            id="org.eclipse.objectteams.otdt.samples.flightbooking">
+         <description>%sample.flightbooking.desc
+         </description>
+         <activity id="org.eclipse.javaDevelopment"/>
+         <activity id="org.eclipse.debugging"/>
+         <project
+               name="OTSample-Flightbonus"
+               archive="samples/flightbonus.zip"
+               selectReveal="Intro0.html"> <!-- will be converted to Intro.html -->
+         </project>
+      </sample>    
+      <sample
+            name="%sample.ordersystem.name"
+            perspectiveId="org.eclipse.objectteams.otdt.ui.OTJavaPerspective"
+            targetViewId="org.eclipse.jdt.ui.PackageExplorer"
+            launcher="org.eclipse.jdt.debug.ui.launchConfigurations.JavaApplicationLaunchShortcut"
+            id="org.eclipse.objectteams.otdt.samples.ordersystem">
+         <description>%sample.ordersystem.desc
+         </description>
+         <activity id="org.eclipse.javaDevelopment"/>
+         <activity id="org.eclipse.debugging"/>
+         <project
+               name="OTSample-Ordersystem"
+               archive="samples/ordersystem.zip"
+               selectReveal="Intro0.html"> <!-- will be converted to Intro.html -->
+         </project>
+      </sample>
+      <sample
+            name="%sample.atm.name"
+            perspectiveId="org.eclipse.objectteams.otdt.ui.OTJavaPerspective"
+            targetViewId="org.eclipse.jdt.ui.PackageExplorer"
+            launcher="org.eclipse.jdt.debug.ui.launchConfigurations.JavaApplicationLaunchShortcut"
+            id="org.eclipse.objectteams.otdt.samples.atm">
+         <description>%sample.atm.desc
+         </description>
+         <activity id="org.eclipse.javaDevelopment"/>
+         <activity id="org.eclipse.debugging"/>
+         <project
+               name="OTSample-ATM"
+               archive="samples/atm.zip"
+               selectReveal="src/Main.java">
+         </project>
+      </sample>
+
+   </extension>   
+
+   <extension
+         point="org.eclipse.ui.newWizards">
+      <category
+            name="%category.objectteams"
+            parentCategory="org.eclipse.ui.Examples"
+            id="org.eclipse.objectteams.otdt.samples">
+      </category>
+      <wizard
+            category="org.eclipse.ui.Examples/org.eclipse.objectteams.otdt.samples"
+            class="org.eclipse.pde.internal.ui.samples.SampleWizard:org.eclipse.objectteams.otdt.samples.flightbooking"
+            icon="graphics/icons/newprj_wiz.gif"
+            id="org.eclipse.objectteams.otdt.samples.samples.flightbooking"
+            name="%sample.flightbooking.name"
+            project="true">
+         <description>%sample.flightbooking.desc
+         </description>
+      </wizard>      
+      <wizard
+            category="org.eclipse.ui.Examples/org.eclipse.objectteams.otdt.samples"
+            class="org.eclipse.pde.internal.ui.samples.SampleWizard:org.eclipse.objectteams.otdt.samples.observer"
+            icon="graphics/icons/newprj_wiz.gif"
+            id="org.eclipse.objectteams.otdt.samples.samples.observer"
+            name="%sample.observer.name"
+            project="true">
+         <description>%sample.observer.desc
+         </description>
+      </wizard>      
+      <wizard
+            category="org.eclipse.ui.Examples/org.eclipse.objectteams.otdt.samples"
+            class="org.eclipse.pde.internal.ui.samples.SampleWizard:org.eclipse.objectteams.otdt.samples.stopwatch"
+            icon="graphics/icons/newprj_wiz.gif"
+            id="org.eclipse.objectteams.otdt.samples.samples.stopwatch"
+            name="%sample.stopwatch.name"
+            project="true">
+         <description>%sample.stopwatch.desc
+         </description>
+      </wizard>      
+      <wizard
+            category="org.eclipse.ui.Examples/org.eclipse.objectteams.otdt.samples"
+            class="org.eclipse.pde.internal.ui.samples.SampleWizard:org.eclipse.objectteams.otdt.samples.ordersystem"
+            icon="graphics/icons/newprj_wiz.gif"
+            id="org.eclipse.objectteams.otdt.samples.samples.ordersystem"
+            name="%sample.ordersystem.name"
+            project="true">
+         <description>%sample.ordersystem.desc
+         </description>
+      </wizard>
+      <wizard
+            category="org.eclipse.ui.Examples/org.eclipse.objectteams.otdt.samples"
+            class="org.eclipse.pde.internal.ui.samples.SampleWizard:org.eclipse.objectteams.otdt.samples.atm"
+            icon="graphics/icons/newprj_wiz.gif"
+            id="org.eclipse.objectteams.otdt.samples.samples.atm"
+            name="%sample.atm.name"
+            project="true">
+         <description>%sample.atm.desc
+         </description>
+      </wizard>
+   </extension>
+
+   <extension
+         point="org.eclipse.ui.intro.configExtension">
+      <configExtension
+            configId="org.eclipse.ui.intro.universalConfig"
+            content="intro/samplesExtensionContentOT.xml"/>
+   </extension>
+
+<!--  -->
+   <extension
+         point="org.eclipse.objectteams.otequinox.aspectBindings">
+      <aspectBinding>
+         <team class="org.eclipse.objectteams.otdt.internal.samples.SamplesAdapter" activation="ALL_THREADS"/>
+         <basePlugin id="org.eclipse.pde.ui"/>
+      </aspectBinding>
+   </extension>
+<!-- -->
+</plugin>
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/src/org/eclipse/objectteams/otdt/internal/samples/OTSamplesPlugin.java b/plugins/org.eclipse.objectteams.otdt.samples/src/org/eclipse/objectteams/otdt/internal/samples/OTSamplesPlugin.java
new file mode 100644
index 0000000..56399f0
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/src/org/eclipse/objectteams/otdt/internal/samples/OTSamplesPlugin.java
@@ -0,0 +1,50 @@
+/**********************************************************************
+ * This file is part of "Object Teams Development Tooling"-Software
+ * 
+ * Copyright 2004, 2006 Fraunhofer Gesellschaft, Munich, Germany,
+ * for its Fraunhofer Institute for Computer Architecture and Software
+ * Technology (FIRST), Berlin, Germany and Technical University Berlin,
+ * Germany.
+ * 
+ * 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
+ * $Id: OTSamplesPlugin.java 23482 2010-02-05 20:16:19Z stephan $
+ * 
+ * Please visit http://www.eclipse.org/objectteams for updates and contact.
+ * 
+ * Contributors:
+ * Fraunhofer FIRST - Initial API and implementation
+ * Technical University Berlin - Initial API and implementation
+ **********************************************************************/
+package org.eclipse.objectteams.otdt.internal.samples;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * @author gis
+ */
+public class OTSamplesPlugin extends AbstractUIPlugin
+{
+    public static final String PLUGIN_ID = "org.eclipse.objectteams.otdt.samples"; //$NON-NLS-1$
+	private static OTSamplesPlugin instance;
+
+	public OTSamplesPlugin()
+    {
+        super();
+        instance = this;
+    }
+
+	public static OTSamplesPlugin getDefault()
+	{
+		return instance;
+	}
+
+	public static Status createErrorStatus(String message, Throwable ex)
+	{
+		return new Status(IStatus.ERROR, PLUGIN_ID, IStatus.OK, message, ex);
+	}
+}
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/src/org/eclipse/objectteams/otdt/internal/samples/SampleMessages.java b/plugins/org.eclipse.objectteams.otdt.samples/src/org/eclipse/objectteams/otdt/internal/samples/SampleMessages.java
new file mode 100644
index 0000000..7f2d828
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/src/org/eclipse/objectteams/otdt/internal/samples/SampleMessages.java
@@ -0,0 +1,38 @@
+/**********************************************************************
+ * This file is part of "Object Teams Development Tooling"-Software
+ * 
+ * Copyright 2004, 2006 Fraunhofer Gesellschaft, Munich, Germany,
+ * for its Fraunhofer Institute for Computer Architecture and Software
+ * Technology (FIRST), Berlin, Germany and Technical University Berlin,
+ * Germany.
+ * 
+ * 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
+ * $Id: SampleMessages.java 23482 2010-02-05 20:16:19Z stephan $
+ * 
+ * Please visit http://www.eclipse.org/objectteams for updates and contact.
+ * 
+ * Contributors:
+ * Fraunhofer FIRST - Initial API and implementation
+ * Technical University Berlin - Initial API and implementation
+ **********************************************************************/
+package org.eclipse.objectteams.otdt.internal.samples;
+
+import org.eclipse.osgi.util.NLS;
+
+public class SampleMessages extends NLS {
+	private static final String BUNDLE_NAME = SampleMessages.class.getName();
+
+	public static String SamplesAdapter_cannot_run_selected;
+
+	public static String SamplesAdapter_unable_to_run;
+	static {
+		// initialize resource bundle
+		NLS.initializeMessages(BUNDLE_NAME, SampleMessages.class);
+	}
+
+	private SampleMessages() {
+	}
+}
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/src/org/eclipse/objectteams/otdt/internal/samples/SampleMessages.properties b/plugins/org.eclipse.objectteams.otdt.samples/src/org/eclipse/objectteams/otdt/internal/samples/SampleMessages.properties
new file mode 100644
index 0000000..5bdf3e9
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/src/org/eclipse/objectteams/otdt/internal/samples/SampleMessages.properties
@@ -0,0 +1,2 @@
+SamplesAdapter_unable_to_run=Unable to run sample
+SamplesAdapter_cannot_run_selected=Cannot run the selected sample.
diff --git a/plugins/org.eclipse.objectteams.otdt.samples/src/org/eclipse/objectteams/otdt/internal/samples/SamplesAdapter.java b/plugins/org.eclipse.objectteams.otdt.samples/src/org/eclipse/objectteams/otdt/internal/samples/SamplesAdapter.java
new file mode 100644
index 0000000..a43cf70
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otdt.samples/src/org/eclipse/objectteams/otdt/internal/samples/SamplesAdapter.java
@@ -0,0 +1,461 @@
+/**********************************************************************
+ * This file is part of "Object Teams Development Tooling"-Software
+ * 
+ * Copyright 2004, 2006 Fraunhofer Gesellschaft, Munich, Germany,
+ * for its Fraunhofer Institute for Computer Architecture and Software
+ * Technology (FIRST), Berlin, Germany and Technical University Berlin,
+ * Germany.
+ * 
+ * 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
+ * $Id: SamplesAdapter.java 23482 2010-02-05 20:16:19Z stephan $
+ * 
+ * Please visit http://www.eclipse.org/objectteams for updates and contact.
+ * 
+ * Contributors:
+ * Fraunhofer FIRST - Initial API and implementation
+ * Technical University Berlin - Initial API and implementation
+ * IBM Corporation - copies of individual methods from bound base classes.
+ **********************************************************************/
+package org.eclipse.objectteams.otdt.internal.samples;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.debug.ui.ILaunchShortcut;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.objectteams.otdt.ui.help.OTHelpPlugin;
+import org.eclipse.pde.internal.ui.PDEPlugin;
+import org.eclipse.swt.custom.BusyIndicator;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.ide.IDE;
+import org.eclipse.ui.part.ISetSelectionTarget;
+import org.osgi.framework.Bundle;
+
+import base org.eclipse.pde.internal.ui.samples.ProjectNamesPage;
+import base org.eclipse.pde.internal.ui.samples.SampleEditor;
+import base org.eclipse.pde.internal.ui.samples.SampleOperation;
+import base org.eclipse.pde.internal.ui.samples.SampleStandbyContent;
+import base org.eclipse.pde.internal.ui.samples.SampleWizard;
+import base org.eclipse.pde.internal.ui.samples.ShowSampleAction;
+
+/**
+ * @author gis
+ */
+@SuppressWarnings("restriction")
+public team class SamplesAdapter
+{
+	private Map<IConfigurationElement,SampleWizardAdapter> _wizards = new HashMap<IConfigurationElement, SampleWizardAdapter>();
+	
+	boolean _needsAdaptation = false;
+	
+	public boolean isOTSample(String sampleId)
+	{
+		return sampleId != null && sampleId.startsWith("org.eclipse.objectteams.otdt.samples."); //$NON-NLS-1$
+	}
+	
+	public class ShowSampleActionAdapter playedBy ShowSampleAction
+	{
+
+		@SuppressWarnings("basecall")
+		callin boolean ensureSamplesPresent()
+		{
+			String id = getSampleId();
+			if (id != null) {
+				if (SamplesAdapter.this.isOTSample(id))
+					return true; //OT-samples are definitely present
+			}
+			
+			return base.ensureSamplesPresent();
+		}
+		@SuppressWarnings("decapsulation")
+		String getSampleId() -> get String sampleId;
+		@SuppressWarnings("decapsulation")
+		boolean ensureSamplesPresent() <- replace boolean ensureSampleFeaturePresent();
+	}
+	
+	public class ProjectNamesPageAdapter playedBy ProjectNamesPage
+//		base when (SamplesAdapter.this.needsAdaptation())
+	{
+		private boolean _isInitialized;
+
+		// bugfix: avoid executing updateEntries more than once!
+		@SuppressWarnings("basecall")
+		callin void updateEntries() {
+		    if (_isInitialized)
+		        return;
+		    
+		    _isInitialized = (getWizard().getSelection() != null);
+		    
+		    base.updateEntries();
+		}
+		
+		@SuppressWarnings("decapsulation")
+		SampleWizardAdapter getWizard() -> get SampleWizard wizard;
+		@SuppressWarnings("decapsulation")
+		void updateEntries() <- replace void updateEntries();
+	}
+	
+	public class SampleWizardAdapter playedBy SampleWizard
+		when (needsAdaptation())
+	{
+		IProject[] _createdProjects;
+		
+		void initializationHook()
+		{
+			// override default behavior
+			setSampleEditorNeeded(false);
+		}
+		
+		protected void setCreatedProjects(IProject[] projects)
+		{
+			_createdProjects = projects;
+		}
+		
+		callin boolean performFinish()
+		{
+			SamplesAdapter.this._wizards.put(getSelection(), this);
+			boolean result = base.performFinish();
+			SamplesAdapter.this._wizards.remove(getSelection());
+			
+			return result;
+		}
+		
+		
+		@SuppressWarnings("basecall")
+		callin void selectReveal(Shell shell)
+		{
+			shell.getDisplay().asyncExec(new Runnable() {
+				public void run() {
+					SampleWizardAdapter.this.doSelectReveal();
+				}
+			});
+		}
+		
+		// provide commented out method of SampleWizard
+		void doSelectReveal() {
+//{ObjectTeams: added local variables for fields in base class
+			IConfigurationElement selection = getSelection();
+			IProject[] createdProjects = _createdProjects;
+//carp}
+			
+			if (selection == null || createdProjects==null)
+				return;
+			String viewId = selection.getAttribute("targetViewId"); //$NON-NLS-1$
+			if (viewId == null)
+				return;
+			IWorkbenchWindow window = PlatformUI.getWorkbench()
+					.getActiveWorkbenchWindow();
+			if (window == null)
+				return;
+			IWorkbenchPage page = window.getActivePage();
+			if (page == null)
+				return;
+			IViewPart view = page.findView(viewId);
+			if (view == null || !(view instanceof ISetSelectionTarget))
+				return;
+			ISetSelectionTarget target = (ISetSelectionTarget) view;
+			IConfigurationElement[] projects = selection.getChildren("project"); //$NON-NLS-1$
+	
+			ArrayList<IResource> items = new ArrayList<IResource>();
+			for (int i = 0; i < projects.length; i++) {
+				String path = projects[i].getAttribute("selectReveal"); //$NON-NLS-1$
+				if (path == null)
+					continue;
+				IResource resource = createdProjects[i].findMember(path);
+				if (resource != null && resource.exists()) {
+					if (resource.getName().equals("Intro0.html")) { //$NON-NLS-1$
+						resource = setBaseTag(createdProjects[i], resource);
+					}
+					items.add(resource);
+				}
+			}
+			if (items.size() > 0)
+				target.selectReveal(new StructuredSelection(items));
+			
+//{ObjectTeams: reveal in editor as well
+			revealInEditor(items, page);
+//carp}
+		}
+
+		/** Insert a HTML base-tag to enable relative navigation to resources in OTHelp. */
+ 		private IResource setBaseTag(IProject project, IResource resource) {
+ 			if (resource instanceof IFile) { 				
+ 				IFile file = (IFile)resource;
+ 				try {
+ 					NullProgressMonitor npm = new NullProgressMonitor();
+ 					
+ 					// fetch path to help plugin hosting images/ and guide/otjld/def/:
+ 					Bundle helpBundle = OTHelpPlugin.getDefault().getBundle();
+ 					String absPath = FileLocator.resolve(helpBundle.getEntry("/")).toString();  //$NON-NLS-1$
+ 					String baseTag = "<base href=\""+absPath+"\">\n"; //$NON-NLS-1$ //$NON-NLS-2$
+ 					
+ 					// assemble new new file with new content:
+ 					IFile newFile = project.getFile("Intro.html"); //$NON-NLS-1$
+ 					ByteArrayInputStream stream = new ByteArrayInputStream(baseTag.getBytes("UTF8")); //$NON-NLS-1$
+					newFile.create(stream, false, npm);
+ 					newFile.appendContents(file.getContents(), 0, npm);
+ 					stream.close();
+ 					resource.delete(false, npm);
+ 					return newFile;
+ 				} catch (Exception e) {
+ 					OTSamplesPlugin.getDefault().getLog().log(
+ 						OTSamplesPlugin.createErrorStatus("Failed to convert Intro.html", e)); //$NON-NLS-1$
+ 				}
+ 			}	
+ 			return resource;
+ 		}
+
+		void revealInEditor(List<IResource> items, IWorkbenchPage page)
+		{
+			if (items.size() > 0)
+			{
+				for (Iterator<IResource> iter = items.iterator(); iter.hasNext();)
+		        {
+		            IResource resource = iter.next();
+		            if (resource instanceof IFile)
+		            {
+		                try {
+		                    IDE.openEditor(page, (IFile)resource);
+		                }
+		                catch (PartInitException ex)
+		                {} // ignore, user will try to open it manually, then
+		            }
+		        }
+			}
+		}
+		
+		boolean needsAdaptation()
+		{
+			IConfigurationElement selection = getSelection();
+			if (selection == null) return false; // no sample selected
+			String id = selection.getAttribute("id"); //$NON-NLS-1$
+			return SamplesAdapter.this.isOTSample(id);
+		}
+		
+		void initializationHook()      <- before void addPages();
+		boolean performFinish()        <- replace boolean performFinish();
+		void selectReveal(Shell shell) <- replace void selectReveal(Shell shell);
+
+		void setSampleEditorNeeded(boolean sampleEditorNeeded) 
+		                                     -> void setSampleEditorNeeded(boolean sampleEditorNeeded);
+		IConfigurationElement getSelection() -> IConfigurationElement getSelection();
+		
+	}
+	
+	public class SampleOperationAdaptor playedBy SampleOperation
+	{
+		void fetchCreatedProjects()
+		{
+			IProject[] projects = getCreatedProjects();
+			SampleWizardAdapter wizardAdapter = SamplesAdapter.this._wizards.get(getSample());
+			if (wizardAdapter != null && projects != null)
+				wizardAdapter.setCreatedProjects(projects);
+		}
+		
+		// Original implementation doesn't copy the "launchTarget" attribute from configuration element to manifest file
+		void fixCreatedSampleManifestContent(String projectName, Properties properties) 
+		{
+			final String attr = "launchTarget"; //$NON-NLS-1$
+			writeProperty(properties, attr, getSample().getAttribute(attr));
+		}
+		
+		void fetchCreatedProjects() <- after void run(IProgressMonitor monitor);
+		
+		void fixCreatedSampleManifestContent(String projectName, Properties properties) 
+									<- after void createSampleManifestContent(String projectName, Properties properties);
+
+		
+		@SuppressWarnings("decapsulation")
+		void writeProperty(Properties properties, String name, String value)
+										  -> void writeProperty(Properties properties, String name, String value);
+		
+		IProject[] getCreatedProjects()   -> IProject[] getCreatedProjects();
+		@SuppressWarnings("decapsulation")
+		IConfigurationElement getSample() -> get IConfigurationElement sample;
+	}
+	
+	/** This role generalizes over unrelated base classes SampleStandbyContent and SampleEditor. */
+	public abstract class SampleRunner
+	{
+		private ILaunchShortcut launchShortcut;
+
+		@SuppressWarnings("basecall")
+		callin void doRun(String launcher, String target, final boolean debug) 
+		{
+			if (target != null && target.startsWith("org.eclipse.objectteams.")) //$NON-NLS-1$
+			{
+				final ISelection selection;
+				try
+				{
+					Object launchSelection = getLaunchSelection(target);
+					if (launchSelection != null) {
+						selection = new StructuredSelection(launchSelection);
+					} else
+						selection = new StructuredSelection();
+
+					final ILaunchShortcut fshortcut = getLaunchShortcut(launcher);
+
+					BusyIndicator.showWhile(Display.getDefault(), new Runnable() {
+						public void run() {
+							fshortcut.launch(selection, debug
+									? ILaunchManager.DEBUG_MODE
+											: ILaunchManager.RUN_MODE);
+						}
+					});
+				} 
+				catch (CoreException ex)
+				{
+					ErrorDialog.openError(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), 
+							SampleMessages.SamplesAdapter_unable_to_run, SampleMessages.SamplesAdapter_cannot_run_selected,
+							ex.getStatus());
+					OTSamplesPlugin.getDefault().getLog().log(ex.getStatus());
+				}
+			}
+			else
+			{
+				base.doRun(launcher, target, debug);
+			}
+		}
+
+		// NEW: target is the "launchTarget" property from the launchTarget attribute in the sample.properties
+		//      file or the <sample> configuration element.
+		//      Note: target may be null.
+		// falls back to search a main-class in the first src-folder available.
+		private Object getLaunchSelection(String target) throws JavaModelException
+		{
+			IProject project = getProject();
+			if (project != null)
+			{
+				IJavaProject javaProject = JavaCore.create(project);
+				if (javaProject.exists())
+				{
+					if (target != null)
+					{
+						IType targetType = javaProject.findType(target);
+						if (targetType != null)
+							return targetType;
+					}
+					
+					IPackageFragmentRoot[] packageFragmentRoots = javaProject.getPackageFragmentRoots();
+					for (int i = 0; i < packageFragmentRoots.length; i++)
+					{
+						IPackageFragmentRoot root = packageFragmentRoots[i];
+						if (root.getKind() == IPackageFragmentRoot.K_SOURCE)
+							return root;
+					}
+				}
+			}
+			
+			return null;
+		}
+
+		private ILaunchShortcut getLaunchShortcut(String launcher) throws CoreException
+		{
+			if (launchShortcut != null && launchShortcut.getClass().getName().equals(launcher))
+				return launchShortcut;
+			
+			try {
+				Class<?> launcherClass = Class.forName(launcher);
+				launchShortcut = (ILaunchShortcut) launcherClass.newInstance();
+				return launchShortcut;
+			}
+			catch (Exception ex)
+			{
+				IStatus status = OTSamplesPlugin.createErrorStatus("Unable to create launcher", ex); //$NON-NLS-1$
+				throw new CoreException(status);
+			} 
+		}
+
+		// OT_COPY_PASTE: STATE: 3.2: most parts copy&paste from SampleStandbyContent.doBrowse()
+		private IProject getProject()
+		{
+			IWorkspaceRoot root = PDEPlugin.getWorkspace().getRoot();
+			IProject[] projects = root.getProjects();
+			String sid = getSampleID();
+			if (sid == null)
+				return null;
+			for (int i = 0; i < projects.length; i++) {
+				IProject project = projects[i];
+				if (!project.exists() || !project.isOpen())
+					continue;
+				IFile pfile = project.getFile("sample.properties"); //$NON-NLS-1$
+				if (pfile.exists()) {
+					try {
+						InputStream is = pfile.getContents();
+						Properties prop = new Properties();
+						prop.load(is);
+						is.close();
+						String id = prop.getProperty("id"); //$NON-NLS-1$
+						if (id != null && id.equals(sid)) {
+							return project;
+						}
+					} catch (IOException e) {
+						PDEPlugin.logException(e);
+					} catch (CoreException e) {
+						PDEPlugin.logException(e);
+					}
+				}
+			}
+			
+			return null;
+		}
+		
+		protected abstract String getSampleID();
+	}
+	
+	// stupid, stupid...
+	public class SampleStandbyContentAdaptor extends SampleRunner playedBy SampleStandbyContent
+	{
+		@SuppressWarnings("decapsulation")
+		void doRun(String launcher, String target, final boolean debug) <- replace void doRun(String launcher, String target, final boolean debug);
+		
+		@SuppressWarnings("decapsulation")
+		String getSampleID() -> get IConfigurationElement sample with {
+			result <- sample.getAttribute("id") //$NON-NLS-1$
+		}
+	}
+
+	public class SampleEditorAdaptor extends SampleRunner playedBy SampleEditor
+	{
+		@SuppressWarnings("decapsulation")
+		void doRun(String launcher, String target, final boolean debug) <- replace void doRun(String launcher, String target, final boolean debug);
+
+		@SuppressWarnings("decapsulation")
+		String getSampleID() -> Properties loadContent() with {
+			result <- result.getProperty("id") //$NON-NLS-1$
+		}
+	}
+}