--- /dev/null
+/*******************************************************************************
+ * 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 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.IContainmentAdapter;
+import org.eclipse.ui.IContributorResourceAdapter;
+import org.eclipse.ui.IPersistableElement;
+import org.eclipse.ui.model.IWorkbenchAdapter;
+import org.eclipse.ui.views.properties.FilePropertySource;
+import org.eclipse.ui.views.properties.IPropertySource;
+import org.eclipse.ui.views.properties.ResourcePropertySource;
+import org.eclipse.ui.views.tasklist.ITaskListResourceAdapter;
+
+import org.eclipse.search.ui.ISearchPageScoreComputer;
+
+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 net.sourceforge.phpdt.internal.ui.search.JavaSearchPageScoreComputer;
+//import net.sourceforge.phpdt.internal.ui.search.SearchUtil;
+
+/**
+ * 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
+// };
+// }
+}