]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - security/plugins/org.argeo.security.ui/src/main/java/org/argeo/security/ui/dialogs/DefaultLoginDialog.java
JCR Keyring
[lgpl/argeo-commons.git] / security / plugins / org.argeo.security.ui / src / main / java / org / argeo / security / ui / dialogs / DefaultLoginDialog.java
index 7a846f7b54564b66ecc9d4cd49a85a5fe81fc8d0..8c8554c6b77a0ef8ff2700acc4590f190617a4ba 100644 (file)
@@ -5,7 +5,6 @@ import javax.security.auth.callback.NameCallback;
 import javax.security.auth.callback.PasswordCallback;
 import javax.security.auth.callback.TextOutputCallback;
 
-import org.eclipse.jface.dialogs.IMessageProvider;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
@@ -22,26 +21,32 @@ import org.eclipse.swt.widgets.Text;
 public class DefaultLoginDialog extends AbstractLoginDialog {
 
        public DefaultLoginDialog() {
-               this(Display.getDefault().getActiveShell());
+               this(Display.getCurrent().getActiveShell());
        }
 
        protected DefaultLoginDialog(Shell parentShell) {
                super(parentShell);
+               // setBlockOnOpen(false);
        }
 
        protected Point getInitialSize() {
-               return new Point(300, 350);
+               return new Point(300, 180);
+       }
+
+       @Override
+       protected Control createContents(Composite parent) {
+               Control control = super.createContents(parent);
+               parent.pack();
+               return control;
        }
 
        protected Control createDialogArea(Composite parent) {
                Composite dialogarea = (Composite) super.createDialogArea(parent);
-               // dialogarea.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true,
-               // true));
                Composite composite = new Composite(dialogarea, SWT.NONE);
                composite.setLayout(new GridLayout(2, false));
                composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
                createCallbackHandlers(composite);
-               parent.pack();
+               // parent.pack();
                return composite;
        }
 
@@ -50,7 +55,7 @@ public class DefaultLoginDialog extends AbstractLoginDialog {
                for (int i = 0; i < callbacks.length; i++) {
                        Callback callback = callbacks[i];
                        if (callback instanceof TextOutputCallback) {
-                               createTextoutputHandler(composite,
+                               createLabelTextoutputHandler(composite,
                                                (TextOutputCallback) callback);
                        } else if (callback instanceof NameCallback) {
                                createNameHandler(composite, (NameCallback) callback);
@@ -71,6 +76,7 @@ public class DefaultLoginDialog extends AbstractLoginDialog {
                passwordText.addModifyListener(new ModifyListener() {
 
                        public void modifyText(ModifyEvent event) {
+                               // FIXME use getTextChars() in Eclipse 3.7
                                callback.setPassword(passwordText.getText().toCharArray());
                        }
                });
@@ -91,24 +97,61 @@ public class DefaultLoginDialog extends AbstractLoginDialog {
                });
        }
 
-       private void createTextoutputHandler(Composite composite,
-                       TextOutputCallback callback) {
-               int messageType = callback.getMessageType();
-               int dialogMessageType = IMessageProvider.NONE;
-               switch (messageType) {
-               case TextOutputCallback.INFORMATION:
-                       dialogMessageType = IMessageProvider.INFORMATION;
-                       break;
-               case TextOutputCallback.WARNING:
-                       dialogMessageType = IMessageProvider.WARNING;
-                       break;
-               case TextOutputCallback.ERROR:
-                       dialogMessageType = IMessageProvider.ERROR;
-                       break;
-               }
-               setMessage(callback.getMessage(), dialogMessageType);
+       private void createLabelTextoutputHandler(Composite composite,
+                       final TextOutputCallback callback) {
+               Label label = new Label(composite, SWT.NONE);
+               label.setText(callback.getMessage());
+               GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
+               data.horizontalSpan = 2;
+               label.setLayoutData(data);
+               // TODO: find a way to pass this information
+               // int messageType = callback.getMessageType();
+               // int dialogMessageType = IMessageProvider.NONE;
+               // switch (messageType) {
+               // case TextOutputCallback.INFORMATION:
+               // dialogMessageType = IMessageProvider.INFORMATION;
+               // break;
+               // case TextOutputCallback.WARNING:
+               // dialogMessageType = IMessageProvider.WARNING;
+               // break;
+               // case TextOutputCallback.ERROR:
+               // dialogMessageType = IMessageProvider.ERROR;
+               // break;
+               // }
+               // setMessage(callback.getMessage(), dialogMessageType);
        }
 
        public void internalHandle() {
        }
+
+       // hack to simulate modal
+       // see
+       // http://dev.eclipse.org/mhonarc/newsLists/news.eclipse.platform.jface/msg00181.html
+       // protected void setShellStyle(int newShellStyle) {
+       // // turn off APPLICATION_MODAL
+       // int newstyle = newShellStyle & ~SWT.APPLICATION_MODAL;
+       // // turn on MODELESS
+       // newstyle |= SWT.MODELESS;
+       // super.setShellStyle(newstyle);
+       // }
+       //
+       // public int open() {
+       //
+       // int retVal = super.open();
+       // // this will let the caller wait till OK, Cancel is
+       // // pressed, but will let the other GUI responsive
+       // pumpMessages();
+       // return retVal;
+       // }
+       //
+       // protected void pumpMessages() {
+       // Shell sh = getShell();
+       // Display disp = sh.getDisplay();
+       // while (!sh.isDisposed()) {
+       // if (!disp.readAndDispatch())
+       // disp.sleep();
+       // }
+       // disp.update();
+       // }
+
 }