package ro.nextreports.server.web.action.dashboard;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.injection.Injector;
import org.apache.wicket.model.StringResourceModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import ro.nextreports.server.exception.NotFoundException;
import ro.nextreports.server.service.DashboardService;
import ro.nextreports.server.web.NextServerSession;
import ro.nextreports.server.web.common.menu.MenuPanel;
import ro.nextreports.server.web.common.misc.AjaxConfirmLink;
import ro.nextreports.server.web.core.section.SectionContext;
import ro.nextreports.server.web.core.section.SectionContextConstants;
import ro.nextreports.server.web.dashboard.DashboardBrowserPanel;
import ro.nextreports.server.web.dashboard.DashboardSection;
public class DeleteActionLink extends AjaxConfirmLink {
private DashboardActionContext actionContext;
@SpringBean
private DashboardService dashboardService;
public void setDashboardService(DashboardService dashboardService) {
this.dashboardService = dashboardService;
}
public DeleteActionLink(DashboardActionContext actionContext) {
super(MenuPanel.LINK_ID, new StringResourceModel("DashboardPopupMenuModel.deleteAsk", null,
new Object[] { actionContext.getEntity().getName() }).getString());
this.actionContext = actionContext;
Injector.get().inject(this);
}
public void executeAction(AjaxRequestTarget target) {
String id = actionContext.getEntity().getId();
try {
dashboardService.removeDashboard(id);
} catch (NotFoundException e) {
// TODO
e.printStackTrace();
}
if (id.equals(getSelectedDashboardId())) {
SectionContext sectionContext = NextServerSession.get().getSectionContext(DashboardSection.ID);
String _id = dashboardService.getMyDashboards().get(0).getId();
sectionContext.getData().put(SectionContextConstants.SELECTED_DASHBOARD_ID, _id);
}
target.add(findParent(DashboardBrowserPanel.class));
}
@Override
public boolean isVisible() {
if (actionContext.isDashboardLink() || DashboardService.MY_DASHBOARD_NAME.equals(actionContext.getEntity().getName())) {
return false;
}
return true;
}
@Override
public void onClick(AjaxRequestTarget target) {
executeAction(target);
}
private String getSelectedDashboardId() {
SectionContext sectionContext = NextServerSession.get().getSectionContext(DashboardSection.ID);
return sectionContext.getData().getString(SectionContextConstants.SELECTED_DASHBOARD_ID);
}
}