[bugzilla 397214] Provide a 'link with editor' mechanism for Intent
editors
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/META-INF/MANIFEST.MF b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/META-INF/MANIFEST.MF
index 2f6a5ed..eeea207 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/META-INF/MANIFEST.MF
@@ -1,32 +1,34 @@
-Manifest-Version: 1.0

-Bundle-ManifestVersion: 2

-Bundle-Localization: plugin

-Bundle-Name: %pluginName

-Bundle-SymbolicName: org.eclipse.mylyn.docs.intent.client.ui.ide;singleton:=true

-Bundle-Version: 0.8.0.qualifier

-Bundle-Vendor: %providerName

-Bundle-Activator: org.eclipse.mylyn.docs.intent.client.ui.ide.Activator

-Require-Bundle: org.eclipse.ui;visibility:=reexport,

- org.eclipse.core.runtime,

- org.eclipse.mylyn.docs.intent.core,

- org.eclipse.mylyn.docs.intent.collab.ide,

- org.eclipse.mylyn.docs.intent.collab.common,

- org.eclipse.mylyn.docs.intent.client.ui,

- org.eclipse.mylyn.docs.intent.client.compiler,

- org.eclipse.mylyn.docs.intent.client.indexer,

- org.eclipse.mylyn.docs.intent.client.synchronizer,

- org.eclipse.mylyn.docs.intent.client.linkresolver,

- org.eclipse.ui.navigator,

- org.eclipse.ui.navigator.resources,

- org.eclipse.core.resources;visibility:=reexport,

- org.eclipse.ui.ide;visibility:=reexport,

- org.eclipse.jface.text;visibility:=reexport,

- org.eclipse.core.expressions

-Bundle-ActivationPolicy: lazy

-Bundle-RequiredExecutionEnvironment: J2SE-1.5

-Import-Package: com.google.common.base,

- com.google.common.collect

-Export-Package: org.eclipse.mylyn.docs.intent.client.ui.ide.builder,

- org.eclipse.mylyn.docs.intent.client.ui.ide.generatedelementlistener,

- org.eclipse.mylyn.docs.intent.client.ui.ide.projectmanager,

- org.eclipse.mylyn.docs.intent.client.ui.ide.repository

+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Localization: plugin
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.mylyn.docs.intent.client.ui.ide;singleton:=true
+Bundle-Version: 0.8.0.qualifier
+Bundle-Vendor: %providerName
+Bundle-Activator: org.eclipse.mylyn.docs.intent.client.ui.ide.Activator
+Require-Bundle: org.eclipse.ui;visibility:=reexport,
+ org.eclipse.core.runtime,
+ org.eclipse.mylyn.docs.intent.core,
+ org.eclipse.mylyn.docs.intent.collab.ide,
+ org.eclipse.mylyn.docs.intent.collab.common,
+ org.eclipse.mylyn.docs.intent.client.ui,
+ org.eclipse.mylyn.docs.intent.client.compiler,
+ org.eclipse.mylyn.docs.intent.client.indexer,
+ org.eclipse.mylyn.docs.intent.client.synchronizer,
+ org.eclipse.mylyn.docs.intent.client.linkresolver,
+ org.eclipse.ui.navigator,
+ org.eclipse.ui.navigator.resources,
+ org.eclipse.core.resources;visibility:=reexport,
+ org.eclipse.ui.ide;visibility:=reexport,
+ org.eclipse.jface.text;visibility:=reexport,
+ org.eclipse.core.expressions,
+ org.eclipse.emf.common.ui
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Import-Package: com.google.common.base,
+ com.google.common.collect
+Export-Package: org.eclipse.mylyn.docs.intent.client.ui.ide.builder,
+ org.eclipse.mylyn.docs.intent.client.ui.ide.generatedelementlistener,
+ org.eclipse.mylyn.docs.intent.client.ui.ide.navigator,
+ org.eclipse.mylyn.docs.intent.client.ui.ide.projectmanager,
+ org.eclipse.mylyn.docs.intent.client.ui.ide.repository
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/plugin.xml b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/plugin.xml
index eaaa7b7..214b5a5 100644
--- a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/plugin.xml
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/plugin.xml
@@ -1,314 +1,344 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<?eclipse version="3.4"?>

-

-<!--

-Copyright (c) 2011 Obeo.

-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:

-    Obeo - initial API and implementation

--->

-

-<plugin>

