private int getSpacing(final int index) { int result = 0; if (parent.hasColumnImages(index)) { result = parent.getCellSpacing(); } return result; }
/** * Returns a rectangle describing the size and location relative to its parent of the text at a * column in the table. An empty rectangle is returned if index exceeds the index of the table's * last column. * * @param index the index that specifies the column * @return the receiver's bounding text rectangle * @exception SWTException * <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver * </ul> */ public Rectangle getTextBounds(final int index) { checkWidget(); int itemIndex = parent.indexOf(this); if (!parent.checkData(this, itemIndex)) { error(SWT.ERROR_WIDGET_DISPOSED); } int left = 0; int top = 0; int width = 0; Rectangle cellPadding = parent.getCellPadding(); if (index == 0 && parent.getColumnCount() == 0) { int imageWidth = 0; int spacing = 0; if (parent.hasColumnImages(0)) { imageWidth = parent.getItemImageSize().x; spacing = getSpacing(0); } left = getLeft(0) + cellPadding.x + imageWidth + spacing; top = getTop(itemIndex); Font font = getFont(); width = Graphics.stringExtent(font, getText(0)).x; } else if (itemIndex != -1 && index < parent.getColumnCount()) { int imageWidth = 0; if (parent.hasColumnImages(index)) { imageWidth = parent.getItemImageSize().x; } int spacing = getSpacing(index); left = getLeft(index) + cellPadding.x + imageWidth + spacing; top = getTop(itemIndex); width = getColumnWidth(index) - cellPadding.width - imageWidth - spacing; if (width < 0) { width = 0; } } int height = getHeight(index); return new Rectangle(left, top, width, height); }