package org.molgenis.mutation.ui.html; import java.io.Serializable; import java.util.List; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.text.StrBuilder; import org.molgenis.framework.ui.html.HtmlInput; import org.molgenis.mutation.dto.ExonDTO; import org.molgenis.mutation.dto.ProteinDomainDTO; /* * A panel that prints a protein domain with clickable exons inside */ public class ProteinDomainPanel extends HtmlInput<ProteinDomainDTO> implements Serializable { /* The serial version UID of this class. Needed for serialization. */ private static final long serialVersionUID = -3632595043556432831L; // TODO: make SCALE_FACTOR customizable // private final double SCALE_FACTOR = 0.003; private final double SCALE_FACTOR = 0.1; private ProteinDomainDTO proteinDomainDTO; private String baseUrl; public ProteinDomainPanel(ProteinDomainDTO proteinDomainDTO, String baseUrl) { this.proteinDomainDTO = proteinDomainDTO; this.baseUrl = baseUrl; } @Override public String toHtml() { StrBuilder result = new StrBuilder(); List<ExonDTO> exonDTOs = this.proteinDomainDTO.getExonDTOList(); result.appendln("<div style=\"overflow: hidden; margin-right: 10px; padding-top: 10px; padding-bottom: 10px;\">"); result.appendln("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">"); result.appendln("<tr>"); result.appendln("<td align=\"center\" valign=\"bottom\" colspan=\"" + exonDTOs.size() + "\">" + this.proteinDomainDTO.getDomainName() + "</td>"); result.appendln("</tr>"); result.appendln("<tr>"); for (ExonDTO exonDTO : exonDTOs) { int width = new Double(exonDTO.getLength() * this.SCALE_FACTOR).intValue(); result.appendln("<td>"); result.appendln("<div class=\"pd" + this.proteinDomainDTO.getDomainId() + "\" style=\"display: block; width: " + width + "px; height: 26px;\">"); String url = this.baseUrl; url = StringUtils.replace(url, "domain_id=", "domain_id=" + proteinDomainDTO.getDomainId()); url = StringUtils.replace(url, "#exon", "#exon" + exonDTO.getId()); result.appendln("<a class=\"clickable_block\" href=\"" + url + "\" alt=\"" + exonDTO.getName() + "\" title=\"" + exonDTO.getName() + "\"></a>"); result.appendln("</div>"); result.appendln("</td>"); } result.appendln("</tr>"); result.appendln("</table>"); result.appendln("</div>"); return result.toString(); } }