-     <extension-point id="org.eclipse.mylyn.docs.intent.client.ui.ide.template.extension" name="org.eclipse.mylyn.docs.intent.client.ui.ide.template.extension" schema="schema/org.eclipse.mylyn.docs.intent.client.ui.ide.template.exsd"/>

-     

-   <!-- EXTENSIONS OF THE PROJECT EXPLORER -->

-    <extension

-          point="org.eclipse.ui.navigator.viewer">

-        <viewer

-              helpContext="org.eclipse.ui.navigator.ProjectExplorer.help"

-              inheritBindingsFromViewer="org.eclipse.ui.navigator.ProjectExplorer"

-              viewerId="org.eclipse.ui.navigator.ProjectExplorer">

-       </viewer>

-       <viewerContentBinding

-             viewerId="org.eclipse.ui.navigator.ProjectExplorer">

-          <includes>

-             <contentExtension

-                   isRoot="false"

-                   pattern="org.eclipse.mylyn.docs.intent.client.ui.ide.RepositoryContent">

-             </contentExtension>

-          </includes>

-       </viewerContentBinding>

-     

-    </extension>

-    <extension

-          point="org.eclipse.ui.navigator.navigatorContent">

-       <navigatorContent

-             activeByDefault="true"

-             contentProvider="org.eclipse.mylyn.docs.intent.client.ui.ide.navigator.RepositoryContentProvider"

-             icon="icon/ide/workspaceicon.gif"

-             id="org.eclipse.mylyn.docs.intent.client.ui.ide.RepositoryContent"

-             labelProvider="org.eclipse.mylyn.docs.intent.client.ui.ide.navigator.RepositoryLabelProvider"

-             name="Repository Content"

-             priority="highest"

-             providesSaveables="false">

-          <triggerPoints>

- 			<or>

-            	<adapt type="org.eclipse.core.resources.IProject">

-                	<and>

-                    	<test

-                        	property="org.eclipse.core.resources.projectNature"

-                            value="org.eclipse.mylyn.docs.intent.client.ui.ide.intentNature">

-                        </test>

-                    </and>

-                </adapt>                

-            </or>

-          </triggerPoints>

- 		<possibleChildren>

-        	<or>

-            <instanceof

-                  value="org.eclipse.mylyn.docs.intent.core.indexer.IntentIndex">

-            </instanceof>

-            <instanceof

-                  value="org.eclipse.mylyn.docs.intent.core.indexer.IntentIndexEntry">

-            </instanceof>         

-        	</or>

-     	</possibleChildren>

-          <actionProvider

-                class="org.eclipse.mylyn.docs.intent.client.ui.ide.navigator.RepositoryActionProvider">

-          </actionProvider>

-       </navigatorContent>

-    </extension>

-    <extension

-          id="intentBuilder"

-          name="Intent Project Builder"

-          point="org.eclipse.core.resources.builders">

-       <builder

-             hasNature="true">

-          <run

-                class="org.eclipse.mylyn.docs.intent.client.ui.ide.builder.IntentBuilder">

-          </run>

-       </builder>

-    </extension>

-    <extension

-          id="intentNature"

-          name="Intent Project Nature"

-          point="org.eclipse.core.resources.natures">

-       <runtime>

-          <run

-                class="org.eclipse.mylyn.docs.intent.client.ui.ide.builder.IntentNature">

-          </run>

-       </runtime>

-       <builder

-             id="org.eclipse.mylyn.docs.intent.client.ui.ide.intentBuilder">

-       </builder>

-    </extension>

-    <extension

-          id="xmlProblem"

-          name="XML Problem"

-          point="org.eclipse.core.resources.markers">

-       <super

-             type="org.eclipse.core.resources.problemmarker">

-       </super>

-       <persistent

-             value="true">

-       </persistent>

-    </extension>

-    <extension

-          point="org.eclipse.ui.ide.projectNatureImages">

-       <image

-             icon="icon/ide/nature.gif"

-             id="org.eclipse.mylyn.docs.intent.client.ui.ide.intentNatureImage"

-             natureId="org.eclipse.mylyn.docs.intent.client.ui.ide.intentNature">

-       </image>

-    </extension>

-    <extension

-          point="org.eclipse.ui.newWizards">

-       <category

-             id="org.eclipse.mylyn.docs.intent.client.ui.ide"

-             name="Intent">

-       </category>

-       <wizard

-             category="org.eclipse.mylyn.docs.intent.client.ui.ide"

-             class="org.eclipse.mylyn.docs.intent.client.ui.ide.wizards.NewIntentProjectWizard"

