Project

General

Profile

Download (3.96 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.taxeditor;
2

    
3
import java.util.ArrayList;
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 ID = "eu.etaxonomy.taxeditor.navigationView";
19
	private TreeViewer viewer;
20
	 
21
	class TreeObject {
22
		private String name;
23
		private TreeParent parent;
24
		
25
		public TreeObject(String name) {
26
			this.name = name;
27
		}
28
		public String 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 toString() {
38
			return getName();
39
		}
40
	}
41
	
42
	class TreeParent extends TreeObject {
43
		private ArrayList children;
44
		public TreeParent(String name) {
45
			super(name);
46
			children = new ArrayList();
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 oldInput, Object newInput) {
68
		}
69
        
70
		public void dispose() {
71
		}
72
        
73
		public Object[] getElements(Object parent) {
74
			return getChildren(parent);
75
		}
76
        
77
		public Object getParent(Object child) {
78
			if (child instanceof TreeObject) {
79
				return ((TreeObject)child).getParent();
80
			}
81
			return null;
82
		}
83
        
84
		public Object[] getChildren(Object parent) {
85
			if (parent instanceof TreeParent) {
86
				return ((TreeParent)parent).getChildren();
87
			}
88
			return new Object[0];
89
		}
90

    
91
        public boolean hasChildren(Object 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 getText(Object obj) {
101
			return obj.toString();
102
		}
103
		public Image getImage(Object obj) {
104
			String 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
}
(7-7/11)