/** * Check if the given widget line is a folded line. * * @param widgetLine the widget line number * @return <code>true</code> if the line is folded */ private boolean isFoldedLine(int widgetLine) { if (fTextViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5)fTextViewer; int modelLine= extension.widgetLine2ModelLine(widgetLine); int widgetLine2= extension.modelLine2WidgetLine(modelLine + 1); return widgetLine2 == -1; } return false; }
/** * Check if the given widget line is a folded line. * * @param widgetLine the widget line number * @return <code>true</code> if the line is folded */ private boolean isFoldedLine(int widgetLine) { if (fTextViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5)fTextViewer; int modelLine= extension.widgetLine2ModelLine(widgetLine); int widgetLine2= extension.modelLine2WidgetLine(modelLine + 1); return widgetLine2 == -1; } return false; }
private void updateEditorTopIndex() { int caretOffset = fMinimapTextWidget.getCaretOffset(); int lineAtOffset = fMinimapTextWidget.getLineAtOffset(caretOffset); int newTopIndex = lineAtOffset; if (fEditorViewer instanceof ITextViewerExtension5) { // adjust offset according folded content newTopIndex = ((ITextViewerExtension5) fEditorViewer).widgetLine2ModelLine(lineAtOffset); } fEditorViewer.setTopIndex(newTopIndex); }
public void run() { if (fSourceViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) fSourceViewer; StyledText textWidget= fSourceViewer.getTextWidget(); int topIndex= textWidget.getTopIndex(); int newTopIndex= Math.max(0, topIndex + fScrollIncrement); fSourceViewer.setTopIndex(extension.widgetLine2ModelLine(newTopIndex)); } else { int topIndex= fSourceViewer.getTopIndex(); int newTopIndex= Math.max(0, topIndex + fScrollIncrement); fSourceViewer.setTopIndex(newTopIndex); } } }
/** * Handles mouse scrolled events on the ruler by forwarding them to the text widget. * * @param e the mouse event * @since 3.10 */ void handleMouseScrolled(MouseEvent e) { if (fCachedTextViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) fCachedTextViewer; StyledText textWidget= fCachedTextViewer.getTextWidget(); int topIndex= textWidget.getTopIndex(); int newTopIndex= Math.max(0, topIndex - e.count); fCachedTextViewer.setTopIndex(extension.widgetLine2ModelLine(newTopIndex)); } else { int topIndex= fCachedTextViewer.getTopIndex(); int newTopIndex= Math.max(0, topIndex - e.count); fCachedTextViewer.setTopIndex(newTopIndex); } }
/** * Handles mouse scrolls. * * @param event the mouse scrolled event */ private void handleMouseScrolled(MouseEvent event) { if (fTextViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) fTextViewer; StyledText textWidget= fTextViewer.getTextWidget(); int topIndex= textWidget.getTopIndex(); int newTopIndex= Math.max(0, topIndex - event.count); fTextViewer.setTopIndex(extension.widgetLine2ModelLine(newTopIndex)); } else if (fTextViewer != null) { int topIndex= fTextViewer.getTopIndex(); int newTopIndex= Math.max(0, topIndex - event.count); fTextViewer.setTopIndex(newTopIndex); } }
@Override public void run() { if (fSourceViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) fSourceViewer; StyledText textWidget= fSourceViewer.getTextWidget(); int topIndex= textWidget.getTopIndex(); int newTopIndex= Math.max(0, topIndex + fScrollIncrement); fSourceViewer.setTopIndex(extension.widgetLine2ModelLine(newTopIndex)); } else { int topIndex= fSourceViewer.getTopIndex(); int newTopIndex= Math.max(0, topIndex + fScrollIncrement); fSourceViewer.setTopIndex(newTopIndex); } } }
@Override public void run() { if (fSourceViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) fSourceViewer; StyledText textWidget= fSourceViewer.getTextWidget(); int topIndex= textWidget.getTopIndex(); int newTopIndex= Math.max(0, topIndex + fScrollIncrement); fSourceViewer.setTopIndex(extension.widgetLine2ModelLine(newTopIndex)); } else { int topIndex= fSourceViewer.getTopIndex(); int newTopIndex= Math.max(0, topIndex + fScrollIncrement); fSourceViewer.setTopIndex(newTopIndex); } } }
/** * Handles mouse scrolled events on the ruler by forwarding them to the text widget. * * @param e the mouse event * @since 3.10 */ void handleMouseScrolled(MouseEvent e) { if (fCachedTextViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) fCachedTextViewer; StyledText textWidget= fCachedTextViewer.getTextWidget(); int topIndex= textWidget.getTopIndex(); int newTopIndex= Math.max(0, topIndex - e.count); fCachedTextViewer.setTopIndex(extension.widgetLine2ModelLine(newTopIndex)); } else { int topIndex= fCachedTextViewer.getTopIndex(); int newTopIndex= Math.max(0, topIndex - e.count); fCachedTextViewer.setTopIndex(newTopIndex); } }
/** * Handles mouse scrolls. * * @param event the mouse scrolled event */ private void handleMouseScrolled(MouseEvent event) { if (fCachedTextViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) fCachedTextViewer; StyledText textWidget= fCachedTextViewer.getTextWidget(); int topIndex= textWidget.getTopIndex(); int newTopIndex= Math.max(0, topIndex - event.count); fCachedTextViewer.setTopIndex(extension.widgetLine2ModelLine(newTopIndex)); } else if (fCachedTextViewer != null) { int topIndex= fCachedTextViewer.getTopIndex(); int newTopIndex= Math.max(0, topIndex - event.count); fCachedTextViewer.setTopIndex(newTopIndex); } }
/** * Handles mouse scrolls. * * @param event the mouse scrolled event */ private void handleMouseScrolled(MouseEvent event) { if (fTextViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) fTextViewer; StyledText textWidget= fTextViewer.getTextWidget(); int topIndex= textWidget.getTopIndex(); int newTopIndex= Math.max(0, topIndex - event.count); fTextViewer.setTopIndex(extension.widgetLine2ModelLine(newTopIndex)); } else if (fTextViewer != null) { int topIndex= fTextViewer.getTopIndex(); int newTopIndex= Math.max(0, topIndex - event.count); fTextViewer.setTopIndex(newTopIndex); } }
/** * Handles mouse scrolls. * * @param event the mouse scrolled event */ private void handleMouseScrolled(MouseEvent event) { if (fCachedTextViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) fCachedTextViewer; StyledText textWidget= fCachedTextViewer.getTextWidget(); int topIndex= textWidget.getTopIndex(); int newTopIndex= Math.max(0, topIndex - event.count); fCachedTextViewer.setTopIndex(extension.widgetLine2ModelLine(newTopIndex)); } else if (fCachedTextViewer != null) { int topIndex= fCachedTextViewer.getTopIndex(); int newTopIndex= Math.max(0, topIndex - event.count); fCachedTextViewer.setTopIndex(newTopIndex); } }
/** * Returns the line of the viewer's document that corresponds to the given widget line. * * @param viewer the viewer * @param widgetLine the widget line * @return the corresponding line of the viewer's document * @since 2.1 */ protected final static int widgetLine2ModelLine(ITextViewer viewer, int widgetLine) { if (viewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) viewer; return extension.widgetLine2ModelLine(widgetLine); } try { IRegion r= viewer.getVisibleRegion(); IDocument d= viewer.getDocument(); return widgetLine += d.getLineOfOffset(r.getOffset()); } catch (BadLocationException x) { } return widgetLine; }
/** * Returns the line in the given viewer's document that correspond to the given * line of the viewer's widget. * * @param viewer the viewer * @param widgetLine the widget line * @return the corresponding line the viewer's document * @since 2.1 */ protected final static int widgetLine2ModelLine(ITextViewer viewer, int widgetLine) { if (viewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) viewer; return extension.widgetLine2ModelLine(widgetLine); } try { IRegion r= viewer.getVisibleRegion(); IDocument d= viewer.getDocument(); return widgetLine + d.getLineOfOffset(r.getOffset()); } catch (BadLocationException x) { } return widgetLine; }
/** * Returns the line of the viewer's document that corresponds to the given widget line. * * @param viewer the viewer * @param widgetLine the widget line * @return the corresponding line of the viewer's document * @since 2.1 */ protected final static int widgetLine2ModelLine(ITextViewer viewer, int widgetLine) { if (viewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) viewer; return extension.widgetLine2ModelLine(widgetLine); } try { IRegion r= viewer.getVisibleRegion(); IDocument d= viewer.getDocument(); return widgetLine + d.getLineOfOffset(r.getOffset()); } catch (BadLocationException x) { } return widgetLine; }
/** * Returns the line in the given viewer's document that correspond to the given * line of the viewer's widget. * * @param viewer the viewer * @param widgetLine the widget line * @return the corresponding line the viewer's document * @since 2.1 */ protected final static int widgetLine2ModelLine(ITextViewer viewer, int widgetLine) { if (viewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) viewer; return extension.widgetLine2ModelLine(widgetLine); } try { IRegion r= viewer.getVisibleRegion(); IDocument d= viewer.getDocument(); return widgetLine += d.getLineOfOffset(r.getOffset()); } catch (BadLocationException x) { } return widgetLine; }
/** * Converts a widget line into a model (i.e. {@link IDocument}) line using the * {@link ITextViewerExtension5} if available, otherwise by adapting the widget line to the * viewer's {@link ITextViewer#getVisibleRegion() visible region}. * * @param viewer the viewer * @param widgetLine the widget line to convert. * @return the model line corresponding to <code>widgetLine</code> or -1 to signal that there * is no corresponding model line */ public static int widgetLine2ModelLine(ITextViewer viewer, int widgetLine) { int modelLine; if (viewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) viewer; modelLine= extension.widgetLine2ModelLine(widgetLine); } else { try { IRegion r= viewer.getVisibleRegion(); IDocument d= viewer.getDocument(); if (d == null) return -1; modelLine= widgetLine + d.getLineOfOffset(r.getOffset()); } catch (BadLocationException x) { modelLine= widgetLine; } } return modelLine; }
/** * Converts a widget line into a model (i.e. {@link IDocument}) line using the * {@link ITextViewerExtension5} if available, otherwise by adapting the widget line to the * viewer's {@link ITextViewer#getVisibleRegion() visible region}. * * @param viewer the viewer * @param widgetLine the widget line to convert. * @return the model line corresponding to <code>widgetLine</code> or -1 to signal that there * is no corresponding model line */ public static int widgetLine2ModelLine(ITextViewer viewer, int widgetLine) { int modelLine; if (viewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) viewer; modelLine= extension.widgetLine2ModelLine(widgetLine); } else { try { IRegion r= viewer.getVisibleRegion(); IDocument d= viewer.getDocument(); if (d == null) return -1; modelLine= widgetLine + d.getLineOfOffset(r.getOffset()); } catch (BadLocationException x) { modelLine= widgetLine; } } return modelLine; }
/** * Returns the document relative offset from the text widget relative point * * @param document the document * @param textWidget the text widget * @param point the point for which to get the offset * @return the offset * @throws BadLocationException if the document is accessed with an invalid line */ private int getOffset(IDocument document, StyledText textWidget, Point point) throws BadLocationException { int widgetCaret= fViewer.getTextWidget().getCaretOffset(); if (fViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 ext= (ITextViewerExtension5) fViewer; try { return ext.widgetOffset2ModelOffset(textWidget.getOffsetAtLocation(point)); } catch (IllegalArgumentException e) { int docLineIndex= ext.widgetLine2ModelLine(textWidget.getLineIndex(point.y)); String lineDelimiter= document.getLineDelimiter(docLineIndex); int delimLength= lineDelimiter == null ? 0 : lineDelimiter.length(); return document.getLineOffset(docLineIndex) + document.getLineLength(docLineIndex) - delimLength; } } IRegion visible= fViewer.getVisibleRegion(); return widgetCaret + visible.getOffset(); } }
/** * Returns the document relative offset from the text widget relative point * * @param document the document * @param textWidget the text widget * @param point the point for which to get the offset * @return the offset * @throws BadLocationException if the document is accessed with an invalid line */ private int getOffset(IDocument document, StyledText textWidget, Point point) throws BadLocationException { int widgetCaret= fViewer.getTextWidget().getCaretOffset(); if (fViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 ext= (ITextViewerExtension5) fViewer; int widgetOffset = textWidget.getOffsetAtPoint(point); int offset = widgetOffset != -1 ? ext.widgetOffset2ModelOffset(textWidget.getOffsetAtPoint(point)) : -1; if (offset == -1) { int docLineIndex= ext.widgetLine2ModelLine(textWidget.getLineIndex(point.y)); String lineDelimiter= document.getLineDelimiter(docLineIndex); int delimLength= lineDelimiter == null ? 0 : lineDelimiter.length(); return document.getLineOffset(docLineIndex) + document.getLineLength(docLineIndex) - delimLength; } return offset; } IRegion visible= fViewer.getVisibleRegion(); return widgetCaret + visible.getOffset(); } }