diff --git a/plugins/TestPlugin/.classpath b/plugins/TestPlugin/.classpath
new file mode 100644
index 0000000000..64c5e31b7a
--- /dev/null
+++ b/plugins/TestPlugin/.classpath
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/plugins/TestPlugin/.project b/plugins/TestPlugin/.project
new file mode 100644
index 0000000000..c076fb0c19
--- /dev/null
+++ b/plugins/TestPlugin/.project
@@ -0,0 +1,28 @@
+
+
+ TestPlugin
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+
+ org.eclipse.pde.PluginNature
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/plugins/TestPlugin/.settings/org.eclipse.jdt.core.prefs b/plugins/TestPlugin/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000..534f9e484d
--- /dev/null
+++ b/plugins/TestPlugin/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,8 @@
+#Sat Jan 30 21:34:42 CET 2010
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/plugins/TestPlugin/.settings/org.eclipse.pde.core.prefs b/plugins/TestPlugin/.settings/org.eclipse.pde.core.prefs
new file mode 100644
index 0000000000..72573f1b9d
--- /dev/null
+++ b/plugins/TestPlugin/.settings/org.eclipse.pde.core.prefs
@@ -0,0 +1,4 @@
+#Sat Jan 30 21:35:00 CET 2010
+eclipse.preferences.version=1
+pluginProject.extensions=true
+resolve.requirebundle=false
diff --git a/plugins/TestPlugin/META-INF/MANIFEST.MF b/plugins/TestPlugin/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000..9434561756
--- /dev/null
+++ b/plugins/TestPlugin/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: TestPlugin
+Bundle-SymbolicName: org.adempiere.base.TestPlugin;singleton:=true
+Bundle-Version: 0.0.0.1
+Bundle-Activator: org.adempiere.testplugin.Activator
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Import-Package: org.osgi.framework;version="1.3.0"
+Require-Bundle: org.adempiere.base;bundle-version="0.0.0"
diff --git a/plugins/TestPlugin/build.properties b/plugins/TestPlugin/build.properties
new file mode 100644
index 0000000000..e9863e281e
--- /dev/null
+++ b/plugins/TestPlugin/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml
diff --git a/plugins/TestPlugin/plugin.xml b/plugins/TestPlugin/plugin.xml
new file mode 100644
index 0000000000..9abc5ee788
--- /dev/null
+++ b/plugins/TestPlugin/plugin.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
diff --git a/plugins/TestPlugin/src/org/adempiere/testplugin/Activator.java b/plugins/TestPlugin/src/org/adempiere/testplugin/Activator.java
new file mode 100644
index 0000000000..5df28ad1b2
--- /dev/null
+++ b/plugins/TestPlugin/src/org/adempiere/testplugin/Activator.java
@@ -0,0 +1,22 @@
+package org.adempiere.testplugin;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+ /*
+ * (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ }
+
+}
diff --git a/plugins/TestPlugin/src/org/adempiere/testplugin/MyCallout1.java b/plugins/TestPlugin/src/org/adempiere/testplugin/MyCallout1.java
new file mode 100644
index 0000000000..34bc7d1afb
--- /dev/null
+++ b/plugins/TestPlugin/src/org/adempiere/testplugin/MyCallout1.java
@@ -0,0 +1,18 @@
+package org.adempiere.testplugin;
+
+import java.util.Properties;
+
+import org.adempiere.base.IColumnCallout;
+import org.compiere.model.Callout;
+import org.compiere.model.GridField;
+import org.compiere.model.GridTab;
+
+public class MyCallout1 implements IColumnCallout {
+
+ public String start(Properties ctx, int WindowNo, GridTab mTab,
+ GridField mField, Object value, Object oldValue) {
+ System.out.println("Callout on C_Order.Description: "+oldValue+"->"+value);
+ return null;
+ }
+
+}