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 }