X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/ui/JavaElementAdapterFactory.java b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/ui/JavaElementAdapterFactory.java new file mode 100644 index 0000000..b1ae566 --- /dev/null +++ b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/ui/JavaElementAdapterFactory.java @@ -0,0 +1,169 @@ +/******************************************************************************* + * Copyright (c) 2000, 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ + +package net.sourceforge.phpdt.internal.ui; + +import net.sourceforge.phpdt.core.ICompilationUnit; +import net.sourceforge.phpdt.core.IJavaElement; +import net.sourceforge.phpdt.core.IPackageFragmentRoot; +import net.sourceforge.phpdt.internal.corext.util.JavaModelUtil; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IAdapterFactory; +import org.eclipse.ui.IContributorResourceAdapter; +import org.eclipse.ui.IPersistableElement; +import org.eclipse.ui.views.properties.FilePropertySource; +import org.eclipse.ui.views.properties.IPropertySource; +import org.eclipse.ui.views.properties.ResourcePropertySource; + +/** + * Implements basic UI support for Java elements. Implements handle to + * persistent support for Java elements. + */ +public class JavaElementAdapterFactory implements IAdapterFactory, + IContributorResourceAdapter { + + private static Class[] PROPERTIES = new Class[] { + IPropertySource.class, + IResource.class, + // IWorkbenchAdapter.class, + // IResourceLocator.class, + IPersistableElement.class, IProject.class, + IContributorResourceAdapter.class, + // ITaskListResourceAdapter.class, + // IContainmentAdapter.class + }; + + // private Object fSearchPageScoreComputer; + // private static IResourceLocator fgResourceLocator= new ResourceLocator(); + // private static JavaWorkbenchAdapter fgJavaWorkbenchAdapter= new + // JavaWorkbenchAdapter(); + // private static ITaskListResourceAdapter fgTaskListAdapter= new + // JavaTaskListAdapter(); + // private static JavaElementContainmentAdapter + // fgJavaElementContainmentAdapter= new JavaElementContainmentAdapter(); + + public Class[] getAdapterList() { + // updateLazyLoadedAdapters(); + return PROPERTIES; + } + + public Object getAdapter(Object element, Class key) { + // updateLazyLoadedAdapters(); + IJavaElement java = (IJavaElement) element; + + if (IPropertySource.class.equals(key)) { + return getProperties(java); + } + if (IResource.class.equals(key)) { + return getResource(java); + } + if (IProject.class.equals(key)) { + return getProject(java); + // } if (fSearchPageScoreComputer != null && + // ISearchPageScoreComputer.class.equals(key)) { + // return fSearchPageScoreComputer; + // } if (IWorkbenchAdapter.class.equals(key)) { + // return fgJavaWorkbenchAdapter; + // } if (IResourceLocator.class.equals(key)) { + // return fgResourceLocator; + // } if (IPersistableElement.class.equals(key)) { + // return new PersistableJavaElementFactory(java); + } + if (IContributorResourceAdapter.class.equals(key)) { + return this; + // } if (ITaskListResourceAdapter.class.equals(key)) { + // return fgTaskListAdapter; + // } if (IContainmentAdapter.class.equals(key)) { + // return fgJavaElementContainmentAdapter; + } + return null; + } + + private IResource getResource(IJavaElement element) { + // can't use IJavaElement.getResource directly as we are interrested in + // the + // corresponding resource + switch (element.getElementType()) { + case IJavaElement.TYPE: + // top level types behave like the CU + IJavaElement parent = element.getParent(); + if (parent instanceof ICompilationUnit) { + return JavaModelUtil.toOriginal((ICompilationUnit) parent) + .getResource(); + } + return null; + case IJavaElement.COMPILATION_UNIT: + return JavaModelUtil.toOriginal((ICompilationUnit) element) + .getResource(); + case IJavaElement.CLASS_FILE: + case IJavaElement.PACKAGE_FRAGMENT: + // test if in a archive + IPackageFragmentRoot root = (IPackageFragmentRoot) element + .getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); + if (!root.isArchive()) { + return element.getResource(); + } + return null; + case IJavaElement.PACKAGE_FRAGMENT_ROOT: + case IJavaElement.JAVA_PROJECT: + case IJavaElement.JAVA_MODEL: + return element.getResource(); + default: + return null; + } + } + + /* + * @see org.eclipse.ui.IContributorResourceAdapter#getAdaptedResource(org.eclipse.core.runtime.IAdaptable) + */ + public IResource getAdaptedResource(IAdaptable adaptable) { + return getResource((IJavaElement) adaptable); + } + + private IResource getProject(IJavaElement element) { + return element.getJavaProject().getProject(); + } + + private IPropertySource getProperties(IJavaElement element) { + IResource resource = getResource(element); + if (resource == null) + return new JavaElementProperties(element); + if (resource.getType() == IResource.FILE) + return new FilePropertySource((IFile) resource); + return new ResourcePropertySource(resource); + } + + // private void updateLazyLoadedAdapters() { + // if (fSearchPageScoreComputer == null && + // SearchUtil.isSearchPlugInActivated()) + // createSearchPageScoreComputer(); + // } + + // private void createSearchPageScoreComputer() { + // fSearchPageScoreComputer= new JavaSearchPageScoreComputer(); + // PROPERTIES= new Class[] { + // IPropertySource.class, + // IResource.class, + // ISearchPageScoreComputer.class, + // IWorkbenchAdapter.class, + // IResourceLocator.class, + // IPersistableElement.class, + // IProject.class, + // IContributorResourceAdapter.class, + // ITaskListResourceAdapter.class, + // IContainmentAdapter.class + // }; + // } +}