CQ-4081: Initial import
diff --git a/examples/org.eclipse.e4.ui.deeplink.example.client/.classpath b/examples/org.eclipse.e4.ui.deeplink.example.client/.classpath
new file mode 100644
index 0000000..8a8f166
--- /dev/null
+++ b/examples/org.eclipse.e4.ui.deeplink.example.client/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<classpath>

+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="src" path="src"/>

+	<classpathentry kind="output" path="bin"/>

+</classpath>

diff --git a/examples/org.eclipse.e4.ui.deeplink.example.client/.project b/examples/org.eclipse.e4.ui.deeplink.example.client/.project
new file mode 100644
index 0000000..6ecf510
--- /dev/null
+++ b/examples/org.eclipse.e4.ui.deeplink.example.client/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.e4.ui.deeplink.example.client</name>

+	<comment></comment>

+	<projects>

+	</projects>

+	<buildSpec>

+		<buildCommand>

+			<name>org.eclipse.jdt.core.javabuilder</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.pde.PluginNature</nature>

+		<nature>org.eclipse.jdt.core.javanature</nature>

+	</natures>

+</projectDescription>

diff --git a/examples/org.eclipse.e4.ui.deeplink.example.client/.settings/org.eclipse.jdt.core.prefs b/examples/org.eclipse.e4.ui.deeplink.example.client/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..8cd21ef
--- /dev/null
+++ b/examples/org.eclipse.e4.ui.deeplink.example.client/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Wed Feb 24 17:30:23 GMT 2010

+eclipse.preferences.version=1

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6

+org.eclipse.jdt.core.compiler.compliance=1.6

+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

+org.eclipse.jdt.core.compiler.source=1.6

diff --git a/examples/org.eclipse.e4.ui.deeplink.example.client/META-INF/MANIFEST.MF b/examples/org.eclipse.e4.ui.deeplink.example.client/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..b26801a
--- /dev/null
+++ b/examples/org.eclipse.e4.ui.deeplink.example.client/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Client2 Plug-in
+Bundle-SymbolicName: org.eclipse.e4.ui.deeplink.example.client;singleton:=true
+Bundle-Version: 4.6.0.qualifier
+Bundle-Activator: org.eclipse.e4.ui.deeplink.example.client.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.e4.core.deeplink;bundle-version="4.5.0",
+ org.eclipse.e4.core.deeplink.handler;bundle-version="4.5.0",
+ org.eclipse.e4.core.deeplink.typehandler.extensionpt;bundle-version="1.0.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-ActivationPolicy: lazy
diff --git a/examples/org.eclipse.e4.ui.deeplink.example.client/about.html b/examples/org.eclipse.e4.ui.deeplink.example.client/about.html
new file mode 100644
index 0000000..f77f378
--- /dev/null
+++ b/examples/org.eclipse.e4.ui.deeplink.example.client/about.html
@@ -0,0 +1,22 @@
+<h1>About This Content</h1>
+
+23 June, 2010
+
+<h2>License</h2>
+
+<p>The Eclipse Foundation makes available all content in this plug-in
+("Content"). Unless otherwise indicated below, the Content is provided
+to you under the terms and conditions of the Eclipse Public License
+Version 1.0 ("EPL"). A copy of the EPL is available at
+http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL,
+"Program" will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse
+Foundation, the Content is being redistributed by another party
+("Redistributor") and different terms and conditions may apply to your
+use of any object code in the Content. Check the Redistributor’s
+license that was provided with the Content. If no such license exists,
+contact the Redistributor. Unless otherwise indicated below, the terms
+and conditions of the EPL still apply to any source code in the
+Content and such source code may be obtained at
+http://www.eclipse.org.</p>
diff --git a/examples/org.eclipse.e4.ui.deeplink.example.client/build.properties b/examples/org.eclipse.e4.ui.deeplink.example.client/build.properties
new file mode 100644
index 0000000..50ca378
--- /dev/null
+++ b/examples/org.eclipse.e4.ui.deeplink.example.client/build.properties
@@ -0,0 +1,7 @@
+source.. = src/

+output.. = bin/

+bin.includes = plugin.xml,\

+               META-INF/,\

+               .,\

+               icons/,\

