SlideShare une entreprise Scribd logo
1  sur  17
Plug-in Spy のソースコードを読む
Spyとは ,[object Object]
Spyとは ,[object Object],[object Object]
Spyのインストール ,[object Object],[object Object],[object Object],[object Object]
ソースを読む準備 ,[object Object],[object Object],[object Object],[object Object]
ソースを読む準備 ,[object Object]
ソースコードを読む ,[object Object],[object Object]
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> コマンドの定義 キーバインドの定義 ハンドラの定義
org.eclipse.ui.handlers ,[object Object],[object Object],[object Object]
SpyHandler ,[object Object],[object Object],[object Object]
SpyDialog ,[object Object],[object Object]
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
SpyFormToolkit の内部クラス ActivePart のアイコンを保存する実装が行われている。 SaveImageAction リンクが押されたときのリスナー Java のエディタやマニフェストエディタを開く処理が実装されている SpyHyperlinkAdapter
SpyFormToolkit のメソッド ヘルプの id を表示する部分を FormText に設定する HTML の形式で生成する FormText にイメージも設定する createHelpIdentifierSection 使われてない メニューとかの id の表示は ActivePartSection で生成されている createIdentifierSection クラスを表示する部分を FormText に設定する HTML の形式で生成する FormText にイメージも設定する createClassSection インターフェイスを表示する部分を FormText に設定する HTML の形式で生成する FormText にイメージも設定する createInterfaceSection FormText を生成して SpyHyperlinkAdapter を設定する createFormText
SpyFormToolkit のメソッド SaveImageAction を生成してツールバーマネージャに設定している createImageAction アイコンを保存するツールバーを生成する createSectionToolbar パッケージ名を含めたクラス名からクラス名だけを抽出する getSimpleName FormText に設定するプラグインの情報とマニフェストファイルへのリンクを生成する generatePluginDetailsText FormText に設定するクラスとインターフェイスのリンクの部分を生成する createClassReference
その他のクラス イメージを管理しているクラス PDERuntimeSpyPluginImages メッセージを管理しているクラス PDERuntimeSpyMessages リンクがクリックされたときにクラスやマニフェストファイルを検索しエディタに表示するクラス SpyIDEUtil Spy の Plugin クラス PDERuntimeSpyPlugin
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

Contenu connexe

En vedette

History of Israel part 1 & 2 - PRRM Bible Study Group
History of Israel part 1 & 2 - PRRM Bible Study GroupHistory of Israel part 1 & 2 - PRRM Bible Study Group
History of Israel part 1 & 2 - PRRM Bible Study GroupAverell Gaspar
 
Yjhg8uh`gkpohgjnigyulkjkj
Yjhg8uh`gkpohgjnigyulkjkjYjhg8uh`gkpohgjnigyulkjkj
Yjhg8uh`gkpohgjnigyulkjkjclase5
 
Dn12 u3 a22_ggab
Dn12 u3 a22_ggabDn12 u3 a22_ggab
Dn12 u3 a22_ggabcutegatita
 
los componentes de la computadora
 los componentes de la computadora los componentes de la computadora
los componentes de la computadoramendezfranciscolaura
 
Programa de Fidelização do Grupo F1 Soluções Automotivas
Programa de Fidelização do Grupo F1 Soluções AutomotivasPrograma de Fidelização do Grupo F1 Soluções Automotivas
Programa de Fidelização do Grupo F1 Soluções AutomotivasMauricio da Silva Bezerra
 
Desenmascarando los mitos de gestión/ Debunking Management Myths
Desenmascarando los mitos de gestión/ Debunking Management MythsDesenmascarando los mitos de gestión/ Debunking Management Myths
Desenmascarando los mitos de gestión/ Debunking Management Mythschapudin
 
Show de Magia Mago Jimmy en Mall Curico
Show de Magia Mago Jimmy en Mall Curico Show de Magia Mago Jimmy en Mall Curico
Show de Magia Mago Jimmy en Mall Curico Jaime Gaete
 
BACKGROUND MUSIC - Benita Vermeulen01
BACKGROUND MUSIC - Benita Vermeulen01BACKGROUND MUSIC - Benita Vermeulen01
BACKGROUND MUSIC - Benita Vermeulen01Benita Vermeulen
 

En vedette (20)

History of Israel part 1 & 2 - PRRM Bible Study Group
History of Israel part 1 & 2 - PRRM Bible Study GroupHistory of Israel part 1 & 2 - PRRM Bible Study Group
History of Israel part 1 & 2 - PRRM Bible Study Group
 
s3
s3s3
s3
 
Forms of Resistance
Forms of ResistanceForms of Resistance
Forms of Resistance
 
Polita y angelica
Polita y angelicaPolita y angelica
Polita y angelica
 
Yjhg8uh`gkpohgjnigyulkjkj
Yjhg8uh`gkpohgjnigyulkjkjYjhg8uh`gkpohgjnigyulkjkj
Yjhg8uh`gkpohgjnigyulkjkj
 
