Eclipse RCP CookbookパヌトI

この蚘事では、Eclipseリッチクラむアントプラットフォヌムずは䜕か、どのように機胜するのか、たた䜕を䜿甚するのかを説明したす。 あなたがあなた自身のRCPを䜜成する方法に぀いおのチュヌトリアルを探しおいるなら、 ここにいるので泚意しおください、私はそれが内郚からどのように働くかを䌝えたいです。



はじめに



長い歎史を持぀Eclipse RCP党䜓を1぀の投皿で芋るこずはほずんど䞍可胜なので、たずはワヌクスペヌスプラグむン、プラグむン、それらの間の䟝存関係、ランタむムなど、プラットフォヌムの基本抂念を匷調したいず思いたす。

本文では、有甚な文献、特に蚘事ぞのリンクを瀺したす

Lars Vogellaは、Eclipseテクノロゞヌの䞖界で有名な講挔者であり、Eclipseコミュニティヌから繰り返し賞を受賞しおいたす。



日食



Eclipseは、IDEを䜜成するための拡匵可胜なプラットフォヌムです。 プラットフォヌムはプラグむンで拡匵され、それぞれがEclipseの動䜜を補完できたす。 たずえば、新しい゚ディタヌ、メニュヌ項目などを远加したす。



䜜業゚リア







ワヌクベンチは、Eclipseプラットフォヌムのグラフィカル衚珟のルヌト芁玠です。 ナヌザヌに䜕らかのモデルを提䟛する1぀たたは耇数のりィンドり ワヌクベンチりィンドり を含めるこずができたす。 ほずんどの堎合、これらはワヌクスペヌスに保存されおいるリ゜ヌスです。 [りィンドり]→[新しいりィンドり]を䜿甚しお、新しいりィンドりを開くこずができたす。

各りィンドりには、ペヌゞのコレクション ワヌクベンチペヌゞ ずアクティブペヌゞぞのリンクが含たれ、1぀のりィンドりでアクティブにできるのは1ペヌゞのみです。

゚ディタヌずビュヌは、適切なマネヌゞャヌ ViewFactory、EditorManager を䜿甚しおペヌゞに保存されたす。 ゚ディタヌずビュヌには共通のむンタヌフェむスがありたす-IWorkbenchPart 、次に䜜業郚分。 ワヌクスペヌスぱディタヌずビュヌぞのリンクを保存したせんが、EditorReferenceやViewReference などの䞭間オブゞェクトを䜿甚したす。 これにより、 遅延初期化を䜿甚しおプラグむンをロヌドできたす。 たずえば、次のスクリヌンショットでは、階局ビュヌ、Javadocビュヌ、および宣蚀ビュヌを定矩するプラグむンはただ䜿甚されおいないため、ただロヌドされおいない可胜性がありたす。







ビュヌず゚ディタヌは互いに非垞に䌌おおり、ペヌゞの䞀郚であり、メニュヌずボタンを䜜成するためのメカニズムは同じです。どちらもいく぀かのファむルのコンテンツを衚瀺できたすが、抂念的な違いはありたす。 ビュヌずは異なり、゚ディタヌの耇数のむンスタンスを1ペヌゞに䜜成できたす。 ゚ディタヌはファむルの倉曎のステヌタス dirty を衚瀺でき、保存せずに゚ディタヌを閉じるず倱われる可胜性のある未保存の倉曎があるこずを報告できたす。



ペヌゞには倚くの芖点も含たれおいたす 。 パヌスペクティブは、パヌツのコレクション、ペヌゞ䞊の盞察的な䜍眮、コマンドのキヌボヌドショヌトカット、メニュヌの可芖性などを含むペヌゞテンプレヌトです。 コマンドりィンドり→パヌスペクティブのカスタマむズを䜿甚しお、パヌスペクティブをカスタマむズできたす。

ナヌザヌ蚭定に関する情報は、 [workspace] /。Metadata / .plugins / org.eclipse.ui.workbench /ディレクトリに保存されたす 。 これらのファむルを䜿甚するず、さたざたな䜜業領域でパヌスペクティブ蚭定を䜿甚できたす。 ただし、ワヌクスペヌスを切り替えるずきに蚭定をコピヌするオプションを䜿甚するこずをお勧めしたす。



ワヌクスペヌスに぀いおはこちらを、詳现はこちらをお読みください 。



プラグむン



プラグむンは、ワヌクスペヌスのコンテキスト内で特定のサヌビスを提䟛するコンポヌネントです。 プラグむンの䟋は、開発者がプロ​​グラムをデバッグできるorg.eclipse.debug.coreず、前者のグラフィカルな衚珟を含むorg.eclipse.debug.uiです。



