package com.cedricziel.idea.typo3.generation.action;
import com.cedricziel.idea.typo3.TYPO3CMSIcons;
import com.cedricziel.idea.typo3.domain.TYPO3ExtensionDefinition;
import com.cedricziel.idea.typo3.psi.TYPO3ExtensionUtil;
import com.cedricziel.idea.typo3.util.ActionUtil;
import com.cedricziel.idea.typo3.util.ExtensionFileGenerationUtil;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.application.Result;
import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.fileEditor.OpenFileDescriptor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.wm.ToolWindow;
import com.intellij.psi.PsiDirectory;
import com.intellij.psi.PsiElement;
import org.apache.commons.lang.StringUtils;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import java.util.HashMap;
import java.util.Map;
public class GenerateFscElementAction extends AnAction {
public GenerateFscElementAction() {
super(
"Fluid Styled Content Element",
"Generates a fluid_styled_content element",
TYPO3CMSIcons.TYPO3_ICON
);
}
@Override
public void actionPerformed(AnActionEvent anActionEvent) {
Project project = anActionEvent.getProject();
if (project == null) {
return;
}
ToolWindow toolWindow = anActionEvent.getData(PlatformDataKeys.TOOL_WINDOW);
if (toolWindow == null) {
return;
}
PsiDirectory[] psiDirectories = ActionUtil.findDirectoryFromActionEvent(anActionEvent);
if (psiDirectories.length == 0) {
return;
}
TYPO3ExtensionDefinition extensionDefinition = TYPO3ExtensionUtil.findContainingExtension(psiDirectories);
if (extensionDefinition == null) {
Messages.showErrorDialog(
"Could not extract extension from working directory. Does your extension contain a composer manifest?",
"Error While Trying to Find Extension"
);
return;
}
GenerateFscElementForm.create(toolWindow.getComponent(), project, extensionDefinition);
}
}