シンプルなEclipse RCPアプリケヌションの開発

この蚘事では、Eclipse RCPRich Client Platformを䜿甚しおアプリケヌションを䜜成する方法に぀いおお話ししたかったのです。 執筆の理由は、このプラットフォヌムに぀いお蚘述したHabréの蚘事がたったくないずいう事実でした。 䟋ずしお、カスタム入力フォヌムを䜜成したす。 デヌタは、JFace Data Bindingフレヌムワヌクを䜿甚しお怜蚌されたす。 シヌドに぀いおは、以䞋にスクリヌンショットを提䟛したす。




Eclipse RCPずは
プラットフォヌムの長所ず短所
仕事を始める
必芁なプラグむンをむンストヌルする
プロゞェクト䜜成
プロゞェクト構造
プロゞェクトの開始
ビュヌを远加する
拡匵機胜を远加
カスタマむズを衚瀺
ビュヌのレむアりト蚭定
ビュヌを远加したアプリケヌションの起動
圹立぀リ゜ヌスぞのリンク

Eclipse RCPずは


そもそも、Eclipse RCPずは䜕かを正確に蚀う必芁がありたす。 Eclipseは、Eclipse FoundationIBM、SAP、Oracle、Eclipse RCPベヌスの補品を提䟛し、Google、RedHat、Adobe、Cisco、Intelの゚コシステムの開発に参加しおいる䌁業を含むによっお開発およびサポヌトされおいるJavaで曞かれた開発環境です。 Eclipse RCPは、いわゆるリッチクラむアントアプリケヌションを䜜成するためのプラグむンのセットです。 Eclipse IDEを開いたずきにナヌザヌに衚瀺されるのは、このプラットフォヌムに基づいお䜜成されたプラグむンのみです。 ナヌザヌは既存の膚倧な数のプラグむンに基づいおプラグむンを䜜成でき、必芁に応じお、Hibernate、Google Guice、Google Guava、JUnit、TestNGなどの䞀般的なフレヌムワヌクのほずんどをプラグむンの圢匏で芋぀けるこずができたす。 たた、ランタむムアヌキテクチャがOSGIサヌビスプラットフォヌムの仕様に基づいおいるこずにも泚意しおください。この仕様では、モゞュラヌアプリケヌションの䜜成および操䜜方法に぀いお説明したす。 前述のように、EclipseはJavaで蚘述され、クロスプラットフォヌム補品ずしお䜍眮付けられおいたす90の堎合、RCPアプリケヌションはWindows、Linux、およびMac䞊に構築されたす。 プラットフォヌムのコアを構成するすべおのプラグむン、およびほずんどのサヌドパヌティプラグむンは、EPLEclipse Public Licenseの䞋で配垃されたす。 RCPアプリケヌションのナヌザヌむンタヌフェむスは、SWTおよびJFaceフレヌムワヌクのビゞュアルコンポヌネントず、独自のEclipseりィゞェットに基づいおいたす。 以䞋の図は、RCPプラットフォヌムアプリケヌションの構成芁玠ずEclipseプラットフォヌム自䜓の構造を瀺しおいたす。


図1-RCPアプリケヌションで䜿甚されるコンポヌネントこのサむトから取埗した図


図2-Eclipseアヌキテクチャこのサむトから匕甚した図

プラットフォヌムの長所ず短所

䞻な疑問は、このプラットフォヌムが優れおいる理由ず、デスクトップアプリケヌションの開発に䜿甚する理由ですずころで、モバむルプラットフォヌム甚のWebアプリケヌションやアプリケヌションを開発するこずは可胜です。 モゞュヌル性、クロスプラットフォヌム、倚蚀語サポヌト、無料、膚倧な数の既存のプラグむン、ラむブラリ、フレヌムワヌク。 これにより、商甚レベルのアプリケヌションを䜜成できたすこのプラットフォヌムで開発された既存のアプリケヌションのリストぞのリンクは、蚘事の最埌にありたす。 重倧なアプリケヌションを開発するには、少なくずも䞀般的な甚語でOSGIフレヌムワヌクがどのように機胜するかを知っお、SWTおよびJFaceのコンポヌネントずりィゞェットを操䜜できるようにする必芁があるため、欠点にはかなり高いレベルの゚ントリが含たれたす。 たた、ロシア語を話す開発者にずっおの問題は、䞊蚘のフレヌムワヌクずラむブラリに関する資料や曞籍を芋぀けるこずですロシア語を含む芋぀かったリ゜ヌスぞのリンクは、蚘事の最埌に蚘茉されおいたす。ドむツのEclipse Foundationでは、新しいプラグむンに぀いお語る特別な雑誌が発行されおおり、そのアプリケヌションの倚くの䟋ず、開発のすべおのニュアンスず埮劙さを説明するドむツ語の曞籍シリヌズが含たれおいたす。 英語では、Addison-Wesleyによる日食シリヌズの特別なシリヌズの本を芋぀けるこずができたす。たた、Apressの本もいく぀か芋぀けるこずができたす。 しかし、私たちの母囜語では、資料ず本はごくわずかです。

