Mercurial > projects > dwt-samples
comparison jface/snippets/Snippet047VirtualLazyTreeViewer.d @ 143:42c3056512ba
redirect the jface examples to the new collection wrappers
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Thu, 07 Aug 2008 22:21:50 +0200 |
parents | 2b4e94cafb85 |
children |
comparison
equal
deleted
inserted
replaced
142:7dca96709d29 | 143:42c3056512ba |
---|---|
6 * http://www.eclipse.org/legal/epl-v10.html | 6 * http://www.eclipse.org/legal/epl-v10.html |
7 * | 7 * |
8 * Contributors: | 8 * Contributors: |
9 * Tom Schindl - initial API and implementation | 9 * Tom Schindl - initial API and implementation |
10 * Port to the D programming language: | 10 * Port to the D programming language: |
11 * yidabu at gmail dot com ( D China http://www.d-programming-language-china.org/ ) | 11 * yidabu at gmail dot com ( D China http://www.d-programming-language-china.org/ ) |
12 *******************************************************************************/ | 12 *******************************************************************************/ |
13 | 13 |
14 module jface.snippets.Snippet047VirtualLazyTreeViewer; | 14 module jface.snippets.Snippet047VirtualLazyTreeViewer; |
15 | 15 |
16 import dwtx.jface.viewers.ILazyTreeContentProvider; | 16 import dwtx.jface.viewers.ILazyTreeContentProvider; |
24 | 24 |
25 import dwt.dwthelper.utils; | 25 import dwt.dwthelper.utils; |
26 | 26 |
27 import tango.util.Convert; | 27 import tango.util.Convert; |
28 import tango.util.container.LinkedList; | 28 import tango.util.container.LinkedList; |
29 | |
30 version(JIVE) import jive.stacktrace; | |
29 | 31 |
30 | 32 |
31 /** | 33 /** |
32 * @param args | 34 * @param args |
33 */ | 35 */ |
47 | 49 |
48 } | 50 } |
49 | 51 |
50 /** | 52 /** |
51 * A simple TreeViewer to demonstrate usage of an ILazyContentProvider. | 53 * A simple TreeViewer to demonstrate usage of an ILazyContentProvider. |
52 * | 54 * |
53 */ | 55 */ |
54 public class Snippet047VirtualLazyTreeViewer { | 56 public class Snippet047VirtualLazyTreeViewer { |
55 alias ArrayWrapperT!(IntermediateNode) ArrayWrapperIntermediateNode; | 57 alias ArrayWrapperT!(IntermediateNode) ArrayWrapperIntermediateNode; |
56 alias ArrayWrapperT!(LeafNode) ArrayWrapperLeafNode; | 58 alias ArrayWrapperT!(LeafNode) ArrayWrapperLeafNode; |
57 | 59 |
58 private class MyContentProvider : ILazyTreeContentProvider { | 60 private class MyContentProvider : ILazyTreeContentProvider { |
59 private TreeViewer viewer; | 61 private TreeViewer viewer; |
60 private IntermediateNode[] elements; | 62 private IntermediateNode[] elements; |
61 | 63 |
62 public this(TreeViewer viewer) { | 64 public this(TreeViewer viewer) { |
72 this.elements = (cast(ArrayWrapperIntermediateNode) newInput).array; | 74 this.elements = (cast(ArrayWrapperIntermediateNode) newInput).array; |
73 } | 75 } |
74 | 76 |
75 /* | 77 /* |
76 * (non-Javadoc) | 78 * (non-Javadoc) |
77 * | 79 * |
78 * @see dwtx.jface.viewers.ILazyTreeContentProvider#getParent(java.lang.Object) | 80 * @see dwtx.jface.viewers.ILazyTreeContentProvider#getParent(java.lang.Object) |
79 */ | 81 */ |
80 public Object getParent(Object element) { | 82 public Object getParent(Object element) { |
81 if (cast(LeafNode)element) | 83 if (cast(LeafNode)element) |
82 return (cast(LeafNode) element).parent; | 84 return (cast(LeafNode) element).parent; |
83 return new ArrayWrapperIntermediateNode(elements); | 85 return new ArrayWrapperIntermediateNode(elements); |
84 } | 86 } |
85 | 87 |
86 /* | 88 /* |
87 * (non-Javadoc) | 89 * (non-Javadoc) |
88 * | 90 * |
89 * @see dwtx.jface.viewers.ILazyTreeContentProvider#updateChildCount(java.lang.Object, | 91 * @see dwtx.jface.viewers.ILazyTreeContentProvider#updateChildCount(java.lang.Object, |
90 * int) | 92 * int) |
91 */ | 93 */ |
92 public void updateChildCount(Object element, int currentChildCount) { | 94 public void updateChildCount(Object element, int currentChildCount) { |
93 | 95 |
94 int length = 0; | 96 int length = 0; |
95 if (cast(IntermediateNode)element) { | 97 if (cast(IntermediateNode)element) { |
96 IntermediateNode node = cast(IntermediateNode) element; | 98 IntermediateNode node = cast(IntermediateNode) element; |
97 length = node.children.length; | 99 length = node.children.length; |
98 } | 100 } |
99 /// TODO: fix me access violation here | 101 /// TODO: fix me access violation here |
100 if(element !is null && elements !is null && (cast(ArrayWrapperIntermediateNode)element) && (cast(ArrayWrapperIntermediateNode)element).array is elements) | 102 if(element !is null && elements !is null && (cast(ArrayWrapperIntermediateNode)element) && (cast(ArrayWrapperIntermediateNode)element).array is elements) |
101 length = elements.length; | 103 length = elements.length; |
102 viewer.setChildCount(element, length); | 104 viewer.setChildCount(element, length); |
103 } | 105 } |
104 | 106 |
105 /* | 107 /* |
106 * (non-Javadoc) | 108 * (non-Javadoc) |
107 * | 109 * |
108 * @see dwtx.jface.viewers.ILazyTreeContentProvider#updateElement(java.lang.Object, | 110 * @see dwtx.jface.viewers.ILazyTreeContentProvider#updateElement(java.lang.Object, |
109 * int) | 111 * int) |
110 */ | 112 */ |
111 public void updateElement(Object parent, int index) { | 113 public void updateElement(Object parent, int index) { |
112 | 114 |
113 Object element; | 115 Object element; |
114 if (cast(IntermediateNode)parent) | 116 if (cast(IntermediateNode)parent) |
115 element = (cast(IntermediateNode) parent).children[index]; | 117 element = (cast(IntermediateNode) parent).children[index]; |
116 | 118 |
117 else | 119 else |
118 element = elements[index]; | 120 element = elements[index]; |
119 viewer.replace(parent, index, element); | 121 viewer.replace(parent, index, element); |
120 updateChildCount(element, -1); | 122 updateChildCount(element, -1); |
121 | 123 |
122 } | 124 } |
123 | 125 |
124 } | 126 } |
125 | 127 |
126 public class LeafNode { | 128 public class LeafNode { |