-             icon="icon/ide/toggle_nature.gif"

-             id="org.eclipse.mylyn.docs.intent.client.ui.ide.wizards.NewIntentProjectWizard"

-             name="Intent project"

-             project="true">

-       </wizard>

-    </extension>

-    <extension

-          point="org.eclipse.mylyn.docs.intent.client.ui.ide.template.extension">

-       <IntentDocumentTemplate

-             description="A simple Intent document."

-             name="Default template"

-             template="templates/default.intent">

-       </IntentDocumentTemplate>

-    </extension>

-    <extension

-          point="org.eclipse.mylyn.docs.intent.client.ui.ide.template.extension">

-       <IntentDocumentTemplate

-             description="This templates helps initializing a documentation of a standard software."

-             name="Standard Software Template"

-             template="templates/software.intent">

-       </IntentDocumentTemplate>

-    </extension>

-    <extension

-          point="org.eclipse.mylyn.docs.intent.collab.repository.extension">

-       <Repository

-             id="org.eclipse.mylyn.docs.intent.collab.ide.repository"

-             repositoryCreatorClass="org.eclipse.mylyn.docs.intent.client.ui.ide.repository.IntentWorkspaceRepositoryCreator"

-             repositoryStructurerClass="org.eclipse.mylyn.docs.intent.client.ui.ide.repository.IntentWorkspaceRepositoryStructurer">

-       </Repository>

-    </extension>

-    <extension

-          point="org.eclipse.ui.menus">

-       <menuContribution

-             allPopups="false"

-             locationURI="popup:org.eclipse.ui.popup.any?after=additions">

-          <menu

-                icon="icon/ide/toggle_nature.gif"

-                id="org.eclipse.mylyn.docs.intent.client.ui.ide.menu"

-                label="Intent">

-             <visibleWhen

-                   checkEnabled="false">

-                <test

-                      forcePluginActivation="true"

-                      property="org.eclipse.mylyn.docs.intent.client.ui.ide.isIntentStructuredElement"

-                      value="true">

-                </test>

-             </visibleWhen>

-          </menu>

-       </menuContribution>

-       <menuContribution

-             allPopups="false"

-             locationURI="popup:org.eclipse.ui.projectConfigure?after=additions">

-          <command

-                commandId="org.eclipse.mylyn.docs.intent.client.ui.ide.addNatureCommand"

-                icon="icon/ide/toggle_nature.gif"

-                label="Add Intent Nature"

-                style="push"

-                tooltip="Toggle the Intent Nature on the selected project">

-             <visibleWhen

-                   checkEnabled="false">

-                <iterate>

-                   <adapt

-                         type="org.eclipse.core.resources.IProject">

-                      <and>

-                         <not>

-                            <test

-                                  property="org.eclipse.core.resources.projectNature"

-                                  value="org.eclipse.mylyn.docs.intent.client.ui.ide.intentNature">

-                            </test>

-                         </not>

-                         <test

-                               property="org.eclipse.core.resources.open"

-                               value="true">

-                         </test>

-                      </and>

-                   </adapt>

-                </iterate>

-             </visibleWhen>

-          </command>

-          <command

-                commandId="org.eclipse.mylyn.docs.intent.client.ui.ide.removeNatureCommand"

-                icon="icon/ide/toggle_nature.gif"

-                label="Remove Intent Nature"

-                style="push"

-                tooltip="Toggle the Intent Nature on the selected project">

-             <visibleWhen

-                   checkEnabled="false">

-                <iterate>

-                   <adapt

-                         type="org.eclipse.core.resources.IProject">

-                      <and>

-                         <test

-                               property="org.eclipse.core.resources.open"

-                               value="true">

-                         </test>

-                         <test

-                               property="org.eclipse.core.resources.projectNature"

-                               value="org.eclipse.mylyn.docs.intent.client.ui.ide.intentNature">

-                         </test>

-                      </and>

-                   </adapt>

-                </iterate>

-             </visibleWhen>

-          </command>

-       </menuContribution>

-       <menuContribution

-             allPopups="false"

-             locationURI="popup:org.eclipse.ui.views.ProblemView">

-          <menu

-                icon="icon/ide/toggle_nature.gif"

-                id="org.eclipse.mylyn.docs.intent.client.ui.ide.problemview"

-                label="Intent">

-             <command

-                   commandId="org.eclipse.mylyn.docs.intent.client.ui.ide.problemview.show_editor"

-                   label="Show in Intent Editor"

-                   style="push">

-                <visibleWhen

