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
9 * Alex Fitzpatrick - initial implementation
11 * $Id: JSClassesView.java,v 1.1 2004-09-02 18:23:49 jsurfer Exp $
14 package net.sourceforge.phpeclipse.js.ui.views;
16 import net.sourceforge.phpeclipse.js.ui.model.JSNameSorter;
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;
44 * A view of all JavaScript syntactic elements in all projects.
46 public class JSClassesView extends ViewPart {
48 private TreeViewer viewer;
49 private DrillDownAdapter drillDownAdapter;
50 private Action action1;
51 private Action action2;
52 private Action doubleClickAction;
57 public JSClassesView() {
61 * @see org.eclipse.ui.IWorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
63 public void createPartControl(Composite parent) {
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());
73 hookDoubleClickAction();
74 contributeToActionBars();
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);
88 Menu menu = menuMgr.createContextMenu(viewer.getControl());
89 viewer.getControl().setMenu(menu);
90 getSite().registerContextMenu(menuMgr, viewer);
96 private void contributeToActionBars() {
97 IActionBars bars = getViewSite().getActionBars();
98 fillLocalPullDown(bars.getMenuManager());
99 fillLocalToolBar(bars.getToolBarManager());
102 private void fillLocalPullDown(IMenuManager manager) {
103 manager.add(action1);
104 manager.add(new Separator());
105 manager.add(action2);
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));
117 private void fillLocalToolBar(IToolBarManager manager) {
118 manager.add(action1);
119 manager.add(action2);
120 manager.add(new Separator());
121 drillDownAdapter.addNavigationActions(manager);
124 private void makeActions() {
125 action1 = new Action() {
127 showMessage("Action 1 executed");
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));
136 action2 = new Action() {
138 showMessage("Action 2 executed");
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() {
148 ISelection selection = viewer.getSelection();
150 ((IStructuredSelection) selection).getFirstElement();
151 showMessage("Double-click detected on " + obj.toString());
156 private void hookDoubleClickAction() {
157 viewer.addDoubleClickListener(new IDoubleClickListener() {
158 public void doubleClick(DoubleClickEvent event) {
159 doubleClickAction.run();
163 private void showMessage(String message) {
164 MessageDialog.openInformation(
165 viewer.getControl().getShell(),
171 * @see org.eclipse.ui.IWorkbenchPart#setFocus()
173 public void setFocus() {
174 viewer.getControl().setFocus();