package jetbrains.mps.lang.actions.plugin;
/*Generated by MPS */
import jetbrains.mps.smodel.structure.Extension;
import jetbrains.mps.smodel.language.LanguageAspectDescriptor;
import jetbrains.mps.aspects.OrderParticipant;
import org.jetbrains.annotations.NotNull;
import java.util.Collection;
import org.jetbrains.mps.openapi.model.SModel;
import org.jetbrains.mps.openapi.module.SModule;
import jetbrains.mps.smodel.Language;
import java.util.Collections;
import jetbrains.mps.internal.collections.runtime.Sequence;
import jetbrains.mps.internal.collections.runtime.IWhereFilter;
import org.jetbrains.mps.openapi.language.SLanguage;
import jetbrains.mps.internal.collections.runtime.ListSequence;
import java.util.ArrayList;
import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory;
import org.jetbrains.annotations.Nullable;
import jetbrains.mps.smodel.language.LanguageAspectGenerator;
import jetbrains.mps.smodel.runtime.IconResource;
import jetbrains.mps.aspects.OrderDescriptor;
import jetbrains.mps.lang.structure.plugin.MPSAspects_Order;
import jetbrains.mps.internal.collections.runtime.CollectionSequence;
import org.jetbrains.mps.openapi.persistence.ModelRoot;
import jetbrains.mps.project.SModuleOperations;
public class LanguageAspectsEP_extension extends Extension.Default<LanguageAspectDescriptor> {
public LanguageAspectsEP_extension() {
super("jetbrains.mps.lang.aspect.LanguageAspectsEP");
}
public LanguageAspectDescriptor get() {
return new LanguageAspectDescriptor() {
public String getPresentableAspectName() {
return "actions";
}
@Override
public String getId() {
return getPresentableAspectName();
}
@Override
public int compareTo(OrderParticipant<String> other) {
return myOrderConstraints.compare(this.getId(), other.getId());
}
@NotNull
public Collection<SModel> getAspectModels(final SModule language) {
if (!((language instanceof Language))) {
return Collections.emptyList();
}
Iterable<SModel> allModels = language.getModels();
return Sequence.fromIterable(allModels).where(new IWhereFilter<SModel>() {
public boolean accept(SModel it) {
String fullName = it.getModelName();
return eq_ecu8yf_a0b0a0a0a0a0c0d0a0a0b(fullName, language.getModuleName() + "." + getPresentableAspectName());
}
}).ofType(SModel.class).toListSequence();
}
@NotNull
public Collection<SLanguage> getMainLanguages() {
return ListSequence.fromListAndArray(new ArrayList<SLanguage>(), MetaAdapterFactory.getLanguage(0xaee9cad2acd44608L, 0xaef20004f6a1cdbdL, "jetbrains.mps.lang.actions"));
}
@Nullable
public LanguageAspectGenerator getGenerator() {
return null;
}
@Nullable
public IconResource getIconResource() {
return IconContainer.RESOURCE_a0a6a0a0a1;
}
@Nullable
public String getHelpUrl() {
return "http://confluence.jetbrains.com/display/MPSD20171/Editor+Actions";
}
private OrderDescriptor myOrderConstraints = new MPSAspects_Order();
public boolean canCreate(SModule language) {
return CollectionSequence.fromCollection(getAspectModels(language)).isEmpty();
}
public void create(SModule language) {
Language l = ((Language) language);
SModel structureModel = l.getStructureModelDescriptor();
ModelRoot modelRoot;
if (structureModel == null) {
modelRoot = l.getModelRoots().iterator().next();
} else {
modelRoot = structureModel.getModelRoot();
}
SModuleOperations.createModelWithAdjustments(l.getModuleName() + '.' + getPresentableAspectName(), modelRoot);
}
};
}
private static boolean eq_ecu8yf_a0b0a0a0a0a0c0d0a0a0b(Object a, Object b) {
return (a != null ? a.equals(b) : a == b);
}
}