私はいくつかのプラグインからなるEclipse RCPアプリケーションを開発しています。これらのプラグインの1つ( "common ui"プラグイン)は、他のいくつかのプラグインで使用されているビューを提供します。ビューは、共通uiプラグインのplugin.xml、ツールバーとコンテキストメニューの投稿(メニュー拡張ポイント内)で定義されています。ecplise uiビュー拡張ポイントのビューを上書きする
しかし、1つのプラグインがありますが、一般的なUIプラグインが提供するビューにいくつかの追加が必要な「特別なビジネスプラグイン」と呼ばせてください。したがって、私は共通のUI Viewpartクラス(追加の列と独自のラベルとコンテンツプロバイダを追加する)からviewpartクラスを拡張しました。
拡張されたviewpartには、共通のviewpartと同じメニューが必要です。もちろん、私はそれらを2回書く必要はありません、私はちょうど共通のプラグインのplugin.xmlで定義されているメニューの貢献を使用したいと思います。ただし、共通ビューパーツのビューIDにバインドされています。特別なビューパーツに同じビューIDを使用すると、特別なビューパーツが開かず、共通のビューパーツが(同じIDを共有するため)表示されます。別のIDを使用する場合は、メニューの投稿を2回書く必要があります。これは避けたいものです。
このように、上書きしたいビューと同じメニュー投稿を使用したい場合、別のプラグインで定義されたビューを上書きするにはどうすればよいですか?一般的なプラグインの
plugin.xmlの
<plugin>
<extension point="org.eclipse.ui.views">
<view
allowMultiple="true"
category="org.eclipse.ui"
class="com.mycompany.client.common.ui.view.CommonViewPart"
icon="icons/CommonView.gif"
id="com.mycompany.client.common.ui.view.CommonView"
name="%CommonView"
restorable="false">
</view>
</extension>
<extension point="org.eclipse.ui.menus">
<menuContribution
locationURI="toolbar:com.mycompany.client.common.ui.view.CommonView">
<command
commandId="com.mycompany.client.common.ui.handler.RefreshCommand"
label="%refresh"
style="push">
</command>
</menuContribution>
</extenstion>
</plugin>
ビューは、次のコード行でハンドラによって開かれる
<plugin>
<extension point="org.eclipse.ui.views">
<view
allowMultiple="true"
category="org.eclipse.ui"
class="com.mycompany.client.special.view.SpecialViewPart"
icon="icons/CommonView.gif"
id="com.mycompany.client.common.ui.view.CommonView"
name="%CommonView"
restorable="false">
</view>
</extension>
</plugin>
特別なプラグインのplugin.xmlの:
コモン:
特別:
AbstractViewPart view = (AbstractViewPart).
getActiveWorkbenchPage(event).showView(SpecialViewPart.ID, null,
IWorkbenchPage.VIEW_VISIBLE);
ありがとうございます、それは恐れています。 –