package de.elatexam.editor.components.panels; import net.databinder.components.NullPlug; import net.databinder.hib.Databinder; import net.databinder.models.hib.HibernateObjectModel; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.AjaxLink; import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.IModel; import org.hibernate.Session; import com.visural.wicket.component.confirmer.ConfirmerLink; import de.elatexam.editor.TaskEditorSession; import de.elatexam.editor.components.GermanConfirmerLink; import de.elatexam.editor.components.panels.tasks.preview.PreviewSubtaskDefPanel; import de.elatexam.editor.pages.EditSubtaskPage; import de.elatexam.model.SubTaskDef; /** * Small panel with two links: edit and delete * * @author sdienst */ public class TaskActionsPanel<T extends SubTaskDef> extends Panel { /** * @param id * @param model */ public TaskActionsPanel(final String id, final IModel<T> model) { super(id); add(new Link<T>("edit", model) { @Override public void onClick() { final T modelObject = getModelObject(); setResponsePage(new EditSubtaskPage(modelObject.getClass(), (HibernateObjectModel) getModel())); } }); ConfirmerLink removeLink = new GermanConfirmerLink("remove") { @Override public void onClick() { final Object modelObject = getModelObject(); // remove subtaskdef from current user object TaskEditorSession.get().getUser().getSubtaskdefs().remove(modelObject); // TODO remove from taskblock iff this subtaskdef is used in a complextaskdef final Session session = Databinder.getHibernateSession(); session.delete(modelObject); session.getTransaction().commit(); } }.setMessageContentHTML("Sind Sie sicher, dass das selektierte Element gelöscht werden soll?"); removeLink.setModel(model); add(removeLink); final ModalWindow previewWindow = new ModalWindow("previewModal"); previewWindow.setTitle("Aufgabenvorschau"); previewWindow.setResizable(true); previewWindow.setInitialWidth(650); previewWindow.setInitialHeight(450); previewWindow.setContent(new NullPlug(previewWindow.getContentId())); add(previewWindow); AjaxLink<T> previewLink = new AjaxLink<T>("preview") { @Override public void onClick(AjaxRequestTarget target) { IModel<T> m = getModel(); previewWindow.setContent(new PreviewSubtaskDefPanel<T>(previewWindow.getContentId(), m)); previewWindow.show(target); } }; previewLink.setModel(model); add(previewLink); } }