Created
October 26, 2016 14:14
-
-
Save 3ffusi0on/ee668551ecb1c4b3ee7446a5cb98f3b3 to your computer and use it in GitHub Desktop.
SWT Multiline TreeViewer with centered image (Limitation : https://bugs.eclipse.org/bugs/show_bug.cgi?id=154341)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
tree.addListener(SWT.MeasureItem, paintListener); | |
tree.addListener(SWT.PaintItem, paintListener); | |
tree.addListener(SWT.EraseItem, paintListener); | |
Listener paintListener = new Listener() { | |
@Override | |
public void handleEvent(Event event) { | |
switch(event.type) { | |
case SWT.MeasureItem: { | |
TreeItem item = (TreeItem)event.item; | |
String text = item.getText(event.index); | |
Point size = event.gc.textExtent(text); | |
Image img = item.getImage(event.index); | |
Rectangle rect = img.getBounds(); | |
event.width += rect.width; | |
event.height = size.y; | |
break; | |
} | |
case SWT.PaintItem: { | |
TreeItem item = (TreeItem)event.item; | |
Image img = item.getImage(event.index); | |
Rectangle rect = img.getBounds(); | |
int offsetImg = Math.max(0, (event.height - rect.height) / 2); | |
String text = item.getText(event.index); | |
Point sizeTx = event.gc.textExtent(text); | |
int offsetTx = Math.max(0, (event.height - sizeTx.y) / 2); | |
event.gc.drawImage(img, event.x, event.y + offsetImg); | |
event.gc.drawText(text, event.x + rect.width + 5, event.y + offsetTx, true); | |
break; | |
} | |
case SWT.EraseItem: { | |
event.detail &= ~SWT.FOREGROUND; | |
break; | |
} | |
} | |
} | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment