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 }