/** * Tells whether the given offset is visible in the given text viewer. * * @param viewer * the text viewer * @param offset * the offset to check * @return <code>true</code> if the given offset is visible in the given text viewer */ protected boolean isVisible(ITextViewer viewer, int offset) { if (viewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension = (ITextViewerExtension5) viewer; return extension.modelOffset2WidgetOffset(offset) >= 0; } IRegion region = viewer.getVisibleRegion(); int vOffset = region.getOffset(); return (vOffset <= offset && offset <= vOffset + region.getLength()); } }
/** * Tells whether the given offset is visible in the given text viewer. * * @param viewer the text viewer * @param offset the offset to check * @return <code>true</code> if the given offset is visible in the given text viewer * * @since 2.1 */ protected final static boolean isVisible(ITextViewer viewer, int offset) { if (viewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) viewer; return extension.modelOffset2WidgetOffset(offset) >= 0; } IRegion region= viewer.getVisibleRegion(); int vOffset= region.getOffset(); return (vOffset <= offset && offset <= vOffset + region.getLength()); } }
/** * Convert a document offset to the corresponding widget offset. * * @param viewer the text viewer * @param documentOffset the document offset * @return widget offset * @since 3.6 */ private int getWidgetOffset(ITextViewer viewer, int documentOffset) { if (viewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5)viewer; return extension.modelOffset2WidgetOffset(documentOffset); } IRegion visible= viewer.getVisibleRegion(); int widgetOffset= documentOffset - visible.getOffset(); if (widgetOffset > visible.getLength()) { return -1; } return widgetOffset; }
/** * Clips the given start and end offset to the visible viewer region. * * @param startOffset the start offset * @param endOffset the end offset * @return the clipped region * @since 3.3.2 */ private IRegion clipToVisibleRegion(int startOffset, int endOffset) { ITextViewer viewer= fClipboard.getViewer(); IRegion visibleRegion; if (viewer instanceof ITextViewerExtension5) visibleRegion= ((ITextViewerExtension5) viewer).getModelCoverage(); else visibleRegion= viewer.getVisibleRegion(); int visibleStart= visibleRegion.getOffset(); int visibleLength= visibleRegion.getLength(); startOffset= Math.max(startOffset, visibleStart); endOffset= Math.min(endOffset, visibleStart + visibleLength); return new Region(startOffset, endOffset - startOffset); }
/** * Tells whether the given offset is visible in the given text viewer. * * @param viewer the text viewer * @param offset the offset to check * @return <code>true</code> if the given offset is visible in the given text viewer * * @since 2.1 */ protected final static boolean isVisible(ITextViewer viewer, int offset) { if (viewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) viewer; return extension.modelOffset2WidgetOffset(offset) >= 0; } IRegion region= viewer.getVisibleRegion(); int vOffset= region.getOffset(); return (vOffset <= offset && offset <= vOffset + region.getLength()); } }
/** * Tells whether the given offset is visible in the given text viewer. * * @param viewer the text viewer * @param offset the offset to check * @return <code>true</code> if the given offset is visible in the given text viewer * * @since 2.1 */ protected final static boolean isVisible(ITextViewer viewer, int offset) { if (viewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) viewer; return extension.modelOffset2WidgetOffset(offset) >= 0; } IRegion region= viewer.getVisibleRegion(); int vOffset= region.getOffset(); return (vOffset <= offset && offset <= vOffset + region.getLength()); } }
/** * Convert a document offset to the corresponding widget offset. * * @param viewer the text viewer * @param documentOffset the document offset * @return widget offset * @since 3.6 */ private int getWidgetOffset(ITextViewer viewer, int documentOffset) { if (viewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5)viewer; return extension.modelOffset2WidgetOffset(documentOffset); } IRegion visible= viewer.getVisibleRegion(); int widgetOffset= documentOffset - visible.getOffset(); if (widgetOffset > visible.getLength()) { return -1; } return widgetOffset; }
/** * Returns the location of the caret as offset in the source viewer's * input document. * * @return the caret location */ private int getModelCaret() { int widgetCaret= fViewer.getTextWidget().getCaretOffset(); if (fViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) fViewer; return extension.widgetOffset2ModelOffset(widgetCaret); } IRegion visible= fViewer.getVisibleRegion(); return widgetCaret + visible.getOffset(); }
/** * Returns the location of the caret as offset in the source viewer's * input document. * * @return the caret location */ private int getModelCaret() { int widgetCaret= fViewer.getTextWidget().getCaretOffset(); if (fViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) fViewer; return extension.widgetOffset2ModelOffset(widgetCaret); } IRegion visible= fViewer.getVisibleRegion(); return widgetCaret + visible.getOffset(); }
/** * 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 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; }
private int computeOffsetAtLocation(ITextViewer textViewer, int x, int y) { StyledText styledText= textViewer.getTextWidget(); IDocument document= textViewer.getDocument(); if (document == null) return -1; try { int widgetOffset= styledText.getOffsetAtLocation(new Point(x, y)); Point p= styledText.getLocationAtOffset(widgetOffset); if (p.x > x) widgetOffset--; if (textViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) textViewer; return extension.widgetOffset2ModelOffset(widgetOffset); } IRegion visibleRegion= textViewer.getVisibleRegion(); return widgetOffset + visibleRegion.getOffset(); } catch (IllegalArgumentException e) { return -1; } } }
/** * Translates the given text event into the corresponding range of the viewer's document. * * @param e the text event * @return the widget region corresponding the region of the given event or * <code>null</code> if none * @since 2.1 */ protected IRegion widgetRegion2ModelRegion(TextEvent e) { String text= e.getText(); int length= text == null ? 0 : text.length(); if (fViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) fViewer; return extension.widgetRange2ModelRange(new Region(e.getOffset(), length)); } IRegion visible= fViewer.getVisibleRegion(); IRegion region= new Region(e.getOffset() + visible.getOffset(), length); return region; } }
/** * Translates the given text event into the corresponding range of the viewer's document. * * @param e the text event * @return the widget region corresponding the region of the given event or * <code>null</code> if none * @since 2.1 */ protected IRegion widgetRegion2ModelRegion(TextEvent e) { String text= e.getText(); int length= text == null ? 0 : text.length(); if (fViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) fViewer; return extension.widgetRange2ModelRange(new Region(e.getOffset(), length)); } IRegion visible= fViewer.getVisibleRegion(); IRegion region= new Region(e.getOffset() + visible.getOffset(), length); return region; } }
/** * Translates a given region of the text viewer's document into * the corresponding region of the viewer's widget. * * @param region the document region * @param textViewer the viewer containing the region * @return the corresponding widget region * * @since 3.4 */ private static IRegion modelRange2WidgetRange(IRegion region, ITextViewer textViewer) { if (textViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) textViewer; return extension.modelRange2WidgetRange(region); } IRegion visibleRegion= textViewer.getVisibleRegion(); int start= region.getOffset() - visibleRegion.getOffset(); int end= start + region.getLength(); if (end > visibleRegion.getLength()) end= visibleRegion.getLength(); return new Region(start, end - start); }
/** * Translates a given region of the text viewer's document into * the corresponding region of the viewer's widget. * * @param region the document region * @param textViewer the viewer containing the region * @return the corresponding widget region * * @since 3.4 */ private static IRegion modelRange2WidgetRange(IRegion region, ITextViewer textViewer) { if (textViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) textViewer; return extension.modelRange2WidgetRange(region); } IRegion visibleRegion= textViewer.getVisibleRegion(); int start= region.getOffset() - visibleRegion.getOffset(); int end= start + region.getLength(); if (end > visibleRegion.getLength()) end= visibleRegion.getLength(); return new Region(start, end - start); }
private void repairPresentation(ITextViewer viewer) { if (fRememberedStyleRange != null) { if (viewer instanceof ITextViewerExtension2) { // attempts to reduce the redraw area ITextViewerExtension2 viewer2= (ITextViewerExtension2) viewer; if (viewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) viewer; IRegion modelRange= extension.widgetRange2ModelRange(new Region(fRememberedStyleRange.start, fRememberedStyleRange.length)); if (modelRange != null) viewer2.invalidateTextPresentation(modelRange.getOffset(), modelRange.getLength()); } else { viewer2.invalidateTextPresentation(fRememberedStyleRange.start + viewer.getVisibleRegion().getOffset(), fRememberedStyleRange.length); } } else viewer.invalidateTextPresentation(); } }
private IRegion modelRange2WidgetRange(IRegion region) { if (fEditorViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension = (ITextViewerExtension5) fEditorViewer; return extension.modelRange2WidgetRange(region); } if (fEditorViewer instanceof TextViewer) { return ((TextViewer) fEditorViewer).modelRange2WidgetRange(region); } IRegion visibleRegion = fEditorViewer.getVisibleRegion(); int start = region.getOffset() - visibleRegion.getOffset(); int end = start + region.getLength(); if (end > visibleRegion.getLength()) end = visibleRegion.getLength(); return new Region(start, end - start); }
/** * Translated the given range in the viewer's document into the corresponding * range of the viewer's widget. * * @param region the range in the viewer's document * @return the corresponding widget range * @since 2.1 */ private IRegion modelRange2WidgetRange(IRegion region) { if (fTextViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) fTextViewer; return extension.modelRange2WidgetRange(region); } IRegion visibleRegion= fTextViewer.getVisibleRegion(); int start= region.getOffset() - visibleRegion.getOffset(); int end= start + region.getLength(); if (end > visibleRegion.getLength()) end= visibleRegion.getLength(); return new Region(start, end - start); }
/** * Translated the given range in the viewer's document into the corresponding * range of the viewer's widget. * * @param region the range in the viewer's document * @return the corresponding widget range * @since 2.1 */ private IRegion modelRange2WidgetRange(IRegion region) { if (fTextViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5) fTextViewer; return extension.modelRange2WidgetRange(region); } IRegion visibleRegion= fTextViewer.getVisibleRegion(); int start= region.getOffset() - visibleRegion.getOffset(); int end= start + region.getLength(); if (end > visibleRegion.getLength()) end= visibleRegion.getLength(); return new Region(start, end - start); }