# HG changeset patch # User Frank Benoit # Date 1211137090 -7200 # Node ID 4095b64d16f5d7a8e05e55167d435e8e4b0d8680 # Parent fa286c85e7b8e9559ae8a02c070e510d92c3eae2 Fixed in dwt-win, so removed the debugging outputs. diff -r fa286c85e7b8 -r 4095b64d16f5 snippets/tree/Snippet220.d --- a/snippets/tree/Snippet220.d Sat May 17 23:26:35 2008 +0200 +++ b/snippets/tree/Snippet220.d Sun May 18 20:58:10 2008 +0200 @@ -12,7 +12,7 @@ *******************************************************************************/ module dwtsnippets.tree.Snippet220; -/* +/* * Tree example snippet: Images on the right side of the TreeItem * * For a detailed explanation of this snippet see @@ -20,7 +20,7 @@ * * For a list of all SWT example snippets see * http://www.eclipse.org/swt/snippets/ - * + * * @since 3.2 */ @@ -36,12 +36,32 @@ import tango.util.Convert; -import tango.io.Stdout; version(JIVE){ import jive.stacktrace; } void main() { + const int IMAGE_MARGIN = 2; + void handleEventMeasureItem(Event event) { + TreeItem item = cast(TreeItem)event.item; + Image trailingImage = cast(Image)item.getData(); + if (trailingImage !is null) { + int w1 = event.width; + event.width += trailingImage.getBounds().width + IMAGE_MARGIN; + int w2 = event.width; + } + } + void handleEventPaintItem(Event event, Tree tree ) { + TreeItem item = cast(TreeItem)event.item; + Image trailingImage = cast(Image)item.getData(); + if (trailingImage !is null) { + int x = event.x + event.width + IMAGE_MARGIN; + int itemHeight = tree.getItemHeight(); + int imageHeight = trailingImage.getBounds().height; + int y = event.y + (itemHeight - imageHeight) / 2; + event.gc.drawImage(trailingImage, x, y); + } + } Display display = new Display(); Shell shell = new Shell(display); shell.setBounds(10, 10, 350, 200); @@ -52,8 +72,7 @@ gc.drawLine(1, 14, 14, 1); gc.drawOval(2, 2, 11, 11); gc.dispose(); - const int IMAGE_MARGIN = 2; - final Tree tree = new Tree(shell, DWT.CHECK); + Tree tree = new Tree(shell, DWT.CHECK); tree.setBounds(10, 10, 300, 150); TreeItem item = new TreeItem(tree, DWT.NONE); item.setText("root item"); @@ -69,32 +88,8 @@ * NOTE: MeasureItem and PaintItem are called repeatedly. Therefore it is * critical for performance that these methods be as efficient as possible. */ - tree.addListener(DWT.MeasureItem, new class Listener { - public void handleEvent(Event event) { - Stdout("measure").newline; - TreeItem item = cast(TreeItem)event.item; - Image trailingImage = cast(Image)item.getData(); - if (trailingImage !is null) { - Stdout(" - measure image").newline; - event.width += trailingImage.getBounds().width + IMAGE_MARGIN; - } - } - }); - tree.addListener(DWT.PaintItem, new class Listener { - public void handleEvent(Event event) { - Stdout("paint").newline; - TreeItem item = cast(TreeItem)event.item; - Image trailingImage = cast(Image)item.getData(); - if (trailingImage !is null) { - Stdout(" - draw image").newline; - int x = event.x + event.width + IMAGE_MARGIN; - int itemHeight = tree.getItemHeight(); - int imageHeight = trailingImage.getBounds().height; - int y = event.y + (itemHeight - imageHeight) / 2; - event.gc.drawImage(trailingImage, x, y); - } - } - }); + tree.addListener(DWT.MeasureItem, dgListener( &handleEventMeasureItem )); + tree.addListener(DWT.PaintItem,dgListener( &handleEventPaintItem, tree )); shell.open(); while (!shell.isDisposed()) {