KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nightlabs > ipanema > base > view > IpanemaWelcomeView


1 /*
2  * Created on Nov 4, 2004
3  * by Alexander Bieber
4  *
5  */

6 package com.nightlabs.ipanema.base.view;
7
8 import java.util.ArrayList JavaDoc;
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 /**
33  * @author Alexander Bieber
34  */

35 public class IpanemaWelcomeView
36 extends ViewPart
37 {
38   public static final String JavaDoc ID_VIEW = "com.nightlabs.ipanema.base.view.IpanemaWelcomeView";
39   
40     private Action action1;
41     private Action action2;
42
43     /*
44      * The content provider class is responsible for
45      * providing objects to the view. It can wrap
46      * existing objects in adapters or simply return
47      * objects as-is. These objects may be sensitive
48      * to the current input of the view, or ignore
49      * it and always show the same content
50      * (like Task List, for example).
51      */

52      
53     class TreeObject implements IAdaptable {
54         private String JavaDoc name;
55         private TreeParent parent;
56         
57         public TreeObject(String JavaDoc name) {
58             this.name = name;
59         }
60         public String JavaDoc 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 JavaDoc toString() {
70             return getName();
71         }
72         public Object JavaDoc getAdapter(Class JavaDoc key) {
73             return null;
74         }
75     }
76     
77     class TreeParent extends TreeObject {
78         private ArrayList JavaDoc children;
79         public TreeParent(String JavaDoc name) {
80             super(name);
81             children = new ArrayList JavaDoc();
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 JavaDoc oldInput, Object JavaDoc newInput) {
104         }
105         public void dispose() {
106         }
107         public Object JavaDoc[] getElements(Object JavaDoc parent) {
108             if (parent.equals(getViewSite())) {
109                 if (invisibleRoot==null) initialize();
110                 return getChildren(invisibleRoot);
111             }
112             return getChildren(parent);
113         }
114         public Object JavaDoc getParent(Object JavaDoc child) {
115             if (child instanceof TreeObject) {
116                 return ((TreeObject)child).getParent();
117             }
118             return null;
119         }
120         public Object JavaDoc [] getChildren(Object JavaDoc parent) {
121             if (parent instanceof TreeParent) {
122                 return ((TreeParent)parent).getChildren();
123             }
124             return new Object JavaDoc[0];
125         }
126         public boolean hasChildren(Object JavaDoc parent) {
127             if (parent instanceof TreeParent)
128                 return ((TreeParent)parent).hasChildren();
129             return false;
130         }
131 /*
132  * We will set up a dummy model to initialize tree heararchy.
133  * In a real code, you will connect to a real model and
134  * expose its hierarchy.
135  */

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 JavaDoc getText(Object JavaDoc obj) {
160             return obj.toString();
161         }
162         public Image getImage(Object JavaDoc obj) {
163             String JavaDoc 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     /**
173      * The constructor.
174      */

175     public IpanemaWelcomeView() {
176     }
177
178     IpanemaWelcomeArea area;
179     /**
180      * This is a callback that will allow us
181      * to create the viewer and initialize it.
182      */

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         // Other plug-ins can contribute there actions here
218
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                 // showMessage("Action 1 executed");
231
throw new UnsupportedOperationException JavaDoc("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 JavaDoc message) {
251         MessageDialog.openInformation(
252             getSite().getShell(),
253             "Ipanema Welcome View",
254             message);
255     }
256
257     /**
258      *
259      */

260     public void setFocus() {
261         area.setFocus();
262     }
263
264 }
265
Popular Tags