Package fr.openwide.maven.artifact.notifier.web.application.artifact.form

Source Code of fr.openwide.maven.artifact.notifier.web.application.artifact.form.ArtifactVersionFormPopupPanel

package fr.openwide.maven.artifact.notifier.web.application.artifact.form;

import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.link.AbstractLink;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.model.StringResourceModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import fr.openwide.core.wicket.more.markup.html.feedback.FeedbackUtils;
import fr.openwide.core.wicket.more.markup.html.template.js.jquery.plugins.bootstrap.modal.component.AbstractAjaxModalPopupPanel;
import fr.openwide.core.wicket.more.markup.html.template.js.jquery.plugins.bootstrap.modal.component.DelegatedMarkupPanel;
import fr.openwide.core.wicket.more.model.BindingModel;
import fr.openwide.core.wicket.more.model.GenericEntityModel;
import fr.openwide.maven.artifact.notifier.core.business.artifact.model.ArtifactVersion;
import fr.openwide.maven.artifact.notifier.core.business.artifact.service.IArtifactVersionService;
import fr.openwide.maven.artifact.notifier.core.util.binding.Binding;
import fr.openwide.maven.artifact.notifier.web.application.common.behavior.AuthenticatedOnlyBehavior;
import fr.openwide.maven.artifact.notifier.web.application.project.form.VersionAdditionalInformationFormComponentPanel;

public class ArtifactVersionFormPopupPanel extends AbstractAjaxModalPopupPanel<ArtifactVersion> {

  private static final long serialVersionUID = 4914283916847151778L;

  private static final Logger LOGGER = LoggerFactory.getLogger(ArtifactVersionFormPopupPanel.class);

  @SpringBean
  private IArtifactVersionService artifactVersionService;
 
  private Form<ArtifactVersion> form;

  public ArtifactVersionFormPopupPanel(String id) {
    this(id, new GenericEntityModel<Long, ArtifactVersion>(null));
  }
 
  public ArtifactVersionFormPopupPanel(String id, IModel<ArtifactVersion> artifactVersionModel) {
    super(id, artifactVersionModel);
   
    add(new AuthenticatedOnlyBehavior());
  }

  @Override
  protected Component createHeader(String wicketId) {
    return new Label(wicketId, new StringResourceModel("artifact.version.edit", getModel()));
  }

  @Override
  protected Component createBody(String wicketId) {
    DelegatedMarkupPanel body = new DelegatedMarkupPanel(wicketId, ArtifactVersionFormPopupPanel.class);
   
    form = new Form<ArtifactVersion>("form", getModel());
    form.add(new VersionAdditionalInformationFormComponentPanel("additionalInformationPanel",
        BindingModel.of(getModel(), Binding.artifactVersion().additionalInformation())));
    body.add(form);
   
    return body;
  }

  @Override
  protected Component createFooter(String wicketId) {
    DelegatedMarkupPanel footer = new DelegatedMarkupPanel(wicketId, ArtifactVersionFormPopupPanel.class);
   
    // Validate button
    AjaxButton validate = new AjaxButton("save", form) {
      private static final long serialVersionUID = 1L;
     
      @Override
      protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
        ArtifactVersion artifactVersion = ArtifactVersionFormPopupPanel.this.getModelObject();
       
        try {
          artifactVersionService.update(artifactVersion);
          getSession().success(getString("artifact.version.edit.success"));
          closePopup(target);
          target.add(getPage());
        } catch (Exception e) {
          LOGGER.error("Error occured while updating the artifact version", e);
          getSession().error(getString("artifact.version.edit.error"));
        }
        FeedbackUtils.refreshFeedback(target, getPage());
      }
     
      @Override
      protected void onError(AjaxRequestTarget target, Form<?> form) {
        FeedbackUtils.refreshFeedback(target, getPage());
      }
    };
    validate.add(new Label("validateLabel", new ResourceModel("common.action.save")));
    footer.add(validate);
   
    // Cancel button
    AbstractLink cancel = new AbstractLink("cancel") {
      private static final long serialVersionUID = 1L;
    };
    addCancelBehavior(cancel);
    footer.add(cancel);
   
    return footer;
  }
}
TOP

Related Classes of fr.openwide.maven.artifact.notifier.web.application.artifact.form.ArtifactVersionFormPopupPanel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.