package lt.inventi.wicket.component.repeater;
import org.apache.wicket.Component;
import org.apache.wicket.behavior.Behavior;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
public class ClickableRow extends Behavior {
private final String exceptionClass;
public ClickableRow(String exceptionClass) {
this.exceptionClass = exceptionClass;
}
public ClickableRow() {
this.exceptionClass = "not-clickable";
}
@Override
public void bind(Component component) {
component.setOutputMarkupId(true);
}
@Override
public void renderHead(Component component, IHeaderResponse response) {
StringBuilder script = new StringBuilder();
script.append("$(document).ready(function() {\n");
script.append(" var trs = $('tr[id^=" + component.getMarkupId() + "] td[class!=\"" + exceptionClass + "\"]');\n");
script.append(" trs.parent().addClass('clickable');\n");
script.append(" trs.click(function(event) {\n");
script.append(" var viewLink = $(this).parent().find('a')[0];\n");
script.append(" var targetParent = $(event.target).parent()[0];\n");
script.append(" if (viewLink != event.target && viewLink != targetParent) {\n");
script.append(" if ($(viewLink).attr('href') != '#')\n");
script.append(" document.location = $(viewLink).attr('href');\n");
script.append(" else\n");
script.append(" $(viewLink).click();\n");
script.append(" }\n");
script.append(" })\n");
script.append("});");
response.render(OnDomReadyHeaderItem.forScript(script.toString()));
}
}