2012-04-06 16 views
0

メインツールバーに動的なボタンを作成する必要があります。私は解決策を見つけましたが、ボタンを1つだけ作成できます(動的貢献アイテム - クラスはContributionItemを拡張しています)。しかし、私は複数のボタンを作成する必要がありますが、私は解決策を見つけることができません。ツールバー項目を動的に

私は、メニューとツールバーの構造を含むXMLファイルを解析するプラグインを作成するタスクと戦っています。 Visual Studio用のこのプラグインはすでに完成しています。その原則は非常に簡単ですが、私は速やかにそれを見つけました。Eclipse用ではありません。小さくても重要なものが1つあります。プラグインはEclipseで宣言的に実装されています。ファイルplugin.xmlはプラグインのインフラストラクチャの要点であり、Javaコードは単なる補助的なものです。

お客様は、選択したプロジェクトが変更されるたびにメニューとツールバーを更新したいと考えています。 Eclipseには、タスクを完了させるために必要ないくつかの機能がありません。 Eclipseの起動時にメインメニューとメインツールバーが表示され、再構築はほとんど不可能です。

+0

あなたはもう少し具体的になるかもしれません。例えば。ボタンをメインツールバーに移動するか、どこに? Eclipseでは、通常、ツールバーへの宣言的な貢献を使用します。 –

+0

投稿を更新しました。 –

答えて

0

私の理解から、プロジェクトエクスプローラの選択に応じて、メインツールバーに異なるボタンが必要です(例えば、1プロジェクトはJavaプロジェクト、もう1つはjavascriptなど)。まず、メインツールバーに貢献する必要があります。私は利用できるチュートリアルがあると思うので、Googleが助けます。 主な手順は次のとおりです。 1.コマンド(org.eclipse.ui.commmands)を作成します。 2.以前に宣言したコマンドIDを持つハンドラ(org.eclipse.ui.handlers)を作成します 3.メインツールバーメニューorg.eclipse.ui.main.toolbar?after = misc

メニュー項目/ボタンを表示/非表示にするmenucontributionとcommandIdを持つorg.eclipse.ui.menus宣言的に、または「混合」することができます。宣言的には、例えば、 enabledWhen/visibleWhenを使用しています。 混在は、プロパティテスター(org.eclipse.core.expressions.propertyTester)を使用していることを意味します。これにより、Javaコードで "有効化ロジック"を定義することができます。

+0

私は過去2ヶ月間Googleと戦ってきました。すべてのチュートリアルでは、プラグイン・ディスクリプタで宣言されているコマンドがいくつか存在することが想定されていました。しかし、私はそれをすべて動的に作成する必要があり、それは解決不可能な問題のようです。私は何も宣言することはできません。私は事前にコマンドを知らない。いくつかのことが働きます。ポップアップメニューは機能しますが、各ビューまたはエディタの動的ポップアップメニューを登録することはできません。メインメニューは機能しますが、Eclipseが起動を完了するとビルドされていなければなりません。メニューのデータモデルのさらなる変更は、不透明に表示されます。ビューの更新を制御できません。 –

+0

(注:すべてのビューのポップアップメニューを登録することは私の仕事の1つですが、私は既にこれらの質問を投稿しています:[グローバルコンテキストメニューリスナーか他の方法で登録されたすべてのビューのコンテキストメニューを登録する方法(http://stackoverflow.com/question/9988349/global-context-menu-listener-or-else-how-to-register-context-all-for-all-views)、[すべてのビューの動的ポップアップメニュー](http://stackoverflow.com/questions/10087095/dynamic-popup-menu-for-all-views)と[キーバインディングを使った動的メニュー投稿](http://stackoverflow.com/questions/10028967/dynamic-menu-contribution-with-key-bindings/10100755)) –

0

Eclipse e4では、EMFベースのモデルからUIが生成されます。 Application.e4xmiは、そのモデルのベースとして機能します。モデルへの貢献は、XMLであるフラグメント、またはプロセッサーを介して行うことができます。プロセッサはJavaで書かれており、実行時にモデルを変更するためにパーツサービスのようなe4サービスを使用します。

私はあなたのカスタムXMLを解析し、それに応じてeclipse e4モデルを変更するプロセッサを作成したいと思います。

関連する問題