Initial version of project - RCP Mail Template.
[taxeditor.git] / src / eu / etaxonomy / taxeditor / NavigationView.java
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 }