1) Moved net.sourceforge.phpeclipse.ui\src\net\sourceforge\phpdt back to net.sourcefo...
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / ui / JavaElementAdapterFactory.java
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/JavaElementAdapterFactory.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/JavaElementAdapterFactory.java
new file mode 100644 (file)
index 0000000..b1ae566
--- /dev/null
@@ -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
+       // };
+       // }
+}