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 {