| /******************************************************************************* |
| * Copyright (c) 2008, 2010 IBM Corporation and others. |
| * |
| * This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.equinox.internal.p2.ui.dialogs; |
| |
| import org.eclipse.equinox.p2.core.UIServices.AuthenticationInfo; |
| |
| import org.eclipse.equinox.internal.p2.ui.ProvUIMessages; |
| import org.eclipse.jface.dialogs.Dialog; |
| import org.eclipse.jface.dialogs.IDialogConstants; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.graphics.Image; |
| import org.eclipse.swt.layout.GridData; |
| import org.eclipse.swt.layout.GridLayout; |
| import org.eclipse.swt.widgets.*; |
| |
| /** |
| * A dialog to prompt the user for login information such as user name and password. |
| */ |
| public class UserValidationDialog extends Dialog { |
| |
| private Text username; |
| private Text password; |
| private AuthenticationInfo result = null; |
| |
| private Button saveButton; |
| |
| private String titleMessage; |
| private Image titleImage; |
| |
| private String message; |
| |
| private int dialogImageType; |
| |
| /** |
| * Creates a new validation dialog that prompts the user for login credentials. |
| * |
| * @param parentShell the parent shell of this dialog |
| * @param titleMessage the message to be displayed by this dialog's window |
| * @param titleImage the image of this shell, may be <code>null</code> |
| * @param message the message to prompt to the user |
| */ |
| public UserValidationDialog(Shell parentShell, String titleMessage, Image titleImage, String message) { |
| this(null, parentShell, titleMessage, titleImage, message, SWT.ICON_QUESTION); |
| } |
| |
| /** |
| * Creates a new validation dialog that prompts the user for login credentials. |
| * |
| * @param lastUsed the authentication information that was originally as an attempt to login |
| * @param parentShell the parent shell of this dialog |
| * @param titleMessage the message to be displayed by this dialog's window |
| * @param titleImage the image of this shell, may be <code>null</code> |
| * @param message the message to prompt to the user |
| */ |
| public UserValidationDialog(AuthenticationInfo lastUsed, Shell parentShell, String titleMessage, Image titleImage, String message) { |
| this(lastUsed, parentShell, titleMessage, titleImage, message, SWT.ICON_WARNING); |
| } |
| |
| private UserValidationDialog(AuthenticationInfo lastUsed, Shell parentShell, String titleMessage, Image titleImage, String message, int dialogImageType) { |
| super(parentShell); |
| result = lastUsed; |
| |
| this.titleMessage = titleMessage; |
| this.titleImage = titleImage; |
| this.message = message; |
| this.dialogImageType = dialogImageType; |
| } |
| |
| @Override |
| protected void configureShell(Shell newShell) { |
| super.configureShell(newShell); |
| newShell.setText(titleMessage); |
| newShell.setImage(titleImage); |
| } |
| |
| @Override |
| protected Control createDialogArea(Composite parent) { |
| Composite composite = (Composite) super.createDialogArea(parent); |
| |
| Composite container = new Composite(composite, SWT.NONE); |
| GridLayout layout = new GridLayout(2, false); |
| container.setLayout(layout); |
| container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); |
| |
| createImageSection(container); |
| createFieldsSection(container); |
| |
| Dialog.applyDialogFont(composite); |
| |
| return composite; |
| } |
| |
| private void createImageSection(Composite composite) { |
| Image image = composite.getDisplay().getSystemImage(dialogImageType); |
| if (image != null) { |
| Label label = new Label(composite, SWT.NONE); |
| label.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false)); |
| label.setImage(image); |
| } |
| } |
| |
| private void createFieldsSection(Composite composite) { |
| Composite fieldContainer = new Composite(composite, SWT.NONE); |
| GridLayout layout = new GridLayout(); |
| layout.numColumns = 2; |
| fieldContainer.setLayout(layout); |
| GridData layoutData = new GridData(); |
| fieldContainer.setLayoutData(layoutData); |
| |
| Label label = new Label(fieldContainer, SWT.WRAP | SWT.LEAD); |
| GridData data = new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false, 2, 1); |
| data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH); |
| label.setLayoutData(data); |
| label.setText(message); |
| |
| label = new Label(fieldContainer, SWT.NONE); |
| label.setText(ProvUIMessages.UserValidationDialog_UsernameLabel); |
| username = new Text(fieldContainer, SWT.BORDER); |
| layoutData = new GridData(SWT.FILL, SWT.BEGINNING, true, false); |
| username.setLayoutData(layoutData); |
| username.setText(getUserName()); |
| |
| label = new Label(fieldContainer, SWT.NONE); |
| label.setText(ProvUIMessages.UserValidationDialog_PasswordLabel); |
| password = new Text(fieldContainer, SWT.PASSWORD | SWT.BORDER); |
| layoutData = new GridData(SWT.FILL, SWT.BEGINNING, true, false); |
| password.setLayoutData(layoutData); |
| password.setText(getPassword()); |
| |
| saveButton = new Button(fieldContainer, SWT.CHECK); |
| saveButton.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false, 2, 1)); |
| saveButton.setText(ProvUIMessages.UserValidationDialog_SavePasswordButton); |
| saveButton.setSelection(saveResult()); |
| } |
| |
| @Override |
| protected void okPressed() { |
| this.result = new AuthenticationInfo(username.getText(), password.getText(), saveButton.getSelection()); |
| super.okPressed(); |
| } |
| |
| /** |
| * Returns the authentication information given by the user, or null if the user cancelled |
| * @return the authentication information given by the user, or null if the user cancelled |
| */ |
| public AuthenticationInfo getResult() { |
| return result; |
| } |
| |
| private String getUserName() { |
| return result != null ? result.getUserName() : ""; //$NON-NLS-1$ |
| } |
| |
| private String getPassword() { |
| return result != null ? result.getPassword() : ""; //$NON-NLS-1$ |
| } |
| |
| private boolean saveResult() { |
| return result != null ? result.saveResult() : false; |
| } |
| } |