| /******************************************************************************* |
| * Copyright (c) 2003, 2004 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.wst.common.componentcore.internal.resources; |
| |
| import org.eclipse.core.resources.IProject; |
| import org.eclipse.core.runtime.IProgressMonitor; |
| import org.eclipse.wst.common.componentcore.ComponentCore; |
| import org.eclipse.wst.common.componentcore.ModuleCoreNature; |
| import org.eclipse.wst.common.componentcore.internal.StructureEdit; |
| import org.eclipse.wst.common.componentcore.internal.WorkbenchComponent; |
| import org.eclipse.wst.common.componentcore.resources.IFlexibleProject; |
| import org.eclipse.wst.common.componentcore.resources.IVirtualComponent; |
| |
| public class FlexibleProject implements IFlexibleProject { |
| |
| private final IProject project; |
| private static final IVirtualComponent[] NO_COMPONENTS = new IVirtualComponent[0]; |
| |
| public FlexibleProject(IProject aProject) { |
| project = aProject; |
| } |
| |
| public IVirtualComponent[] getComponents() { |
| StructureEdit core = null; |
| try { |
| core = StructureEdit.getStructureEditForRead(getProject()); |
| if(core == null) |
| return NO_COMPONENTS; |
| WorkbenchComponent[] components = core.getWorkbenchModules(); |
| if(components.length == 0) |
| return NO_COMPONENTS; |
| IVirtualComponent[] virtualComponents = new IVirtualComponent[components.length]; |
| for (int i = 0; i < components.length; i++) { |
| virtualComponents[i] = ComponentCore.createComponent(getProject(), components[i].getName()); |
| } |
| return virtualComponents; |
| } finally { |
| if(core != null) |
| core.dispose(); |
| } |
| } |
| |
| public IVirtualComponent getComponent(String aComponentName) { |
| return ComponentCore.createComponent(getProject(), aComponentName); |
| } |
| |
| public IProject getProject() { |
| return project; |
| } |
| |
| public boolean isFlexible() { |
| return ModuleCoreNature.getModuleCoreNature(getProject()) != null; |
| } |
| |
| public void create(int theFlags, IProgressMonitor aMonitor) { |
| |
| } |
| |
| } |