2011-10-19 11 views
3

私はEclipse製品を開発しています。エディタにファイル拡張子を関連付ける必要があります。 私はいくつかの例に従いました(thisthisなど)が、SWT OpenDocumentイベントを受け取りました。 PlatformUI.createAndRunWorkbench()方法は、製品のファイルでEclipse RCP:ファイルの関連付け(--launcher.openFile)

public Object start(IApplicationContext context) throws Exception { 
Object args = context.getArguments().get(IApplicationContext.APPLICATION_ARGS); 
OpenDocumentEventProcessor eProc = new OpenDocumentEventProcessor(); 
Display display = PlatformUI.createDisplay(); 
display.addListener(SWT.OpenDocument, eProc); 
try{ 
    if(!handleWorkspace(display)){ 
     System.exit(0); 
     return IApplication.EXIT_OK; 
    } 
int returnCode = PlatformUI.createAndRunWorkbench(display, new XVRWorkbenchAdvisor(args, eProc)); 

呼び出されること前に

関連付け例で説明したように、私はSWT.OpenDocumentイベントを処理するためのEventListenerクラスを作成し、私はディスプレイに私のApplicationクラスでこれを追加しました私は、次のプログラムの引数を追加しました:

--launcher.XXMaxPermSize 
256m 
--launcher.defaultAction 
openFile 
-name 
XVR Studio Developer 

私はそれが魔法のように動作し、新しい空のRCPプロジェクトで同じコードを使用している場合...

どちらが問題なのかわかりません。

お手伝いできますか?

ありがとうございます!

答えて

2

この方法はわかりませんが、貼り付けられたコードに明示的なエディタ呼び出しがないので、エディタを開く必要があるかどうかを決定するにはまだEclipseに依存していると思います。ですから、あなたはまだ宣言的にコンテンツタイプとファイルの関連付けを定義しなければならないと思います。 "org.eclipse.core.contenttype.contentTypes"拡張に貢献するには、 'ファイル関連'(ファイル拡張子...)を追加します。エディタ宣言をプラグインXMLで取得し、以前に作成した 'contentTypeBinding' IDを追加します。

1

私はRCPアプリケーションのためにこの作業を行ったばかりですが、私がここでどのように行ったかを記録し、参考にすることは参考になると思いました。

  1. 私は 'context.getArguments()..'を使用していませんでした。 'OpenDocumentEventProcessor'はすべてを処理しました。
  2. 私は、これがうまくいかなかったのは、-nameの値が 'org.eclipse.core.runtime.products'拡張ポイントの 'appName'プロパティの値と一致しなかったことです。確かに、私はappNameプロパティと-nameからスペースを削除しました。その後、それは働いた。

非常に有用な参考文献として、次のとおりです。基本的なコーディングのために

http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Fguide%2Fproduct_open_file.htm

これがどのように機能するかの説明については:いくつかの時間のために私の目を逃れ http://aniefer.blogspot.co.uk/2010/05/opening-files-in-eclipse-from-command.html

一つの小さな点、名前にスペースがあった場所のいくつかの塊でファイルのパスを取得していました。最終的に私はファイル関連付けのインストーラの(InstallAware)定義の%1パラメータの中に引用符を入れる必要があることを実現しました。つまり、"%1"

関連する問題