package org.akaza.openclinica.control.submit;
import org.akaza.openclinica.control.DefaultToolbar;
import org.akaza.openclinica.i18n.util.ResourceBundleProvider;
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.List;
import java.util.ResourceBundle;
public class ViewRuleAssignmentTableToolbar extends DefaultToolbar {
List<Integer> ruleSetRuleIds;
private final ResourceBundle reswords = ResourceBundleProvider.getWordsBundle();
private final boolean isDesignerRequest;
public ViewRuleAssignmentTableToolbar(List<Integer> ruleSetRuleIds, boolean showMoreLink, boolean isDesignerRequest) {
super();
this.ruleSetRuleIds = ruleSetRuleIds;
this.showMoreLink = showMoreLink;
this.isDesignerRequest = isDesignerRequest;
}
@Override
protected void addToolbarItems() {
// addToolbarItem(createCustomItem(new XmlExportItem(ruleSetRuleIds)));
addToolbarItem(ToolbarItemType.SEPARATOR);
addToolbarItem(createCustomItem(new ShowMoreItem()));
if (!isDesignerRequest) {
addToolbarItem(ToolbarItemType.SEPARATOR);
addToolbarItem(createCustomItem(new TestRuleItem()));
}
addToolbarItem(createCustomItem(new NewHiddenItem()));
}
private ToolbarItem createCustomItem(AbstractItem item) {
ToolbarItemRenderer renderer = new CustomItemRenderer(item, getCoreContext());
renderer.setOnInvokeAction("onInvokeAction");
item.setToolbarItemRenderer(renderer);
return item;
}
private class TestRuleItem extends AbstractItem {
@Override
public String disabled() {
return null;
}
@Override
public String enabled() {
HtmlBuilder html = new HtmlBuilder();
html.a().href("TestRule");
html.quote();
html.append(getAction());
html.quote().close();
html.nbsp().append(reswords.getString("view_rules_test")).nbsp().aEnd();
return html.toString();
}
}
private class XmlExportItem extends AbstractItem {
String theRuleSetRuleIds = "";
public XmlExportItem(List<Integer> ruleSetRuleIds) {
if (ruleSetRuleIds.size() > 0) {
theRuleSetRuleIds += String.valueOf(ruleSetRuleIds.get(0));
for (int i = 1; i < ruleSetRuleIds.size(); i++) {
theRuleSetRuleIds += "," + String.valueOf(ruleSetRuleIds.get(i));
}
}
}
@Override
public String disabled() {
// TODO Auto-generated method stub
return null;
}
@Override
public String enabled() {
HtmlBuilder actionLink = new HtmlBuilder();
actionLink.a().href("DownloadRuleSetXml?ruleSetRuleIds=" + theRuleSetRuleIds);
actionLink.append("onMouseDown=\"javascript:setImage('bt_Download','images/bt_Download_d.gif');\"");
actionLink.append("onMouseUp=\"javascript:setImage('bt_Download','images/bt_Download.gif');\"").close();
actionLink.img().name("Download").src("images/bt_Download.gif").border("0").alt("Download").title("Download").end().aEnd();
actionLink.append(" ");
return actionLink.toString();
}
}
private class ShowMoreItem extends AbstractItem {
@Override
public String disabled() {
// TODO Auto-generated method stub
return null;
}
@Override
public String enabled() {
HtmlBuilder html = new HtmlBuilder();
if (showMoreLink) {
html.a().id("showMore").href("javascript:hideCols('ruleAssignments',[" + getIndexes() + "],true);").close();
html.div().close().nbsp().append(reswords.getString("show_more")).nbsp().divEnd().aEnd();
html.a().id("hide").style("display: none;").href("javascript:hideCols('ruleAssignments',[" + getIndexes() + "],false);").close();
html.div().close().nbsp().append(reswords.getString("hide")).nbsp().divEnd().aEnd();
html.script().type("text/javascript").close()
.append("$j = jQuery.noConflict(); $j(document).ready(function(){ " + "hideCols('ruleAssignments',[" + getIndexes() + "],false);" +
" if($j.browser.msie){" +
" $j('tr.header td div:last').each(function(){" +
" $j(this).click();" +
"var ah = $j(this).height();" +
"$j('tr.header td div').each(function(){"+
"$j(this).css('height',ah);"+
"});" + "});"+ "}"+ "});").scriptEnd();
} else {
html.a().id("hide").href("javascript:hideCols('ruleAssignments',[" + getIndexes() + "],false);").close();
html.div().close().nbsp().append(reswords.getString("hide")).nbsp().divEnd().aEnd();
html.a().id("showMore").style("display: none;").href("javascript:hideCols('ruleAssignments',[" + getIndexes() + "],true);").close();
html.div().close().nbsp().append(reswords.getString("show_more")).nbsp().divEnd().aEnd();
}
return html.toString();
}
/**
* @return Dynamically generate the indexes of studyGroupClasses. It starts from 4 because there are 4 columns before
* study group columns that will require to be hidden.
* @see ListStudySubjectTableFactory#configureColumns(org.jmesa.facade.TableFacade, java.util.Locale)
*/
String getIndexes() {
String result = "0,1,2,3,5,6,10,11,13,15";
return result;
}
}
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();
}
}
}