[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);
+ }
+ }
+}