プラグむンの説明は、プラグむンフォルダヌにある特別なXMLファむルplugin.xmlで行われたす。 このファむルは、プラグむンがEclipseプラットフォヌムを拡匵する方法゚ディタヌ、ビュヌ、コンテキストメニュヌを説明する、およびその方法を「䟝存関係」セクションで説明したす。 プラグむンの実装コヌドは、プラグむンの起動時にのみロヌドされ、再び初期化が遅延したす。 このようにしお、Eclipseはプラグむン拡匵機胜を盎接ダりンロヌドせずに衚瀺できたす。



plugin.xmlの䟋は、蚘事「プラグむンマニフェストファむルplugin.xmlずは」に蚘茉されおいたす。



<?xml version="1.0" encoding="UTF-8"?> <?eclipse version="3.4"?> <plugin> <extension point="org.eclipse.ui.views"> <view class="com.xyz.myplugin.ViewPart" id="com.xyz.myplugin.testview" name="Test View"> </view> </extension> </plugin>
      
      







ランタむム環境



Eclipseランタむムは、プラグむンのラむフサむクルを制埡する機胜を提䟛したす。 プラグむンは必芁な堎合にのみロヌドされ、同様に無効になりたす。 同時に、起動されたEclipse内でプラグむンのむンスタンスが䜜成され、プラグむンのクラス org.eclipse.core.runtime.Plugin が察話ポむントず芋なされ、アクティベヌタヌずも呌ばれたす。 アクティベヌタの䞻な機胜は、プラグむンの起動䞭に远加のアクションを実行するこずです画像の初期化、特定の静的リ゜ヌスのキャッシュなど。 远加のアクションを実行する必芁がない堎合、アクティベヌタヌを指定するこずはできず、暙準のアクティベヌタヌが䜿甚されたす。 アクティベヌタヌの詳现に぀いおは、 こちらをご芧ください 。 Eclipseランタむムは、OSGi仕様を実装しおいたす。



OSGiOpen Services Gateway Initiativeは、耇雑なシステムをモゞュヌル バンドル に分割し、システムを再起動せずにこれらのモゞュヌルをリモヌトでむンストヌル、曎新、たたは削陀できるようにする仕様です。 各モゞュヌルには、他のモゞュヌルに察する䟝存関係のセットず、他のモゞュヌルず察話するための厳密に定矩されたAPIがありたす。

技術的には、モゞュヌルはMETA-INF / MANIFEST.MFモゞュヌルに栌玍されおいる远加のメタ情報を含む.jarファむルであり、このファむルはjarファむルの仕様の䞀郚です。 非OSGiランタむム環境は、これらのファむルを無芖したす。



OSGiは、バンドル、サヌビス、ラむフサむクル、サヌビスレゞストリなどのコンポヌネントに぀いおも説明したす。 OSGiアヌキテクチャは次のずおりです。



画像



Eclipseに加えお、OSGiには、 Apache Felix 、 Knopflerfish 、 Concierge OSGiなどの実装がいく぀かありたす。 OSGiの詳现に぀いおは、 公匏Webサむト 、 wiki 、およびLarsを参照しおください 。



゚クむノックス



EclipseでのOSGiの実装は、哲孊的にEquinoxず呌ばれたす。 したがっお、プラグむンはOSGiモゞュヌルであり、そのメタ情報は次のずおりです。



 Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Test Plug-in Bundle-SymbolicName: com.xyz.myplugin; singleton:=true Bundle-Version: 1.0.0 Bundle-Activator: com.xyz.MyPlugin Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.6
      
      





Equinoxは、実行時にモゞュヌル間の䟝存関係を管理したす。 むンストヌル䞭にMANIFEST.MFモゞュヌルを読み取り、すべおの䟝存モゞュヌルが既にロヌドされおいるこずを確認しおから、芁求されたモゞュヌルをアクティブにしたす。 䟝存関係がない堎合、モゞュヌルはロヌドされたせん。 モゞュヌルが䟝存関係なしにクラスにアクセスしようずするず、ClassNotFoundExceptionがスロヌされたす。

OSGiはプラグむンをアクティブにするために䜿甚できたす 。プラグむンは、個別のプラグむンフォルダヌeclipse_install_dir / pluginsにありたす 。



䟝存関係



盎接的な関係


この圹割は、䟝存する必芁なプラグむンによっお果たされたす。 叀兞的な盎接䟝存関係は、MANIFEST.MFプラグむンのメタデヌタで説明されおいたす。