-                      checkEnabled="false">

-                   <iterate

-                         operator="and">

-                      <test

-                            forcePluginActivation="true"

-                            property="org.eclipse.mylyn.docs.intent.client.ui.ide.isIntentProblemMarker">

-                      </test>

-                   </iterate>

-                </visibleWhen>

-             </command>

-          </menu>

-       </menuContribution>

-    </extension>

-    <extension

-          point="org.eclipse.ui.commands">

-       <command

-             categoryId="org.eclipse.ui.category.file"

-             defaultHandler="org.eclipse.mylyn.docs.intent.client.ui.ide.builder.ToggleNatureAction"

-             id="org.eclipse.mylyn.docs.intent.client.ui.ide.addNatureCommand"

-             name="Add Intent Nature">

-       </command>

-       <command

-             categoryId="org.eclipse.ui.category.file"

-             defaultHandler="org.eclipse.mylyn.docs.intent.client.ui.ide.builder.ToggleNatureAction"

-             id="org.eclipse.mylyn.docs.intent.client.ui.ide.removeNatureCommand"

-             name="Remove Intent Nature">

-       </command>

-       <command

-             category="org.eclipse.ui.views.problems"

-             categoryId="org.eclipse.ui.category.views"

-             defaultHandler="org.eclipse.mylyn.docs.intent.client.ui.ide.navigator.ShowProblemInEditorHandler"

-             id="org.eclipse.mylyn.docs.intent.client.ui.ide.problemview.show_editor"

-             name="Show in Intent Editor">

-       </command>

-    </extension>

-    <extension

-          point="org.eclipse.core.expressions.propertyTesters">

-       <propertyTester

-             class="org.eclipse.mylyn.docs.intent.client.ui.ide.propertytester.IsAssociatedToIntentDocumentTester"

-             id="org.eclipse.mylyn.docs.intent.IntentDocumentPropertyTester"

-             namespace="org.eclipse.mylyn.docs.intent.client.ui.ide"

-             properties="isIntentDocument"

-             type="java.lang.Object">

-       </propertyTester>

-       <propertyTester

-             class="org.eclipse.mylyn.docs.intent.client.ui.ide.propertytester.IsAssociatedToIntentStructuredElementTester"

-             id="org.eclipse.mylyn.docs.intent.IntentStructuredElementPropertyTester"

-             namespace="org.eclipse.mylyn.docs.intent.client.ui.ide"

-             properties="isIntentStructuredElement"

-             type="java.lang.Object">

-       </propertyTester>

-       <propertyTester

-             class="org.eclipse.mylyn.docs.intent.client.ui.ide.propertytester.IsIntentProblemMarker"

-             id="org.eclipse.mylyn.docs.intent.IntentProblemViewPropertyTester"

-             namespace="org.eclipse.mylyn.docs.intent.client.ui.ide"

-             properties="isIntentProblemMarker"

-             type="java.lang.Object">

-       </propertyTester>

-    </extension>

-    <extension

-          point="org.eclipse.mylyn.docs.intent.collab.common.repositorymanagercontribution">

-       <repositorymanagercontribution

-             class="org.eclipse.mylyn.docs.intent.client.ui.ide.repository.IntentProjectBasedRepositoryManagerContribution">

-       </repositorymanagercontribution>

-    </extension>

-   

-   

-   

-   

-

-</plugin>

