1 package $packageName$; 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 = "$pluginId$.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 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 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 148 public void setFocus() { 149 viewer.getControl().setFocus(); 150 } 151 } | Popular Tags |