package org.orienteer.core.behavior; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.util.string.Strings; import org.orienteer.core.component.meta.AbstractMetaPanel; import org.orienteer.core.component.meta.IMetaContext; /** * Automatically refresh upper meta context component which affected by changing a component to which this behaviour attached to */ public class RefreshMetaContextOnChangeBehaviour extends AjaxFormSubmitBehavior { public RefreshMetaContextOnChangeBehaviour(Form<?> form) { super(form, "change"); } public RefreshMetaContextOnChangeBehaviour() { super("change"); } @Override protected void onBind() { IMetaContext<?> context = AbstractMetaPanel.getMetaContext(getComponent()); if(context!=null && context instanceof Component) { ((Component)context).setOutputMarkupId(true); } } @Override protected void onSubmit(AjaxRequestTarget target) { IMetaContext<?> context = AbstractMetaPanel.getMetaContext(getComponent()); if(context!=null) { target.add(context.getContextComponent()); // String lastFocusedElementId = target.getLastFocusedElementId(); // if(!Strings.isEmpty(lastFocusedElementId)) target.appendJavaScript("Wicket.Focus.setFocusOnId(" + lastFocusedElementId + ");"); } } @Override public boolean getDefaultProcessing() { return false; } }