当前位置: 首页>>代码示例>>Java>>正文


Java ITextSelection.getEndLine方法代码示例

本文整理汇总了Java中org.eclipse.jface.text.ITextSelection.getEndLine方法的典型用法代码示例。如果您正苦于以下问题:Java ITextSelection.getEndLine方法的具体用法?Java ITextSelection.getEndLine怎么用?Java ITextSelection.getEndLine使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.eclipse.jface.text.ITextSelection的用法示例。


在下文中一共展示了ITextSelection.getEndLine方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: getMovingSelection

import org.eclipse.jface.text.ITextSelection; //导入方法依赖的package包/类
/**
 * Given a selection on a document, computes the lines fully or partially covered by
 * <code>selection</code>. A line in the document is considered covered if
 * <code>selection</code> comprises any characters on it, including the terminating delimiter.
 * <p>Note that the last line in a selection is not considered covered if the selection only
 * comprises the line delimiter at its beginning (that is considered part of the second last
 * line).
 * As a special case, if the selection is empty, a line is considered covered if the caret is
 * at any position in the line, including between the delimiter and the start of the line. The
 * line containing the delimiter is not considered covered in that case.
 * </p>
 *
 * @param document the document <code>selection</code> refers to
 * @param selection a selection on <code>document</code>
 * @param viewer the <code>ISourceViewer</code> displaying <code>document</code>
 * @return a selection describing the range of lines (partially) covered by
 * <code>selection</code>, without any terminating line delimiters
 * @throws BadLocationException if the selection is out of bounds (when the underlying document has changed during the call)
 */
private ITextSelection getMovingSelection(IDocument document, ITextSelection selection, ITextViewer viewer) throws BadLocationException {
	int low= document.getLineOffset(selection.getStartLine());
	int endLine= selection.getEndLine();
	int high= document.getLineOffset(endLine) + document.getLineLength(endLine);

	// get everything up to last line without its delimiter
	String delim= document.getLineDelimiter(endLine);
	if (delim != null)
		high -= delim.length();

	// the new selection will cover the entire lines being moved, except for the last line's
	// delimiter. The exception to this rule is an empty last line, which will stay covered
	// including its delimiter
	if (delim != null && document.getLineLength(endLine) == delim.length())
		fAddDelimiter= true;
	else
		fAddDelimiter= false;

	return new TextSelection(document, low, high - low);
}
 
开发者ID:cplutte,项目名称:bts,代码行数:40,代码来源:TextViewerMoveLinesAction.java

示例2: run

import org.eclipse.jface.text.ITextSelection; //导入方法依赖的package包/类
public void run()
{
    ITextEditor editor = getTextEditor();
    ISelection selection = editor.getSelectionProvider().getSelection();
    if (selection instanceof ITextSelection)
    {
        ITextSelection textSelection = (ITextSelection) selection;
        if (textSelection.getLength() != 0)
        {
            IAnnotationModel model = getAnnotationModel(editor);
            if (model != null)
            {

                int start = textSelection.getStartLine();
                int end = textSelection.getEndLine();

                try
                {
                    IDocument document = editor.getDocumentProvider().getDocument(editor.getEditorInput());
                    int offset = document.getLineOffset(start);
                    int endOffset = document.getLineOffset(end + 1);
                    Position position = new Position(offset, endOffset - offset);
                    model.addAnnotation(new ProjectionAnnotation(), position);
                } catch (BadLocationException x)
                {
                    // ignore
                }
            }
        }
    }
}
 
开发者ID:tlaplus,项目名称:tlaplus,代码行数:32,代码来源:DefineFoldingRegionAction.java

示例3: containedByVisibleRegion

import org.eclipse.jface.text.ITextSelection; //导入方法依赖的package包/类
/**
 * Checks if <code>selection</code> is contained by the visible region of <code>viewer</code>.
 * As a special case, a selection is considered contained even if it extends over the visible
 * region, but the extension stays on a partially contained line and contains only white space.
 *
 * @param selection the selection to be checked
 * @param viewer the viewer displaying a visible region of <code>selection</code>'s document.
 * @return <code>true</code>, if <code>selection</code> is contained, <code>false</code> otherwise.
 */
private boolean containedByVisibleRegion(ITextSelection selection, ITextViewer viewer) {
	int min= selection.getOffset();
	int max= min + selection.getLength();
	IDocument document= viewer.getDocument();

	IRegion visible;
	if (viewer instanceof ITextViewerExtension5)
		visible= ((ITextViewerExtension5) viewer).getModelCoverage();
	else
		visible= viewer.getVisibleRegion();

	int visOffset= visible.getOffset();
	try {
		if (visOffset > min) {
			if (document.getLineOfOffset(visOffset) != selection.getStartLine())
				return false;
			if (!isWhitespace(document.get(min, visOffset - min))) {
				return false;
			}
		}
		int visEnd= visOffset + visible.getLength();
		if (visEnd < max) {
			if (document.getLineOfOffset(visEnd) != selection.getEndLine())
				return false;
			if (!isWhitespace(document.get(visEnd, max - visEnd))) {
				return false;
			}
		}
		return true;
	} catch (BadLocationException e) {
	}
	return false;
}
 
