package com.dubture.composer.core.model; import java.util.ArrayList; import java.util.List; import org.eclipse.core.runtime.IPath; import org.eclipse.dltk.core.IBuildpathContainer; import org.eclipse.dltk.core.IBuildpathEntry; import org.eclipse.dltk.core.IScriptProject; /** * * Composer buildpath container is responsible for resolving packages from a project in * the local bundle storage. * * @author Robert Gruendler <r.gruendler@gmail.com> * */ public class ComposerBuildpathContainer implements IBuildpathContainer { private IScriptProject project; private IPath path; public ComposerBuildpathContainer(IPath path, IScriptProject project) { this.path = path; this.project = project; } @Override public IPath getPath() { return path; } @Override public int getKind() { return IBuildpathContainer.K_SYSTEM; } @Override public String getDescription() { if (path.segmentCount() == 1) { return "Composer"; } return path.lastSegment(); } @Override public IBuildpathEntry[] getBuildpathEntries() { PackageManager manager = ModelAccess.getInstance().getPackageManager(); if (project == null) { return new IBuildpathEntry[0]; } List<InstalledPackage> packages = manager.getInstalledPackages(project); if (packages == null) { return new IBuildpathEntry[0]; } List<IBuildpathEntry> entries = new ArrayList<IBuildpathEntry>(); for (InstalledPackage pack : packages) { // Logger.debug("composer buildpathcontainer adding " + pack.getBuildpathEntry().getPath().toString() + " to buildpath entries"); entries.add(pack.getBuildpathEntry()); } return entries.toArray(new IBuildpathEntry[entries.size()]); } }