KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > $packageName$ > NavigationView


1 package $packageName$;
2
3 import java.util.ArrayList JavaDoc;
4
5 import org.eclipse.jface.viewers.IStructuredContentProvider;
6 import org.eclipse.jface.viewers.ITreeContentProvider;
7 import org.eclipse.jface.viewers.LabelProvider;
8 import org.eclipse.jface.viewers.TreeViewer;
9 import org.eclipse.jface.viewers.Viewer;
10 import org.eclipse.swt.SWT;
11 import org.eclipse.swt.graphics.Image;
12 import org.eclipse.swt.widgets.Composite;
13 import org.eclipse.ui.ISharedImages;
14 import org.eclipse.ui.PlatformUI;
15 import org.eclipse.ui.part.ViewPart;
16
17 public class NavigationView extends ViewPart {
18     public static final String JavaDoc ID = "$pluginId$.navigationView";
19     private TreeViewer viewer;
20      
21     class TreeObject {
22         private String JavaDoc name;
23         private TreeParent parent;
24         
25         public TreeObject(String JavaDoc name) {
26             this.name = name;
27         }
28         public String JavaDoc getName() {
29             return name;
30         }
31         public void setParent(TreeParent parent) {
32             this.parent = parent;
33         }
34         public TreeParent getParent() {
35             return parent;
36         }
37         public String JavaDoc toString() {
38             return getName();
39         }
40     }
41     
42     class TreeParent extends TreeObject {
43         private ArrayList JavaDoc children;
44         public TreeParent(String JavaDoc name) {
45             super(name);
46             children = new ArrayList JavaDoc();
47         }
48         public void addChild(TreeObject child) {
49             children.add(child);
50             child.setParent(this);
51         }
52         public void removeChild(TreeObject child) {
53             children.remove(child);
54             child.setParent(null);
55         }
56         public TreeObject[] getChildren() {
57             return (TreeObject[]) children.toArray(new TreeObject[children.size()]);
58         }
59         public boolean hasChildren() {
60             return children.size()>0;
61         }
62     }
63
64     class ViewContentProvider implements IStructuredContentProvider,
65                                            ITreeContentProvider {
66
67         public void inputChanged(Viewer v, Object JavaDoc oldInput, Object JavaDoc newInput) {
68         }
69         
70         public void dispose() {
71         }
72         
73         public Object JavaDoc[] getElements(Object JavaDoc parent) {
74             return getChildren(parent);
75         }
76         
77         public Object JavaDoc getParent(Object JavaDoc child) {
78             if (child instanceof TreeObject) {
79                 return ((TreeObject)child).getParent();
80             }
81             return null;
82         }
83         
84         public Object JavaDoc[] getChildren(Object JavaDoc parent) {
85             if (parent instanceof TreeParent) {
86                 return ((TreeParent)parent).getChildren();
87             }
88             return new Object JavaDoc[0];
89         }
90
91         public boolean hasChildren(Object JavaDoc parent) {
92             if (parent instanceof TreeParent)
93                 return ((TreeParent)parent).hasChildren();
94             return false;
95         }
96     }
97     
98     class ViewLabelProvider extends LabelProvider {
99
100         public String JavaDoc getText(Object JavaDoc obj) {
101             return obj.toString();
102         }
103         public Image getImage(Object JavaDoc obj) {
104             String JavaDoc imageKey = ISharedImages.IMG_OBJ_ELEMENT;
105             if (obj instanceof TreeParent)
106                imageKey = ISharedImages.IMG_OBJ_FOLDER;
107             return PlatformUI.getWorkbench().getSharedImages().getImage(imageKey);
108         }
109     }
110
111     /**
112      * We will set up a dummy model to initialize tree heararchy. In real
113      * code, you will connect to a real model and expose its hierarchy.
114      */

115     private TreeObject createDummyModel() {
116         TreeObject to1 = new TreeObject("Inbox");
117         TreeObject to2 = new TreeObject("Drafts");
118         TreeObject to3 = new TreeObject("Sent");
119         TreeParent p1 = new TreeParent("me@this.com");
120         p1.addChild(to1);
121         p1.addChild(to2);
122         p1.addChild(to3);
123
124         TreeObject to4 = new TreeObject("Inbox");
125         TreeParent p2 = new TreeParent("other@aol.com");
126         p2.addChild(to4);
127
128         TreeParent root = new TreeParent("");
129         root.addChild(p1);
130         root.addChild(p2);
131         return root;
132     }
133
134     /**
135      * This is a callback that will allow us to create the viewer and initialize
136      * it.
137      */

138     public void createPartControl(Composite parent) {
139         viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
140         viewer.setContentProvider(new ViewContentProvider());
141         viewer.setLabelProvider(new ViewLabelProvider());
142         viewer.setInput(createDummyModel());
143     }
144
145     /**
146      * Passing the focus request to the viewer's control.
147      */

148     public void setFocus() {
149         viewer.getControl().setFocus();
150     }
151 }
Popular Tags