如何在java文本中添加工具栏hover eclipse

时间:2016-05-08 09:30:32

标签: java eclipse plugins eclipse-plugin hover

我想为eclipse创建我自己的文本悬停插件。 我成功在我的悬停中编写自己的代码,但我尝试在悬停中添加一个工具栏(在新的工具提示内打开)。 我读到我需要使用getHoverControlCreator函数,我设法添加工具栏管理器,我在运行插件时打开文本悬停时看到,在debbuger中我可以看到ToolBarManger有ToolBar,它有ToolItems,但是当我打开它时,我无法在真实文本中看到它们。

这是我的代码:

public IInformationControlCreator getHoverControlCreator() {
        return new IInformationControlCreator() {
            public IInformationControl createInformationControl(Shell parent) {
                ToolBar tb = new ToolBar(parent, SWT.HORIZONTAL);
                ToolBarManager tbm = new ToolBarManager(tb);
                DefaultInformationControl dic = new DefaultInformationControl(parent, tbm);
                ToolItem ti = new ToolItem(tb, SWT.PUSH);
                ti.setText("hello");
    tb.update();
    tb.redraw();
    tbm.update(true);
    parent.update();
    parent.redraw();

    parent.layout();

                return dic;
            }

1 个答案:

答案 0 :(得分:0)

这是Eclipse悬停控件之一:

@Override
public IInformationControl doCreateInformationControl(Shell parent) {
    ToolBarManager tbm = new ToolBarManager(SWT.FLAT);

    DefaultInformationControl iControl = new DefaultInformationControl(parent, tbm);

    IAction action = new MyAction();
    tbm.add(action);

    tbm.update(true);

    return iControl;
}

因此它不会创建ToolBar - 请将其保留至DefaultInformationControl。它在工具栏中使用Action,并在创建DefaultInformationControl后添加它。它最后会调用update(true)

(这是org.eclipse.jdt.internal.ui.text.java.hover.NLSStringHover)部分的修改版本

MyAction会是这样的:

private class MyAction extends Action
{
  MyAction()
  {
    super("Title", .. image descriptor ..);

    setToolTipText("Tooltip");
  }

  @Override
  public void run()
  {
    // TODO your code for the action
  }
}