package fr.adrienbrault.idea.symfony2plugin.webDeployment.actions;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.progress.Task;
import com.intellij.openapi.project.DumbAwareAction;
import com.intellij.openapi.project.Project;
import com.jetbrains.plugins.webDeployment.actions.WebDeploymentDataKeys;
import com.jetbrains.plugins.webDeployment.config.Deployable;
import com.jetbrains.plugins.webDeployment.config.PublishConfig;
import fr.adrienbrault.idea.symfony2plugin.Symfony2Icons;
import fr.adrienbrault.idea.symfony2plugin.Symfony2ProjectComponent;
import fr.adrienbrault.idea.symfony2plugin.webDeployment.utils.RemoteWebServerUtil;
import org.jetbrains.annotations.NotNull;
/**
* @author Daniel Espendiller <daniel@espendiller.net>
*/
public class SymfonyWebDeploymentDownloadAction extends DumbAwareAction {
public SymfonyWebDeploymentDownloadAction() {
super("Download dev files", "Download Symfony files from dev folder", Symfony2Icons.SYMFONY);
}
public void update(AnActionEvent e) {
final Project project = CommonDataKeys.PROJECT.getData(e.getDataContext());
if (project == null || project.isDisposed() || project.isDefault()) {
e.getPresentation().setVisible(false);
return;
}
Deployable server = WebDeploymentDataKeys.DEPLOYABLE.getData(e.getDataContext());
if(server == null || !PublishConfig.getInstance(project).isDefault(server) || !server.needsTransfer() || server.validateFast() != null) {
e.getPresentation().setVisible(false);
return;
}
e.getPresentation().setVisible(RemoteWebServerUtil.hasConfiguredRemoteFile(project));
}
public void actionPerformed(AnActionEvent e) {
final Project project = CommonDataKeys.PROJECT.getData(e.getDataContext());
if (project == null) {
return;
}
Deployable server = WebDeploymentDataKeys.DEPLOYABLE.getData(e.getDataContext());
if(server == null || !PublishConfig.getInstance(project).isDefault(server)) {
return;
}
new Task.Backgroundable(project, "Symfony: Downloading Files", false) {
@Override
public void run(@NotNull ProgressIndicator indicator) {
Symfony2ProjectComponent.getLogger().info("Running webDeployment dev download");
RemoteWebServerUtil.collectRemoteFiles(project);
}
}.queue();
}
}