@Override public Object getHoverInfo(ISourceViewer sourceViewer, ILineRange lineRange, int visibleLines) { int first= adaptFirstLine(sourceViewer, lineRange.getStartLine()); int last= adaptLastLine(sourceViewer, lineRange.getStartLine() + lineRange.getNumberOfLines() - 1); String content= computeContent(sourceViewer, first, last, visibleLines); return formatSource(content); }
/** * Computes the content of the hover for the document contained in <code>viewer</code> on * line <code>line</code>. * * @param viewer the connected viewer * @param first the first line in <code>viewer</code>'s document to consider * @param last the last line in <code>viewer</code>'s document to consider * @param maxLines the max number of lines * @return The hover content corresponding to the parameters * @see #getHoverInfo(ISourceViewer, int) * @see #getHoverInfo(ISourceViewer, ILineRange, int) */ private String computeContent(ISourceViewer viewer, int first, int last, int maxLines) { ILineDiffer differ= getDiffer(viewer); if (differ == null) return null; final List<ILineDiffInfo> lines= new LinkedList<>(); for (int l= first; l <= last; l++) { ILineDiffInfo info= differ.getLineInfo(l); if (info != null) lines.add(info); } return decorateText(lines, maxLines); }
@Override public Object getHoverInfo(ISourceViewer sourceViewer, ILineRange lineRange, int visibleLines) { fLastScrollIndex= sourceViewer.getTextWidget().getHorizontalPixel(); return super.getHoverInfo(sourceViewer, lineRange, visibleLines); }
@Override public ILineRange getHoverLineRange(ISourceViewer viewer, int lineNumber) { IDocument document= viewer.getDocument(); if (document != null) { Point range= computeLineRange(viewer, lineNumber, 0, Math.max(0, document.getNumberOfLines() - 1)); if (range.x != -1 && range.y != -1) return new LineRange(range.x, range.y - range.x + 1); } return null; }
/** * Adapts the last line to the implementation of <code>ILineDiffInfo</code>. * * @param viewer the source viewer * @param lastLine the line to adapt * @return <code>lastLine - 1</code> if that line exists and is an * unchanged line followed by deletions, <code>startLine</code> * otherwise */ private int adaptLastLine(ISourceViewer viewer, int lastLine) { ILineDiffer differ= getDiffer(viewer); if (differ != null && lastLine > 0) { ILineDiffInfo info= differ.getLineInfo(lastLine); if (info != null && info.getChangeType() == ILineDiffInfo.UNCHANGED) return lastLine - 1; } return lastLine; }
/** * Formats the source w/ syntax coloring etc. This implementation replaces tabs with spaces. * May be overridden by subclasses. * * @param content the hover content * @return <code>content</code> reformatted */ protected String formatSource(String content) { if (content != null) { StringBuffer sb= new StringBuffer(content); final String tabReplacement= getTabReplacement(); for (int pos= 0; pos < sb.length(); pos++) { if (sb.charAt(pos) == '\t') sb.replace(pos, pos + 1, tabReplacement); } return sb.toString(); } return content; }
return trimTrailing(text); for (; i < original.length; i++) { text += "- " + original[i]; //$NON-NLS-1$ added--; if (--maxLines == 0) return trimTrailing(text);
@Override public ILineRange getHoverLineRange(ISourceViewer viewer, int lineNumber) { IDocument document= viewer.getDocument(); if (document != null) { Point range= computeLineRange(viewer, lineNumber, 0, Math.max(0, document.getNumberOfLines() - 1)); if (range.x != -1 && range.y != -1) return new LineRange(range.x, range.y - range.x + 1); } return null; }
/** * Adapts the last line to the implementation of <code>ILineDiffInfo</code>. * * @param viewer the source viewer * @param lastLine the line to adapt * @return <code>lastLine - 1</code> if that line exists and is an * unchanged line followed by deletions, <code>startLine</code> * otherwise */ private int adaptLastLine(ISourceViewer viewer, int lastLine) { ILineDiffer differ= getDiffer(viewer); if (differ != null && lastLine > 0) { ILineDiffInfo info= differ.getLineInfo(lastLine); if (info != null && info.getChangeType() == ILineDiffInfo.UNCHANGED) return lastLine - 1; } return lastLine; }
/** * Formats the source w/ syntax coloring etc. This implementation replaces tabs with spaces. * May be overridden by subclasses. * * @param content the hover content * @return <code>content</code> reformatted */ protected String formatSource(String content) { if (content != null) { StringBuilder sb= new StringBuilder(content); final String tabReplacement= getTabReplacement(); for (int pos= 0; pos < sb.length(); pos++) { if (sb.charAt(pos) == '\t') sb.replace(pos, pos + 1, tabReplacement); } return sb.toString(); } return content; }
return trimTrailing(text.toString()); for (; i < original.length; i++) { text.append("- ").append( original[i]); //$NON-NLS-1$ added--; if (--maxLines == 0) return trimTrailing(text.toString());
@Override public Object getHoverInfo(ISourceViewer sourceViewer, ILineRange lineRange, int visibleLines) { int first= adaptFirstLine(sourceViewer, lineRange.getStartLine()); int last= adaptLastLine(sourceViewer, lineRange.getStartLine() + lineRange.getNumberOfLines() - 1); String content= computeContent(sourceViewer, first, last, visibleLines); return formatSource(content); }
protected Point computeLineRange(ISourceViewer viewer, int line, int first, int number) { Point lineRange= super.computeLineRange(viewer, line, first, number); if (lineRange != null) { fPartition= getPartition(viewer, lineRange.x); } else { fPartition= IDocument.DEFAULT_CONTENT_TYPE; } fLastScrollIndex= viewer.getTextWidget().getHorizontalPixel(); if (fInformationControl != null) { fInformationControl.setStartingPartitionType(fPartition); fInformationControl.setHorizontalScrollPixel(fLastScrollIndex); } return lineRange; }
/** * Computes the content of the hover for the document contained in <code>viewer</code> on * line <code>line</code>. * * @param viewer the connected viewer * @param first the first line in <code>viewer</code>'s document to consider * @param last the last line in <code>viewer</code>'s document to consider * @param maxLines the max number of lines * @return The hover content corresponding to the parameters * @see #getHoverInfo(ISourceViewer, int) * @see #getHoverInfo(ISourceViewer, ILineRange, int) */ private String computeContent(ISourceViewer viewer, int first, int last, int maxLines) { ILineDiffer differ= getDiffer(viewer); if (differ == null) return null; final List<ILineDiffInfo> lines= new LinkedList<>(); for (int l= first; l <= last; l++) { ILineDiffInfo info= differ.getLineInfo(l); if (info != null) lines.add(info); } return decorateText(lines, maxLines); }
/** * Adapts the start line to the implementation of <code>ILineDiffInfo</code>. * * @param viewer the source viewer * @param startLine the line to adapt * @return <code>startLine - 1</code> if that line exists and is an * unchanged line followed by deletions, <code>startLine</code> * otherwise */ private int adaptFirstLine(ISourceViewer viewer, int startLine) { ILineDiffer differ= getDiffer(viewer); if (differ != null && startLine > 0) { int l= startLine - 1; ILineDiffInfo info= differ.getLineInfo(l); if (info != null && info.getChangeType() == ILineDiffInfo.UNCHANGED && info.getRemovedLinesBelow() > 0) return l; } return startLine; }
public Object getHoverInfo(ISourceViewer sourceViewer, ILineRange lineRange, int visibleLines) { fLastScrollIndex= sourceViewer.getTextWidget().getHorizontalPixel(); return super.getHoverInfo(sourceViewer, lineRange, visibleLines); }
@Override protected Point computeLineRange(ISourceViewer viewer, int line, int first, int number) { Point lineRange= super.computeLineRange(viewer, line, first, number); if (lineRange != null) { fPartition= getPartition(viewer, lineRange.x); } else { fPartition= IDocument.DEFAULT_CONTENT_TYPE; } fLastScrollIndex= viewer.getTextWidget().getHorizontalPixel(); if (fInformationControl != null) { fInformationControl.setStartingPartitionType(fPartition); fInformationControl.setHorizontalScrollPixel(fLastScrollIndex); } return lineRange; }
/** * Adapts the start line to the implementation of <code>ILineDiffInfo</code>. * * @param viewer the source viewer * @param startLine the line to adapt * @return <code>startLine - 1</code> if that line exists and is an * unchanged line followed by deletions, <code>startLine</code> * otherwise */ private int adaptFirstLine(ISourceViewer viewer, int startLine) { ILineDiffer differ= getDiffer(viewer); if (differ != null && startLine > 0) { int l= startLine - 1; ILineDiffInfo info= differ.getLineInfo(l); if (info != null && info.getChangeType() == ILineDiffInfo.UNCHANGED && info.getRemovedLinesBelow() > 0) return l; } return startLine; }
@Override protected Point computeLineRange(ISourceViewer viewer, int line, int first, int number) { Point lineRange= super.computeLineRange(viewer, line, first, number); if (lineRange != null) { fPartition= getPartition(viewer, lineRange.x); } else { fPartition= IDocument.DEFAULT_CONTENT_TYPE; } fLastScrollIndex= viewer.getTextWidget().getHorizontalPixel(); if (fInformationControl != null) { fInformationControl.setStartingPartitionType(fPartition); fInformationControl.setHorizontalScrollPixel(fLastScrollIndex); } return lineRange; }
ILineDiffer differ= getDiffer(viewer); if (differ == null) return new Point(-1, -1);