package org.jetbrains.plugins.clojure.config;
import com.intellij.facet.ui.FacetBasedFrameworkSupportProvider;
import com.intellij.facet.ui.libraries.LibraryInfo;
import com.intellij.ide.util.frameworkSupport.FrameworkVersion;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.roots.ModifiableRootModel;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.plugins.clojure.ClojureBundle;
import java.util.ArrayList;
import java.util.List;
/**
* @author ilyas
*/
public class ClojureFacetSupportProvider extends FacetBasedFrameworkSupportProvider<ClojureFacet> {
private static final Logger LOG = Logger.getInstance("#org.jetbrains.plugins.clojure.config.ClojureFacetSupportProvider");
protected ClojureFacetSupportProvider() {
super(ClojureFacetType.INSTANCE);
}
@NotNull
@NonNls
public String getLibraryName(final String name) {
return "clojure";
}
@NonNls
public String getTitle() {
return ClojureBundle.message("clojure.facet.title");
}
@NotNull
public List<FrameworkVersion> getVersions() {
List<FrameworkVersion> versions = new ArrayList<FrameworkVersion>();
for (ClojureVersion version : ClojureVersion.values()) {
versions.add(new FrameworkVersion(version.toString(), getLibraryName(version.toString()), getLibraries(version.toString())));;
}
return versions;
}
private static ClojureVersion getVersion(String versionName) {
for (ClojureVersion version : ClojureVersion.values()) {
if (versionName.equals(version.toString())) {
return version;
}
}
LOG.error("invalid Clojure version: " + versionName);
return null;
}
@NotNull
protected LibraryInfo[] getLibraries(final String selectedVersion) {
ClojureVersion version = getVersion(selectedVersion);
LOG.assertTrue(version != null);
return version.getJars();
}
@Override
protected void setupConfiguration(ClojureFacet facet, ModifiableRootModel rootModel, FrameworkVersion version) {
// do nothing
}
}