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    import org.hackystat.sensorbase.client.SensorBaseClient.InvitationReply;
013    
014    /**
015     * Panel that will be rendered within the popup project rename window.
016     * 
017     * @author Randy Cox
018     */
019    public class ProjReplyPanel extends Panel {
020    
021      /** Support serialization. */
022      private static final long serialVersionUID = 1L;
023    
024      /**
025       * Constructor for this class.
026       * 
027       * @param id the wicket id.
028       */
029      public ProjReplyPanel(String id) {
030        super(id);
031    
032        final ProjectsSession session = ProjectBrowserSession.get().getProjectsSession();
033        final ProjectsModel model = session.getProjectsModel();
034    
035        Form projectForm = new Form("projReplyForm");
036    
037        TextField projName = new TextField("projectName", new PropertyModel(model, "projectName"));
038        projName.setEnabled(false);
039        projectForm.add(projName);
040    
041        Button acceptButton = new Button("acceptButton") {
042          /** For serialization. */
043          private static final long serialVersionUID = 1L;
044    
045          /** Accept invitation. */
046          @Override
047          public void onSubmit() {
048            SensorBaseClient client = ProjectBrowserSession.get().getSensorBaseClient();
049            try {
050              client.reply(model.getProjectOwner(), model.getProjectName(), InvitationReply.ACCEPT);
051              session.getProjReplyPanel().setVisible(false);
052              session.getProjListPanel().setVisible(true);
053            }
054            catch (SensorBaseClientException e) {
055              model.setFeedback(e.getMessage());
056            }
057          }
058        };
059        projectForm.add(acceptButton);
060    
061        Button declineButton = new Button("declineButton") {
062          /** For serialization. */
063          private static final long serialVersionUID = 1L;
064    
065          /** Decline invitation. */
066          @Override
067          public void onSubmit() {
068            SensorBaseClient client = ProjectBrowserSession.get().getSensorBaseClient();
069            try {
070              client.reply(model.getProjectOwner(), model.getProjectName(), InvitationReply.DECLINE);
071              session.getProjReplyPanel().setVisible(false);
072              session.getProjListPanel().setVisible(true);
073            }
074            catch (SensorBaseClientException e) {
075              model.setFeedback(e.getMessage());
076            }
077          }
078        };
079        projectForm.add(declineButton);
080    
081        Button cancelButton = new Button("cancelButton") {
082          /** For serialization. */
083          private static final long serialVersionUID = 1L;
084    
085          /** Cancel. */
086          @Override
087          public void onSubmit() {
088            ProjectsSession session = ProjectBrowserSession.get().getProjectsSession();
089            session.getProjReplyPanel().setVisible(false);
090            session.getProjListPanel().setVisible(true);
091          }
092        };
093        projectForm.add(cancelButton);
094    
095        Label feedbackLabel = new Label("replyFeedback", new PropertyModel(model, "feedback"));
096        session.setFeedbackLabel(feedbackLabel);
097        projectForm.add(feedbackLabel);
098    
099        add(projectForm);
100      }
101    }