+               splash.bmp

diff --git a/examples/org.eclipse.e4.ui.deeplink.example.client/plugin.xml b/examples/org.eclipse.e4.ui.deeplink.example.client/plugin.xml
new file mode 100644
index 0000000..1a834e7
--- /dev/null
+++ b/examples/org.eclipse.e4.ui.deeplink.example.client/plugin.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<?eclipse version="3.4"?>

+<plugin>

+

+   <extension

+         id="application"

+         point="org.eclipse.core.runtime.applications">

+      <application>

+         <run

+               class="org.eclipse.e4.ui.deeplink.example.client.Application">

+         </run>

+      </application>

+   </extension>

+   <extension

+         id="product"

+         point="org.eclipse.core.runtime.products">

+      <product

+            application="org.eclipse.e4.ui.deeplink.example.client.application"

+            name="Deeplink Example Product">

+         <property

+               name="appName"

+               value="Deeplink Example Product">

+         </property>

+      </product>

+   </extension>

+   <extension

+         point="org.eclipse.e4.core.deeplink.typehandler.extensionpt.deepLinkExtensionPointInstanceHandler">

+      <deepLinkExtensionPointInstanceHandler

+            class="org.eclipse.e4.ui.deeplink.example.client.SayHelloHandler"

+            id="sayhello">

+      </deepLinkExtensionPointInstanceHandler>

+   </extension>

+

+</plugin>

diff --git a/examples/org.eclipse.e4.ui.deeplink.example.client/src/org/eclipse/e4/ui/deeplink/example/client/Activator.java b/examples/org.eclipse.e4.ui.deeplink.example.client/src/org/eclipse/e4/ui/deeplink/example/client/Activator.java
new file mode 100644
index 0000000..705acee
--- /dev/null
+++ b/examples/org.eclipse.e4.ui.deeplink.example.client/src/org/eclipse/e4/ui/deeplink/example/client/Activator.java
@@ -0,0 +1,62 @@
+/******************************************************************************
+ * Copyright (c) David Orme 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:
+ *    David Orme - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.e4.ui.deeplink.example.client;

+

+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+

+

+

+public class Activator extends AbstractUIPlugin {

+//	private static final String CONFIG_TRACKER_CLASSNAME = Configuration.class.getName();

+	

+	// The shared instance

+	private static Activator plugin;

+

+	public Activator() {

+	}

+

+	@Override

+	public void start(BundleContext context) throws Exception {

+		super.start(context);

+//		configTracker = new ServiceTracker(context, CONFIG_TRACKER_CLASSNAME, null);

+//		configTracker.open();

+		plugin = this;

+	}

+	

+	@Override

+	public void stop(BundleContext context) throws Exception {

+		super.stop(context);

+	}

+

+	/**

+	 * Returns the shared instance

+	 * 

+	 * @return the shared instance

+	 */

+	public static Activator getDefault() {

+		return plugin;

+	}

+	

+	/**

+	 * @return the current configuration file's Properties object. May be null

+	 *         if the configuration service is not loaded or is not included in

+	 *         the application.

+	 */

+//	public Configuration getConfiguration() {

+//		Configuration configuration = (Configuration) configTracker.getService();

+//		if (null == configuration)

+//		{

+//			throw new ConfigurationException("Null config service: no service registered for :[" + CONFIG_TRACKER_CLASSNAME + "]");				

+//		}

+//		return configuration;

+//	}	

