From c6f3bdf1d993efa7c7a7b4a8741f922c0188db03 Mon Sep 17 00:00:00 2001 From: Adam Rauch Date: Thu, 5 Jun 2025 05:21:27 -0700 Subject: [PATCH 1/4] Migrate renderDataRegion() and renderView() to HtmlWriter --- .../labkey/luminex/query/ExclusionUIDisplayColumn.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/luminex/src/org/labkey/luminex/query/ExclusionUIDisplayColumn.java b/luminex/src/org/labkey/luminex/query/ExclusionUIDisplayColumn.java index 71d347dec..378f18e89 100644 --- a/luminex/src/org/labkey/luminex/query/ExclusionUIDisplayColumn.java +++ b/luminex/src/org/labkey/luminex/query/ExclusionUIDisplayColumn.java @@ -30,8 +30,6 @@ import org.labkey.api.util.PageFlowUtil; import org.labkey.api.writer.HtmlWriter; -import java.io.IOException; -import java.io.Writer; import java.util.Set; import static org.labkey.api.util.DOM.Attribute.alt; @@ -103,7 +101,7 @@ public void renderGridCellContents(RenderContext ctx, HtmlWriter out) boolean canEdit = _container.hasPermission(_user, UpdatePermission.class); Boolean excluded = (Boolean)ctx.get(getColumnInfo().getFieldKey()); - HtmlString img = excluded.booleanValue() ? + DOM.Renderable img = excluded.booleanValue() ? getImgTag("excluded.png", exclusionComment, id, canEdit) : getImgTag("included.png", "Click to add a well or replicate group exclusion", id, canEdit); @@ -120,7 +118,7 @@ public void renderGridCellContents(RenderContext ctx, HtmlWriter out) } } - private HtmlString getImgTag(String png, String titleAlt, String id, boolean canEdit) + private DOM.Renderable getImgTag(String png, String titleAlt, String id, boolean canEdit) { DOM._Attributes att = at(src, AppProps.getInstance().getContextPath() + "/luminex/exclusion/" + png) .at(height, 16) @@ -130,6 +128,6 @@ private HtmlString getImgTag(String png, String titleAlt, String id, boolean can if (canEdit) att.at(title, titleAlt).at(alt, titleAlt); - return DOM.createHtmlFragment(IMG(att)); + return IMG(att); } } From c1fddc8fa333e7973ddfbcdbdc4d5c89638aaad3 Mon Sep 17 00:00:00 2001 From: Adam Rauch Date: Thu, 5 Jun 2025 06:59:05 -0700 Subject: [PATCH 2/4] Migrate WebPartView.renderView() to HtmlWriter --- ms2/src/org/labkey/ms2/pipeline/MS2PipelineProvider.java | 5 +++-- .../labkey/ms2/pipeline/comet/CometPipelineProvider.java | 6 +++--- .../labkey/ms2/pipeline/mascot/MascotCPipelineProvider.java | 5 +++-- ms2/src/org/labkey/ms2/pipeline/mascot/MascotRun.java | 4 ++-- .../ms2/pipeline/sequest/SequestPipelineProvider.java | 5 +++-- .../labkey/ms2/pipeline/tandem/XTandemPipelineProvider.java | 5 +++-- 6 files changed, 17 insertions(+), 13 deletions(-) diff --git a/ms2/src/org/labkey/ms2/pipeline/MS2PipelineProvider.java b/ms2/src/org/labkey/ms2/pipeline/MS2PipelineProvider.java index 96d4ecd10..c9a62cd5a 100644 --- a/ms2/src/org/labkey/ms2/pipeline/MS2PipelineProvider.java +++ b/ms2/src/org/labkey/ms2/pipeline/MS2PipelineProvider.java @@ -25,6 +25,7 @@ import org.labkey.api.view.WebPartView; import org.labkey.api.data.Container; import org.labkey.api.module.Module; +import org.labkey.api.writer.HtmlWriter; import java.io.PrintWriter; @@ -66,7 +67,7 @@ public SetupWebPart() } @Override - protected void renderView(Object model, PrintWriter out) + protected void renderView(Object model, PrintWriter oldWriter, HtmlWriter out) { ViewContext context = getViewContext(); if (!context.getContainer().hasPermission(context.getUser(), InsertPermission.class)) @@ -79,7 +80,7 @@ protected void renderView(Object model, PrintWriter out) .append(" - Specify the location on the web server where FASTA sequence files will be located."); html.append(""); - out.write(html.toString()); + oldWriter.write(html.toString()); } } } diff --git a/ms2/src/org/labkey/ms2/pipeline/comet/CometPipelineProvider.java b/ms2/src/org/labkey/ms2/pipeline/comet/CometPipelineProvider.java index b4625bb5d..92c34c2f7 100644 --- a/ms2/src/org/labkey/ms2/pipeline/comet/CometPipelineProvider.java +++ b/ms2/src/org/labkey/ms2/pipeline/comet/CometPipelineProvider.java @@ -27,6 +27,7 @@ import org.labkey.api.view.HttpView; import org.labkey.api.view.ViewContext; import org.labkey.api.view.WebPartView; +import org.labkey.api.writer.HtmlWriter; import org.labkey.ms2.pipeline.AbstractMS2SearchPipelineProvider; import org.labkey.ms2.pipeline.AbstractMS2SearchProtocolFactory; import org.labkey.ms2.pipeline.MS2PipelineManager; @@ -98,7 +99,7 @@ public SetupWebPart() } @Override - protected void renderView(Object model, PrintWriter out) + protected void renderView(Object model, PrintWriter oldWriter, HtmlWriter out) { ViewContext context = getViewContext(); if (!context.getContainer().hasPermission(context.getUser(), InsertPermission.class)) @@ -109,7 +110,7 @@ protected void renderView(Object model, PrintWriter out) html.append("    ") .append("Set defaults") .append(" - Specify the default XML parameters file for Comet."); - out.write(html.toString()); + oldWriter.write(html.toString()); } } @@ -118,5 +119,4 @@ public AbstractMS2SearchProtocolFactory getProtocolFactory() { return CometSearchProtocolFactory.get(); } - } diff --git a/ms2/src/org/labkey/ms2/pipeline/mascot/MascotCPipelineProvider.java b/ms2/src/org/labkey/ms2/pipeline/mascot/MascotCPipelineProvider.java index 8e9f5b6bc..273610a12 100644 --- a/ms2/src/org/labkey/ms2/pipeline/mascot/MascotCPipelineProvider.java +++ b/ms2/src/org/labkey/ms2/pipeline/mascot/MascotCPipelineProvider.java @@ -26,6 +26,7 @@ import org.labkey.api.view.HttpView; import org.labkey.api.view.ViewContext; import org.labkey.api.view.WebPartView; +import org.labkey.api.writer.HtmlWriter; import org.labkey.ms2.MS2Controller; import org.labkey.ms2.pipeline.AbstractMS2SearchPipelineProvider; import org.labkey.ms2.pipeline.AbstractMS2SearchProtocolFactory; @@ -107,7 +108,7 @@ public SetupWebPart() } @Override - protected void renderView(Object model, PrintWriter out) + protected void renderView(Object model, PrintWriter oldWriter, HtmlWriter out) { ViewContext context = getViewContext(); if (!context.getContainer().hasPermission(context.getUser(), InsertPermission.class)) @@ -123,7 +124,7 @@ protected void renderView(Object model, PrintWriter out) .append("Configure Mascot Server") .append(" - Specify connection information for the Mascot Server."); html.append(""); - out.write(html.toString()); + oldWriter.write(html.toString()); } } diff --git a/ms2/src/org/labkey/ms2/pipeline/mascot/MascotRun.java b/ms2/src/org/labkey/ms2/pipeline/mascot/MascotRun.java index 1b5be134c..98c686998 100644 --- a/ms2/src/org/labkey/ms2/pipeline/mascot/MascotRun.java +++ b/ms2/src/org/labkey/ms2/pipeline/mascot/MascotRun.java @@ -149,9 +149,9 @@ protected ModelAndView getAdditionalPeptideSummaryView(ViewContext viewContext, { return new WebPartView(title) { @Override - protected void renderView(Object model, PrintWriter out) + protected void renderView(Object model, PrintWriter oldWriter, HtmlWriter out) { - out.write("
Use the 'Standard' grouping to view this information.
"); + oldWriter.write("
Use the 'Standard' grouping to view this information.
"); } }; } diff --git a/ms2/src/org/labkey/ms2/pipeline/sequest/SequestPipelineProvider.java b/ms2/src/org/labkey/ms2/pipeline/sequest/SequestPipelineProvider.java index 0acc674a1..dd27a39bc 100644 --- a/ms2/src/org/labkey/ms2/pipeline/sequest/SequestPipelineProvider.java +++ b/ms2/src/org/labkey/ms2/pipeline/sequest/SequestPipelineProvider.java @@ -27,6 +27,7 @@ import org.labkey.api.view.HttpView; import org.labkey.api.view.ViewContext; import org.labkey.api.view.WebPartView; +import org.labkey.api.writer.HtmlWriter; import org.labkey.ms2.pipeline.AbstractMS2SearchPipelineProvider; import org.labkey.ms2.pipeline.AbstractMS2SearchProtocolFactory; import org.labkey.ms2.pipeline.MS2PipelineManager; @@ -110,7 +111,7 @@ public SetupWebPart() } @Override - protected void renderView(Object model, PrintWriter out) + protected void renderView(Object model, PrintWriter oldWriter, HtmlWriter out) { ViewContext context = getViewContext(); if (!context.getContainer().hasPermission(context.getUser(), InsertPermission.class)) @@ -121,7 +122,7 @@ protected void renderView(Object model, PrintWriter out) html.append("    ") .append("Set defaults") .append(" - Specify the default XML parameters file for Sequest."); - out.write(html.toString()); + oldWriter.write(html.toString()); } } diff --git a/ms2/src/org/labkey/ms2/pipeline/tandem/XTandemPipelineProvider.java b/ms2/src/org/labkey/ms2/pipeline/tandem/XTandemPipelineProvider.java index bcd76bf7b..434745a8e 100644 --- a/ms2/src/org/labkey/ms2/pipeline/tandem/XTandemPipelineProvider.java +++ b/ms2/src/org/labkey/ms2/pipeline/tandem/XTandemPipelineProvider.java @@ -26,6 +26,7 @@ import org.labkey.api.view.HttpView; import org.labkey.api.view.ViewContext; import org.labkey.api.view.WebPartView; +import org.labkey.api.writer.HtmlWriter; import org.labkey.ms2.pipeline.AbstractMS2SearchPipelineProvider; import org.labkey.ms2.pipeline.AbstractMS2SearchProtocolFactory; import org.labkey.ms2.pipeline.MS2PipelineManager; @@ -98,7 +99,7 @@ public SetupWebPart() } @Override - protected void renderView(Object model, PrintWriter out) + protected void renderView(Object model, PrintWriter oldWriter, HtmlWriter out) { ViewContext context = getViewContext(); if (!context.getContainer().hasPermission(context.getUser(), InsertPermission.class)) @@ -109,7 +110,7 @@ protected void renderView(Object model, PrintWriter out) html.append("    ") .append("Set defaults") .append(" - Specify the default XML parameters file for X! Tandem."); - out.write(html.toString()); + oldWriter.write(html.toString()); } } From 80ccf1494b3e75caff5de930bacbca1e6b7c2ac9 Mon Sep 17 00:00:00 2001 From: Adam Rauch Date: Fri, 6 Jun 2025 01:03:07 -0700 Subject: [PATCH 3/4] Migrate MS2 setup webparts --- .../ms2/pipeline/MS2PipelineProvider.java | 64 ++++++++++++++----- .../pipeline/comet/CometPipelineProvider.java | 19 ++---- .../mascot/MascotCPipelineProvider.java | 30 ++------- .../labkey/ms2/pipeline/mascot/MascotRun.java | 11 ++-- .../sequest/SequestPipelineProvider.java | 20 +----- .../tandem/XTandemPipelineProvider.java | 21 ++---- 6 files changed, 72 insertions(+), 93 deletions(-) diff --git a/ms2/src/org/labkey/ms2/pipeline/MS2PipelineProvider.java b/ms2/src/org/labkey/ms2/pipeline/MS2PipelineProvider.java index c9a62cd5a..ef6926fe7 100644 --- a/ms2/src/org/labkey/ms2/pipeline/MS2PipelineProvider.java +++ b/ms2/src/org/labkey/ms2/pipeline/MS2PipelineProvider.java @@ -15,22 +15,28 @@ */ package org.labkey.ms2.pipeline; +import org.labkey.api.data.Container; +import org.labkey.api.module.Module; +import org.labkey.api.pipeline.PipeRoot; import org.labkey.api.pipeline.PipelineDirectory; import org.labkey.api.pipeline.PipelineProvider; -import org.labkey.api.pipeline.PipeRoot; import org.labkey.api.security.permissions.InsertPermission; +import org.labkey.api.util.HtmlString; +import org.labkey.api.util.LinkBuilder; +import org.labkey.api.view.ActionURL; import org.labkey.api.view.HttpView; import org.labkey.api.view.ViewContext; -import org.labkey.api.view.ActionURL; import org.labkey.api.view.WebPartView; -import org.labkey.api.data.Container; -import org.labkey.api.module.Module; import org.labkey.api.writer.HtmlWriter; -import java.io.PrintWriter; +import java.util.Arrays; + +import static org.labkey.api.util.DOM.Attribute.style; +import static org.labkey.api.util.DOM.TABLE; +import static org.labkey.api.util.DOM.TD; +import static org.labkey.api.util.DOM.TR; +import static org.labkey.api.util.DOM.at; -/** - */ public class MS2PipelineProvider extends PipelineProvider { static String name = "MS2"; @@ -67,20 +73,44 @@ public SetupWebPart() } @Override - protected void renderView(Object model, PrintWriter oldWriter, HtmlWriter out) + protected void renderView(Object model, HtmlWriter out) { ViewContext context = getViewContext(); - if (!context.getContainer().hasPermission(context.getUser(), InsertPermission.class)) - return; - StringBuilder html = new StringBuilder(); - html.append(""); ActionURL buttonURL = new ActionURL(PipelineController.SetupClusterSequenceDBAction.class, context.getContainer()); - html.append(""); + renderSettings(context, "MS2", out, new Setting(buttonURL, "Set FASTA root", "Specify the location on the web server where FASTA sequence files will be located.")); + } + } - html.append("
MS2 specific settings:
    ") - .append("Set FASTA root") - .append(" - Specify the location on the web server where FASTA sequence files will be located.
"); - oldWriter.write(html.toString()); + public record Setting(ActionURL url, String text, String description) + { + // Standard "Set defaults" setting + public Setting(ActionURL url, String name) + { + this(url, "Set defaults", "Specify the default XML parameters file for " + name + "."); } } + + public static void renderSettings(ViewContext context, String name, HtmlWriter out, Setting... settings) + { + if (!context.getContainer().hasPermission(context.getUser(), InsertPermission.class)) + return; + + TABLE( + TR(TD( + at(style, "font-weight:bold;"), + name + "-specific settings:" + )), + Arrays.stream(settings) + .map(setting -> + TR(TD( + HtmlString.NBSP, + HtmlString.NBSP, + HtmlString.NBSP, + HtmlString.NBSP, + LinkBuilder.simpleLink(setting.text(), setting.url()), + " - " + setting.description() + )) + ) + ).appendTo(out); + } } diff --git a/ms2/src/org/labkey/ms2/pipeline/comet/CometPipelineProvider.java b/ms2/src/org/labkey/ms2/pipeline/comet/CometPipelineProvider.java index 92c34c2f7..1d1fecebb 100644 --- a/ms2/src/org/labkey/ms2/pipeline/comet/CometPipelineProvider.java +++ b/ms2/src/org/labkey/ms2/pipeline/comet/CometPipelineProvider.java @@ -22,7 +22,6 @@ import org.labkey.api.pipeline.PipeRoot; import org.labkey.api.pipeline.PipelineActionConfig; import org.labkey.api.pipeline.PipelineDirectory; -import org.labkey.api.security.permissions.InsertPermission; import org.labkey.api.view.ActionURL; import org.labkey.api.view.HttpView; import org.labkey.api.view.ViewContext; @@ -31,16 +30,13 @@ import org.labkey.ms2.pipeline.AbstractMS2SearchPipelineProvider; import org.labkey.ms2.pipeline.AbstractMS2SearchProtocolFactory; import org.labkey.ms2.pipeline.MS2PipelineManager; +import org.labkey.ms2.pipeline.MS2PipelineProvider; +import org.labkey.ms2.pipeline.MS2PipelineProvider.Setting; import org.labkey.ms2.pipeline.PipelineController; -import java.io.PrintWriter; import java.util.Collections; import java.util.List; -/** - * User: jeckels - * Date: September 17, 2013 - */ public class CometPipelineProvider extends AbstractMS2SearchPipelineProvider { private static final String ACTION_LABEL = "Comet Peptide Search"; @@ -99,18 +95,11 @@ public SetupWebPart() } @Override - protected void renderView(Object model, PrintWriter oldWriter, HtmlWriter out) + protected void renderView(Object model, HtmlWriter out) { ViewContext context = getViewContext(); - if (!context.getContainer().hasPermission(context.getUser(), InsertPermission.class)) - return; - StringBuilder html = new StringBuilder(); - html.append(""); ActionURL setDefaultsURL = new ActionURL(PipelineController.SetCometDefaultsAction.class, context.getContainer()); - html.append("
Comet specific settings:
    ") - .append("Set defaults") - .append(" - Specify the default XML parameters file for Comet.
"); - oldWriter.write(html.toString()); + MS2PipelineProvider.renderSettings(context, "Comet", out, new Setting(setDefaultsURL, "Comet")); } } diff --git a/ms2/src/org/labkey/ms2/pipeline/mascot/MascotCPipelineProvider.java b/ms2/src/org/labkey/ms2/pipeline/mascot/MascotCPipelineProvider.java index 273610a12..fe49bdc14 100644 --- a/ms2/src/org/labkey/ms2/pipeline/mascot/MascotCPipelineProvider.java +++ b/ms2/src/org/labkey/ms2/pipeline/mascot/MascotCPipelineProvider.java @@ -21,7 +21,6 @@ import org.labkey.api.pipeline.PipeRoot; import org.labkey.api.pipeline.PipelineActionConfig; import org.labkey.api.pipeline.PipelineDirectory; -import org.labkey.api.security.permissions.InsertPermission; import org.labkey.api.view.ActionURL; import org.labkey.api.view.HttpView; import org.labkey.api.view.ViewContext; @@ -31,20 +30,14 @@ import org.labkey.ms2.pipeline.AbstractMS2SearchPipelineProvider; import org.labkey.ms2.pipeline.AbstractMS2SearchProtocolFactory; import org.labkey.ms2.pipeline.MS2PipelineManager; +import org.labkey.ms2.pipeline.MS2PipelineProvider; +import org.labkey.ms2.pipeline.MS2PipelineProvider.Setting; import org.labkey.ms2.pipeline.PipelineController; import java.io.IOException; -import java.io.PrintWriter; import java.util.Collections; import java.util.List; -/** - * MascotCPipelineProvider class - *

- * Created: Nov 1, 2005 - * - * @author bmaclean - */ public class MascotCPipelineProvider extends AbstractMS2SearchPipelineProvider { public static String name = "Mascot"; @@ -108,23 +101,15 @@ public SetupWebPart() } @Override - protected void renderView(Object model, PrintWriter oldWriter, HtmlWriter out) + protected void renderView(Object model, HtmlWriter out) { ViewContext context = getViewContext(); - if (!context.getContainer().hasPermission(context.getUser(), InsertPermission.class)) - return; - StringBuilder html = new StringBuilder(); - html.append(""); ActionURL setDefaultsURL = new ActionURL(PipelineController.SetMascotDefaultsAction.class, context.getContainer()); - html.append(""); ActionURL configMascotURL = new ActionURL(MS2Controller.MascotConfigAction.class, context.getContainer()); - html.append(""); - html.append("
Mascot specific settings:
    ") - .append("Set defaults") - .append(" - Specify the default XML parameters file for Mascot.
    ") - .append("Configure Mascot Server") - .append(" - Specify connection information for the Mascot Server.
"); - oldWriter.write(html.toString()); + MS2PipelineProvider.renderSettings(context, "Mascot", out, + new Setting(setDefaultsURL, "Mascot"), + new Setting(configMascotURL, "Configure Mascot Server", "Specify connection information for the Mascot Server.") + ); } } @@ -142,5 +127,4 @@ private MascotConfig ensureMascotConfig(Container container) throws IOException throw new IOException("Mascot Server has not been configured."); return config; } - } diff --git a/ms2/src/org/labkey/ms2/pipeline/mascot/MascotRun.java b/ms2/src/org/labkey/ms2/pipeline/mascot/MascotRun.java index 98c686998..02b180f7a 100644 --- a/ms2/src/org/labkey/ms2/pipeline/mascot/MascotRun.java +++ b/ms2/src/org/labkey/ms2/pipeline/mascot/MascotRun.java @@ -35,9 +35,10 @@ import org.labkey.ms2.peptideview.QueryPeptideMS2RunView; import org.springframework.web.servlet.ModelAndView; -import java.io.PrintWriter; import java.util.Map; +import static org.labkey.api.util.DOM.DIV; + public class MascotRun extends MS2Run { private String mascotFile; @@ -147,11 +148,13 @@ protected ModelAndView getAdditionalPeptideSummaryView(ViewContext viewContext, } else { - return new WebPartView(title) { + return new WebPartView<>(title) { @Override - protected void renderView(Object model, PrintWriter oldWriter, HtmlWriter out) + protected void renderView(Object model, HtmlWriter out) { - oldWriter.write("

Use the 'Standard' grouping to view this information.
"); + DIV( + "Use the 'Standard' grouping to view this information." + ).appendTo(out); } }; } diff --git a/ms2/src/org/labkey/ms2/pipeline/sequest/SequestPipelineProvider.java b/ms2/src/org/labkey/ms2/pipeline/sequest/SequestPipelineProvider.java index dd27a39bc..3dce0521b 100644 --- a/ms2/src/org/labkey/ms2/pipeline/sequest/SequestPipelineProvider.java +++ b/ms2/src/org/labkey/ms2/pipeline/sequest/SequestPipelineProvider.java @@ -22,7 +22,6 @@ import org.labkey.api.pipeline.PipeRoot; import org.labkey.api.pipeline.PipelineActionConfig; import org.labkey.api.pipeline.PipelineDirectory; -import org.labkey.api.security.permissions.InsertPermission; import org.labkey.api.view.ActionURL; import org.labkey.api.view.HttpView; import org.labkey.api.view.ViewContext; @@ -31,17 +30,12 @@ import org.labkey.ms2.pipeline.AbstractMS2SearchPipelineProvider; import org.labkey.ms2.pipeline.AbstractMS2SearchProtocolFactory; import org.labkey.ms2.pipeline.MS2PipelineManager; +import org.labkey.ms2.pipeline.MS2PipelineProvider; import org.labkey.ms2.pipeline.PipelineController; -import java.io.PrintWriter; import java.util.Collections; import java.util.List; -/** - * User: billnelson@uky.edu - * Date: Aug 24, 2006 - * Time: 12:45:45 PM - */ public class SequestPipelineProvider extends AbstractMS2SearchPipelineProvider { private static final String ACTION_LABEL = "Sequest Peptide Search"; @@ -111,18 +105,11 @@ public SetupWebPart() } @Override - protected void renderView(Object model, PrintWriter oldWriter, HtmlWriter out) + protected void renderView(Object model, HtmlWriter out) { ViewContext context = getViewContext(); - if (!context.getContainer().hasPermission(context.getUser(), InsertPermission.class)) - return; - StringBuilder html = new StringBuilder(); - html.append(""); ActionURL setDefaultsURL = new ActionURL(PipelineController.SetSequestDefaultsAction.class, context.getContainer()); - html.append("
Sequest specific settings:
    ") - .append("Set defaults") - .append(" - Specify the default XML parameters file for Sequest.
"); - oldWriter.write(html.toString()); + MS2PipelineProvider.renderSettings(context, "Sequest", out, new MS2PipelineProvider.Setting(setDefaultsURL, "Sequest")); } } @@ -131,5 +118,4 @@ public AbstractMS2SearchProtocolFactory getProtocolFactory() { return SequestSearchProtocolFactory.get(); } - } diff --git a/ms2/src/org/labkey/ms2/pipeline/tandem/XTandemPipelineProvider.java b/ms2/src/org/labkey/ms2/pipeline/tandem/XTandemPipelineProvider.java index 434745a8e..49e7165f2 100644 --- a/ms2/src/org/labkey/ms2/pipeline/tandem/XTandemPipelineProvider.java +++ b/ms2/src/org/labkey/ms2/pipeline/tandem/XTandemPipelineProvider.java @@ -21,7 +21,6 @@ import org.labkey.api.pipeline.PipeRoot; import org.labkey.api.pipeline.PipelineActionConfig; import org.labkey.api.pipeline.PipelineDirectory; -import org.labkey.api.security.permissions.InsertPermission; import org.labkey.api.view.ActionURL; import org.labkey.api.view.HttpView; import org.labkey.api.view.ViewContext; @@ -30,17 +29,13 @@ import org.labkey.ms2.pipeline.AbstractMS2SearchPipelineProvider; import org.labkey.ms2.pipeline.AbstractMS2SearchProtocolFactory; import org.labkey.ms2.pipeline.MS2PipelineManager; +import org.labkey.ms2.pipeline.MS2PipelineProvider; +import org.labkey.ms2.pipeline.MS2PipelineProvider.Setting; import org.labkey.ms2.pipeline.PipelineController; -import java.io.PrintWriter; import java.util.Collections; import java.util.List; -/** - * Created: Nov 1, 2005 - * - * @author bmaclean - */ public class XTandemPipelineProvider extends AbstractMS2SearchPipelineProvider { public static String name = "X! Tandem"; @@ -99,18 +94,11 @@ public SetupWebPart() } @Override - protected void renderView(Object model, PrintWriter oldWriter, HtmlWriter out) + protected void renderView(Object model, HtmlWriter out) { ViewContext context = getViewContext(); - if (!context.getContainer().hasPermission(context.getUser(), InsertPermission.class)) - return; - StringBuilder html = new StringBuilder(); - html.append(""); ActionURL setDefaultsURL = new ActionURL(PipelineController.SetTandemDefaultsAction.class, context.getContainer()); - html.append("
X! Tandem specific settings:
    ") - .append("Set defaults") - .append(" - Specify the default XML parameters file for X! Tandem.
"); - oldWriter.write(html.toString()); + MS2PipelineProvider.renderSettings(context, "X! Tandem", out, new Setting(setDefaultsURL, "X! Tandem")); } } @@ -119,5 +107,4 @@ public AbstractMS2SearchProtocolFactory getProtocolFactory() { return XTandemSearchProtocolFactory.get(); } - } From 4d01cc09f8b9503b91b7af6fedf3c5f2b827134f Mon Sep 17 00:00:00 2001 From: Adam Rauch Date: Sat, 7 Jun 2025 05:59:00 -0700 Subject: [PATCH 4/4] Setting can render itself --- .../ms2/pipeline/MS2PipelineProvider.java | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/ms2/src/org/labkey/ms2/pipeline/MS2PipelineProvider.java b/ms2/src/org/labkey/ms2/pipeline/MS2PipelineProvider.java index ef6926fe7..d397700bc 100644 --- a/ms2/src/org/labkey/ms2/pipeline/MS2PipelineProvider.java +++ b/ms2/src/org/labkey/ms2/pipeline/MS2PipelineProvider.java @@ -21,6 +21,7 @@ import org.labkey.api.pipeline.PipelineDirectory; import org.labkey.api.pipeline.PipelineProvider; import org.labkey.api.security.permissions.InsertPermission; +import org.labkey.api.util.DOM; import org.labkey.api.util.HtmlString; import org.labkey.api.util.LinkBuilder; import org.labkey.api.view.ActionURL; @@ -88,6 +89,18 @@ public Setting(ActionURL url, String name) { this(url, "Set defaults", "Specify the default XML parameters file for " + name + "."); } + + // Render this Setting as a Renderable + private DOM.Renderable renderable() + { + return TR(TD( + HtmlString.NBSP, + HtmlString.NBSP, + HtmlString.NBSP, + HtmlString.NBSP, + LinkBuilder.simpleLink(text(), url()), " - " + description() + )); + } } public static void renderSettings(ViewContext context, String name, HtmlWriter out, Setting... settings) @@ -101,16 +114,7 @@ public static void renderSettings(ViewContext context, String name, HtmlWriter o name + "-specific settings:" )), Arrays.stream(settings) - .map(setting -> - TR(TD( - HtmlString.NBSP, - HtmlString.NBSP, - HtmlString.NBSP, - HtmlString.NBSP, - LinkBuilder.simpleLink(setting.text(), setting.url()), - " - " + setting.description() - )) - ) + .map(Setting::renderable) ).appendTo(out); } }