Sample JFace TreeViewer snippet code [message #438416] |
Wed, 23 June 2004 15:58  |
Eclipse User |
|
|
|
Thought it would be useful for someone..
============================================================ =
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.viewers.*;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class MyTreeViewerApp {
public static void main(String[] args) {
Display display = new Display ();
Shell shell = new Shell (display);
shell.setSize (200, 200);
createTreeViewer(shell);
shell.open ();
while (!shell.isDisposed()) {
if (!display.readAndDispatch ()) display.sleep ();
}
display.dispose ();
}
private static void createTreeViewer(Shell shell) {
TreeViewer tv = new TreeViewer(shell);
tv.setContentProvider(getContentProvider());
List input = new ArrayList();
input.add("Hello1");
input.add("Hello2");
input.add("Hello3");
List input2 = new ArrayList();
input2.add("World1");
input2.add("World2");
input2.add("World3");
input.add(input2);
tv.setInput(input);
tv.setLabelProvider(getLabelProvider());
tv.getTree().setSize(200,200);
}
private static ILabelProvider getLabelProvider(){
return new ILabelProvider() {
public Image getImage(Object element) {return null;}
public String getText(Object element) {
if (element instanceof String) {
String str = (String) element;
return str;
}
if (element instanceof List) {
List list = (List) element;
return "List ("+list.size()+")";
}
return "?";
}
public void addListener(ILabelProviderListener listener) {}
public void dispose() {}
public boolean isLabelProperty(Object element, String property)
{return false; }
public void removeListener(ILabelProviderListener listener) {}
};
}
private static ITreeContentProvider getContentProvider(){
return new ITreeContentProvider(){
public Object[] getChildren(Object parentElement) {
if (parentElement instanceof List) {
List list = (List) parentElement;
return list.toArray();
}
return null;
}
public Object getParent(Object element) {return null;}
public boolean hasChildren(Object element) {
if (element instanceof List) {
List list = (List) element;
if(list.size()>0)
return true;
}
return false;
}
public Object[] getElements(Object inputElement) {
if (inputElement instanceof List) {
List list = (List) inputElement;
return list.toArray();
}
return null;
}
public void dispose() {}
public void inputChanged(Viewer viewer, Object oldInput, Object
newInput) {}
};
}
}
|
|
|
|
|
|
|
Re: Sample JFace TreeViewer snippet code [message #438568 is a reply to message #438515] |
Sun, 27 June 2004 21:27  |
Eclipse User |
|
|
|
Originally posted by: owen.thomas.salestech.co.nz
You are the man.....Almost perfect for what I need.......But the rest I
can do myself.
I also thought there would be many examples like this but after a couple
of days of searching decided to try and see if anyone in the newsgroup
had done something similar.
Thanks again.
Owen
Stefan Zeiger wrote:
> Owen Thomas wrote:
>
>> You don't have an example that would take an XML file as an input do
>> you???
>
>
> When I read this question a few days ago I thought this should be so
> simple that there must be many examples. But since none have been posted
> so far, I gave it a try myself. See the attached file for a simple XML
> TreeViewer example that uses W3C DOM.
>
>
> ------------------------------------------------------------ ------------
>
> import java.io.*;
> import java.util.ArrayList;
>
> import javax.xml.parsers.*;
> import org.w3c.dom.*;
>
> import org.eclipse.jface.viewers.*;
> import org.eclipse.jface.window.*;
> import org.eclipse.swt.widgets.*;
>
>
> public class XMLTreeDemo extends ApplicationWindow
> {
> private static final String DEFAULT_XML_FILE =
> "../Novocode Application Framework/examples/com/novocode/naf/example/explorer/explore r.naf ";
>
> private static Document doc;
>
> public XMLTreeDemo() { super(null); }
>
> protected Control createContents(Composite parent)
> {
> getShell().setSize(350, 550);
> getShell().setText("JFace XML Tree");
> TreeViewer tv = new TreeViewer(parent);
>
> tv.setContentProvider(new ITreeContentProvider()
> {
> public Object[] getChildren(Object element)
> {
> ArrayList ch = new ArrayList();
> NamedNodeMap atrs = ((Node)element).getAttributes();
> if(atrs != null)
> for(int i=0; i<atrs.getLength(); i++) ch.add(atrs.item(i));
> NodeList nl = ((Node)element).getChildNodes();
> for(int i=0; i<nl.getLength(); i++)
> if(nl.item(i).getNodeType() == Node.ELEMENT_NODE) ch.add(nl.item(i));
> return ch.toArray();
> }
> public Object getParent(Object element) { return ((Node)element).getParentNode(); }
> public Object[] getElements(Object element) { return getChildren(element); }
> public boolean hasChildren(Object element) { return getChildren(element).length > 0; }
> public void dispose() {}
> public void inputChanged(Viewer viewer, Object old_input, Object new_input) {}
> });
>
> tv.setLabelProvider(new LabelProvider()
> {
> public String getText(Object element)
> {
> if(element instanceof Attr) return "@" + ((Attr)element).getNodeName();
> else return ((Node)element).getNodeName();
> }
> });
>
> tv.setInput(doc);
> return tv.getControl();
> }
>
> public static void main(String[] args) throws Exception
> {
> File in = new File(args.length > 0 ? args[0] : DEFAULT_XML_FILE);
> doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().pa rse(in);
> XMLTreeDemo w = new XMLTreeDemo();
> w.setBlockOnOpen(true);
> w.open();
> Display.getCurrent().dispose();
> }
> }
|
|
|
Powered by
FUDForum. Page generated in 0.29754 seconds