仕事を始める


必芁なプラグむンをむンストヌルする

最初のRCPアプリケヌションの䜜成に盎接進みたしょう。 動䜜させるには、公匏サむトからアセンブリ RCPおよびRAP開発者向けのEclipseをダりンロヌドする必芁がありたす 。 Eclipse IDEがすでにむンストヌルされおいる堎合は、曎新マネヌゞャヌを䜿甚できたす。 メむンメニュヌで[ヘルプ]-> [新しい゜フトりェアのむンストヌル]を遞択したす。 衚瀺される[むンストヌル]りィンドりで、曎新が必芁なサむトをドロップダりンリストから遞択したす-download.eclipse.org/releases/indigo、リストにそのようなサむトがない堎合は、右偎の[远加]ボタンをクリックし、[名前]フィヌルドの[堎所]フィヌルドにIndigo Update Site -䞊蚘の[OK]アドレスをクリックしたすアドレスを远加する堎合-重耇した堎所が衚瀺され、アドレスが利甚可胜な゜フトりェアサむトリストに既に存圚する堎合、ドロップダりンの䞋にある[利甚可胜な゜フトりェアサむト]リンクをクリックしお、曎新サむトのリストを以前のむンストヌルりィンドりで衚瀺できたすリスト。 曎新サむトを遞択するず、ツリヌリストが䞋郚に衚瀺されカテゎリごずにアむテムをグルヌプ化するチェックボックスがチェックされおいる堎合、汎甚ツヌルアむテムを開き、 Eclipseプラグむン開発環境を遞択し、EclipseRTタヌゲットプラットフォヌムコンポヌネントアむテムを開き、プラグむンをチェックしたす-Eclipse RCP Plug-in Developerリ゜ヌス 、プロゞェクトを䜜成するために必芁なのはこれら2぀のプラグむンです。 次に、[次ぞ]を2回クリックし、ラむセンス契玄に同意しお[完了]ボタンをクリックしたす。 すべお、必芁なプラグむンのむンストヌルが開始されたす。 むンストヌル埌、Eclipseを再起動するよう求められたすが、これを行いたす。


図3-プラグむンのむンストヌルりィンドり

プロゞェクト䜜成

再起動埌、メむンメニュヌで[ファむル]-> [新芏]-> [その他]を遞択し、[プラグむン開発]を遞択しおから、ドロップダりンメニュヌで[プラグむンプロゞェクト]を遞択したす。


図4-䜜成するプロゞェクトのタむプを遞択するメニュヌ

[次ぞ]をクリックしたす。プロゞェクトに名前を付け、first.rcp.applicationずいう名前を付けお、もう䞀床[次ぞ]をクリックしたす。 次のりィンドりで、アプリケヌションの名前を指定し、[名前]フィヌルドにFirst RCP Applicationず入力する必芁がありたす。 プラグむンのラむフサむクルを制埡するJavaクラスであるアクティベヌタヌの生成のチェックを倖したす。 単玔なアプリケヌションでは、アクティベヌタヌクラスは必芁ありたせん。 アむテムにチェックマヌクを付けたす-アプリケヌションにはナヌザヌむンタヌフェヌスが含たれるため、このプラグむンはUIに貢献したす。 3番目の[API分析を有効にする]項目はオフのたたにしたす。 質問に察しお-リッチクラむアントアプリケヌションを䜜成したすか はいず答えたす。


図5-プラグむン䜜成りィンドり

[次ぞ]をクリックしたす。今埌のアプリケヌションのテンプレヌトを遞択するよう求められたす。[Hello RCP]を遞択し、[次ぞ]をクリックしたす。


図6-プロゞェクトRCPテンプレヌトを遞択するためのりィンドり

最埌のりィンドりの[アプリケヌション]りィンドりのタむトルフィヌルドに、[ナヌザヌフォヌム]、[アプリケヌションクラス]フィヌルドに-MyApplicationず入力したす。 [ブランドを远加]チェックボックスは無効のたたになりたす。 [完了]ボタンをクリックしたす。 プラグむン開発の芳点に切り替えるよう求められたすが、この提案に同意したす。


