package de.flower.common.ui.ajax.markup.html;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.extensions.ajax.markup.html.AjaxEditableMultiLineLabel;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
/**
* Overrides some default behavior.
* @author flowerrrr
*/
public class AjaxEditableMultiLineLabelExtended<T> extends AjaxEditableMultiLineLabel<T> {
public AjaxEditableMultiLineLabelExtended(final String id, final IModel<T> iModel) {
super(id, iModel);
add(AttributeModifier.append("class", "AjaxEditableMultiLineLabel"));
getLabel().add(AttributeModifier.append("class", new AbstractReadOnlyModel<String>() {
@Override
public String getObject() {
return getCssClass(AjaxEditableMultiLineLabelExtended.this.isEnabled());
}
}));
}
@Override
public void onEdit(final AjaxRequestTarget target) {
super.onEdit(target);
// by default the content is selected. leads to problems when accidently hitting a key and thus clearing out
// the contents. not many will know that hitting ESC can restore the original value.
String deselectAndPutCursorAtEnd = "(function() { var temp;\n" +
" var id = '#" + getEditor().getMarkupId() + "';\n" +
" temp=$(id).val();\n" +
" $(id).val('');\n" +
" $(id).val(temp);\n" +
" $(id).focus();\n" +
"})();";
target.appendJavaScript(deselectAndPutCursorAtEnd);
}
protected String getCssClass(boolean enabled) {
return enabled ? "enabled" : "disabled";
}
}