开发者ID:cplutte,项目名称:bts,代码行数:43,代码来源:TextViewerMoveLinesAction.java

示例4: getSkippedLine

import org.eclipse.jface.text.ITextSelection; //导入方法依赖的package包/类
/**
 * Computes the region of the skipped line given the text block to be moved. If
 * <code>fUpwards</code> is <code>true</code>, the line above <code>selection</code>
 * is selected, otherwise the line below.
 *
 * @param document the document <code>selection</code> refers to
 * @param selection the selection on <code>document</code> that will be moved.
 * @return the region comprising the line that <code>selection</code> will be moved over, without its terminating delimiter.
 */
private ITextSelection getSkippedLine(IDocument document, ITextSelection selection) {
	int skippedLineN= (fUpwards ? selection.getStartLine() - 1 : selection.getEndLine() + 1);
	if (skippedLineN > document.getNumberOfLines() || (!fCopy && (skippedLineN < 0 ||  skippedLineN == document.getNumberOfLines())))
		return null;
	try {
		if (fCopy && skippedLineN == -1)
			skippedLineN= 0;
		IRegion line= document.getLineInformation(skippedLineN);
		return new TextSelection(document, line.getOffset(), line.getLength());
	} catch (BadLocationException e) {
		// only happens on concurrent modifications
		return null;
	}
}
 
开发者ID:cplutte,项目名称:bts,代码行数:24,代码来源:TextViewerMoveLinesAction.java

示例5: run

import org.eclipse.jface.text.ITextSelection; //导入方法依赖的package包/类
@Override
public void run() {

	ITextViewer viewer= getTextViewer();
	if (viewer == null)
		return;

	if (!canModifyViewer())
		return;

	IDocument document= viewer.getDocument();
	if (document == null)
		return;

	ITextSelection selection= getSelection(viewer);
	if (selection == null)
		return;

	int startLine= selection.getStartLine();
	int endLine= selection.getEndLine();
	try {
		int caretOffset= joinLines(document, startLine, endLine);
		if (caretOffset > -1) {
			StyledText widget= viewer.getTextWidget();
			widget.setRedraw(false);
			adjustHighlightRange(viewer, caretOffset, 0);
			viewer.revealRange(caretOffset, 0);

			viewer.setSelectedRange(caretOffset, 0);
			widget.setRedraw(true);
		}
	} catch (BadLocationException e) {
		// should not happen
	}

}
 
开发者ID:cplutte,项目名称:bts,代码行数:37,代码来源:TextViewerJoinLinesAction.java

示例6: convertRegion

import org.eclipse.jface.text.ITextSelection; //导入方法依赖的package包/类
private static IRegion convertRegion(int offset, int length, String text,
    String originalDelimiter) {
  try {
    Document document = new Document(text);
    String delimiter = document.getLineDelimiter(0);

    // If the document's line delimiter is the same as that used to originally
    // calculate this offset/length, then just return the original region.
    if (delimiter == null || delimiter.equals(originalDelimiter)) {
      return new Region(offset, length);
    }

    // If we're running a platform other than the one this offset/length was
    // calculated on, we'll need to adjust the values. We start by creating
    // a text selection containing the original region and the text with the
    // original line endings.
    String originalText = text.replaceAll(delimiter, originalDelimiter);
    ITextSelection originalSelection = new TextSelection(new Document(
        originalText), offset, length);

    int delimiterLengthCorrection = originalDelimiter.length()
        - delimiter.length();

    // Adjust the offset by the delimiter length difference for each line
    // that came before it.
    int newOffset = originalSelection.getOffset()
        - (delimiterLengthCorrection * originalSelection.getStartLine());

    // Adjust the length by the delimiter length difference for each line
    // between the start and the end of the original region

    // TODO: account for case where the selection ends with a line break;
    // currently this will not update the length since the selection starts
    // and ends on the same line.
    int regionLineBreaks = originalSelection.getEndLine()
        - originalSelection.getStartLine();
    int newLength = originalSelection.getLength()
        - (delimiterLengthCorrection * regionLineBreaks);

    return new Region(newOffset, newLength);
  } catch (BadLocationException e) {
    return null;
  }
}
 
开发者ID:gwt-plugins,项目名称:gwt-eclipse-plugin,代码行数:45,代码来源:RegionConverter.java


注:本文中的org.eclipse.jface.text.ITextSelection.getEndLine方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。