package org.codinjutsu.tools.jenkins.view.action; import com.intellij.icons.AllIcons; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.Task; import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.Project; import org.apache.log4j.Logger; import org.codinjutsu.tools.jenkins.logic.RequestManager; import org.codinjutsu.tools.jenkins.model.Job; import org.codinjutsu.tools.jenkins.view.BrowserPanel; import org.jetbrains.annotations.NotNull; import javax.swing.*; public class StopBuildAction extends AnAction implements DumbAware { private static final Icon STOP_ICON = AllIcons.Actions.Suspend; private static final Logger LOG = Logger.getLogger(RunBuildAction.class.getName()); private final BrowserPanel browserPanel; public StopBuildAction(BrowserPanel browserPanel) { super("Stop on Jenkins", "Stop a build on Jenkins Server", STOP_ICON); this.browserPanel = browserPanel; } @Override public void actionPerformed(AnActionEvent event) { final Project project = ActionUtil.getProject(event); try { final Job job = browserPanel.getSelectedJob(); new Task.Backgroundable(project, "Stopping build", false){ @Override public void onSuccess() { browserPanel.loadJob(job); // browserPanel.refreshCurrentView(); } @Override public void run(@NotNull ProgressIndicator progressIndicator) { RequestManager requestManager = RequestManager.getInstance(project); requestManager.stopBuild(job.getLastBuild()); } }.queue(); } catch (Exception ex) { LOG.error(ex.getMessage(), ex); browserPanel.notifyErrorJenkinsToolWindow("Build cannot be run: " + ex.getMessage()); } } @Override public void update(AnActionEvent event) { Job selectedJob = null; //browserPanel.getSelectedJob(); //temporarily disabled event.getPresentation().setVisible(selectedJob != null && selectedJob.isBuildable()); } }