+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+
+<!--
+Copyright (c) 2011 Obeo.
+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:
+    Obeo - initial API and implementation
+-->
+
+<plugin>
+     <extension-point id="org.eclipse.mylyn.docs.intent.client.ui.ide.template.extension" name="org.eclipse.mylyn.docs.intent.client.ui.ide.template.extension" schema="schema/org.eclipse.mylyn.docs.intent.client.ui.ide.template.exsd"/>
+     
+   <!-- EXTENSIONS OF THE PROJECT EXPLORER -->
+    <extension
+          point="org.eclipse.ui.navigator.viewer">
+        <viewer
+              helpContext="org.eclipse.ui.navigator.ProjectExplorer.help"
+              inheritBindingsFromViewer="org.eclipse.ui.navigator.ProjectExplorer"
+              viewerId="org.eclipse.ui.navigator.ProjectExplorer">
+       </viewer>
+       <viewerContentBinding
+             viewerId="org.eclipse.ui.navigator.ProjectExplorer">
+          <includes>
+             <contentExtension
+                   isRoot="false"
+                   pattern="org.eclipse.mylyn.docs.intent.client.ui.ide.RepositoryContent">
+             </contentExtension>
+          </includes>
+       </viewerContentBinding>
+     
+    </extension>
+    <extension
+          point="org.eclipse.ui.navigator.navigatorContent">
+       <navigatorContent
+             activeByDefault="true"
+             contentProvider="org.eclipse.mylyn.docs.intent.client.ui.ide.navigator.RepositoryContentProvider"
+             icon="icon/ide/workspaceicon.gif"
+             id="org.eclipse.mylyn.docs.intent.client.ui.ide.RepositoryContent"
+             labelProvider="org.eclipse.mylyn.docs.intent.client.ui.ide.navigator.RepositoryLabelProvider"
+             name="Repository Content"
+             priority="highest"
+             providesSaveables="false">
+          <triggerPoints>
+ 			<or>
+            	<adapt type="org.eclipse.core.resources.IProject">
+                	<and>
+                    	<test
+                        	property="org.eclipse.core.resources.projectNature"
+                            value="org.eclipse.mylyn.docs.intent.client.ui.ide.intentNature">
+                        </test>
+                    </and>
+                </adapt>                
+            </or>
+          </triggerPoints>
+ 		<possibleChildren>
+        	<or>
+            <instanceof
+                  value="org.eclipse.mylyn.docs.intent.core.indexer.IntentIndex">
+            </instanceof>
+            <instanceof
+                  value="org.eclipse.mylyn.docs.intent.core.indexer.IntentIndexEntry">
+            </instanceof>         
+        	</or>
+     	</possibleChildren>
+          <actionProvider
+                class="org.eclipse.mylyn.docs.intent.client.ui.ide.navigator.RepositoryActionProvider">
+          </actionProvider>
+       </navigatorContent>
+    </extension>
+    <extension
+          id="intentBuilder"
+          name="Intent Project Builder"
+          point="org.eclipse.core.resources.builders">
+       <builder
+             hasNature="true">
+          <run
+                class="org.eclipse.mylyn.docs.intent.client.ui.ide.builder.IntentBuilder">
+          </run>
+       </builder>
+    </extension>
+    <extension
+          id="intentNature"
+          name="Intent Project Nature"
+          point="org.eclipse.core.resources.natures">
+       <runtime>
+          <run
+                class="org.eclipse.mylyn.docs.intent.client.ui.ide.builder.IntentNature">
+          </run>
+       </runtime>
+       <builder
+             id="org.eclipse.mylyn.docs.intent.client.ui.ide.intentBuilder">
+       </builder>
+    </extension>
+    <extension
+          id="xmlProblem"
+          name="XML Problem"
+          point="org.eclipse.core.resources.markers">
+       <super
+             type="org.eclipse.core.resources.problemmarker">
+       </super>
+       <persistent
+             value="true">
+       </persistent>
+    </extension>
+    <extension
+          point="org.eclipse.ui.ide.projectNatureImages">
+       <image
+             icon="icon/ide/nature.gif"
+             id="org.eclipse.mylyn.docs.intent.client.ui.ide.intentNatureImage"
+             natureId="org.eclipse.mylyn.docs.intent.client.ui.ide.intentNature">
+       </image>
+    </extension>
+    <extension
+          point="org.eclipse.ui.newWizards">
+       <category
+             id="org.eclipse.mylyn.docs.intent.client.ui.ide"
+             name="Intent">
+       </category>
+       <wizard
+             category="org.eclipse.mylyn.docs.intent.client.ui.ide"
+             class="org.eclipse.mylyn.docs.intent.client.ui.ide.wizards.NewIntentProjectWizard"
+             icon="icon/ide/toggle_nature.gif"
+             id="org.eclipse.mylyn.docs.intent.client.ui.ide.wizards.NewIntentProjectWizard"
+             name="Intent project"
+             project="true">
+       </wizard>
+    </extension>
+    <extension
+          point="org.eclipse.mylyn.docs.intent.client.ui.ide.template.extension">
+       <IntentDocumentTemplate
+             description="A simple Intent document."
+             name="Default template"
+             template="templates/default.intent">
+       </IntentDocumentTemplate>
+    </extension>
+    <extension
+          point="org.eclipse.mylyn.docs.intent.client.ui.ide.template.extension">
+       <IntentDocumentTemplate
+             description="This templates helps initializing a documentation of a standard software."
+             name="Standard Software Template"
+             template="templates/software.intent">
+       </IntentDocumentTemplate>
+    </extension>
+    <extension
+          point="org.eclipse.mylyn.docs.intent.collab.repository.extension">
+       <Repository
+             id="org.eclipse.mylyn.docs.intent.collab.ide.repository"
+             repositoryCreatorClass="org.eclipse.mylyn.docs.intent.client.ui.ide.repository.IntentWorkspaceRepositoryCreator"
+             repositoryStructurerClass="org.eclipse.mylyn.docs.intent.client.ui.ide.repository.IntentWorkspaceRepositoryStructurer">
+       </Repository>
+    </extension>
+    <extension
+          point="org.eclipse.ui.menus">
+       <menuContribution
+             allPopups="false"
+             locationURI="popup:org.eclipse.ui.popup.any?after=additions">
+          <menu
+                icon="icon/ide/toggle_nature.gif"
+                id="org.eclipse.mylyn.docs.intent.client.ui.ide.menu"
+                label="Intent">
+             <visibleWhen
+                   checkEnabled="false">
+                <test
+                      forcePluginActivation="true"
+                      property="org.eclipse.mylyn.docs.intent.client.ui.ide.isIntentStructuredElement"
+                      value="true">
+                </test>
+             </visibleWhen>
+          </menu>
+       </menuContribution>
+       <menuContribution
+             allPopups="false"
+             locationURI="popup:org.eclipse.ui.projectConfigure?after=additions">
+          <command
+                commandId="org.eclipse.mylyn.docs.intent.client.ui.ide.addNatureCommand"
+                icon="icon/ide/toggle_nature.gif"
+                label="Add Intent Nature"
+                style="push"
+                tooltip="Toggle the Intent Nature on the selected project">
+             <visibleWhen
+                   checkEnabled="false">
+                <iterate>
+                   <adapt
+                         type="org.eclipse.core.resources.IProject">
+                      <and>
+                         <not>
+                            <test
+                                  property="org.eclipse.core.resources.projectNature"
+                                  value="org.eclipse.mylyn.docs.intent.client.ui.ide.intentNature">
+                            </test>
+                         </not>
+                         <test
+                               property="org.eclipse.core.resources.open"
+                               value="true">
+                         </test>
+                      </and>
+                   </adapt>
+                </iterate>
+             </visibleWhen>
+          </command>
+          <command
+                commandId="org.eclipse.mylyn.docs.intent.client.ui.ide.removeNatureCommand"
+                icon="icon/ide/toggle_nature.gif"
+                label="Remove Intent Nature"
+                style="push"
+                tooltip="Toggle the Intent Nature on the selected project">
+             <visibleWhen
+                   checkEnabled="false">
+                <iterate>
+                   <adapt
+                         type="org.eclipse.core.resources.IProject">
+                      <and>
+                         <test
+                               property="org.eclipse.core.resources.open"
+                               value="true">
+                         </test>
+                         <test
+                               property="org.eclipse.core.resources.projectNature"
+                               value="org.eclipse.mylyn.docs.intent.client.ui.ide.intentNature">
+                         </test>
+                      </and>
+                   </adapt>
+                </iterate>
+             </visibleWhen>
+          </command>
+       </menuContribution>
+       <menuContribution
+             allPopups="false"
+             locationURI="popup:org.eclipse.ui.views.ProblemView">
+          <menu
+                icon="icon/ide/toggle_nature.gif"
+                id="org.eclipse.mylyn.docs.intent.client.ui.ide.problemview"
+                label="Intent">
+             <command
+                   commandId="org.eclipse.mylyn.docs.intent.client.ui.ide.problemview.show_editor"
+                   label="Show in Intent Editor"
+                   style="push">
+                <visibleWhen
+                      checkEnabled="false">
+                   <iterate
+                         operator="and">
+                      <test
+                            forcePluginActivation="true"
+                            property="org.eclipse.mylyn.docs.intent.client.ui.ide.isIntentProblemMarker">
+                      </test>
+                   </iterate>
+                </visibleWhen>
+             </command>
+          </menu>
+       </menuContribution>
+    </extension>
+    <extension
+          point="org.eclipse.ui.commands">
+       <command
+             categoryId="org.eclipse.ui.category.file"
+             defaultHandler="org.eclipse.mylyn.docs.intent.client.ui.ide.builder.ToggleNatureAction"
+             id="org.eclipse.mylyn.docs.intent.client.ui.ide.addNatureCommand"
+             name="Add Intent Nature">
+       </command>
+       <command
+             categoryId="org.eclipse.ui.category.file"
+             defaultHandler="org.eclipse.mylyn.docs.intent.client.ui.ide.builder.ToggleNatureAction"
+             id="org.eclipse.mylyn.docs.intent.client.ui.ide.removeNatureCommand"
+             name="Remove Intent Nature">
+       </command>
+       <command
+             category="org.eclipse.ui.views.problems"
+             categoryId="org.eclipse.ui.category.views"
+             defaultHandler="org.eclipse.mylyn.docs.intent.client.ui.ide.navigator.ShowProblemInEditorHandler"
+             id="org.eclipse.mylyn.docs.intent.client.ui.ide.problemview.show_editor"
+             name="Show in Intent Editor">
+       </command>
+    </extension>
+    <extension
+          point="org.eclipse.core.expressions.propertyTesters">
+       <propertyTester
+             class="org.eclipse.mylyn.docs.intent.client.ui.ide.propertytester.IsAssociatedToIntentDocumentTester"
+             id="org.eclipse.mylyn.docs.intent.IntentDocumentPropertyTester"
+             namespace="org.eclipse.mylyn.docs.intent.client.ui.ide"
+             properties="isIntentDocument"
+             type="java.lang.Object">
+       </propertyTester>
+       <propertyTester
+             class="org.eclipse.mylyn.docs.intent.client.ui.ide.propertytester.IsAssociatedToIntentStructuredElementTester"
+             id="org.eclipse.mylyn.docs.intent.IntentStructuredElementPropertyTester"
+             namespace="org.eclipse.mylyn.docs.intent.client.ui.ide"
+             properties="isIntentStructuredElement"
+             type="java.lang.Object">
+       </propertyTester>
+       <propertyTester
+             class="org.eclipse.mylyn.docs.intent.client.ui.ide.propertytester.IsIntentProblemMarker"
+             id="org.eclipse.mylyn.docs.intent.IntentProblemViewPropertyTester"
+             namespace="org.eclipse.mylyn.docs.intent.client.ui.ide"
+             properties="isIntentProblemMarker"
+             type="java.lang.Object">
+       </propertyTester>
+    </extension>
+    <extension
+          point="org.eclipse.mylyn.docs.intent.collab.common.repositorymanagercontribution">
+       <repositorymanagercontribution
+             class="org.eclipse.mylyn.docs.intent.client.ui.ide.repository.IntentProjectBasedRepositoryManagerContribution">
+       </repositorymanagercontribution>
+    </extension>
+   
+    <extension
+        point="org.eclipse.ui.navigator.linkHelper">
+     <linkHelper
+           class="org.eclipse.mylyn.docs.intent.client.ui.ide.navigator.IntentLinkHelper"
+           id="org.eclipse.mylyn.docs.intent.client.ui.ide.linkhelper">
+        <editorInputEnablement>
+           <instanceof
+                 value="org.eclipse.mylyn.docs.intent.client.ui.editor.IntentEditorInput">
+           </instanceof>
+        </editorInputEnablement>
+        <selectionEnablement>
+                 <or>
+                    <instanceof
+                          value="org.eclipse.core.resources.IProject">
+                    </instanceof>
+                    <instanceof
+                          value="org.eclipse.mylyn.docs.intent.core.indexer.IntentIndexEntry">
+                    </instanceof>
+                 </or>
+        </selectionEnablement>
+     </linkHelper>
+  </extension>
+     <extension
+        point="org.eclipse.ui.navigator.viewer">
+     <viewerContentBinding
+           viewerId="org.eclipse.ui.navigator.ProjectExplorer">
+        <includes>
+           <contentExtension
+                 pattern="org.eclipse.mylyn.docs.intent.client.ui.ide.*">
+           </contentExtension>
+        </includes>
+     </viewerContentBinding>   
+  </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/navigator/IntentLinkHelper.java b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/navigator/IntentLinkHelper.java
new file mode 100644
index 0000000..8c842f2
--- /dev/null
+++ b/plugins/org.eclipse.mylyn.docs.intent.client.ui.ide/src/org/eclipse/mylyn/docs/intent/client/ui/ide/navigator/IntentLinkHelper.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2010, 2011 Obeo.
+ * 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:
+ *     Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.mylyn.docs.intent.client.ui.ide.navigator;
+
+import java.util.ArrayList;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.mylyn.docs.intent.client.ui.editor.IntentEditor;
+import org.eclipse.mylyn.docs.intent.client.ui.editor.IntentEditorInput;
+import org.eclipse.mylyn.docs.intent.client.ui.ide.builder.IntentNature;
+import org.eclipse.mylyn.docs.intent.client.ui.utils.IntentEditorOpener;
+import org.eclipse.mylyn.docs.intent.collab.common.query.IndexQuery;
+import org.eclipse.mylyn.docs.intent.collab.common.query.IntentDocumentQuery;
+import org.eclipse.mylyn.docs.intent.collab.common.repository.IntentRepositoryManager;
+import org.eclipse.mylyn.docs.intent.collab.handlers.adapters.RepositoryAdapter;
+import org.eclipse.mylyn.docs.intent.collab.ide.repository.WorkspaceConfig;
+import org.eclipse.mylyn.docs.intent.collab.ide.repository.WorkspaceRepository;
+import org.eclipse.mylyn.docs.intent.collab.repository.RepositoryConnectionException;
+import org.eclipse.mylyn.docs.intent.core.indexer.IntentIndexEntry;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.navigator.ILinkHelper;
+
+/**
+ * An {@link ILinkHelper} allowing to link Intent Editors with the Intent Document structure displayed in the
+ * Project explorer.
+ * 
+ * @author <a href="mailto:alex.lagarde@obeo.fr">Alex Lagarde</a>
+ */
+public class IntentLinkHelper implements ILinkHelper {
+
+	/**
+	 * {@inheritDoc}
+	 * 
+	 * @see org.eclipse.ui.navigator.ILinkHelper#findSelection(org.eclipse.ui.IEditorInput)
+	 */
+	public IStructuredSelection findSelection(IEditorInput anInput) {
+		ArrayList<Object> elementsToSelect = new ArrayList<Object>();
+
+		// To avoid expanding the whole document hierarchy, always return the IndexEntry referencing the
+		// document
+		RepositoryAdapter repositoryAdapter = ((IntentEditorInput)anInput).getRepositoryAdapter();
+		Object[] index = new IndexQuery(repositoryAdapter).getOrCreateIntentIndex().getEntries().toArray();
+		for (int i = 0; i < index.length; i++) {
+			elementsToSelect.add(index[i]);
+		}
+
+		// Also add the Intent project to the selection
+		if (repositoryAdapter.getRepository() instanceof WorkspaceRepository) {
+			WorkspaceConfig workspaceConfig = ((WorkspaceRepository)repositoryAdapter.getRepository())
+					.getWorkspaceConfig();
+			String projectName = workspaceConfig.getRepositoryAbsolutePath()
+					.replace(workspaceConfig.getRepositoryRelativePath(), "").replaceFirst("/", "");
+			IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
+			if (project.exists()) {
+				elementsToSelect.add(project);
+			}
+		}
+		return new StructuredSelection(elementsToSelect.toArray(new Object[elementsToSelect.size()]));
+	}
+
+	/**
+	 * {@inheritDoc}
+	 * 
+	 * @see org.eclipse.ui.navigator.ILinkHelper#activateEditor(org.eclipse.ui.IWorkbenchPage,
+	 *      org.eclipse.jface.viewers.IStructuredSelection)
+	 */
+	public void activateEditor(IWorkbenchPage aPage, IStructuredSelection aSelection) {
+		Object selectedElement = aSelection.getFirstElement();
+		IntentEditor alreadyOpenedEditor = null;
+
+		if (selectedElement instanceof IntentIndexEntry) {
+			alreadyOpenedEditor = IntentEditorOpener
+					.getAlreadyOpenedEditor(((IntentIndexEntry)selectedElement).getReferencedElement());
+		}
+		// This case can never happen if jdt is installed, as LinkEditorAction.activateEditorJob only takes
+		// the first linkhelper available (if installed, the JDT for an IProject)
+		else if (selectedElement instanceof IProject) {
+			try {
+				if (((IProject)selectedElement).hasNature(IntentNature.NATURE_ID)) {
+
+					RepositoryAdapter adapter = IntentRepositoryManager.INSTANCE.getRepository(
+							((IProject)selectedElement).getName()).createRepositoryAdapter();
+					alreadyOpenedEditor = IntentEditorOpener.getAlreadyOpenedEditor(new IntentDocumentQuery(
+							adapter).getOrCreateIntentDocument());
+
+				}
+			} catch (RepositoryConnectionException e) {
+				// Silent catch
+			} catch (CoreException e) {
+				// Silent catch
+			}
+		}
+
+		if (alreadyOpenedEditor != null) {
+			aPage.bringToTop(alreadyOpenedEditor);
+		}
+	}
+}