Mercurial > projects > dwt-samples
comparison 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 |
comparison
equal
deleted
inserted
replaced
84:398aa64a7243 | 85:fa286c85e7b8 |
---|---|
35 import dwt.widgets.TreeItem; | 35 import dwt.widgets.TreeItem; |
36 | 36 |
37 import tango.util.Convert; | 37 import tango.util.Convert; |
38 | 38 |
39 import tango.io.Stdout; | 39 import tango.io.Stdout; |
40 version(JIVE){ | |
41 import jive.stacktrace; | |
42 } | |
40 | 43 |
41 void main() { | 44 void main() { |
42 Display display = new Display(); | 45 Display display = new Display(); |
43 Shell shell = new Shell(display); | 46 Shell shell = new Shell(display); |
44 shell.setBounds(10, 10, 350, 200); | 47 shell.setBounds(10, 10, 350, 200); |
45 Image xImage = new Image (display, 16, 16); | 48 Image xImage = new Image (display, 16, 16); |
46 GC gc = new GC(xImage); | 49 GC gc = new GC(xImage); |
47 gc.setForeground(display.getSystemColor(DWT.COLOR_RED)); | 50 gc.setForeground(display.getSystemColor(DWT.COLOR_RED)); |
48 gc.drawLine(1, 1, 14, 14); | 51 gc.drawLine(1, 1, 14, 14); |
49 gc.drawLine(1, 14, 14, 1); | 52 gc.drawLine(1, 14, 14, 1); |
50 gc.drawOval(2, 2, 11, 11); | 53 gc.drawOval(2, 2, 11, 11); |
51 gc.dispose(); | 54 gc.dispose(); |
52 const int IMAGE_MARGIN = 2; | 55 const int IMAGE_MARGIN = 2; |
53 final Tree tree = new Tree(shell, DWT.CHECK); | 56 final Tree tree = new Tree(shell, DWT.CHECK); |
54 tree.setBounds(10, 10, 300, 150); | 57 tree.setBounds(10, 10, 300, 150); |
55 TreeItem item = new TreeItem(tree, DWT.NONE); | 58 TreeItem item = new TreeItem(tree, DWT.NONE); |
56 item.setText("root item"); | 59 item.setText("root item"); |
57 for (int i = 0; i < 4; i++) { | 60 for (int i = 0; i < 4; i++) { |
58 TreeItem newItem = new TreeItem(item, DWT.NONE); | 61 TreeItem newItem = new TreeItem(item, DWT.NONE); |
59 newItem.setText("descendent " ~ to!(char[])(i)); | 62 newItem.setText("descendent " ~ to!(char[])(i)); |
60 if (i % 2 == 0) newItem.setData(xImage); | 63 if (i % 2 == 0) newItem.setData(xImage); |
61 item.setExpanded(true); | 64 item.setExpanded(true); |
62 item = newItem; | 65 item = newItem; |
63 } | 66 } |
64 | 67 |
65 /* | 68 /* |
66 * NOTE: MeasureItem and PaintItem are called repeatedly. Therefore it is | 69 * NOTE: MeasureItem and PaintItem are called repeatedly. Therefore it is |
67 * critical for performance that these methods be as efficient as possible. | 70 * critical for performance that these methods be as efficient as possible. |
68 */ | 71 */ |
69 tree.addListener(DWT.MeasureItem, new class Listener { | 72 tree.addListener(DWT.MeasureItem, new class Listener { |
70 public void handleEvent(Event event) { | 73 public void handleEvent(Event event) { |
71 Stdout("measure").newline; | 74 Stdout("measure").newline; |
72 TreeItem item = cast(TreeItem)event.item; | 75 TreeItem item = cast(TreeItem)event.item; |
73 Image trailingImage = cast(Image)item.getData(); | 76 Image trailingImage = cast(Image)item.getData(); |
74 if (trailingImage !is null) { | 77 if (trailingImage !is null) { |
75 Stdout(" - measure image").newline; | 78 Stdout(" - measure image").newline; |
76 event.width += trailingImage.getBounds().width + IMAGE_MARGIN; | 79 event.width += trailingImage.getBounds().width + IMAGE_MARGIN; |
77 } | 80 } |
78 } | 81 } |
79 }); | 82 }); |
80 tree.addListener(DWT.PaintItem, new class Listener { | 83 tree.addListener(DWT.PaintItem, new class Listener { |
81 public void handleEvent(Event event) { | 84 public void handleEvent(Event event) { |
82 Stdout("paint").newline; | 85 Stdout("paint").newline; |
83 TreeItem item = cast(TreeItem)event.item; | 86 TreeItem item = cast(TreeItem)event.item; |
84 Image trailingImage = cast(Image)item.getData(); | 87 Image trailingImage = cast(Image)item.getData(); |
85 if (trailingImage !is null) { | 88 if (trailingImage !is null) { |
86 Stdout(" - draw image").newline; | 89 Stdout(" - draw image").newline; |
87 int x = event.x + event.width + IMAGE_MARGIN; | 90 int x = event.x + event.width + IMAGE_MARGIN; |
88 int itemHeight = tree.getItemHeight(); | 91 int itemHeight = tree.getItemHeight(); |
89 int imageHeight = trailingImage.getBounds().height; | 92 int imageHeight = trailingImage.getBounds().height; |
90 int y = event.y + (itemHeight - imageHeight) / 2; | 93 int y = event.y + (itemHeight - imageHeight) / 2; |
91 event.gc.drawImage(trailingImage, x, y); | 94 event.gc.drawImage(trailingImage, x, y); |
92 } | 95 } |
93 } | 96 } |
94 }); | 97 }); |
95 | 98 |
96 shell.open(); | 99 shell.open(); |
97 while (!shell.isDisposed()) { | 100 while (!shell.isDisposed()) { |
98 if (!display.readAndDispatch()) display.sleep(); | 101 if (!display.readAndDispatch()) display.sleep(); |
99 } | 102 } |
100 xImage.dispose(); | 103 xImage.dispose(); |
101 display.dispose(); | 104 display.dispose(); |
102 } | 105 } |