package org.akaza.openclinica.control.submit; import org.akaza.openclinica.bean.managestudy.StudyEventDefinitionBean; import org.akaza.openclinica.control.DefaultToolbar; import org.jmesa.core.CoreContext; import org.jmesa.view.html.HtmlBuilder; import org.jmesa.view.html.toolbar.AbstractItem; import org.jmesa.view.html.toolbar.AbstractItemRenderer; import org.jmesa.view.html.toolbar.ToolbarItem; import org.jmesa.view.html.toolbar.ToolbarItemRenderer; import org.jmesa.view.html.toolbar.ToolbarItemType; import java.util.ArrayList; import java.util.ResourceBundle; public class ListDiscNotesForCRFTableToolbar extends DefaultToolbar { private final ArrayList<StudyEventDefinitionBean> studyEventDefinitions; private final StudyEventDefinitionBean selectedStudyEventDefinition; private String module; private int resolutionStatus; private int discNoteType; private boolean studyHasDiscNotes; private ResourceBundle resword; public ListDiscNotesForCRFTableToolbar(ArrayList<StudyEventDefinitionBean> studyEventDefinitions, StudyEventDefinitionBean selectedStudyEventDefinition) { super(); this.studyEventDefinitions = studyEventDefinitions; this.selectedStudyEventDefinition = selectedStudyEventDefinition; } @Override protected void addToolbarItems() { addToolbarItem(ToolbarItemType.SEPARATOR); addToolbarItem(createCustomItem(new StudyEventDefinitionDropDownItem())); if (this.studyHasDiscNotes) { this.addToolbarItem(this.createCustomItem(new DownloadLinkItem())); } } private ToolbarItem createCustomItem(AbstractItem item) { ToolbarItemRenderer renderer = new CustomItemRenderer(item, getCoreContext()); renderer.setOnInvokeAction("onInvokeAction"); item.setToolbarItemRenderer(renderer); return item; } private class DownloadLinkItem extends AbstractItem { @Override public String disabled() { return null; } @Override public String enabled() { HtmlBuilder html = new HtmlBuilder(); html.a().href( "javascript:openDocWindow('ChooseDownloadFormat?resolutionStatus=" + resolutionStatus + "&discNoteType=" + discNoteType + "&module=" + module + "')"); html.quote(); html.append(getAction()); html.quote().close(); html.img().name("bt_View1").src("images/bt_Download.gif").border("0").alt(resword.getString("download_all_discrepancy_notes")).title( resword.getString("download_all_discrepancy_notes")).append("class=\"downloadAllDNotes\" width=\"24 \" height=\"15\"").end().aEnd(); return html.toString(); } } private class StudyEventDefinitionDropDownItem extends AbstractItem { @Override public String disabled() { return null; } @Override public String enabled() { String js = "var selectedValue = document.getElementById('sedDropDown').options[document.getElementById('sedDropDown').selectedIndex].value; " + " if (selectedValue != null && selectedValue != 0 ) { " + "window.location='ListDiscNotesForCRFServlet?module=submit&defId='+selectedValue;}" + " if (selectedValue != null && selectedValue == 0 ) { " + "window.location='ListDiscNotesSubjectServlet?module=submit' } "; HtmlBuilder html = new HtmlBuilder(); html.append(resword.getString("events")+": "); html.select().id("sedDropDown").onchange(js).close(); html.option().value("0"); html.close().append(resword.getString("all_events")).optionEnd(); for (StudyEventDefinitionBean studyEventDefinition : studyEventDefinitions) { html.option().value(String.valueOf(studyEventDefinition.getId())); if (studyEventDefinition.getId() == selectedStudyEventDefinition.getId()) { html.selected(); } html.close().append(studyEventDefinition.getName()).optionEnd(); } html.selectEnd(); return html.toString(); } } private static class CustomItemRenderer extends AbstractItemRenderer { public CustomItemRenderer(ToolbarItem item, CoreContext coreContext) { setToolbarItem(item); setCoreContext(coreContext); } public String render() { ToolbarItem item = getToolbarItem(); return item.enabled(); } } public String getModule() { return module; } public void setModule(String module) { this.module = module; } public int getResolutionStatus() { return resolutionStatus; } public void setResolutionStatus(int resolutionStatus) { this.resolutionStatus = resolutionStatus; } public int getDiscNoteType() { return discNoteType; } public void setDiscNoteType(int discNoteType) { this.discNoteType = discNoteType; } public boolean isStudyHasDiscNotes() { return studyHasDiscNotes; } public void setStudyHasDiscNotes(boolean studyHasDiscNotes) { this.studyHasDiscNotes = studyHasDiscNotes; } public ResourceBundle getResword() { return resword; } public void setResword(ResourceBundle resword) { this.resword = resword; } }