2

メニュー( org.eclipse.ui.menus + org.eclipse.ui.actionSets)から、および新しいコンテキストメニューから、さまざまな方法で起動する必要があるウィザードがあります。後で、拡張機能org.eclipse.ui.newWizardsを使用して、ウィザードをコンテキスト メニューに追加しました。ここまでは順調ですね...

何らかの理由で、ウィザード ダイアログをサブクラス化する必要がありました (ダイアログの終了ボタンのテキストを変更しました)。ウィザードがメニューから起動された場合、アクション ( org.eclipse.ui.actionSetsで定義) がこの特別なウィザード ダイアログを作成して開き、すべて問題ありません。

コンテキスト メニュー ( org.eclipse.ui.newWizards ) からウィザードを起動すると、内部クラスNewWizardShortcutActionが取得され、"通常の" ウィザード ダイアログ (サブクラスではなく) が作成され、ウィザードが開きます。

サブクラス化されたウィザード ダイアログのみが使用される拡張ポイントの実装を変更する方法はありますか?

4

2 に答える 2

0

私も同じことをしようとしています。私がこれを行う方法は、古いアクションを削除することにより、独自のカスタムアクションを登録することです。それが機能する場合は、ソリューションをポストバックします!

更新:別のアプローチを使用することになりました。NewWizardShortcutAction に run メソッドがある場合は、init を呼び出し、WizardDialog を作成して開いているだけです。そのため、MyWizard クラスの init のオーバーライドでは、WizardDialog から拡張された独自の MyWizardDialog を使用して、それを開きました。その後、run 関数が WizardDialog を再度開かないようにする必要があるため、Run メソッドの WizardDialog が表示されないように、ページの取得を禁止する MyWizard のブール値を使用して追跡します。

これはハックなソリューションですが、機能します!

于 2012-10-10T10:22:53.583 に答える
0

デフォルトでは、コマンドはorg.eclipse.ui.internal.handlers.WizardHandler.New新しいウィザード ダイアログを起動するために使用します。これは、コマンドに提供されるデフォルト ハンドラです。

ワークベンチ ウィンドウ レベルで別のハンドラーを登録することは可能であり、ワークベンチ ウィンドウがアクティブな間、デフォルトのハンドラーをオーバーライドします。これは、plugin.xml またはアプリケーションの ActionBarAdvisor で行うことができます。

IHandlerService hs = (IHandlerService) window.getService(IHandlerService.class);
hs.activateHandler(IWorkbenchCommandConstants.FILE_NEW, new MyNewHandler());

ただし、正しい選択でウィザードを起動するには、ハンドラーで必要なサポートをすべて実装する必要があります。

于 2012-10-11T03:17:45.290 に答える