プラグイン(6) 拡張ポイントを探す
Eclipseプラグインは拡張ポイントにいろいろと差し込んでワークスペース全体とプラグインを結合しているらしい。
拡張ポイントはそれこそ無数にあるので、「同じ機能を持った小さめのプラグイン」がどの拡張ポイントを利用しているか探す。
今回の目標は、「リソースのProperties」に項目を追加する方法について探す。
同じ機能を持った小さめのプラグインを探す
簡単なプロジェクトのPropertiesを見ると、次の項目がある。
- Resource
- Builders
- Checkstyle
- Java Build Path
- Java Code Style
- Java Compiler
- Java Editor
- Javadoc Location
- Project References
- Run/Debug Settings
- Task Tags
- TPTP JUnit Test
- Validation
この中で、Resources, とJDTに癒着してなさそうなのは、次くらいかな。
- Checkstyle
- TPTP JUnit Test
- Validation
ただ、Validationは一般的な名前すぎてどのプラグインが頑張っているのか不明。
パースペクティブをPDEにして、Search > Search > Plug-in Search (Tab)
- Search string: *checkstyle*
- Search For: Plug-in
- Limit To: Declarations
- Search
すると、com.atlassw.tools.eclipse.checkstyle というプラグインが引っ掛かる。たぶんこいつだろう。
なお、TPTPを探すとひどいくらいヒットするのであきらめた。
利用している拡張ポイントからあたりを付ける
検索にヒットした com.atlassw.tools.eclipse.checkstyle を開くと、MANIFEST.MFが開くので、Extensions ペインを見る。
この All Extensions には次のような拡張ポイントが使われている。
- org.eclipse.ui.startup
- org.eclipse.help.toc
- org.eclipse.core.runtime.preferences
- org.eclipse.ui.preferencePages
- org.eclipse.ui.propertyPages
- org.eclipse.resources.builders
- org.eclipse.resources.natures
- org.eclipse.resources.marksers
- org.eclipse.ui.ide.markerResolution
- org.eclipse.ui.editors.annotationTypes
- org.eclipse.ui.editors.markerAnnotationSpecification
- org.eclipse.ui.jdt.ui.javaEditorTextHovers
- com.atlassw.tools.eclipse.checkstyle.configurationtypes
- com.atlassw.tools.eclipse.checkstyle.configurations
- com.atlassw.tools.eclipse.checkstyle.filters
- com.atlassw.tools.eclipse.checkstyle.saveFilters
- org.eclipse.ui.views
- org.eclipse.ui.ide.markerSupport
- org.eclipse.ui.popupMenus
- org.eclipse.ui.commands
- org.eclipse.ui.views
- org.eclipse.ui.bindings
- org.eclipse.ui.popupMenus
- org.eclipse.ui.popupMenus
気になるのはこの辺。それぞれ「Show extension point description」の説明をつけておく。
- org.eclipse.ui.propertyPages
- This extension point is used to add additional property page for objects of a given type. Once defined, these property pages will appear in the Properties Dialog for objects of that type.
たぶんこれ。Exampleもこんな感じ。
<extension point="org.eclipse.ui.propertyPages"> <page id="com.xyz.projectPage" name="XYZ Java Properties" class="com.xyz.ppages.JavaPropertyPage" nameFilter="*.java"> <enabledWhen> <instanceof value="org.eclipse.core.resources.IFile"> </instanceof> </enabledWhen> <filter name="readOnly" value="true"/> </page> </extension>
とりあえず作ってみるのが早いかな。