1 package org
.argeo
.cms
.swt
.dialogs
;
3 import java
.util
.Arrays
;
4 import java
.util
.concurrent
.Callable
;
6 import org
.argeo
.api
.cms
.CmsLog
;
7 import org
.argeo
.api
.cms
.directory
.CmsUserManager
;
8 import org
.argeo
.api
.cms
.ux
.CmsView
;
9 import org
.argeo
.cms
.CmsMsg
;
10 import org
.argeo
.cms
.swt
.CmsSwtUtils
;
11 import org
.argeo
.cms
.ux
.widgets
.CmsDialog
;
12 import org
.eclipse
.swt
.SWT
;
13 import org
.eclipse
.swt
.widgets
.Composite
;
14 import org
.eclipse
.swt
.widgets
.Control
;
15 import org
.eclipse
.swt
.widgets
.Label
;
16 import org
.eclipse
.swt
.widgets
.Shell
;
17 import org
.eclipse
.swt
.widgets
.Text
;
19 /** Dialog to change a password. */
20 public class ChangePasswordDialog
extends CmsMessageDialog
{
21 private final static CmsLog log
= CmsLog
.getLog(ChangePasswordDialog
.class);
23 private CmsUserManager cmsUserManager
;
24 private CmsView cmsView
;
26 private Callable
<Integer
> doIt
;
28 public ChangePasswordDialog(Shell parentShell
, String message
, int kind
, CmsUserManager cmsUserManager
) {
29 super(parentShell
, message
, kind
);
30 this.cmsUserManager
= cmsUserManager
;
31 cmsView
= CmsSwtUtils
.getCmsView(parentShell
);
35 protected Control
createInputArea(Composite userSection
) {
36 addFormLabel(userSection
, CmsMsg
.currentPassword
.lead());
37 Text previousPassword
= new Text(userSection
, SWT
.BORDER
| SWT
.PASSWORD
);
38 previousPassword
.setLayoutData(CmsSwtUtils
.fillWidth());
39 addFormLabel(userSection
, CmsMsg
.newPassword
.lead());
40 Text newPassword
= new Text(userSection
, SWT
.BORDER
| SWT
.PASSWORD
);
41 newPassword
.setLayoutData(CmsSwtUtils
.fillWidth());
42 addFormLabel(userSection
, CmsMsg
.repeatNewPassword
.lead());
43 Text confirmPassword
= new Text(userSection
, SWT
.BORDER
| SWT
.PASSWORD
);
44 confirmPassword
.setLayoutData(CmsSwtUtils
.fillWidth());
47 if (Arrays
.equals(newPassword
.getTextChars(), confirmPassword
.getTextChars())) {
49 cmsUserManager
.changeOwnPassword(previousPassword
.getTextChars(), newPassword
.getTextChars());
51 } catch (Exception e1
) {
52 log
.error("Could not change password", e1
);
54 CmsMessageDialog
.openError(CmsMsg
.invalidPassword
.lead());
55 return CmsDialog
.CANCEL
;
59 CmsMessageDialog
.openError(CmsMsg
.repeatNewPassword
.lead());
60 return CmsDialog
.CANCEL
;
65 return previousPassword
;
69 protected void okPressed() {
70 Integer returnCode
= cmsView
.doAs(doIt
);
71 if (returnCode
.equals(CmsDialog
.OK
)) {
73 CmsMessageDialog
.openInformation(CmsMsg
.passwordChanged
.lead());
77 private static Label
addFormLabel(Composite parent
, String label
) {
78 Label lbl
= new Label(parent
, SWT
.WRAP
);
80 // CmsUiUtils.style(lbl, SuiteStyle.simpleLabel);