+}
\ No newline at end of file
diff --git a/examples/org.eclipse.e4.ui.deeplink.example.client/src/org/eclipse/e4/ui/deeplink/example/client/Application.java b/examples/org.eclipse.e4.ui.deeplink.example.client/src/org/eclipse/e4/ui/deeplink/example/client/Application.java
new file mode 100644
index 0000000..066f65c
--- /dev/null
+++ b/examples/org.eclipse.e4.ui.deeplink.example.client/src/org/eclipse/e4/ui/deeplink/example/client/Application.java
@@ -0,0 +1,73 @@
+/******************************************************************************
+ * Copyright (c) David Orme 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:
+ *    David Orme - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.e4.ui.deeplink.example.client;
+
+import org.eclipse.e4.core.deeplink.DeepLinkManager;
+import org.eclipse.equinox.app.IApplication;
+import org.eclipse.equinox.app.IApplicationContext;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.PlatformUI;
+
+
+/**
+ * This class controls all aspects of the application's execution
+ */
+public class Application implements IApplication {
+
+	private static final int ONE_SECOND = 1000;
+	private final String COMMANDLINE_KEY = "application.args";
+	private Thread updateThread;
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.equinox.app.IApplication#start(org.eclipse.equinox.app.IApplicationContext)
+	 */
+	public Object start(IApplicationContext context) throws Exception {
+		Display display = PlatformUI.createDisplay();
+				
+		// Include the following code and add org.eclipse.e4.core.deeplink
+		// as a dependency if you intend to support deeplinking
+		DeepLinkManager deepLinkManager = new DeepLinkManager(true, Activator.getDefault().getLog());
+		deepLinkManager.startServer();
+		deepLinkManager.processCommandLineArguments(context);
+		
+		try {
+			int returnCode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());
+			if (returnCode == PlatformUI.RETURN_RESTART)
+				return IApplication.EXIT_RESTART;
+			else
+				return IApplication.EXIT_OK;
+		} finally {
+			display.dispose();
+		}
+		
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.equinox.app.IApplication#stop()
+	 */
+	public void stop() {
+		final IWorkbench workbench = PlatformUI.getWorkbench();
+		if (workbench == null)
+			return;
+		final Display display = workbench.getDisplay();
+		display.syncExec(new Runnable() {
+			public void run() {
+				if (!display.isDisposed())
+					workbench.close();
+			}
+		});
+		
+		if (updateThread != null) {
+			updateThread.interrupt();
+		}
+	}
+}
\ No newline at end of file
diff --git a/examples/org.eclipse.e4.ui.deeplink.example.client/src/org/eclipse/e4/ui/deeplink/example/client/ApplicationActionBarAdvisor.java b/examples/org.eclipse.e4.ui.deeplink.example.client/src/org/eclipse/e4/ui/deeplink/example/client/ApplicationActionBarAdvisor.java
new file mode 100644
index 0000000..c4ccc07
--- /dev/null
+++ b/examples/org.eclipse.e4.ui.deeplink.example.client/src/org/eclipse/e4/ui/deeplink/example/client/ApplicationActionBarAdvisor.java
@@ -0,0 +1,157 @@
+/******************************************************************************
+ * Copyright (c) David Orme 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:
+ *    David Orme - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.e4.ui.deeplink.example.client;
+
+import org.eclipse.jface.action.GroupMarker;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
+import org.eclipse.ui.application.ActionBarAdvisor;
+import org.eclipse.ui.application.IActionBarConfigurer;
+
+public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
+
+	private final IWorkbenchWindow workbenchWindow;
+	
+	private IWorkbenchAction quitAction;
+	private IWorkbenchAction openPreferencesAction;
+	private IWorkbenchAction newWindowAction;
+	private IWorkbenchAction resetPerspectiveAction;
+	private IWorkbenchAction introAction;
+	private IWorkbenchAction aboutAction;
+	private IWorkbenchAction showViewMenuAction;
+    private IWorkbenchAction showHelpAction; // NEW
+    private IWorkbenchAction searchHelpAction; // NEW
+    private IWorkbenchAction dynamicHelpAction; // NEW
+
+    public ApplicationActionBarAdvisor(IActionBarConfigurer configurer) {
+        super(configurer);
+        workbenchWindow = configurer.getWindowConfigurer().getWindow();
+    }
+
+    protected void makeActions(IWorkbenchWindow window) {
+		quitAction = ActionFactory.QUIT.create(window);
+		register(quitAction);
+
+    	openPreferencesAction = ActionFactory.PREFERENCES.create(window);
+		register(openPreferencesAction);
+    	
+		newWindowAction = ActionFactory.OPEN_NEW_WINDOW.create(workbenchWindow);
+		newWindowAction.setText("&New Window");
+		register(newWindowAction);
+    	
+		resetPerspectiveAction = ActionFactory.RESET_PERSPECTIVE.create(window);
+		resetPerspectiveAction.setText("Reset Window");
+		register(resetPerspectiveAction);
+		
+		if (window.getWorkbench().getIntroManager().hasIntro()) {
+			introAction = ActionFactory.INTRO.create(window);
+			register(introAction);
+		}
+		
+		aboutAction = ActionFactory.ABOUT.create(window);
+		register(aboutAction);
+		
+		showViewMenuAction = ActionFactory.SHOW_VIEW_MENU.create(window);
+		register(showViewMenuAction);
+
+	    showHelpAction = ActionFactory.HELP_CONTENTS.create(window); // NEW
+	    register(showHelpAction); // NEW
+
+	    searchHelpAction = ActionFactory.HELP_SEARCH.create(window); // NEW
+	    register(searchHelpAction); // NEW
+
+	    dynamicHelpAction = ActionFactory.DYNAMIC_HELP.create(window); // NEW
+	    register(dynamicHelpAction); // NEW
+	}
+
+    protected void fillMenuBar(IMenuManager menuBar) {
+		menuBar.add(createFileMenu());    	
+		menuBar.add(createWindowMenu());
+		menuBar.add(createHelpMenu());
+
+    }
+    
+	/**
+	 * Creates and returns the File menu.
+	 */
+	private MenuManager createFileMenu() {
+		MenuManager menu = new MenuManager("&File", IWorkbenchActionConstants.M_FILE);
+		menu.add(new Separator());
+		menu.add(quitAction);
+		menu.add(new GroupMarker(IWorkbenchActionConstants.FILE_END));
+		return menu;
+	}    
+	/**
+	 * Creates and returns the Window menu.
+	 */
+	private MenuManager createWindowMenu() {
+		final MenuManager menu = new MenuManager("&Window",
+				IWorkbenchActionConstants.M_WINDOW);
+		menu.add(newWindowAction);
+
+		menu.add(resetPerspectiveAction);
+		menu.add(new Separator());
+
+		menu.add(showViewMenuAction);
+		
+		menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS + "end")); //NON-NLS-1
+		
+		menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+		menu.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS + "end")); //NON-NLS-1
+		menu.add(openPreferencesAction);
+		
+		return menu;
+	}
+
+	/**
+	 * Creates and returns the Help menu.
+	 */
+	private MenuManager createHelpMenu() {
+		MenuManager menu = new MenuManager("&Help",
+				IWorkbenchActionConstants.M_HELP);
+		addSeparatorOrGroupMarker(menu, "group.intro"); // NON-NLS-1
+		// See if a welcome or intro page is specified
+		if (introAction != null) {
+			menu.add(introAction);
+		}
+		menu.add(new GroupMarker("group.intro.ext")); // NON-NLS-1
+		menu.add(new Separator("group.about")); // NON-NLS-1
+		menu.add(aboutAction);
+		menu.add(new GroupMarker("group.about.ext")); // NON-NLS-1
+
+		menu.add(showHelpAction); // NEW
+		menu.add(searchHelpAction); // NEW
+		menu.add(dynamicHelpAction); // NEW
+
+		return menu;
+	}
+	
+	/**
+	 * Adds a <code>GroupMarker</code> or <code>Separator</code> to a menu.
+	 * The test for whether a separator should be added is done by checking for
+	 * the existence of a preference matching the string
+	 * useSeparator.MENUID.GROUPID that is set to <code>true</code>.
+	 * 
+	 * @param menu
+	 *            the menu to add to
+	 * @param groupId
+	 *            the group id for the added separator or group marker
+	 */
+	private void addSeparatorOrGroupMarker(MenuManager menu, String groupId) {
+		String prefId = "useSeparator." + menu.getId() + "." + groupId; //NON-NLS-1 //NON-NLS-2
+		menu.add(new GroupMarker(groupId));
+	}
+}
\ No newline at end of file
diff --git a/examples/org.eclipse.e4.ui.deeplink.example.client/src/org/eclipse/e4/ui/deeplink/example/client/ApplicationWorkbenchAdvisor.java b/examples/org.eclipse.e4.ui.deeplink.example.client/src/org/eclipse/e4/ui/deeplink/example/client/ApplicationWorkbenchAdvisor.java
new file mode 100644
index 0000000..4b57443
--- /dev/null
+++ b/examples/org.eclipse.e4.ui.deeplink.example.client/src/org/eclipse/e4/ui/deeplink/example/client/ApplicationWorkbenchAdvisor.java
@@ -0,0 +1,36 @@
+/******************************************************************************
+ * Copyright (c) David Orme 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:
+ *    David Orme - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.e4.ui.deeplink.example.client;
+
+import org.eclipse.ui.application.IWorkbenchConfigurer;
+import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
+import org.eclipse.ui.application.WorkbenchAdvisor;
+import org.eclipse.ui.application.WorkbenchWindowAdvisor;
+
+
+public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor {
+
+    private static final String INITIAL_PERSPECTIVE_ID = "org.eclipse.e4.enterprise.deeplink.example.client.ui.perspective2";
+
+	public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
+        return new ApplicationWorkbenchWindowAdvisor(configurer);
+    }
+
+	public void initialize(IWorkbenchConfigurer configurer) {
+		super.initialize(configurer);
+		configurer.setSaveAndRestore(true);
+	}
+
+	public String getInitialWindowPerspectiveId() {
+		return INITIAL_PERSPECTIVE_ID;
+	}
+
+}
diff --git a/examples/org.eclipse.e4.ui.deeplink.example.client/src/org/eclipse/e4/ui/deeplink/example/client/ApplicationWorkbenchWindowAdvisor.java b/examples/org.eclipse.e4.ui.deeplink.example.client/src/org/eclipse/e4/ui/deeplink/example/client/ApplicationWorkbenchWindowAdvisor.java
new file mode 100644
index 0000000..33c014a
--- /dev/null
+++ b/examples/org.eclipse.e4.ui.deeplink.example.client/src/org/eclipse/e4/ui/deeplink/example/client/ApplicationWorkbenchWindowAdvisor.java
@@ -0,0 +1,41 @@
+/******************************************************************************
+ * Copyright (c) David Orme 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:
+ *    David Orme - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.e4.ui.deeplink.example.client;
+
+import org.eclipse.ui.application.ActionBarAdvisor;
+import org.eclipse.ui.application.IActionBarConfigurer;
+import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
+import org.eclipse.ui.application.WorkbenchWindowAdvisor;
+
+public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {
+
+    public ApplicationWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) {
+        super(configurer);
+    }
+
+    public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer) {
+        return new ApplicationActionBarAdvisor(configurer);
+    }
+    
+    public void preWindowOpen() {
+        IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
+        
+        //this is all standard RCP so just display the elements
+        //you want and hide the rest
+        configurer.setShowCoolBar(true);
+        configurer.setShowStatusLine(true);
+        configurer.setShowFastViewBars(true);
+        configurer.setShowMenuBar(true);
+        configurer.setShowPerspectiveBar(true);
+        configurer.setShowProgressIndicator(true);
+        
+    }
+}
diff --git a/examples/org.eclipse.e4.ui.deeplink.example.client/src/org/eclipse/e4/ui/deeplink/example/client/SayHelloHandler.java b/examples/org.eclipse.e4.ui.deeplink.example.client/src/org/eclipse/e4/ui/deeplink/example/client/SayHelloHandler.java
new file mode 100644
index 0000000..21e9d83
--- /dev/null
+++ b/examples/org.eclipse.e4.ui.deeplink.example.client/src/org/eclipse/e4/ui/deeplink/example/client/SayHelloHandler.java
@@ -0,0 +1,32 @@
+/******************************************************************************
+ * Copyright (c) David Orme 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:
+ *    David Orme - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.e4.ui.deeplink.example.client;

+

+import java.util.HashMap;

+import java.util.Map;

+

+import org.eclipse.e4.core.deeplink.api.AbstractDeepLinkInstanceHandler;
+

+

+/**

+ * A simple deeplink callback handler that is registered via extension point. 

+ */

+public class SayHelloHandler extends AbstractDeepLinkInstanceHandler {

+	

+	@Override

+	public Map<String, String> activate(String handlerInstanceID, String action, Map<String, String[]> params) {

+		Map<String, String> results = new HashMap<String, String>();

+		String helloMessage = "Hello, " + action;

+		System.out.println(helloMessage);

+		results.put("Hello", helloMessage);

+		return results;

+	}

+}