package org.codinjutsu.tools.jenkins.view.action;
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.codinjutsu.tools.jenkins.logic.RequestManager;
import org.codinjutsu.tools.jenkins.model.Job;
import org.codinjutsu.tools.jenkins.util.GuiUtil;
import org.codinjutsu.tools.jenkins.view.BrowserPanel;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
public class LoadBuildsAction extends AnAction implements DumbAware {
private static final Icon REFRESH_ICON = GuiUtil.loadIcon("builds.png");
private final BrowserPanel browserPanel;
public LoadBuildsAction(BrowserPanel browserPanel) {
super("Load builds", "Load builds", REFRESH_ICON);
this.browserPanel = browserPanel;
}
@Override
public void actionPerformed(AnActionEvent event) {
final Project project = ActionUtil.getProject(event);
final BrowserPanel browserPanel = BrowserPanel.getInstance(project);
try {
final Job job = browserPanel.getSelectedJob();
new Task.Backgroundable(project, "Load builds", false) {
@Override
public void onSuccess() {
super.onSuccess();
browserPanel.refreshJob(job);
}
@Override
public void run(@NotNull ProgressIndicator progressIndicator) {
progressIndicator.setIndeterminate(true);
RequestManager requestManager = browserPanel.getJenkinsManager();
job.setLastBuilds(requestManager.loadBuilds(job));
job.setFetchBuild(true);
}
}.queue();
} catch (Exception ex) {
browserPanel.notifyErrorJenkinsToolWindow("Unable to load builds: " + ex.getMessage());
}
}
@Override
public void update(AnActionEvent event) {
Job selectedJob = browserPanel.getSelectedJob();
event.getPresentation().setVisible(selectedJob != null);
}
}