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 will be rendered within the popup project rename window.
015     * 
016     * @author Randy Cox
017     */
018    public class ProjRenamePanel 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 ProjRenamePanel(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("projRenameForm");
035    
036        TextField projName = new TextField("projectName", new PropertyModel(model, "projectName"));
037        projName.setEnabled(false);
038        projectForm.add(projName);
039    
040        TextField projRename = new TextField("projectRename", new PropertyModel(model, 
041          "projectRename"));
042        projectForm.add(projRename);
043    
044        Button renameButton = new Button("renameButton") {
045          /** For serialization. */
046          private static final long serialVersionUID = 1L;
047    
048          /** Bring up rename panel for project. */
049          @Override
050          public void onSubmit() {
051            String email = ProjectBrowserSession.get().getEmail();
052            SensorBaseClient client = ProjectBrowserSession.get().getSensorBaseClient();
053            try {
054              client.renameProject(email, model.getProjectName(), model.getProjectRename());
055              session.getProjRenamePanel().setVisible(false);
056              session.getProjListPanel().setVisible(true);
057            }
058            catch (SensorBaseClientException e) {
059              model.setFeedback(e.getMessage());
060            }
061          }
062        };
063        projectForm.add(renameButton);
064    
065        Button cancelButton = new Button("cancelButton") {
066          /** For serialization. */
067          private static final long serialVersionUID = 1L;
068    
069          /** Cancel. */
070          @Override
071          public void onSubmit() {
072            ProjectsSession session = ProjectBrowserSession.get().getProjectsSession();
073            session.getProjRenamePanel().setVisible(false);
074            session.getProjListPanel().setVisible(true);
075          }
076        };
077        projectForm.add(cancelButton);
078    
079        Label feedbackLabel = new Label("renameFeedback", new PropertyModel(model, "feedback"));
080        session.setFeedbackLabel(feedbackLabel);
081        projectForm.add(feedbackLabel);
082    
083        add(projectForm);
084      }
085    }