@Override public boolean advanceLocator(GC gc, int wHint, Locator loc, Hashtable<String, Object> objectTable, boolean computeHeightOnly) { boolean newLine = false; for (int i = 0; i < segments.size(); i++) { ParagraphSegment segment = segments.get(i); if (segment.advanceLocator(gc, wHint, loc, objectTable, computeHeightOnly)) newLine = true; } return newLine; }
public void clearCache(String fontId) { if (segments != null) { for (int i = 0; i < segments.size(); i++) { ParagraphSegment segment = segments.get(i); segment.clearCache(fontId); } } } }
@Override public void computeSelection(GC gc, Hashtable<String, Object> resourceTable, SelectionData selData) { for (int i = 0; i < segments.size(); i++) { ParagraphSegment segment = segments.get(i); segment.computeSelection(gc, resourceTable, selData); } }
public void paint(GC gc, Rectangle repaintRegion, Hashtable<String, Object> resourceTable, IHyperlinkSegment selectedLink, SelectionData selData) { ParagraphSegment[] segments = getSegments(); for (ParagraphSegment segment : segments) { if (!segment.intersects(repaintRegion)) continue; boolean doSelect = false; if (selectedLink != null && segment.equals(selectedLink)) doSelect = true; segment.paint(gc, false, resourceTable, doSelect, selData, repaintRegion); } }
@Override public String getTooltipText() { if (segments.size() > 0) return segments.get(0).getTooltipText(); return super.getTooltipText(); }
@Override public void paint(GC gc, boolean hover, Hashtable<String, Object> resourceTable, boolean selected, SelectionData selData, Rectangle repaintRegion) { for (int i = 0; i < segments.size(); i++) { ParagraphSegment segment = segments.get(i); segment.paint(gc, hover, resourceTable, selected, selData, repaintRegion); } }
@Override public void layout(GC gc, int width, Locator locator, Hashtable<String, Object> resourceTable, boolean selected) { for (int i = 0; i < segments.size(); i++) { ParagraphSegment segment = segments.get(i); segment.layout(gc, width, locator, resourceTable, selected); } }
public ParagraphSegment findSegmentAt(int x, int y) { if (segments != null) { for (int i = 0; i < segments.size(); i++) { ParagraphSegment segment = segments.get(i); if (segment.contains(x, y)) return segment; } } return null; } public void clearCache(String fontId) {
public void paint(GC gc, Rectangle repaintRegion, Hashtable<String, Object> resourceTable, IHyperlinkSegment selectedLink, SelectionData selData) { ParagraphSegment[] segments = getSegments(); for (ParagraphSegment segment : segments) { if (!segment.intersects(repaintRegion)) continue; boolean doSelect = false; if (selectedLink != null && segment.equals(selectedLink)) doSelect = true; segment.paint(gc, false, resourceTable, doSelect, selData, repaintRegion); } }
@Override public String getTooltipText() { if (segments.size() > 0) return segments.get(0).getTooltipText(); return super.getTooltipText(); }
@Override public void paint(GC gc, boolean hover, Hashtable<String, Object> resourceTable, boolean selected, SelectionData selData, Rectangle repaintRegion) { for (int i = 0; i < segments.size(); i++) { ParagraphSegment segment = segments.get(i); segment.paint(gc, hover, resourceTable, selected, selData, repaintRegion); } }
@Override public void layout(GC gc, int width, Locator locator, Hashtable<String, Object> resourceTable, boolean selected) { for (int i = 0; i < segments.size(); i++) { ParagraphSegment segment = segments.get(i); segment.layout(gc, width, locator, resourceTable, selected); } }
public ParagraphSegment findSegmentAt(int x, int y) { if (segments != null) { for (int i = 0; i < segments.size(); i++) { ParagraphSegment segment = segments.get(i); if (segment.contains(x, y)) return segment; } } return null; } public void clearCache(String fontId) {
@Override public boolean advanceLocator(GC gc, int wHint, Locator loc, Hashtable<String, Object> objectTable, boolean computeHeightOnly) { boolean newLine = false; for (int i = 0; i < segments.size(); i++) { ParagraphSegment segment = segments.get(i); if (segment.advanceLocator(gc, wHint, loc, objectTable, computeHeightOnly)) newLine = true; } return newLine; }
public void clearCache(String fontId) { if (segments != null) { for (int i = 0; i < segments.size(); i++) { ParagraphSegment segment = segments.get(i); segment.clearCache(fontId); } } } }
private void updateTooltipText(ParagraphSegment segment) { String tooltipText = null; if (segment != null) { tooltipText = segment.getTooltipText(); } String currentTooltipText = getToolTipText(); if ((currentTooltipText != null && tooltipText == null) || (currentTooltipText == null && tooltipText != null)) setToolTipText(tooltipText); }
@Override public void computeSelection(GC gc, Hashtable<String, Object> resourceTable, SelectionData selData) { for (int i = 0; i < segments.size(); i++) { ParagraphSegment segment = segments.get(i); segment.computeSelection(gc, resourceTable, selData); } }
private void paintLinkHover(IHyperlinkSegment link, boolean hover) { GC gc = new GC(this); HyperlinkSettings settings = getHyperlinkSettings(); Color newFg = hover ? settings.getActiveForeground() : settings .getForeground(); if (newFg != null) gc.setForeground(newFg); gc.setBackground(getBackground()); gc.setFont(getFont()); boolean selected = (link == getSelectedLink()); ((ParagraphSegment) link).paint(gc, hover, resourceTable, selected, selData, null); gc.dispose(); }
public void layout(GC gc, int width, Locator loc, int lineHeight, Hashtable<String, Object> resourceTable, IHyperlinkSegment selectedLink) { ParagraphSegment[] segments = getSegments(); //int height; if (segments.length > 0) { /* if (segments[0] instanceof TextSegment && ((TextSegment) segments[0]).isSelectable()) loc.x += 1; */ // compute heights if (loc.heights == null) computeRowHeights(gc, width, loc, lineHeight, resourceTable); for (ParagraphSegment segment : segments) { boolean doSelect = false; if (selectedLink != null && segment.equals(selectedLink)) doSelect = true; segment.layout(gc, width, loc, resourceTable, doSelect); } loc.heights = null; loc.y += loc.rowHeight; } else { loc.y += lineHeight; } }
protected void computeRowHeights(GC gc, int width, Locator loc, int lineHeight, Hashtable<String, Object> resourceTable) { ParagraphSegment[] segments = getSegments(); // compute heights Locator hloc = loc.create(); ArrayList<int[]> heights = new ArrayList<>(); hloc.heights = heights; hloc.rowCounter = 0; for (ParagraphSegment segment : segments) { segment.advanceLocator(gc, width, hloc, resourceTable, true); } if (hloc.rowHeight == 0) { FontMetrics fm = gc.getFontMetrics(); hloc.rowHeight = fm.getHeight(); } hloc.collectHeights(); loc.heights = heights; loc.rowCounter = 0; }