package de.elatexam.editor.components.listeditor;
import java.util.Iterator;
import java.util.List;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import org.apache.wicket.markup.html.form.FormComponent;
import org.apache.wicket.markup.html.form.ImageButton;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.request.resource.PackageResourceReference;
import org.apache.wicket.request.resource.ResourceReference;
public abstract class EditorButton extends ImageButton {
private transient ListItem<?> parent;
public EditorButton(final String id) {
this(id, new PackageResourceReference(EditorButton.class, "images/delete.png"));
}
public EditorButton(final String id, final ResourceReference imgRef) {
super(id, imgRef);
setDefaultFormProcessing(false);
add(new AttributeModifier("class", true, new AbstractReadOnlyModel() {
@Override
public Object getObject() {
return isEnabled() ? null : "disabled-image";
}
}));
}
protected final ListEditor<?> getEditor() {
return (ListEditor<?>) getItem().getParent();
}
protected final ListItem<?> getItem() {
if (parent == null) {
parent = findParent(ListItem.class);
}
return parent;
}
protected final List<?> getList() {
return getEditor().items;
}
@Override
protected void onDetach() {
parent = null;
super.onDetach();
}
/**
* Reset raw input of {@link FormComponent} children of {@link ListItem}s.
* @param idx
*/
protected void resetInputFields(int... idx) {
for (int i : idx) {
ListItem li = (ListItem) getEditor().get(i);
for (Iterator<Component> it = (Iterator<Component>) li.iterator(); it.hasNext();) {
Component c = it.next();
if (c instanceof FormComponent)
((FormComponent) c).modelChanged();
}
}
}
}