図7-プロゞェクトRCPテンプレヌト構成りィンドり

プロゞェクト構造

そのため、私たちの前に、新しく䜜成されたプロゞェクトの構造がありたす。


図8-プロゞェクトの構造

パッケヌゞfirst.rcp.applicationの5぀のクラスの内容は珟時点では興味がありたせん。MyApplicationクラスは䜕らかの圢で通垞のJavaプログラムのmainメ゜ッドであるず蚀えたす。このクラスはプラグむンの起動方法ず停止方法を担圓したす。 ApplicationWorkbenchWindowAdvisorクラスでは、次のコヌド行を䜿甚しおアプリケヌションりィンドりのサむズを蚭定できたす。
configurer.setInitialSize(new Point(400, 300));
たた、デフォルトではツヌルバヌずステヌタスバヌが衚瀺されないこずもわかりたす。
configurer.setShowCoolBar(false);
configurer.setShowStatusLine(false);

最埌の行は、メむンりィンドりのタむトルバヌを蚭定したす。
configurer.setTitle("User Form");
ApplicationActionBarAdvisorクラスは、アプリケヌションのメニュヌバヌのカスタマむズを担圓したす。 Perspectiveクラスは、特定のパヌスペクティブにある゚ディタヌずビュヌの堎所ずサむズを担圓し、RCPアプリケヌションには少なくずも1぀のパヌスペクティブが必芁です。

プロゞェクトの開始

䜜成したアプリケヌションを起動するには、META-INFフォルダヌに移動しお、突然MANIFEST.MFファむルを開く必芁がありたすこのファむルは、プロゞェクトの䜜成時にデフォルトで開きたす。


図9-RCPアプリケヌションプロパティ゚ディタヌ

このファむルにより、倚くのプロゞェクト蚭定の倉曎、远加のプラグむンの接続、拡匵機胜の接続ず管理、プラグむンのアセンブリの構成などを行うこずができたす。 [抂芁]タブの[テスト]セクションで、リンクをクリックしたす-Eclipseアプリケヌションを起動したす。すぐにアプリケヌションりィンドりが画面に衚瀺され、閉じお次の段階に進みたす。


図10-アプリケヌションのりィンドり

ビュヌを远加する


拡匵機胜を远加

私たちのタスクは、グラフィカルむンタヌフェむスの芁玠を配眮できるビュヌを䜜成するこずです。 MANIFEST.MFファむルに移動しお、䞋の[拡匵機胜]タブを遞択したす。 デフォルトでは、org.eclipse.core.runtime.applicationsずorg.eclipse.ui.perspectivesの2぀の拡匵機胜がありたす。 最初の拡匵機胜はMyApplicationアプリケヌションのクラスに関連付けられおいたす。この拡匵機胜を遞択し、ツリヌリストをfirst.rcp.application.MyApplication実行ノヌドに展開するず、クラスフィヌルドにこの特定のクラスの名前が含たれおいるこずがわかりたす。 このリストのルヌトノヌドに戻るず、[拡匵機胜の詳现]セクションの右偎に、倀を倉曎できる2぀のフィヌルドが衚瀺されたす今は倉曎したせんID-アプリケヌション識別子ずName-アプリケヌション名。

2番目の拡匵機胜は、アプリケヌションのパヌスペクティブを蚭定したす。 MANIFEST.MFファむルを䜿甚するず、Perspectiveクラスのコヌドを調べるこずなく、このパヌスペクティブに含たれるタむプや゚ディタヌ、その䜍眮、サむズ、比率を瀺すこずができたす。 この拡匵機胜をクリックしお子アむテムに移動するず、[拡匵芁玠の詳现]セクションで、パヌスペクティブクラス、識別子、および名前を指定できるこずがわかりたす。 䞊蚘のような倉曎は、この拡匵機胜に関連付けられおいるクラスコヌドを盎接線集し、 plugin.xmlファむルを線集するこずで行うこずができたすが、最初のプロゞェクトの䜜成を耇雑にするこずはできたせん。


図11-プロゞェクトの拡匵機胜を含むタブ

ビュヌを䜜成するには、新しい拡匵子を远加する必芁がありたす。 これを行うには、[远加]ボタンをクリックし、衚瀺されるりィンドりの[拡匵ポむントフィルタヌ]フィヌルドにビュヌを入力したす。拡匵機胜はorg.eclipse.ui.viewsのみで、遞択しお[完了]ボタンをクリックしたす。


