2011-07-29 6 views
1

私はモーダルの「ダイアログ」でGEFエディタを表示する必要があるRCPアプリケーションを持っています。しかし、エディタのフレームワークは、ワークベンチウィンドウの使用などと密接に結びついているようです。新しいワークベンチウィンドウ(独自のWorkbenchWindowAdvisorなど)を開いて、このワークベンチウィンドウ内で自分のGEFエディタを開くことができる理由を見つける必要があります。このワークベンチウィンドウを開くと、WorkbenchWindowのシェルのスタイルをアプリケーションモーダルに設定します。既存のWorkbenchウィンドウから新しいWorkbenchウィンドウ(独自のWorkbenchWindowAdvisorを使用)を開くにはどうすればよいですか?

答えて

0

"org.eclipse.ui.window.newWindow"コマンドを使用して新しいウィンドウを開きます。 WorkbenchWindowAdvisor.preWindowOpen()で、IWorkbenchWindowConfigurerのシェルスタイルをアプリケーションモーダルに設定します。クールバー、メニュー、ステータスバーを隠すこともできるので、ウィンドウよりもダイアログのように見えます。

+0

ありがとう、しかし、私は本当にそれがメインアプリケーションが使用するWorkbenchWindowAdvisorを使用することを望んでいないので、この新しく開いたウィンドウに独自のWorkbenchWindowAdvisorを与える方法を教えてください。この新しいウィンドウに、親ウィンドウ(メインアプリケーションのウィンドウ)にあるふわふわのものがないようにします。 – Craig

+0

実際にこのコマンドを使用する際の問題は、アクティブなワークベンチウィンドウパースペクティブを持つ新しいウィンドウを開くことです。そしてこれは私が望むものではありません...自分のWorkbenchWindowAdvisorを使って新しいウィンドウを開き、1人のエディタとはまったく異なる見方をしたいのです。メソッド:final IWorkbenchWindow window = PlatformUI.getWorkbench()。openWorkbenchWindow( "NewPerspectiveID"、null);少し上手くいくでしょう...しかし、 "カスタム"ワークベンチウィンドウアドバイザーを使ってそれでも問題がありますので、シェルスタイルを設定することができます – Craig

2

私は、次のコンポーネントを使用して、顧客のプロジェクトでこれを行っている:メソッドopenNewWindow(String type, ...)

  • 静的クラス。これは、新しいウィンドウを開くために呼び出すメソッドです。 type引数は、必要なウィンドウタイプを指定します。
  • クラスは新しい拡張ポイントを介して指定されたタイプを検索し、ILocalWorkbenchWindowAdvisorと初期パースペクティブIDを取得します。
  • それは、グローバル変数に情報を保存し、新しい顧問が保存されてILocalWorkbenchWindowAdvisorに基づいて作成されApplicationWorkbenchAdvisor.createWorkbenchWindowAdvisor(...)IWorkbench.openWorkbenchWindow(perspectiveID, ...)
  • を呼び出す - 返さ顧問をILocalWorkbenchWindowAdvisorで同じ方法と基本的に委譲し、すべてのpostWindowCreate(...)、など...
  • ILocalWorkbenchWindowAdvisorが保存されていない場合 - オープンするために非常に最初のウィンドウのためのケースである - タイプ「メインウィンドウ」を見上げると使用されている...

それはかなりうまく機能とのすべての部分を聞かせてプロジェクトは必要に応じて新しいウィンドウを追加します。

関連する問題