/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.gui.communication.views.contributors; 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.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; 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; /** * Dialog for entering passphrase for an SSH connection. * * @author Brigitte Boden */ public class EnterPassphraseDialog extends Dialog { private static final int CHECKBOX_LABEL_WIDTH = 300; private static final String DIALOG_TITLE = "Enter passphrase"; private Button storePasswordButton; private String passphrase = ""; private boolean storePassphrase = false; protected EnterPassphraseDialog(Shell parentShell) { super(parentShell); } @Override protected void configureShell(Shell shell) { super.configureShell(shell); shell.setText(DIALOG_TITLE); } @Override protected Control createDialogArea(Composite parent) { Composite container = (Composite) super.createDialogArea(parent); GridLayout layout = new GridLayout(2, false); GridData containerGridData = new GridData(SWT.FILL, SWT.FILL, false, false); container.setLayoutData(containerGridData); container.setLayout(layout); final Text passphraseText = new Text(container, SWT.SINGLE | SWT.BORDER); passphraseText.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); passphraseText.setText(passphrase); passphraseText.setEchoChar('*'); @SuppressWarnings("unused") final Label placeholderLabel = new Label(container, SWT.NONE); // used for layouting GridData storePassphraseCheckboxGridData = new GridData(); storePassphraseCheckboxGridData.widthHint = CHECKBOX_LABEL_WIDTH; storePassphraseCheckboxGridData.horizontalSpan = 1; storePasswordButton = new Button(container, SWT.CHECK); storePasswordButton.setText("Store passphrase"); storePasswordButton.setLayoutData(storePassphraseCheckboxGridData); storePasswordButton.setSelection(storePassphrase); passphrase = passphraseText.getText(); passphraseText.addModifyListener(new ModifyListener() { @Override public void modifyText(ModifyEvent arg0) { passphrase = passphraseText.getText(); } }); storePassphrase = storePasswordButton.getSelection(); storePasswordButton.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent event) { storePassphrase = storePasswordButton.getSelection(); } @Override public void widgetDefaultSelected(SelectionEvent event) { widgetSelected(event); } }); return container; } public String getPassphrase() { return passphrase; } public boolean getStorePassphrase(){ return storePassphrase; } }