merge-update from trunk
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / ui / password / PasswordWizardPage.java
index a75cc6708ea27dbadf86c534fbafd8052fb5e634..1e5ce2f62720ea4908c70b30daeae0dffef1efcb 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$
 /**
 * Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy 
+* European Distributed Institute of Taxonomy
 * http://www.e-taxonomy.eu
-* 
+*
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * See LICENSE.TXT at the top of this package for the full license terms.
 */
@@ -24,6 +24,7 @@ import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
 import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
 import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
 import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
 import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
 
@@ -38,11 +39,13 @@ public class PasswordWizardPage extends AbstractCdmEntityWizardPage<User> implem
 
        /** Constant <code>NAME="USER_WIZARD_PAGE"</code> */
        public static final String NAME = "USER_WIZARD_PAGE";
-       
+
        private TextWithLabelElement text_oldPassword;
        private TextWithLabelElement text_password;
        private TextWithLabelElement text_passwordRepeat;
-       private PasswordValidator passwordValidator;
+       private final PasswordValidator passwordValidator;
+
+       private final UniqueUserNameValidator uniqueUsernameValidator;
 
        /**
         * @param formFactory
@@ -52,8 +55,9 @@ public class PasswordWizardPage extends AbstractCdmEntityWizardPage<User> implem
        protected PasswordWizardPage(CdmFormFactory formFactory,
                        ConversationHolder conversation, User entity) {
                super(formFactory, conversation, entity);
-               
+
                passwordValidator = new PasswordValidator();
+               uniqueUsernameValidator = new UniqueUserNameValidator();
        }
 
        /* (non-Javadoc)
@@ -62,25 +66,29 @@ public class PasswordWizardPage extends AbstractCdmEntityWizardPage<User> implem
        @Override
        public void createControl(Composite parent) {
                Composite control = formFactory.createComposite(parent);
-               control.setLayoutData(CdmFormFactory.FILL());
-               
+               control.setLayoutData(LayoutConstants.FILL());
+
                setPageComplete(false);
-               
-               control.setLayout(CdmFormFactory.LAYOUT(2, false));
+
+               control.setLayout(LayoutConstants.LAYOUT(2, false));
                WizardPageRootElement rootElement = new WizardPageRootElement(formFactory, control, getConversationHolder());
-               
-               if(!CdmStore.getLoginManager().isAdmin()){
-                       text_oldPassword = formFactory.createTextWithLabelElement(rootElement, "Old Password", null, SWT.PASSWORD);
+
+               if(isChangingOwnPassword()) {
+                   text_oldPassword = formFactory.createTextWithLabelElement(rootElement, "Old Password", null, SWT.PASSWORD);
                }
                text_password =  formFactory.createTextWithLabelElement(rootElement, "New Password", null, SWT.PASSWORD);
                text_passwordRepeat =  formFactory.createTextWithLabelElement(rootElement, "Repeat Password", null, SWT.PASSWORD);
-               
+
                ((Text)text_passwordRepeat.getMainControl()).addModifyListener(this);
-               
+
                setControl(control);
        }
-       
-       
+
+    protected boolean isChangingOwnPassword() {
+        return getEntity() != null && getEntity().getUsername().equals(CdmStore.getCurrentAuthentiation().getName());
+    }
+
+
        /* (non-Javadoc)
         * @see eu.etaxonomy.taxeditor.ui.forms.AbstractCdmEntityWizardPage#createElement(eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement)
         */
@@ -90,37 +98,39 @@ public class PasswordWizardPage extends AbstractCdmEntityWizardPage<User> implem
                // not used
                return null;
        }
-       
+
        /* (non-Javadoc)
         * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent)
         */
        /** {@inheritDoc} */
-       public void modifyText(ModifyEvent e) {
+       @Override
+    public void modifyText(ModifyEvent e) {
                validate();
        }
-       
+
        private void validate(){
                String message;
-               
+
                if((message = passwordValidator.passwordsMatch(text_password.getText(), text_passwordRepeat.getText())) != null){
                        // pass
                }
                else if((message = passwordValidator.isValid(text_password.getText())) != null){
                        // pass
                }
-               
-               setErrorMessage(message);               
+
+               setErrorMessage(message);
        }
-       
+
        private class UniqueUserNameValidator implements IInputValidator{
 
                private static final String USER_EXISTS = "Username already exists";
                private static final String NAME_TO_SHORT = "Username is empty";
-               
+
                /* (non-Javadoc)
                 * @see org.eclipse.jface.dialogs.IInputValidator#isValid(java.lang.String)
                 */
-               public String isValid(String newText) {
+               @Override
+        public String isValid(String newText) {
                        // query for username
                        if(newText.length() < 1){
                                setPageComplete(false);
@@ -130,43 +140,44 @@ public class PasswordWizardPage extends AbstractCdmEntityWizardPage<User> implem
                                setPageComplete(false);
                                return USER_EXISTS;
                        }
-                       
+
                        setPageComplete(true);
                        return null;
                }
        }
-       
+
        private class PasswordValidator implements IInputValidator{
 
                private static final int PW_MIN_LENGTH = 5;
-               
+
                private static final String TO_SHORT = "Password has to have at least " + PW_MIN_LENGTH + " characters";
                private static final String NO_MATCH = "The passwords do not match";
-               
+
                /* (non-Javadoc)
                 * @see org.eclipse.jface.dialogs.IInputValidator#isValid(java.lang.String)
                 */
-               public String isValid(String newText) {
+               @Override
+        public String isValid(String newText) {
                        if(newText.length() < PW_MIN_LENGTH){
                                setPageComplete(false);
                                return TO_SHORT;
                        }
-                       
+
                        setPageComplete(true);
                        return null;
                }
-               
+
                public String passwordsMatch(String password1, String password2){
 
                        if(! password1.equals(password2)){
                                setPageComplete(false);
                                return NO_MATCH;
                        }
-                       
+
                        setPageComplete(true);
                        return null;
                }
-               
+
        }
 
        /**