Mercurial > projects > dwt-samples
diff snippets/tree/Snippet220.d @ 85:fa286c85e7b8
Fix Snippet111 and add jive to Snippet220
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sat, 17 May 2008 23:26:35 +0200 |
parents | 398aa64a7243 |
children | 4095b64d16f5 |
line wrap: on
line diff
--- a/snippets/tree/Snippet220.d Sat May 17 13:06:43 2008 +0900 +++ b/snippets/tree/Snippet220.d Sat May 17 23:26:35 2008 +0200 @@ -37,66 +37,69 @@ import tango.util.Convert; import tango.io.Stdout; +version(JIVE){ + import jive.stacktrace; +} void main() { - Display display = new Display(); - Shell shell = new Shell(display); - shell.setBounds(10, 10, 350, 200); - Image xImage = new Image (display, 16, 16); - GC gc = new GC(xImage); - gc.setForeground(display.getSystemColor(DWT.COLOR_RED)); - gc.drawLine(1, 1, 14, 14); - 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.setBounds(10, 10, 300, 150); - TreeItem item = new TreeItem(tree, DWT.NONE); - item.setText("root item"); - for (int i = 0; i < 4; i++) { - TreeItem newItem = new TreeItem(item, DWT.NONE); - newItem.setText("descendent " ~ to!(char[])(i)); - if (i % 2 == 0) newItem.setData(xImage); - item.setExpanded(true); - item = newItem; - } + Display display = new Display(); + Shell shell = new Shell(display); + shell.setBounds(10, 10, 350, 200); + Image xImage = new Image (display, 16, 16); + GC gc = new GC(xImage); + gc.setForeground(display.getSystemColor(DWT.COLOR_RED)); + gc.drawLine(1, 1, 14, 14); + 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.setBounds(10, 10, 300, 150); + TreeItem item = new TreeItem(tree, DWT.NONE); + item.setText("root item"); + for (int i = 0; i < 4; i++) { + TreeItem newItem = new TreeItem(item, DWT.NONE); + newItem.setText("descendent " ~ to!(char[])(i)); + if (i % 2 == 0) newItem.setData(xImage); + item.setExpanded(true); + item = newItem; + } - /* - * 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) { + /* + * 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) { + 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) { + 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) { + 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); - } - } - }); + 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); + } + } + }); - shell.open(); - while (!shell.isDisposed()) { - if (!display.readAndDispatch()) display.sleep(); - } - xImage.dispose(); - display.dispose(); + shell.open(); + while (!shell.isDisposed()) { + if (!display.readAndDispatch()) display.sleep(); + } + xImage.dispose(); + display.dispose(); }