diff --git a/core/src/main/java/hudson/logging/LogRecorderManager.java b/core/src/main/java/hudson/logging/LogRecorderManager.java index f09a1c7247e3956e080f6be015d3fa59b15f88ab..4cd47477b35662dbfe67b800369dfcf578093373 100644 --- a/core/src/main/java/hudson/logging/LogRecorderManager.java +++ b/core/src/main/java/hudson/logging/LogRecorderManager.java @@ -32,6 +32,9 @@ import jenkins.model.Jenkins; import hudson.model.RSS; import hudson.util.CopyOnWriteMap; import jenkins.model.JenkinsLocationConfiguration; +import jenkins.model.ModelObjectWithChildren; +import jenkins.model.ModelObjectWithContextMenu; +import jenkins.model.ModelObjectWithContextMenu.ContextMenu; import org.apache.commons.io.filefilter.WildcardFileFilter; import org.kohsuke.stapler.QueryParameter; import org.kohsuke.stapler.StaplerRequest; @@ -49,6 +52,7 @@ import java.util.GregorianCalendar; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.Map.Entry; import java.util.logging.Level; import java.util.logging.LogRecord; import java.util.logging.Logger; @@ -58,9 +62,9 @@ import java.util.logging.Logger; * * @author Kohsuke Kawaguchi */ -public class LogRecorderManager extends AbstractModelObject { +public class LogRecorderManager extends AbstractModelObject implements ModelObjectWithChildren { /** - * {@link LogRecorder}s. + * {@link LogRecorder}s keyed by their {@linkplain LogRecorder#name name}. */ public transient final Map logRecorders = new CopyOnWriteMap.Tree(); @@ -109,6 +113,15 @@ public class LogRecorderManager extends AbstractModelObject { return new HttpRedirect(name+"/configure"); } + public ContextMenu doChildrenContextMenu(StaplerRequest request, StaplerResponse response) throws Exception { + ContextMenu menu = new ContextMenu(); + menu.add("all","All Jenkins Logs"); + for (Entry e : logRecorders.entrySet()) { + menu.add(e.getKey(),e.getKey()); + } + return menu; + } + /** * Configure the logging level. */ diff --git a/core/src/main/java/hudson/matrix/MatrixProject.java b/core/src/main/java/hudson/matrix/MatrixProject.java index 826cdf6038775fe8ab0b5a812387e8fcfd42fb79..dbe4277143bb6964660314d0e154fbb8ce21917d 100644 --- a/core/src/main/java/hudson/matrix/MatrixProject.java +++ b/core/src/main/java/hudson/matrix/MatrixProject.java @@ -63,6 +63,7 @@ import hudson.util.CopyOnWriteMap; import hudson.util.DescribableList; import hudson.util.FormValidation; import hudson.util.FormValidation.Kind; +import jenkins.model.ModelObjectWithChildren; import jenkins.scm.SCMCheckoutStrategyDescriptor; import net.sf.json.JSONObject; import org.kohsuke.stapler.HttpResponse; @@ -95,7 +96,7 @@ import java.util.logging.Logger; * * @author Kohsuke Kawaguchi */ -public class MatrixProject extends AbstractProject implements TopLevelItem, SCMedItem, ItemGroup, Saveable, FlyweightTask, BuildableItemWithBuildWrappers { +public class MatrixProject extends AbstractProject implements TopLevelItem, SCMedItem, ItemGroup, Saveable, FlyweightTask, BuildableItemWithBuildWrappers, ModelObjectWithChildren { /** * Configuration axes. */ @@ -853,6 +854,13 @@ public class MatrixProject extends AbstractProject im return rsp; } + public ContextMenu doChildrenContextMenu(StaplerRequest request, StaplerResponse response) throws Exception { + ContextMenu menu = new ContextMenu(); + for (MatrixConfiguration c : getActiveConfigurations()) { + menu.add(c); + } + return menu; + } public DescriptorImpl getDescriptor() { return DESCRIPTOR; diff --git a/core/src/main/java/hudson/model/ComputerSet.java b/core/src/main/java/hudson/model/ComputerSet.java index 42410662ebbf543cddf358a736f9a937b86f9181..12ad63c9417740c9bd58f910e9748b477e638cbf 100644 --- a/core/src/main/java/hudson/model/ComputerSet.java +++ b/core/src/main/java/hudson/model/ComputerSet.java @@ -36,6 +36,8 @@ import hudson.util.DescribableList; import hudson.util.FormApply; import hudson.util.FormValidation; import jenkins.model.Jenkins; +import jenkins.model.ModelObjectWithChildren; +import jenkins.model.ModelObjectWithContextMenu.ContextMenu; import org.kohsuke.stapler.HttpResponse; import org.kohsuke.stapler.QueryParameter; import org.kohsuke.stapler.StaplerRequest; @@ -65,7 +67,7 @@ import net.sf.json.JSONObject; * @author Kohsuke Kawaguchi */ @ExportedBean -public final class ComputerSet extends AbstractModelObject implements Describable { +public final class ComputerSet extends AbstractModelObject implements Describable, ModelObjectWithChildren { /** * This is the owner that persists {@link #monitors}. */ @@ -97,6 +99,14 @@ public final class ComputerSet extends AbstractModelObject implements Describabl return Jenkins.getInstance().getComputers(); } + public ContextMenu doChildrenContextMenu(StaplerRequest request, StaplerResponse response) throws Exception { + ContextMenu m = new ContextMenu(); + for (Computer c : get_all()) { + m.add(c); + } + return m; + } + /** * Exposing {@link NodeMonitor#all()} for Jelly binding. */ diff --git a/core/src/main/java/hudson/model/Label.java b/core/src/main/java/hudson/model/Label.java index 96bd681e8b72955e15347b0d1f96e0ed337b17ee..705952d6f6b2541ebdd09e94f1b2837734f719d2 100644 --- a/core/src/main/java/hudson/model/Label.java +++ b/core/src/main/java/hudson/model/Label.java @@ -44,6 +44,9 @@ import hudson.slaves.Cloud; import hudson.util.QuotedStringTokenizer; import hudson.util.VariableResolver; import jenkins.model.Jenkins; +import jenkins.model.ModelObjectWithChildren; +import org.kohsuke.stapler.StaplerRequest; +import org.kohsuke.stapler.StaplerResponse; import org.kohsuke.stapler.export.Exported; import org.kohsuke.stapler.export.ExportedBean; @@ -70,7 +73,7 @@ import com.thoughtworks.xstream.io.HierarchicalStreamReader; * @see Jenkins#getLabel(String) */ @ExportedBean -public abstract class Label extends Actionable implements Comparable