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); } } diff --git a/ms2/src/org/labkey/ms2/pipeline/MS2PipelineProvider.java b/ms2/src/org/labkey/ms2/pipeline/MS2PipelineProvider.java index 96d4ecd10..d397700bc 100644 --- a/ms2/src/org/labkey/ms2/pipeline/MS2PipelineProvider.java +++ b/ms2/src/org/labkey/ms2/pipeline/MS2PipelineProvider.java @@ -15,21 +15,29 @@ */ 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.DOM; +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"; @@ -66,20 +74,47 @@ public SetupWebPart() } @Override - protected void renderView(Object model, PrintWriter 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.
"); - out.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 + "."); + } + + // 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) + { + 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::renderable) + ).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 b4625bb5d..1d1fecebb 100644 --- a/ms2/src/org/labkey/ms2/pipeline/comet/CometPipelineProvider.java +++ b/ms2/src/org/labkey/ms2/pipeline/comet/CometPipelineProvider.java @@ -22,24 +22,21 @@ 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; 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; +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"; @@ -98,18 +95,11 @@ public SetupWebPart() } @Override - protected void renderView(Object model, PrintWriter 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.
"); - out.write(html.toString()); + MS2PipelineProvider.renderSettings(context, "Comet", out, new Setting(setDefaultsURL, "Comet")); } } @@ -118,5 +108,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..fe49bdc14 100644 --- a/ms2/src/org/labkey/ms2/pipeline/mascot/MascotCPipelineProvider.java +++ b/ms2/src/org/labkey/ms2/pipeline/mascot/MascotCPipelineProvider.java @@ -21,29 +21,23 @@ 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; 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; 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"; @@ -107,23 +101,15 @@ public SetupWebPart() } @Override - protected void renderView(Object model, PrintWriter 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.
"); - out.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.") + ); } } @@ -141,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 1b5be134c..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 out) + protected void renderView(Object model, HtmlWriter out) { - out.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 0acc674a1..3dce0521b 100644 --- a/ms2/src/org/labkey/ms2/pipeline/sequest/SequestPipelineProvider.java +++ b/ms2/src/org/labkey/ms2/pipeline/sequest/SequestPipelineProvider.java @@ -22,25 +22,20 @@ 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; 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; +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"; @@ -110,18 +105,11 @@ public SetupWebPart() } @Override - protected void renderView(Object model, PrintWriter 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.
"); - out.write(html.toString()); + MS2PipelineProvider.renderSettings(context, "Sequest", out, new MS2PipelineProvider.Setting(setDefaultsURL, "Sequest")); } } @@ -130,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 bcd76bf7b..49e7165f2 100644 --- a/ms2/src/org/labkey/ms2/pipeline/tandem/XTandemPipelineProvider.java +++ b/ms2/src/org/labkey/ms2/pipeline/tandem/XTandemPipelineProvider.java @@ -21,25 +21,21 @@ 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; 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; +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"; @@ -98,18 +94,11 @@ public SetupWebPart() } @Override - protected void renderView(Object model, PrintWriter 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.
"); - out.write(html.toString()); + MS2PipelineProvider.renderSettings(context, "X! Tandem", out, new Setting(setDefaultsURL, "X! Tandem")); } } @@ -118,5 +107,4 @@ public AbstractMS2SearchProtocolFactory getProtocolFactory() { return XTandemSearchProtocolFactory.get(); } - }