Dn12 u3 a22_ggab
Dn12 u3 a22_ggabDn12 u3 a22_ggab
Dn12 u3 a22_ggab
 
los componentes de la computadora
 los componentes de la computadora los componentes de la computadora
los componentes de la computadora
 
800 reporto
800 reporto800 reporto
800 reporto
 
L’hivern
L’hivernL’hivern
L’hivern
 
Programa de Fidelização do Grupo F1 Soluções Automotivas
Programa de Fidelização do Grupo F1 Soluções AutomotivasPrograma de Fidelização do Grupo F1 Soluções Automotivas
Programa de Fidelização do Grupo F1 Soluções Automotivas
 
Desenmascarando los mitos de gestión/ Debunking Management Myths
Desenmascarando los mitos de gestión/ Debunking Management MythsDesenmascarando los mitos de gestión/ Debunking Management Myths
Desenmascarando los mitos de gestión/ Debunking Management Myths
 
Algebra
AlgebraAlgebra
Algebra
 
Show de Magia Mago Jimmy en Mall Curico
Show de Magia Mago Jimmy en Mall Curico Show de Magia Mago Jimmy en Mall Curico
Show de Magia Mago Jimmy en Mall Curico
 
Taekwondo
TaekwondoTaekwondo
Taekwondo
 
Okkkk
OkkkkOkkkk
Okkkk
 
Blog
BlogBlog
Blog
 
Bacterias
BacteriasBacterias
Bacterias
 
Management 3 planning
Management 3 planningManagement 3 planning
Management 3 planning
 
Ecologia 1
Ecologia 1Ecologia 1
Ecologia 1
 
BACKGROUND MUSIC - Benita Vermeulen01
BACKGROUND MUSIC - Benita Vermeulen01BACKGROUND MUSIC - Benita Vermeulen01
BACKGROUND MUSIC - Benita Vermeulen01
 

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

Android4.2徹底解剖!
Android4.2徹底解剖!Android4.2徹底解剖!
Android4.2徹底解剖!leverages_event
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Takako Miyagawa
 
Android Hacks - 合宿インテント
Android Hacks - 合宿インテントAndroid Hacks - 合宿インテント
Android Hacks - 合宿インテントMasanori Ohkawara
 
OSC2011 Androidハンズオン
OSC2011 AndroidハンズオンOSC2011 Androidハンズオン
OSC2011 AndroidハンズオンKatsumi Honda
 
冬だからAndroid再入門
冬だからAndroid再入門冬だからAndroid再入門
冬だからAndroid再入門Katsumi Honda
 
Mixiアプリで体験する Open Social
Mixiアプリで体験する Open SocialMixiアプリで体験する Open Social
Mixiアプリで体験する Open Socialngi group.
 
Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010Takashi EGAWA
 
iPhoneアプリ開発の歩き方〜Swift編〜
iPhoneアプリ開発の歩き方〜Swift編〜iPhoneアプリ開発の歩き方〜Swift編〜
iPhoneアプリ開発の歩き方〜Swift編〜Yusuke SAITO
 
Using the Fragments(Android)
Using the Fragments(Android)Using the Fragments(Android)
Using the Fragments(Android)Teruaki Kinoshita
 
デプロイツールFabric
デプロイツールFabricデプロイツールFabric
デプロイツールFabricke-m kamekoopa
 

Similaire à Plug In Spyのソースコードリーディング (13)

Android4.2徹底解剖!
Android4.2徹底解剖!Android4.2徹底解剖!
Android4.2徹底解剖!
 
Firefoxosハンズオン
FirefoxosハンズオンFirefoxosハンズオン
Firefoxosハンズオン
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
 
Android Hacks - 合宿インテント
Android Hacks - 合宿インテントAndroid Hacks - 合宿インテント
Android Hacks - 合宿インテント
 
OSC2011 Androidハンズオン
OSC2011 AndroidハンズオンOSC2011 Androidハンズオン
OSC2011 Androidハンズオン
 
冬だからAndroid再入門
冬だからAndroid再入門冬だからAndroid再入門
冬だからAndroid再入門
 
Mixiアプリで体験する Open Social
Mixiアプリで体験する Open SocialMixiアプリで体験する Open Social
Mixiアプリで体験する Open Social
 
KIFの導入
KIFの導入KIFの導入
KIFの導入
 
Alfresco CI
Alfresco CIAlfresco CI
Alfresco CI
 
Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010
 
iPhoneアプリ開発の歩き方〜Swift編〜
iPhoneアプリ開発の歩き方〜Swift編〜iPhoneアプリ開発の歩き方〜Swift編〜
iPhoneアプリ開発の歩き方〜Swift編〜
 
Using the Fragments(Android)
Using the Fragments(Android)Using the Fragments(Android)
Using the Fragments(Android)
 
デプロイツールFabric
デプロイツールFabricデプロイツールFabric
デプロイツールFabric
 

Dernier

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 

Dernier (8)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

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

  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 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.
  • 10.
  • 11.
  • 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