intial source from ttp://www.sf.net/projects/wdte
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.js.ui / src / net / sourceforge / phpeclipse / js / ui / views / JSClassesView.java
1 /*
2  * Copyright (c) 2003-2004 Alex Fitzpatrick and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Common Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/cpl-v10.html
7  * 
8  * Contributors:
9  *     Alex Fitzpatrick - initial implementation
10  * 
11  * $Id: JSClassesView.java,v 1.1 2004-09-02 18:23:49 jsurfer Exp $
12  */
13
14 package net.sourceforge.phpeclipse.js.ui.views;
15
16 import net.sourceforge.phpeclipse.js.ui.model.JSNameSorter;
17
18 import org.eclipse.core.resources.ResourcesPlugin;
19 import org.eclipse.jface.action.Action;
20 import org.eclipse.jface.action.IMenuListener;
21 import org.eclipse.jface.action.IMenuManager;
22 import org.eclipse.jface.action.IToolBarManager;
23 import org.eclipse.jface.action.MenuManager;
24 import org.eclipse.jface.action.Separator;
25 import org.eclipse.jface.dialogs.MessageDialog;
26 import org.eclipse.jface.viewers.DoubleClickEvent;
27 import org.eclipse.jface.viewers.IDoubleClickListener;
28 import org.eclipse.jface.viewers.ISelection;
29 import org.eclipse.jface.viewers.IStructuredSelection;
30 import org.eclipse.jface.viewers.TreeViewer;
31 import org.eclipse.swt.SWT;
32 import org.eclipse.swt.widgets.Composite;
33 import org.eclipse.swt.widgets.Menu;
34 import org.eclipse.ui.IActionBars;
35 import org.eclipse.ui.ISharedImages;
36 import org.eclipse.ui.IWorkbenchActionConstants;
37 import org.eclipse.ui.PlatformUI;
38 import org.eclipse.ui.ide.IDE;
39 import org.eclipse.ui.model.WorkbenchLabelProvider;
40 import org.eclipse.ui.part.DrillDownAdapter;
41 import org.eclipse.ui.part.ViewPart;
42
43 /**
44  * A view of all JavaScript syntactic elements in all projects.
45  */
46 public class JSClassesView extends ViewPart {
47
48         private TreeViewer viewer;
49         private DrillDownAdapter drillDownAdapter;
50         private Action action1;
51         private Action action2;
52         private Action doubleClickAction;
53
54         /**
55          * The constructor.
56          */
57         public JSClassesView() {
58         }
59
60         /* (non-Javadoc)
61          * @see org.eclipse.ui.IWorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
62          */
63         public void createPartControl(Composite parent) {
64                 viewer =
65                         new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
66                 drillDownAdapter = new DrillDownAdapter(viewer);
67                 viewer.setContentProvider(new JSClassesViewContentProvider());
68                 viewer.setLabelProvider(new WorkbenchLabelProvider());
69                 viewer.setSorter(new JSNameSorter());
70                 viewer.setInput(ResourcesPlugin.getWorkspace());
71                 makeActions();
72                 hookContextMenu();
73                 hookDoubleClickAction();
74                 contributeToActionBars();
75         }
76
77         /**
78          * 
79          */
80         private void hookContextMenu() {
81                 MenuManager menuMgr = new MenuManager("#PopupMenu");
82                 menuMgr.setRemoveAllWhenShown(true);
83                 menuMgr.addMenuListener(new IMenuListener() {
84                         public void menuAboutToShow(IMenuManager manager) {
85                                 JSClassesView.this.fillContextMenu(manager);
86                         }
87                 });
88                 Menu menu = menuMgr.createContextMenu(viewer.getControl());
89                 viewer.getControl().setMenu(menu);
90                 getSite().registerContextMenu(menuMgr, viewer);
91         }
92
93         /**
94          * 
95          */
96         private void contributeToActionBars() {
97                 IActionBars bars = getViewSite().getActionBars();
98                 fillLocalPullDown(bars.getMenuManager());
99                 fillLocalToolBar(bars.getToolBarManager());
100         }
101
102         private void fillLocalPullDown(IMenuManager manager) {
103                 manager.add(action1);
104                 manager.add(new Separator());
105                 manager.add(action2);
106         }
107
108         private void fillContextMenu(IMenuManager manager) {
109                 manager.add(action1);
110                 manager.add(action2);
111                 manager.add(new Separator());
112                 drillDownAdapter.addNavigationActions(manager);
113                 // Other plug-ins can contribute there actions here
114                 manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
115         }
116
117         private void fillLocalToolBar(IToolBarManager manager) {
118                 manager.add(action1);
119                 manager.add(action2);
120                 manager.add(new Separator());
121                 drillDownAdapter.addNavigationActions(manager);
122         }
123
124         private void makeActions() {
125                 action1 = new Action() {
126                         public void run() {
127                                 showMessage("Action 1 executed");
128                         }
129                 };
130                 action1.setText("Action 1");
131                 action1.setToolTipText("Action 1 tooltip");
132                 action1.setImageDescriptor(
133                         PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(
134                                 ISharedImages.IMG_OBJS_INFO_TSK));
135
136                 action2 = new Action() {
137                         public void run() {
138                                 showMessage("Action 2 executed");
139                         }
140                 };
141                 action2.setText("Action 2");
142                 action2.setToolTipText("Action 2 tooltip");
143                 action2.setImageDescriptor(
144                         PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(
145                                 IDE.SharedImages.IMG_OBJS_TASK_TSK));
146                 doubleClickAction = new Action() {
147                         public void run() {
148                                 ISelection selection = viewer.getSelection();
149                                 Object obj =
150                                         ((IStructuredSelection) selection).getFirstElement();
151                                 showMessage("Double-click detected on " + obj.toString());
152                         }
153                 };
154         }
155
156         private void hookDoubleClickAction() {
157                 viewer.addDoubleClickListener(new IDoubleClickListener() {
158                         public void doubleClick(DoubleClickEvent event) {
159                                 doubleClickAction.run();
160                         }
161                 });
162         }
163         private void showMessage(String message) {
164                 MessageDialog.openInformation(
165                         viewer.getControl().getShell(),
166                         "Classes",
167                         message);
168         }
169
170         /* (non-Javadoc)
171          * @see org.eclipse.ui.IWorkbenchPart#setFocus()
172          */
173         public void setFocus() {
174                 viewer.getControl().setFocus();
175         }
176
177 }