--- /dev/null
+package net.sourceforge.phpeclipse.resourcesview;
+
+import net.sourceforge.phpeclipse.PHPeclipsePlugin;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.viewers.IOpenListener;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.OpenEvent;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.ui.IWorkbenchPartSite;
+import org.eclipse.ui.actions.ActionContext;
+import org.eclipse.ui.model.WorkbenchContentProvider;
+import org.eclipse.ui.model.WorkbenchLabelProvider;
+import org.eclipse.ui.part.ISetSelectionTarget;
+import org.eclipse.ui.part.ViewPart;
+
+public class PHPResourcesView extends ViewPart implements ISetSelectionTarget, IMenuListener {
+ protected TreeViewer viewer;
+ protected MainActionGroup mainActionGroup;
+
+ public PHPResourcesView() {
+
+ }
+
+ public void createPartControl(Composite parent) {
+ this.setViewer(new TreeViewer(parent));
+
+ this.getViewer().addFilter(new PHPViewerFilter());
+ this.getViewer().setContentProvider(new WorkbenchContentProvider());
+ this.getViewer().setLabelProvider(new WorkbenchLabelProvider());
+ this.getViewer().setInput(getInitialInput());
+
+ this.getViewer().addOpenListener(new IOpenListener() {
+ public void open(OpenEvent event) {
+ getMainActionGroup().runDefaultAction((IStructuredSelection) event.getSelection());
+ }
+ });
+
+ MenuManager menuMgr = new MenuManager("net.sourceforge.phpeclipse.PHPPopupMenu"); //$NON-NLS-1$
+ menuMgr.setRemoveAllWhenShown(true);
+ menuMgr.addMenuListener(this);
+
+ Menu fContextMenu = menuMgr.createContextMenu(this.getViewer().getTree());
+ this.getViewer().getTree().setMenu(fContextMenu);
+
+ // Register viewer with site. This must be done before making the actions.
+ IWorkbenchPartSite site = getSite();
+ site.registerContextMenu(menuMgr, viewer);
+ }
+
+ public void selectReveal(ISelection selection) {
+ viewer.setSelection(selection, true);
+ }
+
+ protected IContainer getInitialInput() {
+ IAdaptable input = getSite().getPage().getInput();
+ IResource resource = null;
+ if (input instanceof IResource) {
+ resource = (IResource) input;
+ } else {
+ resource = (IResource) input.getAdapter(IResource.class);
+ }
+ if (resource != null) {
+ switch (resource.getType()) {
+ case IResource.FILE :
+ return resource.getParent();
+ case IResource.FOLDER :
+ case IResource.PROJECT :
+ case IResource.ROOT :
+ return (IContainer) resource;
+ default :
+ break;
+ }
+ }
+ return PHPeclipsePlugin.getWorkspace().getRoot();
+ }
+
+ public void setFocus() {
+ this.getViewer().getControl().setFocus();
+ }
+
+ public void menuAboutToShow(IMenuManager manager) {
+ IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
+ this.getMainActionGroup().setContext(new ActionContext(selection));
+ this.getMainActionGroup().fillContextMenu(manager);
+ this.getMainActionGroup().setContext(null);
+ }
+
+ public MainActionGroup getMainActionGroup() {
+ if (mainActionGroup == null) {
+ // lazy initialization, because this.getSite() delivers null in constructor
+ mainActionGroup = new MainActionGroup(this);
+ }
+ return mainActionGroup;
+ }
+
+ public void setMainActionGroup(MainActionGroup mainActionGroup) {
+ this.mainActionGroup = mainActionGroup;
+ }
+
+ public TreeViewer getViewer() {
+ return viewer;
+ }
+
+ protected void setViewer(TreeViewer viewer) {
+ this.viewer = viewer;
+ }
+
+}
\ No newline at end of file