/*
* Copyright (C) 2011 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.android.sdkuilib.ui;
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.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
/**
* Dialog which collects from the user his/her login and password.
*/
public class AuthenticationDialog extends GridDialog {
private Text mTxtLogin;
private Text mTxtPassword;
private Text mTxtWorkstation;
private Text mTxtDomain;
private String mTitle;
private String mMessage;
private static String sLogin = "";
private static String sPassword = "";
private static String sWorkstation = "";
private static String sDomain = "";
/**
* Constructor which retrieves the parent {@link Shell} and the message to
* be displayed in this dialog.
*
* @param parentShell Parent Shell
* @param title Title of the window.
* @param message Message the be displayed in this dialog.
*/
public AuthenticationDialog(Shell parentShell, String title, String message) {
super(parentShell, 1, false);
// assign fields
mTitle = title;
mMessage = message;
}
@Override
public void createDialogContent(Composite parent) {
// Configure Dialog
getShell().setText(mTitle);
GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
parent.setLayoutData(data);
// Upper Composite
Composite upperComposite = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout(2, false);
layout.verticalSpacing = 10;
upperComposite.setLayout(layout);
data = new GridData(SWT.FILL, SWT.CENTER, true, true);
upperComposite.setLayoutData(data);
// add message label
Label lblMessage = new Label(upperComposite, SWT.WRAP);
lblMessage.setText(mMessage);
data = new GridData(SWT.FILL, SWT.CENTER, true, true, 2, 1);
data.widthHint = 500;
lblMessage.setLayoutData(data);
// add user name label and text field
Label lblUserName = new Label(upperComposite, SWT.NONE);
lblUserName.setText("Login:");
data = new GridData(SWT.LEFT, SWT.CENTER, false, false);
lblUserName.setLayoutData(data);
mTxtLogin = new Text(upperComposite, SWT.SINGLE | SWT.BORDER);
data = new GridData(SWT.FILL, SWT.CENTER, true, false);
mTxtLogin.setLayoutData(data);
mTxtLogin.setFocus();
mTxtLogin.setText(sLogin);
mTxtLogin.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent arg0) {
sLogin = mTxtLogin.getText().trim();
}
});
// add password label and text field
Label lblPassword = new Label(upperComposite, SWT.NONE);
lblPassword.setText("Password:");
data = new GridData(SWT.LEFT, SWT.CENTER, false, false);
lblPassword.setLayoutData(data);
mTxtPassword = new Text(upperComposite, SWT.SINGLE | SWT.PASSWORD | SWT.BORDER);
data = new GridData(SWT.FILL, SWT.CENTER, true, false);
mTxtPassword.setLayoutData(data);
mTxtPassword.setText(sPassword);
mTxtPassword.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent arg0) {
sPassword = mTxtPassword.getText();
}
});
// add a label indicating that the following two fields are optional
Label lblInfo = new Label(upperComposite, SWT.NONE);
lblInfo.setText("Provide the following info if your proxy uses NTLM authentication. Leave blank otherwise.");
data = new GridData();
data.horizontalSpan = 2;
lblInfo.setLayoutData(data);
// add workstation label and text field
Label lblWorkstation = new Label(upperComposite, SWT.NONE);
lblWorkstation.setText("Workstation:");
data = new GridData(SWT.LEFT, SWT.CENTER, false, false);
lblWorkstation.setLayoutData(data);
mTxtWorkstation = new Text(upperComposite, SWT.SINGLE | SWT.BORDER);
data = new GridData(SWT.FILL, SWT.CENTER, true, false);
mTxtWorkstation.setLayoutData(data);
mTxtWorkstation.setText(sWorkstation);
mTxtWorkstation.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent arg0) {
sWorkstation = mTxtWorkstation.getText().trim();
}
});
// add domain label and text field
Label lblDomain = new Label(upperComposite, SWT.NONE);
lblDomain.setText("Domain:");
data = new GridData(SWT.LEFT, SWT.CENTER, false, false);
lblDomain.setLayoutData(data);
mTxtDomain = new Text(upperComposite, SWT.SINGLE | SWT.BORDER);
data = new GridData(SWT.FILL, SWT.CENTER, true, false);
mTxtDomain.setLayoutData(data);
mTxtDomain.setText(sDomain);
mTxtDomain.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent arg0) {
sDomain = mTxtDomain.getText().trim();
}
});
}
/**
* Retrieves the Login field information
*
* @return Login field value or empty String. Return value is never null
*/
public String getLogin() {
return sLogin;
}
/**
* Retrieves the Password field information
*
* @return Password field value or empty String. Return value is never null
*/
public String getPassword() {
return sPassword;
}
/**
* Retrieves the workstation field information
*
* @return Workstation field value or empty String. Return value is never null
*/
public String getWorkstation() {
return sWorkstation;
}
/**
* Retrieves the domain field information
*
* @return Domain field value or empty String. Return value is never null
*/
public String getDomain() {
return sDomain;
}
}