Your SlideShare is downloading. ×
0
Plug In Spyのソースコードリーディング
Plug In Spyのソースコードリーディング
Plug In Spyのソースコードリーディング
Plug In Spyのソースコードリーディング
Plug In Spyのソースコードリーディング
Plug In Spyのソースコードリーディング
Plug In Spyのソースコードリーディング
Plug In Spyのソースコードリーディング
Plug In Spyのソースコードリーディング
Plug In Spyのソースコードリーディング
Plug In Spyのソースコードリーディング
Plug In Spyのソースコードリーディング
Plug In Spyのソースコードリーディング
Plug In Spyのソースコードリーディング
Plug In Spyのソースコードリーディング
Plug In Spyのソースコードリーディング
Plug In Spyのソースコードリーディング
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Plug In Spyのソースコードリーディング

2,591

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,591
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Plug-in Spy のソースコードを読む
  • 2. Spyとは
    • Eclipse上でショートカット(ALT+SHIFT+F1)を押すとアクティブなViewやEditorの情報を表示したり、ソースコードを閲覧したりできるPlug-inです。
  • 3. Spyとは
    • Eclipse3.4 から PDE の機能として入る予定になっていますが kojihashi さんが Eclipse3.3 に対応してくれました。(感謝!)
    • http://d.hatena.ne.jp/kojihashi/20071116#1195221898
  • 4. Spyのインストール
    • https://bugs.eclipse.org/bugs/show_bug.cgi?id=210162 にアクセス
    • The independent bundle as a zip をクリックしてzipをダウンロード
    • 解凍してjarをEclipseのpluginsフォルダにコピー
    • Eclipseを起動してALT+SHIFT+F1を押して動作確認
  • 5. ソースを読む準備
    • メニューから File>Import を選択
    • Import ダイアログで Plug-in Development>Plug-ins and Fragments を選択して Next ボタンを押下
    • 次の画面はデフォルトのまま Next ボタンを押下
    • org.eclipse.pde.runtime.spy を Plug-ins and Fragments to Import に追加して Finish ボタンを押下
  • 6. ソースを読む準備
    • プロジェクト内の Referenced Libraries の下の jar 配下からソースコードを参照することが可能になる
  • 7. ソースコードを読む
    • Spy のソースコードは 14 個しかありません。(そのうちのほとんどがダイアログを表示する処理)
    • アクティブな View や Editor を取得する処理は org.eclipse.ui.handlers.HandlerUtil が提供しています。
  • 8. plugin.xml <extension point=&quot;org.eclipse.ui.commands&quot;> <category id=&quot;org.eclipse.pde.runtime.spy.commands.category&quot; name=&quot;%spy-category.name&quot;> </category> <command categoryId=&quot;org.eclipse.pde.runtime.spy.commands.category&quot; id=&quot;org.eclipse.pde.runtime.spy.commands.spyCommand&quot; name=&quot;%spy-command.name&quot;> </command> </extension> <extension point=&quot;org.eclipse.ui.bindings&quot;> <key commandId=&quot;org.eclipse.pde.runtime.spy.commands.spyCommand&quot; contextId=&quot;org.eclipse.ui.contexts.dialogAndWindow&quot; schemeId=&quot;org.eclipse.ui.defaultAcceleratorConfiguration&quot; sequence=&quot;M3+M2+F1&quot;> </key> </extension> <extension point=&quot;org.eclipse.ui.handlers&quot;> <handler class=&quot;org.eclipse.pde.internal.runtime.spy.handlers.SpyHandler&quot; commandId=&quot;org.eclipse.pde.runtime.spy.commands.spyCommand&quot;> </handler> </extension> コマンドの定義 キーバインドの定義 ハンドラの定義
  • 9. org.eclipse.ui.handlers
    • commandId にはキーバインドの commandId を設定している。
    • comanndId に設定したキーが押されると ExecutionEvent が発生する。
    • class に設定したハンドラに ExecutionEvent が渡される。
  • 10. SpyHandler
    • キーが押されたときに発生する ExecutionEvent を処理する
    • Platform Command Framework の提供する HandlerUtil.getActiveShell メソッドを使って ExecutionEvent からアクティブな Shell を取得している
    • 情報は SpyDialog を使って表示する
  • 11. SpyDialog
    • アクティブな View や Editor の情報を表示するダイアログ
    • ISpySection インターフェイスの実装クラスを利用してアクティブな Shell,Part,Selection,Wizard,Dialog,Help の情報を表示する
  • 12. ISpySection の実装クラス 情報の表示に FormToolkit を継承したSpyFormTool kit と FormText( フォームに HTML を表示するウィジェット ) を 使用している アクティブな Help の情報を表示 HandlerUtil#getActiveShell で Shell を取得し Shell の型によって処理を分けている ActiveHelpSection アクティブな Dialog の情報を表示 HandlerUtil#getActiveShell で Shell を取得し IPageChangeProvider かどうか調べている ActiveDialogPageSection アクティブな Wizard の情報を表示 HandlerUtil#getActiveShell で Shell を取得し WizardDialog かどうか調べている ActiveWizardSection アクティブな Selection の情報を表示 HandlerUtil#getCurrentSelection を使用 ActiveSelectionSection アクティブな Editor,View の情報を表示 HandlerUtil#getActivePart を使用 ActivePartSection アクティブな Shell の情報を表示 HandlerUtil#getActiveShell を使用 ActiveShellSection
  • 13. SpyFormToolkit の内部クラス ActivePart のアイコンを保存する実装が行われている。 SaveImageAction リンクが押されたときのリスナー Java のエディタやマニフェストエディタを開く処理が実装されている SpyHyperlinkAdapter
  • 14. SpyFormToolkit のメソッド ヘルプの id を表示する部分を FormText に設定する HTML の形式で生成する FormText にイメージも設定する createHelpIdentifierSection 使われてない メニューとかの id の表示は ActivePartSection で生成されている createIdentifierSection クラスを表示する部分を FormText に設定する HTML の形式で生成する FormText にイメージも設定する createClassSection インターフェイスを表示する部分を FormText に設定する HTML の形式で生成する FormText にイメージも設定する createInterfaceSection FormText を生成して SpyHyperlinkAdapter を設定する createFormText
  • 15. SpyFormToolkit のメソッド SaveImageAction を生成してツールバーマネージャに設定している createImageAction アイコンを保存するツールバーを生成する createSectionToolbar パッケージ名を含めたクラス名からクラス名だけを抽出する getSimpleName FormText に設定するプラグインの情報とマニフェストファイルへのリンクを生成する generatePluginDetailsText FormText に設定するクラスとインターフェイスのリンクの部分を生成する createClassReference
  • 16. その他のクラス イメージを管理しているクラス PDERuntimeSpyPluginImages メッセージを管理しているクラス PDERuntimeSpyMessages リンクがクリックされたときにクラスやマニフェストファイルを検索しエディタに表示するクラス SpyIDEUtil Spy の Plugin クラス PDERuntimeSpyPlugin
  • 17. SpyIDEUtil のメソッド kojihashi さんのブログ: http://d.hatena.ne.jp/kojihashi/20071116#1195221898 同上 computeClasspath org.eclipse.pde.internal.core.SearchablePluginsManager のメソッドを丸ごとコピーしたらしい createProxyProject bundleID を引数に ManifestEditor#openPluginEditor を使ってマニフェストエディタを開く openBundleManifest Project とクラス名を引数に JavaUI#openInEditor を使って Java のエディタを開く openInEditor クラスをエディタで表示するメソッド 内部で ProxyProject を作成し openInEditor メソッドを呼び出している openClass

×