2009-02-25 9 views
17

Eclipseコマンドプラグインを作成していて、パッケージエクスプローラビューで現在選択されているノードを取得したいとします。選択したノードがファイルシステム(つまりc:\ eclipse \ test.html)にある絶対ファイルパスを、返された結果から取得できるようにします。Eclipseプラグインからパッケージエクスプローラで選択したノードを取得する方法

どうすればよいですか?

答えて

15

コードは次のようになります:あなたはこのLuaFileWizardAction classようなアクションの例を見る

IWorkbenchWindow window = 
    PlatformUI.getWorkbench().getActiveWorkbenchWindow(); 
ISelection selection = window.getSelectionService().getSelection("org.eclipse.jdt.ui.PackageExplorer"); 

+1

編集ありがとう、Aaron。私は間違ってそのコードを抽出した... – VonC

+0

LuaFileWizardActionクラスへのあなたのリンクが壊れているようです。それはhttp://www.blackducksoftware.com/ – David

+0

にリダイレクトされます@Davidありがとうございます。私はリンクを更新しました。 – VonC

32

最初の手順は、選択サービスを取得することです。このような任意のビューまたはエディタから:あなたはビューまたはエディタ内でもない場合

ISelectionService service = getSite().getWorkbenchWindow() 
      .getSelectionService(); 

あるいは、as VonC wroteは、あなたは、PlatformUIを経由して、それを得ることができます。

IFile file = (IFile) structured.getFirstElement(); 

今すぐフルパスを取得する:あなたが選択したのIFile得ることができ、それから、

IStructuredSelection structured = (IStructuredSelection) service 
      .getSelection("org.eclipse.jdt.ui.PackageExplorer"); 

その後、パッケージエクスプローラの選択を取得し、IStructuredSelectionにキャストあなたはIFileの場所を取得する必要があります:

IPath path = file.getLocation(); 

あなたが最後にできること(とりわけ)ファイルへの本当のフルパスを取得するために使用します。Using the Selection Service

System.out.println(path.toPortableString()); 

あなたはここで選択サービスに関する詳細な情報を見つけることができます。

+1

"見た9回" ...誰もその質問を見ない;)とにかく、詳細な答え。 +1 – VonC

+3

パッケージエクスプローラから選択を取得するとき、エレメントはIFileの場合はインスタンスではありません。 JDT→リソース変換を実行する必要があります。 – kberg

+0

@kbergキャストは実際に例外をスローします。しかし、JDT->リソース変換を実行することはどういう意味ですか – Fofole