package jetbrains.mps.ide.devkit.actions;
/*Generated by MPS */
import jetbrains.mps.workbench.action.BaseAction;
import javax.swing.Icon;
import org.jetbrains.annotations.NotNull;
import com.intellij.openapi.actionSystem.AnActionEvent;
import java.util.Map;
import jetbrains.mps.smodel.language.LanguageAspectDescriptor;
import org.jetbrains.mps.openapi.module.SModule;
import jetbrains.mps.internal.collections.runtime.MapSequence;
import jetbrains.mps.smodel.Language;
import jetbrains.mps.util.NameUtil;
import jetbrains.mps.ide.icons.IconManager;
import jetbrains.mps.ide.icons.IdeIcons;
import jetbrains.mps.ide.actions.MPSCommonDataKeys;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import java.util.Collection;
import org.jetbrains.mps.openapi.model.SModel;
import com.intellij.openapi.application.ApplicationManager;
import jetbrains.mps.ide.projectPane.ProjectPane;
public class NewAspectModelByDescriptor_Action extends BaseAction {
private static final Icon ICON = null;
private String aspectId;
public NewAspectModelByDescriptor_Action(String aspectId_par) {
super("Aspect Model", "", ICON);
this.aspectId = aspectId_par;
this.setIsAlwaysVisible(false);
this.setExecuteOutsideCommand(false);
}
@Override
public boolean isDumbAware() {
return true;
}
@Override
public void doUpdate(@NotNull AnActionEvent event, final Map<String, Object> _params) {
LanguageAspectDescriptor ad = NewAspectModelActionHelper.getAspectById(NewAspectModelByDescriptor_Action.this.aspectId);
if (ad == null || !((((SModule) MapSequence.fromMap(_params).get("module")) instanceof Language))) {
disable(event.getPresentation());
return;
}
enable(event.getPresentation());
event.getPresentation().setText(NameUtil.capitalize(ad.getPresentableAspectName()) + " Aspect");
Icon icon = IconManager.getIconForResource(ad.getIconResource());
event.getPresentation().setIcon((icon != null ? icon : IdeIcons.MODEL_ICON));
NewAspectModelByDescriptor_Action.this.setEnabledState(event.getPresentation(), ad.canCreate(((SModule) MapSequence.fromMap(_params).get("module"))));
}
@Override
protected boolean collectActionData(AnActionEvent event, final Map<String, Object> _params) {
if (!(super.collectActionData(event, _params))) {
return false;
}
{
SModule p = event.getData(MPSCommonDataKeys.MODULE);
MapSequence.fromMap(_params).put("module", p);
if (p == null) {
return false;
}
}
{
Project p = event.getData(CommonDataKeys.PROJECT);
MapSequence.fromMap(_params).put("ideaProject", p);
if (p == null) {
return false;
}
}
return true;
}
@Override
public void doExecute(@NotNull final AnActionEvent event, final Map<String, Object> _params) {
LanguageAspectDescriptor ad = NewAspectModelActionHelper.getAspectById(NewAspectModelByDescriptor_Action.this.aspectId);
ad.create(((Language) ((SModule) MapSequence.fromMap(_params).get("module"))));
// we need it since tree is updated later
final Collection<SModel> aspectModels = ad.getAspectModels(((SModule) MapSequence.fromMap(_params).get("module")));
if (aspectModels.size() == 1) {
ApplicationManager.getApplication().invokeLater(new Runnable() {
public void run() {
ProjectPane.getInstance(((Project) MapSequence.fromMap(_params).get("ideaProject"))).selectModel(aspectModels.iterator().next(), false);
}
});
}
}
@NotNull
public String getActionId() {
StringBuilder res = new StringBuilder();
res.append(super.getActionId());
res.append("#");
res.append(aspectId_State((String) this.aspectId));
res.append("!");
return res.toString();
}
public static String aspectId_State(String object) {
return object;
}
}