001    package org.hackystat.projectbrowser.page.projects;
002    
003    import org.apache.wicket.markup.html.basic.Label;
004    import org.apache.wicket.markup.html.form.Button;
005    import org.apache.wicket.markup.html.form.Form;
006    import org.apache.wicket.markup.html.form.TextField;
007    import org.apache.wicket.markup.html.panel.Panel;
008    import org.apache.wicket.model.PropertyModel;
009    import org.hackystat.projectbrowser.ProjectBrowserSession;
010    import org.hackystat.sensorbase.client.SensorBaseClient;
011    import org.hackystat.sensorbase.client.SensorBaseClientException;
012    
013    /**
014     * Panel that provides delete confirmation.
015     * 
016     * @author Randy Cox
017     */
018    public class ProjDeletePanel extends Panel {
019    
020      /** Support serialization. */
021      private static final long serialVersionUID = 1L;
022    
023      /**
024       * Constructor for this class.
025       * 
026       * @param id the wicket id.
027       */
028      public ProjDeletePanel(String id) {
029        super(id);
030    
031        final ProjectsSession session = ProjectBrowserSession.get().getProjectsSession();
032        final ProjectsModel model = session.getProjectsModel();
033    
034        Form projectForm = new Form("projDeleteForm") {
035          /** Support serialization. */
036          private static final long serialVersionUID = 1L;
037        };
038    
039        TextField projName = new TextField("projectName", new PropertyModel(model, "projectName"));
040        projName.setEnabled(false);
041        projectForm.add(projName);
042    
043        Button deleteButton = new Button("deleteButton") {
044          /** Support serialization. */
045          private static final long serialVersionUID = 1L;
046    
047          /** Deletes project. */
048          @Override
049          public void onSubmit() {
050            String email = ProjectBrowserSession.get().getEmail();
051            SensorBaseClient client = ProjectBrowserSession.get().getSensorBaseClient();
052            try {
053              client.deleteProject(email, model.getProjectName());
054              session.getProjDeletePanel().setVisible(false);
055              session.getProjListPanel().setVisible(true);
056            }
057            catch (SensorBaseClientException e) {
058              model.setFeedback(e.getMessage());
059            }
060          }
061        };
062        projectForm.add(deleteButton);
063    
064        Button cancelButton = new Button("cancelButton") {
065          /** For serialization. */
066          private static final long serialVersionUID = 1L;
067    
068          /** Cancel delete and return to list page. */
069          @Override
070          public void onSubmit() {
071            ProjectsSession session = ProjectBrowserSession.get().getProjectsSession();
072            session.getProjDeletePanel().setVisible(false);
073            session.getProjListPanel().setVisible(true);
074          }
075        };
076        projectForm.add(cancelButton);
077    
078        Label feedbackLabel = new Label("deleteFeedback", new PropertyModel(model, "feedback"));
079        session.setFeedbackLabel(feedbackLabel);
080        projectForm.add(feedbackLabel);
081        add(projectForm);
082      }
083    
084    }