3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
11 package eu
.etaxonomy
.taxeditor
.ui
.password
;
13 import org
.eclipse
.jface
.dialogs
.IInputValidator
;
14 import org
.eclipse
.swt
.SWT
;
15 import org
.eclipse
.swt
.events
.ModifyEvent
;
16 import org
.eclipse
.swt
.events
.ModifyListener
;
17 import org
.eclipse
.swt
.widgets
.Composite
;
18 import org
.eclipse
.swt
.widgets
.Text
;
20 import eu
.etaxonomy
.cdm
.api
.conversation
.ConversationHolder
;
21 import eu
.etaxonomy
.cdm
.api
.service
.IUserService
;
22 import eu
.etaxonomy
.cdm
.model
.common
.User
;
23 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
24 import eu
.etaxonomy
.taxeditor
.ui
.element
.AbstractCdmEntityWizardPage
;
25 import eu
.etaxonomy
.taxeditor
.ui
.element
.CdmFormFactory
;
26 import eu
.etaxonomy
.taxeditor
.ui
.element
.ICdmFormElement
;
27 import eu
.etaxonomy
.taxeditor
.ui
.element
.LayoutConstants
;
28 import eu
.etaxonomy
.taxeditor
.ui
.element
.TextWithLabelElement
;
29 import eu
.etaxonomy
.taxeditor
.ui
.section
.AbstractCdmDetailElement
;
32 * <p>UserWizardPage class.</p>
38 public class PasswordWizardPage
extends AbstractCdmEntityWizardPage
<User
> implements ModifyListener
{
40 /** Constant <code>NAME="USER_WIZARD_PAGE"</code> */
41 public static final String NAME
= "USER_WIZARD_PAGE";
43 private TextWithLabelElement text_oldPassword
;
44 private TextWithLabelElement text_password
;
45 private TextWithLabelElement text_passwordRepeat
;
46 private PasswordValidator passwordValidator
;
48 private UniqueUserNameValidator uniqueUsernameValidator
;
55 protected PasswordWizardPage(CdmFormFactory formFactory
,
56 ConversationHolder conversation
, User entity
) {
57 super(formFactory
, conversation
, entity
);
59 passwordValidator
= new PasswordValidator();
60 uniqueUsernameValidator
= new UniqueUserNameValidator();
64 * @see eu.etaxonomy.taxeditor.ui.forms.AbstractCdmEntityWizardPage#createControl(org.eclipse.swt.widgets.Composite)
67 public void createControl(Composite parent
) {
68 Composite control
= formFactory
.createComposite(parent
);
69 control
.setLayoutData(LayoutConstants
.FILL());
71 setPageComplete(false);
73 control
.setLayout(LayoutConstants
.LAYOUT(2, false));
74 WizardPageRootElement rootElement
= new WizardPageRootElement(formFactory
, control
, getConversationHolder());
76 if(!CdmStore
.getLoginManager().isAdmin()){
77 text_oldPassword
= formFactory
.createTextWithLabelElement(rootElement
, "Old Password", null, SWT
.PASSWORD
);
79 text_password
= formFactory
.createTextWithLabelElement(rootElement
, "New Password", null, SWT
.PASSWORD
);
80 text_passwordRepeat
= formFactory
.createTextWithLabelElement(rootElement
, "Repeat Password", null, SWT
.PASSWORD
);
82 ((Text
)text_passwordRepeat
.getMainControl()).addModifyListener(this);
89 * @see eu.etaxonomy.taxeditor.ui.forms.AbstractCdmEntityWizardPage#createElement(eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement)
92 public AbstractCdmDetailElement
<User
> createElement(
93 ICdmFormElement rootElement
) {
99 * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent)
102 public void modifyText(ModifyEvent e
) {
106 private void validate(){
109 if((message
= passwordValidator
.passwordsMatch(text_password
.getText(), text_passwordRepeat
.getText())) != null){
112 else if((message
= passwordValidator
.isValid(text_password
.getText())) != null){
116 setErrorMessage(message
);
119 private class UniqueUserNameValidator
implements IInputValidator
{
121 private static final String USER_EXISTS
= "Username already exists";
122 private static final String NAME_TO_SHORT
= "Username is empty";
125 * @see org.eclipse.jface.dialogs.IInputValidator#isValid(java.lang.String)
127 public String
isValid(String newText
) {
128 // query for username
129 if(newText
.length() < 1){
130 setPageComplete(false);
131 return NAME_TO_SHORT
;
133 if(CdmStore
.getService(IUserService
.class).userExists(newText
)){
134 setPageComplete(false);
138 setPageComplete(true);
143 private class PasswordValidator
implements IInputValidator
{
145 private static final int PW_MIN_LENGTH
= 5;
147 private static final String TO_SHORT
= "Password has to have at least " + PW_MIN_LENGTH
+ " characters";
148 private static final String NO_MATCH
= "The passwords do not match";
151 * @see org.eclipse.jface.dialogs.IInputValidator#isValid(java.lang.String)
153 public String
isValid(String newText
) {
154 if(newText
.length() < PW_MIN_LENGTH
){
155 setPageComplete(false);
159 setPageComplete(true);
163 public String
passwordsMatch(String password1
, String password2
){
165 if(! password1
.equals(password2
)){
166 setPageComplete(false);
170 setPageComplete(true);
179 public String
getOldPassword() {
180 return text_oldPassword
.getText();
186 public String
getNewPassword() {
187 return text_password
.getText();