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 used confirm leaving a project.
015     * 
016     * @author Randy Cox
017     */
018    public class ProjLeavePanel 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 ProjLeavePanel(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("projLeaveForm");
035    
036        TextField projName = new TextField("projectName", new PropertyModel(model, "projectName"));
037        projName.setEnabled(false);
038        projectForm.add(projName);
039    
040        Button leaveButton = new Button("leaveButton") {
041          /** For serialization. */
042          private static final long serialVersionUID = 1L;
043    
044          /** Leave project. */
045          @Override
046          public void onSubmit() {
047            SensorBaseClient client = ProjectBrowserSession.get().getSensorBaseClient();
048            try {
049              client.reply(model.getProjectOwner(), model.getProjectName(),
050                  SensorBaseClient.InvitationReply.DECLINE);
051              session.getProjLeavePanel().setVisible(false);
052              session.getProjListPanel().setVisible(true);
053            }
054            catch (SensorBaseClientException e) {
055              model.setFeedback(e.getMessage());
056            }
057          }
058        };
059        projectForm.add(leaveButton);
060    
061        Button cancelButton = new Button("cancelButton") {
062          /** For serialization. */
063          private static final long serialVersionUID = 1L;
064    
065          /** Cancel. */
066          @Override
067          public void onSubmit() {
068            ProjectsSession session = ProjectBrowserSession.get().getProjectsSession();
069            session.getProjDeletePanel().setVisible(false);
070            session.getProjListPanel().setVisible(true);
071          }
072        };
073        projectForm.add(cancelButton);
074    
075        Label feedbackLabel = new Label("leaveFeedback", new PropertyModel(model, "feedback"));
076        session.setFeedbackLabel(feedbackLabel);
077        projectForm.add(feedbackLabel);
078    
079        add(projectForm);
080      }
081    }