プラグイン(6) 拡張ポイントを探す

Eclipseプラグインは拡張ポイントにいろいろと差し込んでワークスペース全体とプラグインを結合しているらしい。
拡張ポイントはそれこそ無数にあるので、「同じ機能を持った小さめのプラグイン」がどの拡張ポイントを利用しているか探す。

今回の目標は、「リソースのProperties」に項目を追加する方法について探す。

同じ機能を持った小さめのプラグインを探す

簡単なプロジェクトのPropertiesを見ると、次の項目がある。

  1. Resource
  2. Builders
  3. Checkstyle
  4. Java Build Path
  5. Java Code Style
  6. Java Compiler
  7. Java Editor
  8. Javadoc Location
  9. Project References
  10. Run/Debug Settings
  11. Task Tags
  12. TPTP JUnit Test
  13. Validation

この中で、Resources, とJDTに癒着してなさそうなのは、次くらいかな。

ただ、Validationは一般的な名前すぎてどのプラグインが頑張っているのか不明。

パースペクティブをPDEにして、Search > Search > Plug-in Search (Tab)

  1. Search string: *checkstyle*
  2. Search For: Plug-in
  3. Limit To: Declarations
  4. Search

すると、com.atlassw.tools.eclipse.checkstyle というプラグインが引っ掛かる。たぶんこいつだろう。

なお、TPTPを探すとひどいくらいヒットするのであきらめた。

利用している拡張ポイントからあたりを付ける

検索にヒットした com.atlassw.tools.eclipse.checkstyle を開くと、MANIFEST.MFが開くので、Extensions ペインを見る。

この All Extensions には次のような拡張ポイントが使われている。

  1. org.eclipse.ui.startup
  2. org.eclipse.help.toc
  3. org.eclipse.core.runtime.preferences
  4. org.eclipse.ui.preferencePages
  5. org.eclipse.ui.propertyPages
  6. org.eclipse.resources.builders
  7. org.eclipse.resources.natures
  8. org.eclipse.resources.marksers
  9. org.eclipse.ui.ide.markerResolution
  10. org.eclipse.ui.editors.annotationTypes
  11. org.eclipse.ui.editors.markerAnnotationSpecification
  12. org.eclipse.ui.jdt.ui.javaEditorTextHovers
  13. com.atlassw.tools.eclipse.checkstyle.configurationtypes
  14. com.atlassw.tools.eclipse.checkstyle.configurations
  15. com.atlassw.tools.eclipse.checkstyle.filters
  16. com.atlassw.tools.eclipse.checkstyle.saveFilters
  17. org.eclipse.ui.views
  18. org.eclipse.ui.ide.markerSupport
  19. org.eclipse.ui.popupMenus
  20. org.eclipse.ui.commands
  21. org.eclipse.ui.views
  22. org.eclipse.ui.bindings
  23. org.eclipse.ui.popupMenus
  24. 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>

とりあえず作ってみるのが早いかな。