package ro.nextreports.server.web.action.analysis; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow; import org.apache.wicket.injection.Injector; import org.apache.wicket.model.Model; import org.apache.wicket.model.StringResourceModel; import org.apache.wicket.spring.injection.annot.SpringBean; import ro.nextreports.server.StorageConstants; import ro.nextreports.server.domain.Analysis; import ro.nextreports.server.service.AnalysisService; import ro.nextreports.server.service.StorageService; import ro.nextreports.server.web.NextServerSession; import ro.nextreports.server.web.analysis.AnalysisBrowserPanel; import ro.nextreports.server.web.analysis.ModifyAnalysisPanel; import ro.nextreports.server.web.core.BasePage; import ro.nextreports.server.web.core.action.ActionAjaxLink; import ro.nextreports.server.web.core.action.ActionContext; public class ModifyActionLink extends ActionAjaxLink { private AnalysisActionContext actionContext; @SpringBean private AnalysisService analysisService; @SpringBean private StorageService storageService; public void setAnaliysisService(AnalysisService analysisService) { this.analysisService = analysisService; } public void setStorageService(StorageService storageService) { this.storageService = storageService; } public ModifyActionLink(AnalysisActionContext actionContext) { super(actionContext); this.actionContext = actionContext; Injector.get().inject(this); } public void executeAction(AjaxRequestTarget target) { final ModalWindow dialog = findParent(BasePage.class).getDialog(); final AnalysisBrowserPanel dp = findParent(AnalysisBrowserPanel.class); dialog.setTitle(new StringResourceModel("ActionContributor.Rename.name", null).getString()); dialog.setInitialWidth(350); dialog.setUseInitialHeight(false); final Analysis analysis = (Analysis)actionContext.getEntity(); final ModifyAnalysisPanel modifyAnalysisPanel = new ModifyAnalysisPanel(dialog.getContentId(), new Model<Analysis>(analysis)) { private static final long serialVersionUID = 1L; @Override public void onModify(AjaxRequestTarget target) { ModalWindow.closeCurrent(target); analysis.setName(getTitle()); storageService.modifyEntity(analysis); target.add(dp); } @Override public boolean onVerify(AjaxRequestTarget target) { if (!analysis.getName().equals(getTitle())) { if (storageService.entityExists( StorageConstants.ANALYSIS_ROOT + "/" + NextServerSession.get().getUsername() + "/" + getTitle())) { error(new StringResourceModel("AnalysisPopupMenuModel.modifyExists", null).getString()); return false; } } return true; } @Override public void onCancel(AjaxRequestTarget target) { ModalWindow.closeCurrent(target); } }; dialog.setContent(modifyAnalysisPanel); dialog.show(target); } @Override public boolean isVisible() { if (actionContext.isAnalysisLink()) { return false; } return true; } }