1 6 package com.nightlabs.ipanema.base.view; 7 8 import java.util.ArrayList ; 9 10 import org.eclipse.core.runtime.IAdaptable; 11 import org.eclipse.jface.action.Action; 12 import org.eclipse.jface.action.IMenuListener; 13 import org.eclipse.jface.action.IMenuManager; 14 import org.eclipse.jface.action.IToolBarManager; 15 import org.eclipse.jface.action.MenuManager; 16 import org.eclipse.jface.action.Separator; 17 import org.eclipse.jface.dialogs.MessageDialog; 18 import org.eclipse.jface.viewers.IStructuredContentProvider; 19 import org.eclipse.jface.viewers.ITreeContentProvider; 20 import org.eclipse.jface.viewers.LabelProvider; 21 import org.eclipse.jface.viewers.Viewer; 22 import org.eclipse.jface.viewers.ViewerSorter; 23 import org.eclipse.swt.SWT; 24 import org.eclipse.swt.graphics.Image; 25 import org.eclipse.swt.widgets.Composite; 26 import org.eclipse.ui.IActionBars; 27 import org.eclipse.ui.ISharedImages; 28 import org.eclipse.ui.IWorkbenchActionConstants; 29 import org.eclipse.ui.PlatformUI; 30 import org.eclipse.ui.part.ViewPart; 31 32 35 public class IpanemaWelcomeView 36 extends ViewPart 37 { 38 public static final String ID_VIEW = "com.nightlabs.ipanema.base.view.IpanemaWelcomeView"; 39 40 private Action action1; 41 private Action action2; 42 43 52 53 class TreeObject implements IAdaptable { 54 private String name; 55 private TreeParent parent; 56 57 public TreeObject(String name) { 58 this.name = name; 59 } 60 public String getName() { 61 return name; 62 } 63 public void setParent(TreeParent parent) { 64 this.parent = parent; 65 } 66 public TreeParent getParent() { 67 return parent; 68 } 69 public String toString() { 70 return getName(); 71 } 72 public Object getAdapter(Class key) { 73 return null; 74 } 75 } 76 77 class TreeParent extends TreeObject { 78 private ArrayList children; 79 public TreeParent(String name) { 80 super(name); 81 children = new ArrayList (); 82 } 83 public void addChild(TreeObject child) { 84 children.add(child); 85 child.setParent(this); 86 } 87 public void removeChild(TreeObject child) { 88 children.remove(child); 89 child.setParent(null); 90 } 91 public TreeObject [] getChildren() { 92 return (TreeObject [])children.toArray(new TreeObject[children.size()]); 93 } 94 public boolean hasChildren() { 95 return children.size()>0; 96 } 97 } 98 99 class ViewContentProvider implements IStructuredContentProvider, 100 ITreeContentProvider { 101 private TreeParent invisibleRoot; 102 103 public void inputChanged(Viewer v, Object oldInput, Object newInput) { 104 } 105 public void dispose() { 106 } 107 public Object [] getElements(Object parent) { 108 if (parent.equals(getViewSite())) { 109 if (invisibleRoot==null) initialize(); 110 return getChildren(invisibleRoot); 111 } 112 return getChildren(parent); 113 } 114 public Object getParent(Object child) { 115 if (child instanceof TreeObject) { 116 return ((TreeObject)child).getParent(); 117 } 118 return null; 119 } 120 public Object [] getChildren(Object parent) { 121 if (parent instanceof TreeParent) { 122 return ((TreeParent)parent).getChildren(); 123 } 124 return new Object [0]; 125 } 126 public boolean hasChildren(Object parent) { 127 if (parent instanceof TreeParent) 128 return ((TreeParent)parent).hasChildren(); 129 return false; 130 } 131 136 private void initialize() { 137 TreeObject to1 = new TreeObject("Leaf 1"); 138 TreeObject to2 = new TreeObject("Leaf 2"); 139 TreeObject to3 = new TreeObject("Leaf 3"); 140 TreeParent p1 = new TreeParent("Parent 1"); 141 p1.addChild(to1); 142 p1.addChild(to2); 143 p1.addChild(to3); 144 145 TreeObject to4 = new TreeObject("Leaf 4"); 146 TreeParent p2 = new TreeParent("Parent 2"); 147 p2.addChild(to4); 148 149 TreeParent root = new TreeParent("Root"); 150 root.addChild(p1); 151 root.addChild(p2); 152 153 invisibleRoot = new TreeParent(""); 154 invisibleRoot.addChild(root); 155 } 156 } 157 class ViewLabelProvider extends LabelProvider { 158 159 public String getText(Object obj) { 160 return obj.toString(); 161 } 162 public Image getImage(Object obj) { 163 String imageKey = ISharedImages.IMG_OBJ_ELEMENT; 164 if (obj instanceof TreeParent) 165 imageKey = ISharedImages.IMG_OBJ_FOLDER; 166 return PlatformUI.getWorkbench().getSharedImages().getImage(imageKey); 167 } 168 } 169 class NameSorter extends ViewerSorter { 170 } 171 172 175 public IpanemaWelcomeView() { 176 } 177 178 IpanemaWelcomeArea area; 179 183 public void createPartControl(Composite parent) 184 { 185 makeActions(); 186 area = new IpanemaWelcomeArea(parent,SWT.NONE); 187 hookContextMenu(); 188 contributeToActionBars(); 189 } 190 191 private void hookContextMenu() { 192 MenuManager menuMgr = new MenuManager("#PopupMenu"); 193 menuMgr.setRemoveAllWhenShown(true); 194 menuMgr.addMenuListener(new IMenuListener() { 195 public void menuAboutToShow(IMenuManager manager) { 196 IpanemaWelcomeView.this.fillContextMenu(manager); 197 } 198 }); 199 } 200 201 private void contributeToActionBars() { 202 IActionBars bars = getViewSite().getActionBars(); 203 fillLocalPullDown(bars.getMenuManager()); 204 fillLocalToolBar(bars.getToolBarManager()); 205 } 206 207 private void fillLocalPullDown(IMenuManager manager) { 208 manager.add(action1); 209 manager.add(new Separator()); 210 manager.add(action2); 211 } 212 213 private void fillContextMenu(IMenuManager manager) { 214 manager.add(action1); 215 manager.add(action2); 216 manager.add(new Separator()); 217 manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); 219 } 220 221 private void fillLocalToolBar(IToolBarManager manager) { 222 manager.add(action1); 223 manager.add(action2); 224 manager.add(new Separator()); 225 } 226 227 private void makeActions() { 228 action1 = new Action() { 229 public void run() { 230 throw new UnsupportedOperationException ("This is a test!"); 232 } 233 }; 234 action1.setText("Action 1"); 235 action1.setToolTipText("Action 1 tooltip"); 236 action1.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages(). 237 getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK)); 238 239 action2 = new Action() { 240 public void run() { 241 showMessage("Action 2 executed"); 242 } 243 }; 244 action2.setText("Action 2"); 245 action2.setToolTipText("Action 2 tooltip"); 246 action2.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages(). 247 getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK)); 248 } 249 250 private void showMessage(String message) { 251 MessageDialog.openInformation( 252 getSite().getShell(), 253 "Ipanema Welcome View", 254 message); 255 } 256 257 260 public void setFocus() { 261 area.setFocus(); 262 } 263 264 } 265 | Popular Tags |