Lines 175-214
Link Here
|
175 |
|
175 |
|
176 |
private static TreeItem findNextPrev(TreeViewer viewer, TreeItem item, boolean next) { |
176 |
private static TreeItem findNextPrev(TreeViewer viewer, TreeItem item, boolean next) { |
177 |
if (item == null || !(viewer instanceof ITreeViewerAccessor)) |
177 |
if (item == null || !(viewer instanceof ITreeViewerAccessor)) |
178 |
return null; |
178 |
if (next) |
|
|
179 |
return getFirstItem(viewer); |
180 |
else |
181 |
return getLastItem(viewer); |
179 |
TreeItem children[] = null; |
182 |
TreeItem children[] = null; |
180 |
ITreeViewerAccessor treeAccessor = (ITreeViewerAccessor) viewer; |
183 |
ITreeViewerAccessor treeAccessor = (ITreeViewerAccessor) viewer; |
|
|
184 |
item.setExpanded(true); |
185 |
treeAccessor.createChildren(item); |
186 |
viewer.getTree(); |
181 |
if (!next) { |
187 |
if (!next) { |
182 |
TreeItem parent = item.getParentItem(); |
188 |
if (item.getItemCount() > 0) { |
183 |
if (parent != null) |
189 |
// has children: go down |
184 |
children = parent.getItems(); |
190 |
children = item.getItems(); |
185 |
else |
191 |
return children[item.getItemCount() - 1]; |
186 |
children = item.getParent().getItems(); |
192 |
} |
187 |
if (children != null && children.length > 0) { |
193 |
while (item != null) { |
188 |
// goto previous child |
194 |
children = null; |
189 |
int index = 0; |
195 |
TreeItem parent = item.getParentItem(); |
190 |
for (; index < children.length; index++) |
196 |
if (parent != null) |
191 |
if (children[index] == item) |
197 |
children = parent.getItems(); |
192 |
break; |
198 |
else |
193 |
if (index > 0) { |
199 |
children = item.getParent().getItems(); |
194 |
item = children[index - 1]; |
200 |
if (children != null && children.length > 0) { |
195 |
while (true) { |
201 |
// goto previous child |
196 |
treeAccessor.createChildren(item); |
202 |
int index = 0; |
197 |
int n = item.getItemCount(); |
203 |
for (; index < children.length; index++) |
198 |
if (n <= 0) |
204 |
if (children[index] == item) |
199 |
break; |
205 |
break; |
200 |
item.setExpanded(true); |
206 |
if (index > 0) { |
201 |
item = item.getItems()[n - 1]; |
207 |
// previous |
202 |
} |
208 |
return children[index - 1]; |
203 |
// previous |
209 |
} |
204 |
return item; |
|
|
205 |
} |
210 |
} |
|
|
211 |
// go up |
212 |
item = parent; |
206 |
} |
213 |
} |
207 |
// go up |
|
|
208 |
return parent; |
209 |
} else { |
214 |
} else { |
210 |
item.setExpanded(true); |
|
|
211 |
treeAccessor.createChildren(item); |
212 |
if (item.getItemCount() > 0) { |
215 |
if (item.getItemCount() > 0) { |
213 |
// has children: go down |
216 |
// has children: go down |
214 |
children = item.getItems(); |
217 |
children = item.getItems(); |
Lines 284-297
Link Here
|
284 |
|
287 |
|
285 |
private static TreeItem getNextItem(TreeViewer viewer, boolean next) { |
288 |
private static TreeItem getNextItem(TreeViewer viewer, boolean next) { |
286 |
TreeItem item = getCurrentItem(viewer); |
289 |
TreeItem item = getCurrentItem(viewer); |
287 |
if (item != null) { |
|
|
288 |
while (true) { |
290 |
while (true) { |
289 |
item = findNextPrev(viewer, item, next); |
291 |
item = findNextPrev(viewer, item, next); |
290 |
if (item == null) |
292 |
if (item == null) |
291 |
break; |
293 |
break; |
292 |
if (item.getItemCount() <= 0) |
294 |
if (item.getItemCount() <= 0) |
293 |
break; |
295 |
break; |
294 |
} |
|
|
295 |
} |
296 |
} |
296 |
return item; |
297 |
return item; |
297 |
} |
298 |
} |
Lines 304-320
Link Here
|
304 |
TreeItem children[] = tree.getSelection(); |
305 |
TreeItem children[] = tree.getSelection(); |
305 |
if (children != null && children.length > 0) |
306 |
if (children != null && children.length > 0) |
306 |
item = children[0]; |
307 |
item = children[0]; |
307 |
if (item == null) { |
308 |
return item; |
308 |
children = tree.getItems(); |
309 |
} |
309 |
if (children != null && children.length > 0) { |
310 |
|
310 |
item = children[0]; |
311 |
private static TreeItem getFirstItem(TreeViewer viewer) { |
311 |
} |
312 |
Tree tree = viewer.getTree(); |
|
|
313 |
if (tree == null) |
314 |
return null; |
315 |
TreeItem item = null; |
316 |
TreeItem children[] = tree.getItems(); |
317 |
if (children != null && children.length > 0) { |
318 |
item = children[0]; |
319 |
} |
320 |
return item; |
321 |
} |
322 |
|
323 |
private static TreeItem getLastItem(TreeViewer viewer) { |
324 |
Tree tree = viewer.getTree(); |
325 |
if (tree == null) |
326 |
return null; |
327 |
TreeItem item = null; |
328 |
TreeItem children[] = tree.getItems(); |
329 |
if (children != null && children.length > 0) { |
330 |
item = children[children.length-1]; |
312 |
} |
331 |
} |
313 |
return item; |
332 |
return item; |
314 |
} |
333 |
} |
315 |
|
334 |
|
316 |
private static boolean hasChange(TreeViewer viewer, boolean next) { |
335 |
private static boolean hasChange(TreeViewer viewer, boolean next) { |
317 |
TreeItem item = getCurrentItem(viewer); |
336 |
TreeItem item = getCurrentItem(viewer); |
|
|
337 |
if (item == null) item = getFirstItem(viewer); |
318 |
if (item != null) { |
338 |
if (item != null) { |
319 |
return hasNextPrev(viewer, item, next); |
339 |
return hasNextPrev(viewer, item, next); |
320 |
} |
340 |
} |