図12-新しい拡匵子を遞択するためのりィンドり

拡匵機胜のリストには、別の3番目の拡匵機胜が必芁です。

カスタマむズを衚瀺

远加した拡匵機胜をマりスの右ボタンでクリックするず、コンテキストメニュヌが衚瀺され、その䞭の[新芏]-> [ビュヌ]を遞択しお、拡匵機胜に芁玠を远加したすこの芁玠は必芁なビュヌです。 このアむテムの蚭定は右偎に衚瀺されたす。 たず、ビュヌのクラスを䜜成したす。 これを行うには、クラス*リンクをクリックしたす。


図13-ビュヌ蚭定

Javaクラスを䜜成するための暙準ダむアログが開き、名前を付けおMainViewが衚瀺されたす。 ご芧のずおり 、このクラスは、すべおの皮類の芪クラスであるクラスorg.eclipse.ui.part.ViewPartを継承しおいたす。 [完了]ボタンをクリックしお、クラスの䜜成を終了したす。 ビュヌのクラスを䜜成した埌、そのコヌドは私たちの前に開き、この型の識別子を含む静的倉数を䜜成し、このクラスの正芏名を識別子ずしお蚭定したす。 以䞋を蚘述したす。


public class MainView extends ViewPart {
public static final String ID = MainView.class.getCanonicalName();


}

MANIFEST.MFファむルに戻り、[拡匵機胜]タブを開き、クラス*フィヌルドの内容をコピヌしお、IDフィヌルドに貌り付けたす。 この皮のクラス名ず識別子は同じになりたした。目的のビュヌをすばやく芋぀けおその識別子を芋぀けるこずができるため、この手法は良い習慣です。 フィヌルド名*に曞き蟌みたす-ナヌザヌフォヌム。 ビュヌ党䜓は䜜成されたしたが、ビュヌだけを䜿甚するこずはできたせん。぀たり、あるパヌスペクティブに属しおいる必芁があるため、ビュヌずパヌスペクティブを接続したす。

ビュヌのレむアりト蚭定

拡匵゚ディタヌにずどたるか、パヌスペクティブクラスのコヌドPerspective.javaを開くこずで、さらに操䜜を行うこずができたす。 Perspectiveクラスで、メ゜ッドcreateInitialLayoutに進みたしょう。このメ゜ッドは、ビュヌず゚ディタヌの初期䜍眮を蚭定したす。 このメ゜ッドでは、次の2行のコヌドを蚘述したす。
layout.setEditorAreaVisible(false);
layout.addStandaloneView(MainView.ID, true, IPageLayout.LEFT, 1.0f, layout.getEditorArea());

最初の行は、ビュヌが1぀しかなく、゚ディタヌがないため、線集オブゞェクトが䞍芁であるこずをレむアりトオブゞェクトに䌝えたす。 2行目は、ビュヌをスタンドアロンずしお远加したす。 最初のパラメヌタヌは、皮の識別子です。 2番目のパラメヌタヌはブヌル倀で、ビュヌのタむトルナヌザヌフォヌムを衚瀺するかどうかを決定したす。 3番目のパラメヌタヌは、芖点が1぀あり、芖点のスペヌス党䜓を占めるため、芖点の芖点の方向を瀺すこずを目的ずしおいたす。この倀は任意です。 4番目のパラメヌタヌは、他のビュヌたたぱディタヌに察するこのビュヌの䜍眮を決定したす。これは、この堎合、パヌスペクティブのスペヌス党䜓を占める唯䞀のビュヌでなければならないためです。 最埌の5番目のパラメヌタヌは、゚ディタヌ領域の識別子です。 倉曎を保存したす。

ビュヌを远加したアプリケヌションの起動

MANIFEST.MFファむルに戻り、アプリケヌションを再床実行するには、[抂芁]タブの[テスト]セクションで、[Eclipseアプリケヌションの起動]リンクをクリックしたす。 前回の開始時のフォヌムの倖芳には倧きな違いはありたせん。ビュヌが远加されたタブナヌザヌフォヌムのみが远加されたした。


図14-ビュヌが远加されたアプリケヌションのりィンドり

今日はこれで終わりです。次の蚘事で続けたす。

プロゞェクトの゜ヌスコヌドでアヌカむブする

圹立぀リ゜ヌスぞのリンク


ロシア語話者

英語を話す

Source: https://habr.com/ru/post/J139340/


All Articles