1

次のブロックを org.eclipse.ui.menus 拡張ポイントに追加することで、ビュー固有のツールバーを RCP アプリケーションに追加することに成功しました。

  <menuContribution
        allPopups="false"
        locationURI="toolbar:my.package.path.views.ClassOfMyView">
     <dynamic
           class="my.package.path.toolbars.ViewToolBar"
           id="MyViewToolbar">
     </dynamic>
  </menuContribution>

ただし、私のエディターパートで同じことをしようとしてもうまくいかないようです:

  <menuContribution
        allPopups="false"
        locationURI="toolbar:my.package.path.views.ClassOfMyEditorPart">
     <dynamic
           class="my.package.path.toolbars.EditorPartToolBar"
           id="MyEditorpartToolbar">
     </dynamic>
  </menuContribution>

私が欠けていることが明らかな何かがありますか、それとも単に RCP でサポートされていないのでしょうか?

4

2 に答える 2

4

Tony Madsen によって提供されたプレゼンテーション API に関するヒントをフォローアップして、問題の解決策を思いつきました。私の解決策は、次の記事に基づいています。

私のソリューションを機能させるために、最終的に 2 つのファイルと新しいクラスを変更しました。

plugin.xml ファイルに、次の拡張子を追加しました。

<extension point="org.eclipse.ui.presentationFactories">
    <factory
        name="Extended Presentation Factory"
        class="org.eclipse.minicrm.ui.swt.custom.ExtendedPresentationFactory"
        id="org.eclipse.minicrm.ui.swt.custom.ExtendedPresentationFactory"
    />
</extension>

これは Eclipse 4.x では無視されるようです。そのため、これらのケースに対応するために、次の行を plugin_customisation.ini ファイルに追加しました。

org.eclipse.ui/presentationFactoryId = org.eclipse.minicrm.ui.swt.custom.ExtendedPresentationFactory

次に、対応するクラスを作成しました。

import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.ui.internal.presentations.util.TabbedStackPresentation;
import org.eclipse.ui.presentations.IStackPresentationSite;
import org.eclipse.ui.presentations.StackPresentation;
import org.eclipse.ui.presentations.WorkbenchPresentationFactory;

@SuppressWarnings("restriction")
public class ExtendedPresentationFactory extends WorkbenchPresentationFactory {
  private ToolBarManager m_toolBarManager = null;
  private ToolBar m_toolbar = null;

  @Override
  public StackPresentation createEditorPresentation(final Composite parent, final IStackPresentationSite site) {
    final TabbedStackPresentation presentation = (TabbedStackPresentation) super.createViewPresentation(parent, site);

    m_toolbar = new ToolBar(presentation.getTabFolder().getToolbarParent(), 0);
    m_toolBarManager = new ToolBarManager(m_toolbar);
    m_toolBarManager.add(new MyAction1());
    m_toolBarManager.add(new MyAction2());
    m_toolBarManager.add(new MyAction3());
    m_toolBarManager.update(true);
    presentation.getTabFolder().setToolbar(m_toolbar);

    return presentation;
  }
}

これにより、3 つのボタンを備えたツールバーがエディター領域に追加されます。

まだいくつか細かい点 (配置など) をいじる必要がありますが、最初はエディター領域のツールバーに対する私のニーズを満たしています。

于 2013-04-16T08:28:57.890 に答える