Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » JFace » how to traverse all nodes of a jface tree?
how to traverse all nodes of a jface tree? [message #549790] Tue, 27 July 2010 23:54
Lidder is currently offline LidderFriend
Messages: 46
Registered: July 2009
Member
Hello All,

I am playing with a jface snippet that simply creates a jface tree. How do I traverse all the nodes in the tree. I tried getItems() and setExpand(true), but not could get it to work. Pasting snippet inline ....

Thanks for you help.

/*******************************************************************************
 * Copyright (c) 2006 Tom Schindl and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     Tom Schindl - initial API and implementation
 *******************************************************************************/

package org.eclipse.jface.snippets.viewers;

import java.util.ArrayList;

import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TreeItem;

/**
 * A simple TreeViewer to demonstrate usage
 * 
 * @author Tom Schindl <tom.schindl@bestsolution.at>
 * 
 */
public class Snippet002TreeViewer
{
	public TreeViewer	v;

	private class MyContentProvider implements ITreeContentProvider
	{

		/*
		 * (non-Javadoc)
		 * 
		 * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
		 */
		public Object[] getElements(Object inputElement)
		{
			return ((MyModel) inputElement).child.toArray();
		}

		/*
		 * (non-Javadoc)
		 * 
		 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
		 */
		public void dispose()
		{

		}

		/*
		 * (non-Javadoc)
		 * 
		 * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer,
		 * java.lang.Object, java.lang.Object)
		 */
		public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
		{

		}

		/*
		 * (non-Javadoc)
		 * 
		 * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
		 */
		public Object[] getChildren(Object parentElement)
		{
			return getElements(parentElement);
		}

		/*
		 * (non-Javadoc)
		 * 
		 * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
		 */
		public Object getParent(Object element)
		{
			if (element == null)
			{
				return null;
			}

			return ((MyModel) element).parent;
		}

		/*
		 * (non-Javadoc)
		 * 
		 * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
		 */
		public boolean hasChildren(Object element)
		{
			return ((MyModel) element).child.size() > 0;
		}

	}

	public class MyModel
	{
		public MyModel		parent;
		public ArrayList	child	= new ArrayList();
		public int			counter;

		public MyModel(int counter, MyModel parent)
		{
			this.parent = parent;
			this.counter = counter;
		}

		public String toString()
		{
			String rv = "Item ";
			if (parent != null)
			{
				rv = parent.toString() + ".";
			}

			rv += counter;

			return rv;
		}
	}

	public Snippet002TreeViewer(Shell shell)
	{
		v = new TreeViewer(shell);
		v.setLabelProvider(new LabelProvider());
		v.setContentProvider(new MyContentProvider());
		v.setInput(createModel());
	}

	private MyModel createModel()
	{

		MyModel root = new MyModel(0, null);
		root.counter = 0;

		MyModel tmp;
		for (int i = 1; i < 10; i++)
		{
			tmp = new MyModel(i, root);
			root.child.add(tmp);
			for (int j = 1; j < i; j++)
			{
				tmp.child.add(new MyModel(j, tmp));
			}
		}

		return root;
	}

	public static void main(String[] args)
	{
		Display display = new Display();
		Shell shell = new Shell(display);
		shell.setLayout(new FillLayout());
		Snippet002TreeViewer snippet002TreeViewer = new Snippet002TreeViewer(shell);
		shell.open();

		TreeItem[] items = snippet002TreeViewer.v.getTree().getItems();
		traverse(items);

		while (!shell.isDisposed())
		{
			if (!display.readAndDispatch())
				display.sleep();
		}

		display.dispose();
	}

	static void traverse(TreeItem[] items)
	{
		for (int i = 0; i < items.length; i++)
		{

			TreeItem item = items[i];

			/*
			 * treeitem has a lazy creation. So manually expand each tree item so that all nodes can be traversed. Does
			 * not work !!
			 */
			//			item.setExpanded(true);

			String string = item.toString();

			while (item.getParentItem() != null)
			{

				string = "\t" + string;

				item = item.getParentItem();

			}

			System.out.println(string);

			traverse(items[i].getItems());
		}
	}
}





Previous Topic:Hiding top most element of CommonNavigator
Next Topic:Remove finish button
Goto Forum:
  


Current Time: Fri Apr 26 08:27:24 GMT 2024

Powered by FUDForum. Page generated in 0.02071 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top