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("
| MS2 specific settings: |
");
ActionURL buttonURL = new ActionURL(PipelineController.SetupClusterSequenceDBAction.class, context.getContainer());
- html.append("| ")
- .append("Set FASTA root")
- .append(" - Specify the location on the web server where FASTA sequence files will be located. |
");
+ 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("
");
- 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("| Comet specific settings: |
");
ActionURL setDefaultsURL = new ActionURL(PipelineController.SetCometDefaultsAction.class, context.getContainer());
- html.append("| ")
- .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("| Mascot specific settings: |
");
ActionURL setDefaultsURL = new ActionURL(PipelineController.SetMascotDefaultsAction.class, context.getContainer());
- html.append("| ")
- .append("Set defaults")
- .append(" - Specify the default XML parameters file for Mascot. |
");
ActionURL configMascotURL = new ActionURL(MS2Controller.MascotConfigAction.class, context.getContainer());
- html.append("| ")
- .append("Configure Mascot Server")
- .append(" - Specify connection information for the Mascot Server. |
");
- html.append("
");
- 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("| Sequest specific settings: |
");
ActionURL setDefaultsURL = new ActionURL(PipelineController.SetSequestDefaultsAction.class, context.getContainer());
- html.append("| ")
- .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("| X! Tandem specific settings: |
");
ActionURL setDefaultsURL = new ActionURL(PipelineController.SetTandemDefaultsAction.class, context.getContainer());
- html.append("| ")
- .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();
}
-
}