summaryrefslogtreecommitdiff
path: root/src/plugins/common/src/com/motorola/studio/android/common/utilities/ui/PasswordInputDialog.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/common/src/com/motorola/studio/android/common/utilities/ui/PasswordInputDialog.java')
-rw-r--r--src/plugins/common/src/com/motorola/studio/android/common/utilities/ui/PasswordInputDialog.java324
1 files changed, 324 insertions, 0 deletions
diff --git a/src/plugins/common/src/com/motorola/studio/android/common/utilities/ui/PasswordInputDialog.java b/src/plugins/common/src/com/motorola/studio/android/common/utilities/ui/PasswordInputDialog.java
new file mode 100644
index 0000000..de80b33
--- /dev/null
+++ b/src/plugins/common/src/com/motorola/studio/android/common/utilities/ui/PasswordInputDialog.java
@@ -0,0 +1,324 @@
+/*
+* Copyright (C) 2012 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package com.motorola.studio.android.common.utilities.ui;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IMessageProvider;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+
+import com.motorola.studio.android.common.utilities.i18n.UtilitiesNLS;
+
+public class PasswordInputDialog extends Dialog
+{
+ private static final int SMALL_TEXT_SIZE = 64;
+
+ private String newPassword = null;
+
+ private String oldPassword = null;
+
+ private final boolean changePassword;
+
+ private Text newPasswordConfirmText;
+
+ private Text newPasswordText;
+
+ private Text oldPasswordText;
+
+ private Label message;
+
+ private Label image;
+
+ private final String description;
+
+ private Button saveCheckBox;
+
+ private boolean needToStorePassword = true;
+
+ private int passwordMinimumSize = 1; //1 is default, it is recommended to change in the constructor
+
+ /**
+ * Create a new Input dialog
+ * @param parent: the parent shell
+ * @param description: the textual description of dialog
+ * @param changePassword: true if you want this dialog be a change password dialog (it will present old, new and confirm new fields). False to show only enter password field
+ * @param oldPassword: null if user must enter oldpassword. Anything to create dialog with preentered password (only if changePassword is true);
+ */
+ public PasswordInputDialog(Shell parent, String description, boolean changePassword,
+ String oldPassword, int passwordMinimumSize)
+ {
+ super(parent);
+ this.changePassword = changePassword;
+ this.description = description;
+ if (changePassword)
+ {
+ this.oldPassword = oldPassword;
+ }
+ this.passwordMinimumSize = passwordMinimumSize;
+ }
+
+ @Override
+ protected Control createDialogArea(Composite parent)
+ {
+ Composite mainComposite = new Composite(parent, SWT.NONE);
+ mainComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
+ mainComposite.setLayout(new GridLayout(2, false));
+
+ /**
+ * The Message Area (With an image and a text)
+ */
+ Composite messageComposite = new Composite(mainComposite, SWT.NONE);
+ GridData layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1);
+ messageComposite.setLayoutData(layoutData);
+ GridLayout layout = new GridLayout(2, false);
+ layout.marginWidth = 0;
+ messageComposite.setLayout(layout);
+
+ image = new Label(messageComposite, SWT.NONE);
+ image.setVisible(false);
+ layoutData = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
+ image.setLayoutData(layoutData);
+
+ message = new Label(messageComposite, SWT.NONE);
+ message.setText(description);
+ layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
+ message.setLayoutData(layoutData);
+
+ Label oldPasswordLabel = new Label(mainComposite, SWT.NONE);
+ layoutData = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
+ oldPasswordLabel.setLayoutData(layoutData);
+ oldPasswordLabel.setText(UtilitiesNLS.Passwordinput_Enterpassword_Label);
+
+ oldPasswordText = new Text(mainComposite, SWT.BORDER | SWT.SINGLE | SWT.PASSWORD);
+ oldPasswordText.setTextLimit(SMALL_TEXT_SIZE);
+ layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
+ layoutData.minimumWidth = 150;
+ oldPasswordText.setLayoutData(layoutData);
+ if (oldPassword != null)
+ {
+ oldPasswordText.setEnabled(false);
+ oldPasswordText.setText(oldPassword);
+ oldPasswordLabel.setEnabled(false);
+ }
+ oldPasswordText.addModifyListener(new ModifyListener()
+ {
+ public void modifyText(ModifyEvent e)
+ {
+ updateStatus();
+ }
+ });
+
+ /**
+ * If the input is to change the passwords, create all other fields
+ */
+ if (changePassword)
+ {
+ Label separator = new Label(mainComposite, SWT.HORIZONTAL | SWT.SEPARATOR);
+ layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1);
+ separator.setLayoutData(layoutData);
+
+ /**
+ * The newPassword area
+ */
+ Label passwordLabel = new Label(mainComposite, SWT.NONE);
+ layoutData = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
+ passwordLabel.setLayoutData(layoutData);
+ passwordLabel.setText(UtilitiesNLS.Passwordinput_Enternewpassword_Label);
+
+ newPasswordText = new Text(mainComposite, SWT.BORDER | SWT.SINGLE | SWT.PASSWORD);
+ newPasswordText.setTextLimit(SMALL_TEXT_SIZE);
+ layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
+ layoutData.minimumWidth = 150;
+ newPasswordText.setLayoutData(layoutData);
+
+ Label passwordConfirmLabel = new Label(mainComposite, SWT.NONE);
+ layoutData = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
+ passwordConfirmLabel.setLayoutData(layoutData);
+ passwordConfirmLabel.setText(UtilitiesNLS.Passwordinput_Reenterpassword_Label);
+
+ newPasswordConfirmText =
+ new Text(mainComposite, SWT.BORDER | SWT.SINGLE | SWT.PASSWORD);
+ newPasswordConfirmText.setTextLimit(SMALL_TEXT_SIZE);
+ layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
+ layoutData.minimumWidth = 150;
+ newPasswordConfirmText.setLayoutData(layoutData);
+
+ newPasswordText.addModifyListener(new ModifyListener()
+ {
+
+ public void modifyText(ModifyEvent e)
+ {
+ updateStatus();
+ }
+ });
+
+ newPasswordConfirmText.addModifyListener(new ModifyListener()
+ {
+
+ public void modifyText(ModifyEvent e)
+ {
+ updateStatus();
+ }
+ });
+ }
+
+ //Creates the save password checkbox
+ saveCheckBox = new Button(mainComposite, SWT.CHECK);
+ saveCheckBox.setText(UtilitiesNLS.PasswordProvider_SaveThisPassword);
+ saveCheckBox.setSelection(false);
+ GridData gridData = new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1);
+ saveCheckBox.setLayoutData(gridData);
+
+ return mainComposite;
+ }
+
+ public void updateStatus()
+ {
+ String errorMessage = null;
+ int severity = IMessageProvider.NONE;
+
+ if (oldPasswordText.getText().length() > 0)
+ {
+ oldPassword = oldPasswordText.getText();
+ }
+ else
+ {
+ errorMessage = "";
+ oldPassword = null;
+ }
+
+ if ((errorMessage == null) && changePassword)
+ {
+ if (newPasswordText.getText().length() < passwordMinimumSize)
+ {
+ errorMessage =
+ UtilitiesNLS.bind(UtilitiesNLS.Passwordinput_Error_PasswordMinimumSize,
+ passwordMinimumSize);
+ severity = IMessageProvider.ERROR;
+ }
+ else
+ {
+ if (!newPasswordText.getText().equals(newPasswordConfirmText.getText()))
+ {
+ errorMessage = UtilitiesNLS.Passwordinput_Error_Passwordnotmatch;
+ severity = IMessageProvider.ERROR;
+ }
+ else
+ {
+ newPassword = newPasswordText.getText();
+ }
+ }
+ }
+
+ setErrorMessage(errorMessage, severity);
+
+ }
+
+ private void setErrorMessage(String errorMsg, int severity)
+ {
+ if ((errorMsg == null) || (severity == IMessageProvider.NONE))
+ {
+ image.setImage(null);
+ image.setVisible(false);
+ message.setText(description);
+ getButton(OK).setEnabled(errorMsg == null);
+ }
+ else
+ {
+ message.setText(errorMsg);
+ message.setVisible(true);
+ switch (severity)
+ {
+ case IMessageProvider.ERROR:
+ image.setImage(PlatformUI.getWorkbench().getSharedImages()
+ .getImage(ISharedImages.IMG_OBJS_ERROR_TSK));
+ break;
+
+ case IMessageProvider.INFORMATION:
+ image.setImage(PlatformUI.getWorkbench().getSharedImages()
+ .getImage(ISharedImages.IMG_OBJS_INFO_TSK));
+ break;
+
+ case IMessageProvider.WARNING:
+ image.setImage(PlatformUI.getWorkbench().getSharedImages()
+ .getImage(ISharedImages.IMG_OBJS_WARN_TSK));
+ break;
+
+ default:
+ image.setImage(PlatformUI.getWorkbench().getSharedImages()
+ .getImage(ISharedImages.IMG_OBJS_ERROR_TSK));
+ break;
+ }
+ image.setVisible(true);
+ getButton(OK).setEnabled(false);
+ }
+ message.getParent().layout();
+ }
+
+ @Override
+ protected void createButtonsForButtonBar(Composite parent)
+ {
+ super.createButtonsForButtonBar(parent);
+ getButton(OK).setEnabled(false);
+ }
+
+ public String getNewPassword()
+ {
+ return newPassword;
+ }
+
+ public String getOldPassword()
+ {
+ return oldPassword;
+ }
+
+ public boolean needToStorePassword()
+ {
+ return needToStorePassword;
+ }
+
+ @Override
+ protected void configureShell(Shell newShell)
+ {
+ super.configureShell(newShell);
+ newShell.setText(UtilitiesNLS.Passwordinput_Title);
+ newShell.setMinimumSize(500, 200);
+ newShell.layout(true);
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.dialogs.Dialog#okPressed()
+ */
+ @Override
+ protected void okPressed()
+ {
+ needToStorePassword = saveCheckBox.getSelection();
+ super.okPressed();
+ }
+
+}