2010-03-19 54 views
4

我需要确定一个给定的选择是否在开始行和结束行之间。 我有一个ILineRange和日食视口内给定的偏移量。 (我需要知道,如果选择(来自远程方)是在当前用户的当前视口内进行的,但不幸的是,我不能从选择中获得ILineRange。我必须依赖getOffset()和getLength()。 。
任何人有一个想法?
我觉得没有这个干净的解决方案,作为偏移(或每行的字符不同(新线行或注释的一大块)。确定行号之间是否有偏移量?

+0

当你说“视口”时,你的意思是eclipse输出视口?带“视口”的 – 2010-03-23 16:38:07

+0

我的意思是当前用户打开的编辑器窗口的可见行。 – Gnark 2010-03-23 16:55:33

+0

两个给定的答案都不适用? – 2010-03-24 11:42:25

回答

1

位置和偏移之间的转换可以使用IDocument的API(getLine *()方法)完成。 (我不确定我完全理解你的问题,但我确实希望这是有用的信息。)

1

也许你可以检查是否是org.eclipse.linuxtools.dataviewers.annotatedsourceeditor.STOverviewRuler class涉及的是同样的问题,你有
东西沿的线路:

if (ANNOTATION_HEIGHT_SCALABLE) { 
    int numbersOfLines= document.getNumberOfLines(annotationOffset, annotationLength); 
    // don't count empty trailing lines 
    IRegion lastLine= document.getLineInformationOfOffset(annotationOffset + annotationLength); 
    if (lastLine.getOffset() == annotationOffset + annotationLength) { 
    numbersOfLines -= 2; 
    hh= (numbersOfLines * size.y)/maxLines + ANNOTATION_HEIGHT; 
    if (hh < ANNOTATION_HEIGHT) 
     hh= ANNOTATION_HEIGHT; 
    } else 
     hh= ANNOTATION_HEIGHT; 
    } 
    fAnnotationHeight= hh; 

    int startLine= textWidget.getLineAtOffset(annotationOffset - visible.getOffset()); 
         yy= Math.min((startLine * size.y)/maxLines, size.y - hh);