Author: solomax
Date: Thu Apr 25 22:38:34 2013
New Revision: 1475993

URL: http://svn.apache.org/r1475993
Log:
[OPENMEETINGS-615] AdminBaseForm panel was refactored to be used in profile 
save;
        User Profile edit without save/refresh is added;
        Issue with Admin->User->refresh is fixed

Added:
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/FormSaveRefreshPanel.html
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/FormSaveRefreshPanel.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminSavePanel.html
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminSavePanel.java
Removed:
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminBaseFormPanel.html
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminBaseFormPanel.java
Modified:
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/UploadableProfileImagePanel.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminBaseForm.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UserForm.java
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/profile/ProfilePanel.html
    
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/profile/ProfilePanel.java

Added: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/FormSaveRefreshPanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/FormSaveRefreshPanel.html?rev=1475993&view=auto
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/FormSaveRefreshPanel.html
 (added)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/FormSaveRefreshPanel.html
 Thu Apr 25 22:38:34 2013
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+      http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  
+-->
+<html xmlns:wicket="http://wicket.apache.org";>
+       <wicket:panel>
+               <div class="formSaveBar">
+                       <div class="formSaveButton">
+                               <input type="submit" value="" 
wicket:id="ajax-save-button" wicket:ommessage="title:144" />
+                       </div>
+                       <div class="formRefreshButton">
+                               <input type="submit" value="" 
wicket:id="ajax-refresh-button" wicket:ommessage="title:156" />
+                       </div>
+                       <wicket:child/>
+               </div>
+               <div wicket:id="feedback" class="adminFormsFeedbackPanel">[[ 
feedback ]]</div>
+       </wicket:panel>
+</html>

Added: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/FormSaveRefreshPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/FormSaveRefreshPanel.java?rev=1475993&view=auto
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/FormSaveRefreshPanel.java
 (added)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/FormSaveRefreshPanel.java
 Thu Apr 25 22:38:34 2013
@@ -0,0 +1,72 @@
+package org.apache.openmeetings.web.components;
+
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.panel.FeedbackPanel;
+
+public abstract class FormSaveRefreshPanel<T> extends BasePanel {
+       private static final long serialVersionUID = 6133794730008996211L;
+       protected final FeedbackPanel feedback;
+       
+       public FormSaveRefreshPanel(String id, Form<T> form) {
+               super(id);
+               setOutputMarkupId(true);
+
+               feedback = new FeedbackPanel("feedback");
+               add(feedback.setOutputMarkupId(true));
+
+               // add a save button that can be used to submit the form via 
ajax
+               add(new AjaxButton("ajax-save-button", form) {
+                       private static final long serialVersionUID = 
839803820502260006L;
+
+                       @Override
+                       protected void onSubmit(AjaxRequestTarget target, 
Form<?> form) {
+                               // repaint the feedback panel so that it is 
hidden
+                               target.add(feedback);
+                               onSaveSubmit(target, form);
+                       }
+
+                       @Override
+                       protected void onError(AjaxRequestTarget target, 
Form<?> form) {
+                               // repaint the feedback panel so errors are 
shown
+                               target.add(feedback);
+                               onSaveError(target, form);
+                       }
+               });
+
+               // add a refresh button that can be used to submit the form via 
ajax
+               add(new AjaxButton("ajax-refresh-button", form) {
+                       private static final long serialVersionUID = 
839803820502260006L;
+
+                       @Override
+                       protected void onSubmit(AjaxRequestTarget target, 
Form<?> form) {
+                               // repaint the feedback panel so that it is 
hidden
+                               target.add(feedback);
+                               hideNewRecord();
+                               onRefreshSubmit(target, form);
+                       }
+
+                       @Override
+                       protected void onError(AjaxRequestTarget target, 
Form<?> form) {
+                               // repaint the feedback panel so errors are 
shown
+                               target.add(feedback);
+                               hideNewRecord();
+                               onRefreshError(target, form);
+                       }
+               });
+
+       }
+       /**
+        * Hide the new record text
+        */
+       public void hideNewRecord() {
+               // for admin only, will be implemented in admin
+       }
+       
+       protected abstract void onSaveSubmit(AjaxRequestTarget target, Form<?> 
form);
+       protected abstract void onSaveError(AjaxRequestTarget target, Form<?> 
form);
+
+       protected abstract void onRefreshSubmit(AjaxRequestTarget target, 
Form<?> form);
+       protected abstract void onRefreshError(AjaxRequestTarget target, 
Form<?> form);
+}

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/UploadableProfileImagePanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/UploadableProfileImagePanel.java?rev=1475993&r1=1475992&r2=1475993&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/UploadableProfileImagePanel.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/UploadableProfileImagePanel.java
 Thu Apr 25 22:38:34 2013
