diff --git a/core/src/main/java/hudson/Functions.java b/core/src/main/java/hudson/Functions.java index 62e816af79..53c61a8255 100644 --- a/core/src/main/java/hudson/Functions.java +++ b/core/src/main/java/hudson/Functions.java @@ -58,6 +58,7 @@ import hudson.views.ViewsTabBar; import hudson.widgets.RenderOnDemandClosure; import jenkins.model.GlobalConfiguration; import jenkins.model.Jenkins; +import jenkins.model.ModelObjectWithContextMenu; import org.acegisecurity.providers.anonymous.AnonymousAuthenticationToken; import org.apache.commons.jelly.JellyContext; import org.apache.commons.jelly.JellyTagException; @@ -146,6 +147,10 @@ public class Functions { return o instanceof ModelObject; } + public static boolean isModelWithContextMenu(Object o) { + return o instanceof ModelObjectWithContextMenu; + } + public static String xsDate(Calendar cal) { return Util.XS_DATETIME_FORMATTER.format(cal.getTime()); } diff --git a/core/src/main/java/hudson/matrix/MatrixConfiguration.java b/core/src/main/java/hudson/matrix/MatrixConfiguration.java index 5fc397a871..7c1f972fbd 100644 --- a/core/src/main/java/hudson/matrix/MatrixConfiguration.java +++ b/core/src/main/java/hudson/matrix/MatrixConfiguration.java @@ -24,6 +24,7 @@ package hudson.matrix; import hudson.Util; +import hudson.remoting.LocalChannel; import hudson.util.AlternativeUiTextProvider; import hudson.util.DescribableList; import hudson.model.AbstractBuild; @@ -31,6 +32,7 @@ import hudson.model.Cause; import hudson.model.CauseAction; import hudson.model.DependencyGraph; import hudson.model.Descriptor; +import hudson.util.RemotingDiagnostics; import jenkins.model.Jenkins; import hudson.model.Item; import hudson.model.ItemGroup; @@ -46,8 +48,11 @@ import hudson.tasks.BuildWrapper; import hudson.tasks.Builder; import hudson.tasks.LogRotator; import hudson.tasks.Publisher; +import jenkins.model.Jenkins.MasterComputer; import java.io.IOException; +import java.io.PrintWriter; +import java.io.StringWriter; import java.util.List; import java.util.Map; diff --git a/core/src/main/java/jenkins/model/ModelObjectWithContextMenu.java b/core/src/main/java/jenkins/model/ModelObjectWithContextMenu.java index c26b98739c..4bf414d87a 100644 --- a/core/src/main/java/jenkins/model/ModelObjectWithContextMenu.java +++ b/core/src/main/java/jenkins/model/ModelObjectWithContextMenu.java @@ -163,6 +163,12 @@ public interface ModelObjectWithContextMenu extends ModelObject { @Exported public String icon; + /** + * If this is a submenu, definition of subitems. + */ + @Exported(inline=true) + public ContextMenu subMenu; + public MenuItem(String url, String icon, String displayName) { this.url = URI.create(Stapler.getCurrentRequest().getRequestURI()).resolve(url).toString(); this.icon = icon; diff --git a/core/src/main/resources/lib/layout/breadcrumbBar.jelly b/core/src/main/resources/lib/layout/breadcrumbBar.jelly index 413076a495..2dd04560d3 100644 --- a/core/src/main/resources/lib/layout/breadcrumbBar.jelly +++ b/core/src/main/resources/lib/layout/breadcrumbBar.jelly @@ -58,7 +58,7 @@ THE SOFTWARE.