diff options
author | cbridgha | 2005-08-10 13:33:45 +0000 |
---|---|---|
committer | cbridgha | 2005-08-10 13:33:45 +0000 |
commit | 575e3b3efdcc8d72f606bf7ead3c82b4b4284acf (patch) | |
tree | 220d1f317be6fd3d0a0d417a070a0b77befeff0a | |
parent | f29dd8f0383f36c6384def3c683ecfbf8506607a (diff) | |
download | webtools.common-575e3b3efdcc8d72f606bf7ead3c82b4b4284acf.tar.gz webtools.common-575e3b3efdcc8d72f606bf7ead3c82b4b4284acf.tar.xz webtools.common-575e3b3efdcc8d72f606bf7ead3c82b4b4284acf.zip |
[nobug] Added adapter support for IResource
2 files changed, 40 insertions, 5 deletions
diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModulecorePlugin.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModulecorePlugin.java index eed6366f0..f9f70031c 100644 --- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModulecorePlugin.java +++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/ModulecorePlugin.java @@ -3,6 +3,7 @@ package org.eclipse.wst.common.componentcore.internal; import java.util.MissingResourceException; import java.util.ResourceBundle; +import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IAdapterManager; import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Plugin; @@ -42,6 +43,7 @@ public class ModulecorePlugin extends Plugin { manager.registerAdapters(new ModuleCoreEclipseAdapterFactory(), ModuleStructuralModel.class); manager.registerAdapters(new ArtifactEditAdapterFactory(), ArtifactEditModel.class); manager.registerAdapters(new ArtifactEditAdapterFactory(), ArtifactEdit.class); + manager.registerAdapters(new ModuleCoreEclipseAdapterFactory(), IResource.class); PlatformURLModuleConnection.startup(); WTPModulesInit.init(); diff --git a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/util/ModuleCoreEclipseAdapterFactory.java b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/util/ModuleCoreEclipseAdapterFactory.java index e13a2cede..d668a9f83 100644 --- a/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/util/ModuleCoreEclipseAdapterFactory.java +++ b/plugins/org.eclipse.wst.common.modulecore/modulecore-src/org/eclipse/wst/common/componentcore/internal/util/ModuleCoreEclipseAdapterFactory.java @@ -10,9 +10,15 @@ *******************************************************************************/ package org.eclipse.wst.common.componentcore.internal.util; +import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IAdapterFactory; +import org.eclipse.wst.common.componentcore.ComponentCore; +import org.eclipse.wst.common.componentcore.UnresolveableURIException; +import org.eclipse.wst.common.componentcore.internal.ComponentResource; import org.eclipse.wst.common.componentcore.internal.ModuleStructuralModel; import org.eclipse.wst.common.componentcore.internal.StructureEdit; +import org.eclipse.wst.common.componentcore.internal.WorkbenchComponent; +import org.eclipse.wst.common.componentcore.resources.IVirtualComponent; /** * <p> @@ -22,19 +28,46 @@ import org.eclipse.wst.common.componentcore.internal.StructureEdit; public class ModuleCoreEclipseAdapterFactory implements IAdapterFactory { private static final Class MODULE_CORE_CLASS = StructureEdit.class; - private static final Class[] ADAPTER_LIST = new Class[] { MODULE_CORE_CLASS }; + private static final Class VIRTUAL_COMPONENT_CLASS = IVirtualComponent.class; + private static final Class[] ADAPTER_LIST = new Class[] { MODULE_CORE_CLASS, VIRTUAL_COMPONENT_CLASS}; /* (non-Javadoc) * @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object, java.lang.Class) */ - public Object getAdapter(Object aModuleStructuralModel, Class anAdapterType) { - if(aModuleStructuralModel instanceof ModuleStructuralModel) - if(anAdapterType == MODULE_CORE_CLASS) - return new StructureEdit((ModuleStructuralModel)aModuleStructuralModel); + public Object getAdapter(Object adaptable, Class anAdapterType) { + if(anAdapterType == MODULE_CORE_CLASS) + return new StructureEdit((ModuleStructuralModel)adaptable); + if(anAdapterType == VIRTUAL_COMPONENT_CLASS) + return getComponent((IResource)adaptable); return null; } + private Object getComponent(IResource resource) { + StructureEdit moduleCore = null; + WorkbenchComponent module = null; + if (!resource.exists()) return null; + try { + moduleCore = StructureEdit.getStructureEditForRead(resource.getProject()); + if (moduleCore.getWorkbenchModules().length == 1) + module = moduleCore.getWorkbenchModules()[0]; + else { + ComponentResource[] resources = moduleCore.findResourcesBySourcePath(resource.getFullPath()); + for (int i = 0; i < resources.length; i++) { + module = resources[i].getComponent(); + if (module != null) + break; + } + } + } catch (UnresolveableURIException e) { + // Ignore + } finally { + if (moduleCore != null) + moduleCore.dispose(); + } + return ComponentCore.createComponent(resource.getProject(), module.getName()); + } + /* (non-Javadoc) * @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList() */ |