将鼠标悬停在eclipse verticalRuler上时,多行标记消息显示在一行中

时间:2013-11-04 21:02:56

标签: eclipse editor eclipse-rcp eclipse-plugin

我正在通过下面的代码在eclipse中向垂直标尺添加标记。 问题是,当同一编辑器行上有多个标记时,它们的消息将在一行(连接)中显示,位于编辑器垂直标尺上的悬停弹出窗口中。 这种消息格式不是用户友好的,因为最终用户无法理解一条消息何时结束而另一条消息何时开始。在Eclipse的Java编辑器中,在编辑器中同一行的多标记处,标记的消息被拆分为垂直标尺悬停弹出窗口中的不同行。

如果在我的编辑器行中从同一行代码发出标记时,如何在verticalRuler悬停弹出窗口内的不同行中放置不同的标记消息?

提前感谢您的帮助

    try {
        final IMarker marker = file.createMarker(MARKER_TYPE);

        marker.setAttribute(IMarker.MESSAGE, issue.getMessage());
        marker.setAttribute(IMarker.SEVERITY, issue.getSeverity().ordinal());
        int lineNumber = issue.getLine();
        if (lineNumber == -1) {
            lineNumber = 1;
        }
        marker.setAttribute(IMarker.LINE_NUMBER, lineNumber);
        marker.setAttribute(IMarker.LOCATION, MessageFormat.format(Messages.FILE_TYPE_PLACEHOLDER, Integer.toString(lineNumber)));
        marker.setAttribute(IMarker.CHAR_START, issue.getOffset());
        int charEnd = issue.getOffset() + issue.getLength();
        final String sourceStr = mEditor.getDocumentProvider().getDocument(mEditor.getEditorInput()).get();
        if (charEnd > sourceStr.length()) {
            charEnd = -1;
        }
        marker.setAttribute(IMarker.CHAR_END, charEnd);

    } catch (CoreException e) {
        Activator.getEditorLog().logError("Could not add marker", e); //$NON-NLS-1$
    }

1 个答案:

答案 0 :(得分:1)

看起来这是在JavaEditor.createAnnotationRulerColumn中设置的。这会创建AnnotationRulerColumn,然后调用AnnotationRulerColumn.setHover指定JavaExpandHover的实例。

JavaExpandHover使用了许多JDT内部类来构造悬停数据,但这些都实现了标准接口,因此可以复制(但代码太长了,但在这里!)