0

由于 tooltip 只能提供较少的提示,我们决定为 draw2d 图形等 UI 组件添加 F1(上下文敏感)帮助。但是面临一个问题:我们找不到合适的位置和参数来调用该方法IWorkbenchHelpSystem.setHelp(Control control, String contextId)

现在我们做一个这样的解决方法:

//in UserDefinedEditPart
@Override
protected IFigure createFigure() {
    //set help... (FIXME)   
    PlatformUI.getWorkbench().getHelpSystem().setHelp(Display.getCurrent().getActiveShell(), PublicConstants.CONTEXT_ID);
    return new UserDefinedFigure();
}

如您所见,setHelp()方法的第一个参数应该是 SWT 或 JFace 控件,但它被设置为当前工作台。我认为 draw2d 中的图形是轻量级的,并且与 SWT 或 JFace 没有任何关联。

感谢您的解决方案建议。

4

1 回答 1

0

SWT 和 draw2d 的小部件彼此完全不同。SWT 只是为 draw2d 提供了一个平台,可以在其中“绘制”一些东西。因此,对于 SWT,没有办法区分 draw2d 标签或 draw2d 连接。它所理解的只是“图形”的某些东西(可能有任意数量的图形作为它的子元素)将被绘制在某个指定区域(绘制,仅此而已,没有语义)。

您可以查看org.eclipse.jface.dialogs.PopupDialog类。也许您可以通过扩展此类来制作自定义帮助对话框(扩展起来并不难)。

于 2013-06-17T12:08:11.483 回答