Index: src/main/java/hudson/plugins/promoted_builds/JobPropertyImpl.java =================================================================== --- src/main/java/hudson/plugins/promoted_builds/JobPropertyImpl.java (revision 36090) +++ src/main/java/hudson/plugins/promoted_builds/JobPropertyImpl.java (working copy) @@ -12,6 +12,7 @@ import hudson.model.Job; import hudson.model.JobProperty; import hudson.model.JobPropertyDescriptor; +import hudson.plugins.promoted_builds.icons.PromotionIconExtension; import hudson.tasks.BuildStep; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -267,5 +268,10 @@ // exposed for Jelly public final Class promotionProcessType = PromotionProcess.class; + + // exposed for Jelly + public List getPromotionIcons() { + return PromotionIconExtension.all(); + } } } Index: src/main/java/hudson/plugins/promoted_builds/PromotionProcess.java =================================================================== --- src/main/java/hudson/plugins/promoted_builds/PromotionProcess.java (revision 36090) +++ src/main/java/hudson/plugins/promoted_builds/PromotionProcess.java (working copy) @@ -14,6 +14,7 @@ import hudson.model.Queue.Item; import hudson.model.Run; import hudson.model.Saveable; +import hudson.plugins.promoted_builds.icons.PromotionIconExtension; import hudson.tasks.BuildStep; import hudson.tasks.BuildStepDescriptor; import hudson.tasks.Builder; @@ -133,6 +134,15 @@ return sIcon; } + public String getIconPlugin() { + PromotionIconExtension promotionIcon = PromotionIconExtension.getPromotionIcon(getIcon()); + if(promotionIcon == null) { + return "promoted-builds"; + } else { + return promotionIcon.getPlugin(); + } + } + /** * Checks if all the conditions to promote a build is met. * Index: src/main/java/hudson/plugins/promoted_builds/icons/GoldStarPromotionIcon.java =================================================================== --- src/main/java/hudson/plugins/promoted_builds/icons/GoldStarPromotionIcon.java (revision 0) +++ src/main/java/hudson/plugins/promoted_builds/icons/GoldStarPromotionIcon.java (revision 0) @@ -0,0 +1,17 @@ +package hudson.plugins.promoted_builds.icons; + +import hudson.Extension; + +@Extension +public class GoldStarPromotionIcon extends BasePromotionIcon { + + @Override + public String getName() { + return "star-gold"; + } + + @Override + public String getDescription() { + return "Gold star"; + } +} Index: src/main/java/hudson/plugins/promoted_builds/icons/BlueStarPromotionIcon.java =================================================================== --- src/main/java/hudson/plugins/promoted_builds/icons/BlueStarPromotionIcon.java (revision 0) +++ src/main/java/hudson/plugins/promoted_builds/icons/BlueStarPromotionIcon.java (revision 0) @@ -0,0 +1,17 @@ +package hudson.plugins.promoted_builds.icons; + +import hudson.Extension; + +@Extension +public class BlueStarPromotionIcon extends BasePromotionIcon { + + @Override + public String getName() { + return "star-blue"; + } + + @Override + public String getDescription() { + return "Blue star"; + } +} Index: src/main/java/hudson/plugins/promoted_builds/icons/PurpleStarPromotionIcon.java =================================================================== --- src/main/java/hudson/plugins/promoted_builds/icons/PurpleStarPromotionIcon.java (revision 0) +++ src/main/java/hudson/plugins/promoted_builds/icons/PurpleStarPromotionIcon.java (revision 0) @@ -0,0 +1,17 @@ +package hudson.plugins.promoted_builds.icons; + +import hudson.Extension; + +@Extension +public class PurpleStarPromotionIcon extends BasePromotionIcon { + + @Override + public String getName() { + return "star-purple"; + } + + @Override + public String getDescription() { + return "Purple star"; + } +} Index: src/main/java/hudson/plugins/promoted_builds/icons/RedStarPromotionIcon.java =================================================================== --- src/main/java/hudson/plugins/promoted_builds/icons/RedStarPromotionIcon.java (revision 0) +++ src/main/java/hudson/plugins/promoted_builds/icons/RedStarPromotionIcon.java (revision 0) @@ -0,0 +1,17 @@ +package hudson.plugins.promoted_builds.icons; + +import hudson.Extension; + +@Extension +public class RedStarPromotionIcon extends BasePromotionIcon { + + @Override + public String getName() { + return "star-red"; + } + + @Override + public String getDescription() { + return "Red star"; + } +} Index: src/main/java/hudson/plugins/promoted_builds/icons/OrangeStarPromotionIcon.java =================================================================== --- src/main/java/hudson/plugins/promoted_builds/icons/OrangeStarPromotionIcon.java (revision 0) +++ src/main/java/hudson/plugins/promoted_builds/icons/OrangeStarPromotionIcon.java (revision 0) @@ -0,0 +1,17 @@ +package hudson.plugins.promoted_builds.icons; + +import hudson.Extension; + +@Extension +public class OrangeStarPromotionIcon extends BasePromotionIcon { + + @Override + public String getName() { + return "star-orange"; + } + + @Override + public String getDescription() { + return "Orange star"; + } +} Index: src/main/java/hudson/plugins/promoted_builds/icons/BasePromotionIcon.java =================================================================== --- src/main/java/hudson/plugins/promoted_builds/icons/BasePromotionIcon.java (revision 0) +++ src/main/java/hudson/plugins/promoted_builds/icons/BasePromotionIcon.java (revision 0) @@ -0,0 +1,8 @@ +package hudson.plugins.promoted_builds.icons; + +public abstract class BasePromotionIcon extends PromotionIconExtension { + @Override + public String getPlugin() { + return "promoted-builds"; + } +} Index: src/main/java/hudson/plugins/promoted_builds/icons/GreenStarPromotionIcon.java =================================================================== --- src/main/java/hudson/plugins/promoted_builds/icons/GreenStarPromotionIcon.java (revision 0) +++ src/main/java/hudson/plugins/promoted_builds/icons/GreenStarPromotionIcon.java (revision 0) @@ -0,0 +1,17 @@ +package hudson.plugins.promoted_builds.icons; + +import hudson.Extension; + +@Extension +public class GreenStarPromotionIcon extends BasePromotionIcon { + + @Override + public String getName() { + return "star-green"; + } + + @Override + public String getDescription() { + return "Green star"; + } +} \ No newline at end of file Index: src/main/java/hudson/plugins/promoted_builds/icons/PromotionIconExtension.java =================================================================== --- src/main/java/hudson/plugins/promoted_builds/icons/PromotionIconExtension.java (revision 0) +++ src/main/java/hudson/plugins/promoted_builds/icons/PromotionIconExtension.java (revision 0) @@ -0,0 +1,27 @@ +package hudson.plugins.promoted_builds.icons; + +import hudson.ExtensionList; +import hudson.ExtensionPoint; +import hudson.model.Hudson; + +public abstract class PromotionIconExtension implements ExtensionPoint { + + public abstract String getPlugin(); + + public abstract String getName(); + + public abstract String getDescription(); + + public static ExtensionList all() { + return Hudson.getInstance().getExtensionList(PromotionIconExtension.class); + } + + public static PromotionIconExtension getPromotionIcon(String name) { + for (PromotionIconExtension extension : all()) { + if (extension.getName().equals(name)) { + return extension; + } + } + return null; + } +} Index: src/main/resources/hudson/plugins/promoted_builds/JobPropertyImpl/config.jelly =================================================================== --- src/main/resources/hudson/plugins/promoted_builds/JobPropertyImpl/config.jelly (revision 36090) +++ src/main/resources/hudson/plugins/promoted_builds/JobPropertyImpl/config.jelly (working copy) @@ -10,12 +10,9 @@ Index: src/main/resources/hudson/plugins/promoted_builds/PromotedBuildAction/badge.jelly =================================================================== --- src/main/resources/hudson/plugins/promoted_builds/PromotedBuildAction/badge.jelly (revision 36090) +++ src/main/resources/hudson/plugins/promoted_builds/PromotedBuildAction/badge.jelly (working copy) @@ -4,7 +4,7 @@ + src="${rootURL}/plugin/${status.getProcess().getIconPlugin()}/icons/16x16/${status.getProcess().getIcon()}.gif"/> Index: src/main/resources/hudson/plugins/promoted_builds/PromotedBuildAction/index.jelly =================================================================== --- src/main/resources/hudson/plugins/promoted_builds/PromotedBuildAction/index.jelly (revision 36090) +++ src/main/resources/hudson/plugins/promoted_builds/PromotedBuildAction/index.jelly (working copy) @@ -18,7 +18,7 @@

- ${p.name} + ${p.name}

Index: src/main/resources/hudson/plugins/promoted_builds/PromotedProjectAction/index.jelly =================================================================== --- src/main/resources/hudson/plugins/promoted_builds/PromotedProjectAction/index.jelly (revision 36090) +++ src/main/resources/hudson/plugins/promoted_builds/PromotedProjectAction/index.jelly (working copy) @@ -7,7 +7,7 @@

- ${c.name} + ${c.name}