【问题标题】:Eclipse 3.3 Europa JDT TextHoverEclipse 3.3 Europa JDT TextHover
【发布时间】:2009-05-21 09:09:54
【问题描述】:

我想在 Eclipse 中显示我自己的文本悬停在某些特定的单词上?请给我一些例子

【问题讨论】:

  • 您使用 3.3 Europa 有什么特别的原因吗? 3.4 Ganymede 已经快一年了,我们即将发布 3.5 Galileo。

标签: eclipse plugins eclipse-jdt


【解决方案1】:

您可以先查看Koder examples

例如这个CEditorTextHoverDispatcher 或者这个UCTextHover

package com.ut2003.uceditor;

import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITextHover;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.Region;
import org.eclipse.swt.graphics.Point;

public class UCTextHover implements ITextHover
{

    /* (non-Javadoc)
     * Method declared on ITextHover
     */
    public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion)
    {
        if (hoverRegion != null)
        {
            try
            {
                if (hoverRegion.getLength() > -1)
                    return textViewer.getDocument().get(hoverRegion.getOffset(), hoverRegion.getLength());
            }
            catch (BadLocationException x)
            {
            }
        }
        return "Empty Selection";
    }

    /* (non-Javadoc)
     * Method declared on ITextHover
     */
    public IRegion getHoverRegion(ITextViewer textViewer, int offset)
    {
        Point selection = textViewer.getSelectedRange();
        if (selection.x <= offset && offset < selection.x + selection.y)
            return new Region(selection.x, selection.y);
        return new Region(offset, 0);
    }
}

您可以在 SourceViewerConfiguration 中设置 TextHover,例如 GasSourceViewerConfigurationCalcSourceViewerConfiguration

package com.example.calc.ui.editors;

import org.eclipse.jface.text.ITextHover;
import org.eclipse.jface.text.reconciler.IReconciler;
import org.eclipse.jface.text.reconciler.MonoReconciler;
import org.eclipse.jface.text.source.ISourceViewer;
import org.eclipse.jface.text.source.SourceViewerConfiguration;

/**
 * @author cdaly
 *
 * To change the template for this generated type comment go to
 * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
 */
public class CalcSourceViewerConfiguration extends SourceViewerConfiguration {

    private CalcEditor _editor;

    public CalcSourceViewerConfiguration(CalcEditor editor){
        _editor = editor;
    }



    /* (non-Javadoc)
     * @see org.eclipse.jface.text.source.SourceViewerConfiguration#getReconciler(org.eclipse.jface.text.source.ISourceViewer)
     */
    public IReconciler getReconciler(ISourceViewer sourceViewer) {
        return new MonoReconciler(_editor.getReconcilingStrategy(), false);
    }

    /* (non-Javadoc)
     * @see org.eclipse.jface.text.source.SourceViewerConfiguration#getTextHover(org.eclipse.jface.text.source.ISourceViewer, java.lang.String)
     */
    public ITextHover getTextHover(
        ISourceViewer sourceViewer,
        String contentType) {
        ITextHover hover;
        if (_editor != null && _editor instanceof CalcEditor) {
            hover = new CalcTextHover((CalcEditor)_editor);
        } else {
            hover = null;
        }
        return hover;
    }

}

除此之外,我没有更多信息:我发现的示例比声明性更程序化(即“plugin.xml”),因此您可能需要探索更多代码。

另一个很好的例子:Eclipse: Rich Hovers Redux(虽然它适用于 eclipse3.4,但完整的例子可以为您提供另一个提示,说明如何将自定义 ITextHover 添加到当前编辑器)

【讨论】:

  • 非常感谢您的回答。我应该在 eclipse 插件开发环境中使用哪个向导来在 JavaEditor 中添加这个悬停?我应该在 plugin.xml 中添加哪个扩展点才能在 JavaEditor 中得到它
【解决方案2】:

最好的办法是先使用 java 编辑器插件和 eclipse。获取eclipse帮助->welcome->Samples->Java Editor plugin

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多