]> git.argeo.org Git - lgpl/argeo-commons.git/blob - security/eclipse/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/dialogs/DefaultLoginDialog.java
Introduce Argeo user edition
[lgpl/argeo-commons.git] / security / eclipse / plugins / org.argeo.security.ui / src / main / java / org / argeo / security / ui / dialogs / DefaultLoginDialog.java
1 package org.argeo.security.ui.dialogs;
2
3 import javax.security.auth.callback.Callback;
4 import javax.security.auth.callback.NameCallback;
5 import javax.security.auth.callback.PasswordCallback;
6 import javax.security.auth.callback.TextOutputCallback;
7
8 import org.eclipse.jface.dialogs.IMessageProvider;
9 import org.eclipse.swt.SWT;
10 import org.eclipse.swt.events.ModifyEvent;
11 import org.eclipse.swt.events.ModifyListener;
12 import org.eclipse.swt.graphics.Point;
13 import org.eclipse.swt.layout.GridData;
14 import org.eclipse.swt.layout.GridLayout;
15 import org.eclipse.swt.widgets.Composite;
16 import org.eclipse.swt.widgets.Control;
17 import org.eclipse.swt.widgets.Display;
18 import org.eclipse.swt.widgets.Label;
19 import org.eclipse.swt.widgets.Shell;
20 import org.eclipse.swt.widgets.Text;
21
22 public class DefaultLoginDialog extends AbstractLoginDialog {
23
24 public DefaultLoginDialog() {
25 this(Display.getDefault().getActiveShell());
26 }
27
28 protected DefaultLoginDialog(Shell parentShell) {
29 super(parentShell);
30 }
31
32 protected Point getInitialSize() {
33 return new Point(300, 280);
34 }
35
36 protected Control createDialogArea(Composite parent) {
37 Composite dialogarea = (Composite) super.createDialogArea(parent);
38 dialogarea.setLayoutData(new GridData(GridData.FILL_BOTH));
39 Composite composite = new Composite(dialogarea, SWT.NONE);
40 composite.setLayout(new GridLayout(2, false));
41 createCallbackHandlers(composite);
42 return composite;
43 }
44
45 private void createCallbackHandlers(Composite composite) {
46 Callback[] callbacks = getCallbacks();
47 for (int i = 0; i < callbacks.length; i++) {
48 Callback callback = callbacks[i];
49 if (callback instanceof TextOutputCallback) {
50 createTextoutputHandler(composite,
51 (TextOutputCallback) callback);
52 } else if (callback instanceof NameCallback) {
53 createNameHandler(composite, (NameCallback) callback);
54 } else if (callback instanceof PasswordCallback) {
55 createPasswordHandler(composite, (PasswordCallback) callback);
56 }
57 }
58 }
59
60 private void createPasswordHandler(Composite composite,
61 final PasswordCallback callback) {
62 Label label = new Label(composite, SWT.NONE);
63 label.setText(callback.getPrompt());
64 final Text passwordText = new Text(composite, SWT.SINGLE | SWT.LEAD
65 | SWT.PASSWORD | SWT.BORDER);
66 //passwordText.setLayoutData(new GridData(GridData.FILL_BOTH));
67 passwordText.addModifyListener(new ModifyListener() {
68
69 public void modifyText(ModifyEvent event) {
70 callback.setPassword(passwordText.getText().toCharArray());
71 }
72 });
73 }
74
75 private void createNameHandler(Composite composite,
76 final NameCallback callback) {
77 Label label = new Label(composite, SWT.NONE);
78 label.setText(callback.getPrompt());
79 final Text text = new Text(composite, SWT.SINGLE | SWT.LEAD
80 | SWT.BORDER);
81 //text.setLayoutData(new GridData(GridData.FILL_BOTH));
82 text.addModifyListener(new ModifyListener() {
83
84 public void modifyText(ModifyEvent event) {
85 callback.setName(text.getText());
86 }
87 });
88 }
89
90 private void createTextoutputHandler(Composite composite,
91 TextOutputCallback callback) {
92 int messageType = callback.getMessageType();
93 int dialogMessageType = IMessageProvider.NONE;
94 switch (messageType) {
95 case TextOutputCallback.INFORMATION:
96 dialogMessageType = IMessageProvider.INFORMATION;
97 break;
98 case TextOutputCallback.WARNING:
99 dialogMessageType = IMessageProvider.WARNING;
100 break;
101 case TextOutputCallback.ERROR:
102 dialogMessageType = IMessageProvider.ERROR;
103 break;
104 }
105 setMessage(callback.getMessage(), dialogMessageType);
106 }
107
108 public void internalHandle() {
109 }
110 }