䟝存関係は、実行時だけでなく、コンパむル時にも決定されたす。 実行時に、Eclipseは必芁なすべおの䟝存関係が䟝存モゞュヌルで利甚可胜であるこずを確認し、それをアクティブ化するだけです。 コンパむル時に、Eclipseはそれに応じお䟝存プラグむンのクラスパスを倉曎したす。



延長




Eclipseで最もよく䜿甚されおいる䟝存関係の1぀は、 拡匵ポむントず呌ばれたす。 ポむントは、他のプラグむンに盎接䟝存せずに、ホストのホスト機胜を拡匵するために䜿甚されたす。 拡匵機胜ず拡匵ポむントは、プラグむン蚘述ファむルplugin.xmlに蚘述されおいたす。

拡匵ポむントを定矩するプラグむンにより、他のプラグむンが拡匵機胜の説明に基づいお機胜を远加できたす。 拡匵は、コヌドたたはデヌタのいずれかです。



拡匵ポむントの良い䟋は、電源ネットワヌクです。その䞭の拡匵ポむントは、電源の他の芁玠ランプ、コンピュヌタヌ、アむロンを接続できる゜ケットで、電源の機胜を拡匵したす。 この堎合、各デバむスには電源ネットワヌクず䞀臎するデバむスが必芁です。そうでない堎合、接続できたせん。



䟋を続けお、 org.eclipse.uiモゞュヌルは、「゚ディタヌ」、「ビュヌ」、「メニュヌ」などの倚くの拡匵ポむントを蚘述したす。 同時に、別のプラグむンorg.eclipse.help.uiがありたす。このプラグむンは、メニュヌ項目「Help-> Help Contents」を远加したす。 これを行うには、次の拡匵機胜に぀いお説明したす



 <extension point="org.eclipse.ui.actionSets"> <actionSet description="%actionSet.description" id="org.eclipse.help.ui.actions" label="%actionSet.label" visible="true"> <action class="org.eclipse.help.ui.internal.DynamicHelpAction" icon="$nl$/icons/etool16/help.gif" id="org.eclipse.help.ui.dynamicHelp" label="%searchAction.label" style="push" toolbarPath="org.eclipse.ui.workbench.navigate" tooltip="%dynamicHelpAction.tooltip"/> </actionSet> </extension>
      
      









拡匵ポむントで理解できない瞬間がある堎合は、プラグむンの盞互䜜甚のメカニズムが基本であるため、理解するこずをお勧めしたす。

ですから、 ここ 、 ここ 、そしお䟋を䜿っお詳现を読んで ください 。 プラットフォヌム拡匵ポむントのリストはここに提瀺されたす 。



プラグむンは、既存の拡匵ポむントを䜿甚するこずに加えお、新しい拡匵ポむントを定矩できたす。 ポむントは、* .exsdおよび察応する拡匵ポむントタグを䜿甚しお、説明ファむルぞのリンクを䜿甚しお説明されたす。



 <extension-point id="com.xyz.myplugin.ext" name="Test Extension Point" schema="schema/myextpoint.exsd"/>
      
      





このファむルは、拡匵機胜ずホスト間のむンタヌフェヌス、぀たり特定のむンタヌフェヌスを実装する必芁なデヌタやクラスを蚘述したす。

Larsずこちらで、独自の拡匵ポむントの䜜成に぀いお詳しく説明したす 。



䟿利なリンク



䞀般的な日食プログラミング



Eclipse 4 RCP-Lars Vogelによるチュヌトリアル

Eclipseリッチクラむアントプラットフォヌム第2版

Eclipseプラグむン開発のトップ10の間違い



Eclipseプラットフォヌム



Eclipse APIの䜿甚方法

Eclipseプラグむンアヌキテクチャに関する泚意



゚クリプスUI

ワヌクベンチ内

Eclipseナヌザヌむンタヌフェむスガむドラむン



それで䜕



䞀般の人がアプリケヌション開発プラットフォヌムずしおのEclipseに぀いおもっず知りたいなら、私は蚘事を曞き続けお以䞋の技術に光を圓おるこずができたす。





ただし、たず、あなたにずっお䜕が面癜いかを知りたいず思いたす。おそらく、開発ツヌル、その抂念、機胜、たたはEclipseプラグむンを䜜成する䞀連のチュヌトリアルを実斜する理論を掘り䞋げお、䞊行しお開発の理論的偎面アむデア、 Eclipseにプラグむンがありたせん、歓迎したす。



All Articles