@@ -21,6 +21,8 @@ package org.apache.openmeetings.web.comp
 import static org.apache.openmeetings.utils.ImportHelper.getMaxUploadSize;
 import static org.apache.openmeetings.web.app.Application.getBean;
 
+import java.util.List;
+
 import org.apache.openmeetings.data.basic.dao.ConfigurationDao;
 import org.apache.openmeetings.documents.GenerateImage;
 import org.apache.openmeetings.utils.StoredFile;
@@ -30,6 +32,7 @@ import org.apache.wicket.extensions.ajax
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.upload.FileUpload;
 import org.apache.wicket.markup.html.form.upload.FileUploadField;
+import org.apache.wicket.model.IModel;
 import org.apache.wicket.util.lang.Bytes;
 
 public class UploadableProfileImagePanel extends ProfileImagePanel {
@@ -41,7 +44,20 @@ public class UploadableProfileImagePanel
                Form<Void> form = new Form<Void>("form");
                form.setMultiPart(true);
                
form.setMaxSize(Bytes.bytes(getMaxUploadSize(getBean(ConfigurationDao.class))));
-               form.add(fileUploadField = new FileUploadField("image"));
+               form.add(fileUploadField = new FileUploadField("image", new 
IModel<List<FileUpload>>() {
+                       private static final long serialVersionUID = 
-8514518605278263956L;
+
+                       //FIXME this need to be eliminated
+                       public void detach() {
+                       }
+                       
+                       public void setObject(List<FileUpload> object) {
+                       }
+                       
+                       public List<FileUpload> getObject() {
+                               return null;
+                       }
+               }));
                form.add(new UploadProgressBar("progress", form, 
fileUploadField));
                fileUploadField.add(new AjaxFormSubmitBehavior(form, 
"onchange") {
                        private static final long serialVersionUID = 
2160216679027859231L;

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminBaseForm.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminBaseForm.java?rev=1475993&r1=1475992&r2=1475993&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminBaseForm.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminBaseForm.java
 Thu Apr 25 22:38:34 2013
@@ -32,11 +32,12 @@ import org.apache.wicket.model.IModel;
  */
 public class AdminBaseForm<T> extends Form<T> {
        private static final long serialVersionUID = 1L;
-       private AdminBaseFormPanel<T> basePanel;
+       private AdminSavePanel<T> savePanel;
 
        public AdminBaseForm(String id, IModel<T> object) {
                super(id, object);
-               basePanel = new AdminBaseFormPanel<T>("buttons", this) {
+               
+               savePanel = new AdminSavePanel<T>("buttons", this) {
                        private static final long serialVersionUID = 
-5833647470067891270L;
 
                        @Override
@@ -80,7 +81,7 @@ public class AdminBaseForm<T> extends Fo
                        }
                        
                };
-               add(basePanel);
+               add(savePanel);
 
 
        }
@@ -89,14 +90,14 @@ public class AdminBaseForm<T> extends Fo
         * @see AdminBaseForm#hideNewRecord()
         */
        public void hideNewRecord() {
-               basePanel.hideNewRecord();
+               savePanel.hideNewRecord();
        }
        
        /**
         * @see AdminBaseForm#showNewRecord()
         */
        public void showNewRecord() {
-               basePanel.showNewRecord();
+               savePanel.showNewRecord();
        }
 
        /**

Added: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminSavePanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminSavePanel.html?rev=1475993&view=auto
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminSavePanel.html
 (added)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminSavePanel.html
 Thu Apr 25 22:38:34 2013
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+      http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  
+-->
+<html xmlns:wicket="http://wicket.apache.org";>
+       <wicket:extend>
+               <div class="formNewButton">
+                       <input type="submit" value="" 
wicket:id="ajax-new-button" wicket:ommessage="title:155" />
+               </div>
+               <div class="formCancelButton">
+                       <input type="submit" value="" 
wicket:id="ajax-cancel-button" wicket:ommessage="title:157" />
+               </div>
+               <span wicket:id="newRecord"></span>
+       </wicket:extend>
+</html>

Added: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminSavePanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminSavePanel.java?rev=1475993&view=auto
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminSavePanel.java
 (added)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/AdminSavePanel.java
 Thu Apr 25 22:38:34 2013
@@ -0,0 +1,91 @@
+package org.apache.openmeetings.web.components.admin;
+
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.components.ConfirmCallListener;
+import org.apache.openmeetings.web.components.FormSaveRefreshPanel;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.model.Model;
+
+public abstract class AdminSavePanel<T> extends FormSaveRefreshPanel<T> {
+       private static final long serialVersionUID = -8916631148087019924L;
+       private Label newRecord;
+       
+       public AdminSavePanel(String id, final Form<T> form) {
+               super(id, form);
+               
+               newRecord = new Label("newRecord", 
Model.of(WebSession.getString(344L)));
+               add(newRecord.setVisible(false).setOutputMarkupId(true));
+               
+               // add a new button that can be used to submit the form via ajax
+               add(new AjaxButton("ajax-new-button", form) {
+                       private static final long serialVersionUID = 
839803820502260006L;
+
+                       @Override
+                       protected void onSubmit(AjaxRequestTarget target, 
Form<?> form) {
+                               // repaint the feedback panel so that it is 
hidden
+                               target.add(feedback);
+                               newRecord.setVisible(true);
+                               target.add(newRecord);
+                               onNewSubmit(target, form);
+                       }
+
+                       @Override
+                       protected void onError(AjaxRequestTarget target, 
Form<?> form) {
+                               // repaint the feedback panel so errors are 
shown
+                               target.add(feedback);
+                               onNewError(target, form);
+                       }
+               });
+
+               // add a cancel button that can be used to submit the form via 
ajax
+               add(new AjaxButton("ajax-cancel-button", form) {
+                       private static final long serialVersionUID = 
839803820502260006L;
+
+                       @Override
+                       protected void 
updateAjaxAttributes(AjaxRequestAttributes attributes) {
+                               super.updateAjaxAttributes(attributes);
+                               attributes.getAjaxCallListeners().add(new 
ConfirmCallListener(833L));
+                       }
+                       
+                       @Override
+                       protected void onSubmit(AjaxRequestTarget target, 
Form<?> form) {
+                               // repaint the feedback panel so that it is 
hidden
+                               target.add(feedback);
+                               hideNewRecord();
+                               onDeleteSubmit(target, form);
+                       }
+
+                       @Override
+                       protected void onError(AjaxRequestTarget target, 
Form<?> form) {
+                               // repaint the feedback panel so errors are 
shown
+                               target.add(feedback);
+                               hideNewRecord();
+                               onDeleteError(target, form);
+                       }
+               });
+       }
+       
+       /**
+        * Hide the new record text
+        */
+       public void hideNewRecord() {
+               newRecord.setVisible(false);
+       }
+       
+       /**
+        * Hide the new record text
+        */
+       public void showNewRecord() {
+               newRecord.setVisible(true);
+       }
+
+       protected abstract void onNewSubmit(AjaxRequestTarget target, Form<?> 
form);
+       protected abstract void onNewError(AjaxRequestTarget target, Form<?> 
form);
+
+       protected abstract void onDeleteSubmit(AjaxRequestTarget target, 
Form<?> form);
+       protected abstract void onDeleteError(AjaxRequestTarget target, Form<?> 
form);
+}

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UserForm.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UserForm.java?rev=1475993&r1=1475992&r2=1475993&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UserForm.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/admin/users/UserForm.java
 Thu Apr 25 22:38:34 2013
@@ -103,7 +103,7 @@ public class UserForm extends AdminBaseF
        @Override
        protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
                User user = getModelObject();
-               if (user.getUser_id() <= 0) {
+               if (user.getUser_id() != null) {
                        user = getBean(UsersDao.class).get(user.getUser_id());
                } else {
                        user = new User();

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/profile/ProfilePanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/profile/ProfilePanel.html?rev=1475993&r1=1475992&r2=1475993&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/profile/ProfilePanel.html
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/profile/ProfilePanel.html
 Thu Apr 25 22:38:34 2013
@@ -20,5 +20,35 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org";>
 <wicket:panel>
+       <form wicket:id="form" class="adminForm">
+               <div wicket:id="buttons"></div>
+               <table style="width: 100%; height: 100%">
+                       <tr>
+                               <td rowspan="2">
+                                       <fieldset>
+                                               <legend>
+                                                       <wicket:ommessage 
key="143" />
+                                               </legend>
+                                               <form wicket:id="general">
+                                                       Confirm password
+                                               </form>
+                                       </fieldset>
+                               </td>
+                               <td>
+                                       <div wicket:id="img"></div>
+                               </td>
+                       </tr>
+                       <tr>
+                               <td>
+                                       <fieldset>
+                                               <legend>
+                                                       <wicket:ommessage 
key="1159" />
+                                               </legend>
+                                               <form 
wicket:id="comunity"></form>
+                                       </fieldset>
+                               </td>
+                       </tr>
+               </table>
+       </form>
 </wicket:panel>
 </html>
\ No newline at end of file

Modified: 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/profile/ProfilePanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/profile/ProfilePanel.java?rev=1475993&r1=1475992&r2=1475993&view=diff
==============================================================================
--- 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/profile/ProfilePanel.java
 (original)
+++ 
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/profile/ProfilePanel.java
 Thu Apr 25 22:38:34 2013
@@ -18,12 +18,62 @@
  */
 package org.apache.openmeetings.web.components.user.profile;
 
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import org.apache.openmeetings.data.user.dao.UsersDao;
+import org.apache.openmeetings.persistence.beans.user.User;
+import org.apache.openmeetings.web.components.ComunityUserForm;
+import org.apache.openmeetings.web.components.FormSaveRefreshPanel;
+import org.apache.openmeetings.web.components.GeneralUserForm;
+import org.apache.openmeetings.web.components.UploadableProfileImagePanel;
 import org.apache.openmeetings.web.components.UserPanel;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.model.CompoundPropertyModel;
 
 public class ProfilePanel extends UserPanel {
        private static final long serialVersionUID = -5837090230776586182L;
 
        public ProfilePanel(String id) {
                super(id);
+               
+               Form<User> form = new Form<User>("form", new 
CompoundPropertyModel<User>(getBean(UsersDao.class).get(getUserId()))) {
+                       private static final long serialVersionUID = 
-4968428244553170528L;
+
+                       {
+                               add(new FormSaveRefreshPanel<User>("buttons", 
this) {
+                                       private static final long 
serialVersionUID = 6578425915881674309L;
+
+                                       @Override
+                                       protected void 
onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
+                                               // TODO Auto-generated method 
stub
+                                               
+                                       }
+
+                                       @Override
+                                       protected void 
onSaveError(AjaxRequestTarget target, Form<?> form) {
+                                               // TODO Auto-generated method 
stub
+                                               
+                                       }
+
+                                       @Override
+                                       protected void 
onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
+                                               // TODO Auto-generated method 
stub
+                                               
+                                       }
+
+                                       @Override
+                                       protected void 
onRefreshError(AjaxRequestTarget target, Form<?> form) {
+                                               // TODO Auto-generated method 
stub
+                                               
+                                       }
+                               });
+                               add(new GeneralUserForm("general", getModel()));
+                               add(new UploadableProfileImagePanel("img", 
getUserId()));
+                               add(new ComunityUserForm("comunity", 
getModel()));
+                       }
+               };
+               add(form);
        }
 }


Reply via email to