package com.coravy.hudson.plugins.github;
import hudson.Extension;
import hudson.model.Action;
import hudson.model.Job;
import jenkins.model.TransientActionFactory;
import org.jenkinsci.plugins.github.util.XSSApi;
import java.util.Collection;
import java.util.Collections;
/**
* Add the Github Logo/Icon to the sidebar.
*
* @author Stefan Saasen <stefan@coravy.com>
*/
public final class GithubLinkAction implements Action {
private final transient GithubProjectProperty projectProperty;
public GithubLinkAction(GithubProjectProperty githubProjectProperty) {
this.projectProperty = githubProjectProperty;
}
@Override
public String getDisplayName() {
return "GitHub";
}
@Override
public String getIconFileName() {
return "/plugin/github/logov3.png";
}
@Override
public String getUrlName() {
return XSSApi.asValidHref(projectProperty.getProjectUrl().baseUrl());
}
@SuppressWarnings("rawtypes")
@Extension
public static class GithubLinkActionFactory extends TransientActionFactory<Job> {
@Override
public Class<Job> type() {
return Job.class;
}
@Override
public Collection<? extends Action> createFor(Job j) {
GithubProjectProperty prop = ((Job<?, ?>) j).getProperty(GithubProjectProperty.class);
if (prop == null) {
return Collections.emptySet();
} else {
return Collections.singleton(new GithubLinkAction(prop));
}
}
}
}