/* * 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.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.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.PlatformUI; import com.motorola.studio.android.common.utilities.i18n.UtilitiesNLS; public class LoginPasswordDialogCreator { private LoginPasswordDialog dialog; private final String url; // dialog return values public static final int OK = LoginPasswordDialog.OK; public static final int CANCEL = LoginPasswordDialog.CANCEL; public LoginPasswordDialogCreator(String url) { this.url = url; } public int openLoginPasswordDialog() { final Integer[] dialogReturnValue = new Integer[1]; PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() { public void run() { dialog = new LoginPasswordDialog(PlatformUI.getWorkbench().getDisplay() .getActiveShell()); dialogReturnValue[0] = dialog.open(); } }); return dialogReturnValue[0]; } public String getTypedLogin() { String login = dialog != null ? dialog.getTypedLogin() : null; return login; } public String getTypedPassword() { String password = dialog != null ? dialog.getTypedPassword() : null; return password; } private class LoginPasswordDialog extends Dialog { private String login; private String password; /** * @param parentShell */ protected LoginPasswordDialog(Shell parentShell) { super(parentShell); setShellStyle(getShellStyle() | SWT.DIALOG_TRIM); } /* (non-Javadoc) * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite) */ @Override protected Control createDialogArea(Composite parent) { parent.getShell().setText(UtilitiesNLS.LoginPasswordDialogCreator_DialogTItle0); Composite topComposite = new Composite(parent, SWT.FILL); GridLayout layout = new GridLayout(1, false); GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true); topComposite.setLayout(layout); topComposite.setLayoutData(layoutData); Label messageLabel = new Label(topComposite, SWT.NONE); layoutData = new GridData(SWT.FILL, SWT.CENTER, false, false); messageLabel.setLayoutData(layoutData); messageLabel .setText(" \n" + UtilitiesNLS.SDKLoginPasswordDialog_LoginInformationMessage + " " + url.substring(0, url.lastIndexOf("/")) + " "); //$NON-NLS-1$ //$NON-NLS-3$ //$NON-NLS-4$ Composite mainComposite = new Composite(topComposite, SWT.FILL); layout = new GridLayout(2, false); mainComposite.setLayout(layout); mainComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); Label loginLabel = new Label(mainComposite, SWT.NONE); layoutData = new GridData(SWT.LEFT, SWT.CENTER, false, false); loginLabel.setLayoutData(layoutData); loginLabel.setText(UtilitiesNLS.SDKLoginPasswordDialog_UsernameLabel); final Text loginText = new Text(mainComposite, SWT.SINGLE | SWT.BORDER); layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false); loginText.setLayoutData(layoutData); loginText.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { login = loginText.getText(); } }); Label passwordLabel = new Label(mainComposite, SWT.NONE); layoutData = new GridData(SWT.LEFT, SWT.CENTER, false, false); passwordLabel.setLayoutData(layoutData); passwordLabel.setText(UtilitiesNLS.SDKLoginPasswordDialog_PasswordLabel); final Text passwordText = new Text(mainComposite, SWT.SINGLE | SWT.BORDER | SWT.PASSWORD); layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false); passwordText.setLayoutData(layoutData); passwordText.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { password = passwordText.getText(); } }); return topComposite; } public String getTypedLogin() { return login; } public String getTypedPassword() { return password; } } }