package com.ubx1.pdpscanner.client.views.project;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.ubx1.pdpscanner.client.PdpScanner;
import com.ubx1.pdpscanner.client.views.AbstractView;
import com.ubx1.pdpscanner.shared.Project;
/**
* The tab for managing the project
*
* @author wbraik
*
*/
public class ProjectManagementTab extends AbstractView {
/**
* The associated Project object
*/
protected Project project = null;
// View components
private final HorizontalPanel panel = new HorizontalPanel();
private final Button deleteProjectButton = new Button("Supprimer le projet");
public ProjectManagementTab(Project project) {
super(new VerticalPanel());
this.project = project;
this.panel.setSpacing(5);
}
@Override
public void buildView() {
this.deleteProjectButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
// Ask confirmation before deleting the project
if (Window.confirm(PdpScanner.DELETE_PROJECT_CONFIRM)) {
ProjectManagementTab.this.deleteProject();
}
}
});
this.panel.add(this.deleteProjectButton);
this.viewPanel.add(this.panel);
}
/**
* Delete the project
*/
private void deleteProject() {
Project p = this.project;
// Prepare callback
AsyncCallback<String> callback = new AsyncCallback<String>() {
@Override
public void onFailure(Throwable caught) {
System.err.println(caught.getClass().getName() + " :: "
+ caught.getMessage());
caught.printStackTrace();
Window.alert(PdpScanner.DELETE_PROJECT_ERROR);
}
@Override
public void onSuccess(String result) {
Window.alert(PdpScanner.DELETE_PROJECT_SUCCESS);
History.newItem("Home");
}
};
// Tell the project to delete the project from the database
PdpScanner.projectService.deleteProject(p.getId(), callback);
}
}