/**
* This file is part of Archiv-Editor.
*
* The software Archiv-Editor serves as a client user interface for working with
* the Person Data Repository. See: pdr.bbaw.de
*
* The software Archiv-Editor was developed at the Berlin-Brandenburg Academy
* of Sciences and Humanities, Jägerstr. 22/23, D-10117 Berlin.
* www.bbaw.de
*
* Copyright (C) 2010-2013 Berlin-Brandenburg Academy
* of Sciences and Humanities
*
* The software Archiv-Editor was developed by @author: Christoph Plutte.
*
* Archiv-Editor is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Archiv-Editor is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Archiv-Editor.
* If not, see <http://www.gnu.org/licenses/lgpl-3.0.html>.
*/
/*
* @author: Christoph Plutte
*/
package org.bbaw.pdr.ae.errorreport.view;
import org.bbaw.pdr.ae.errorreport.Activator;
import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
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;
/**
* @author cplutte Class creates login dialog for entering the user name. TODO
* it has to be adapted to dynamic data TODO vielleicht ist es besser,
* wenn der dialog nicht schon beim Start öffnet, sondern erst nachdem
* das Programm geladen ist und wenn der Benutzer eine erste Aktion
* ausführen möchte.
*/
public class MailSettingsDialog extends TitleAreaDialog
{
/** singleton instace of facade. */
// private Facade facade = Facade.getInstanz();
private Text _smtpHostName;
/** The user name. */
private Text _userName;
/** The user password. */
private Text _userPassword;
/** The user adress. */
private Text _userAdress;
/** Logger. */
// private static ILog iLogger =
// org.bbaw.pdr.ae.view.Activator.getILogger();
// public static String getuserName() {
// return userName;
// }
//
// public void setUserName(String userName) {
// this.userName = userName;
// }
public MailSettingsDialog(final Shell parentShell)
{
super(parentShell);
}
@Override
public final void create()
{
super.create();
// Set the title
setTitle(Messages.getString("ErrorDialog_mail_dialog_title"));
// Set the message
setMessage(Messages.getString("ErrorDialog_mail_dialog_message"), IMessageProvider.INFORMATION);
}
@Override
protected final void createButtonsForButtonBar(final Composite parent)
{
GridData gridData = new GridData();
gridData.verticalAlignment = GridData.FILL;
gridData.horizontalSpan = 3;
gridData.grabExcessHorizontalSpace = true;
gridData.grabExcessVerticalSpace = true;
gridData.horizontalAlignment = SWT.CENTER;
parent.setLayoutData(gridData);
// Create Add button
// Own method as we need to overview the SelectionAdapter
createOkButton(parent, OK, Messages.getString("ErrorDialog_save"), true);
// Add a SelectionListener
// Create Cancel button
Button cancelButton = createButton(parent, CANCEL, Messages.getString("ErrorDialog_cancel"), false);
// Add a SelectionListener
cancelButton.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent e)
{
setReturnCode(CANCEL);
close();
}
});
}
@Override
protected final Control createDialogArea(final Composite parent)
{
Composite mainComposite = new Composite(parent, SWT.NONE);
mainComposite.setLayoutData(new GridData());
((GridData) mainComposite.getLayoutData()).verticalAlignment = SWT.FILL;
((GridData) mainComposite.getLayoutData()).horizontalAlignment = SWT.FILL;
((GridData) mainComposite.getLayoutData()).minimumHeight = 90;
((GridData) mainComposite.getLayoutData()).grabExcessHorizontalSpace = true;
mainComposite.setLayout(new GridLayout());
((GridLayout) mainComposite.getLayout()).makeColumnsEqualWidth = false;
((GridLayout) mainComposite.getLayout()).numColumns = 2;
Label titleLable = new Label(mainComposite, SWT.NONE);
titleLable.setText(Messages.getString("ErrorDialog_mail_dialog_subtitle"));
titleLable.setLayoutData(new GridData());
((GridData) titleLable.getLayoutData()).horizontalSpan = 2;
Label smtpHostLabel = new Label(mainComposite, SWT.NONE);
smtpHostLabel.setText(Messages.getString("ErrorDialog_smtp_host"));
smtpHostLabel.setLayoutData(new GridData());
_smtpHostName = new Text(mainComposite, SWT.BORDER);
_smtpHostName.setLayoutData(new GridData());
((GridData) _smtpHostName.getLayoutData()).horizontalAlignment = SWT.FILL;
((GridData) _smtpHostName.getLayoutData()).grabExcessHorizontalSpace = true;
_smtpHostName.setText(Activator.getDefault().getPreferenceStore().getString("MAIL_SMTP_HOST_NAME")); //$NON-NLS-1$
Label userAdressLabel = new Label(mainComposite, SWT.NONE);
userAdressLabel.setText(Messages.getString("ErrorDialog_sender_email"));
userAdressLabel.setLayoutData(new GridData());
_userAdress = new Text(mainComposite, SWT.BORDER);
_userAdress.setLayoutData(new GridData());
((GridData) _userAdress.getLayoutData()).horizontalAlignment = SWT.FILL;
((GridData) _userAdress.getLayoutData()).grabExcessHorizontalSpace = true;
_userAdress.setText(Activator.getDefault().getPreferenceStore().getString("MAIL_ADRESS_SENDER")); //$NON-NLS-1$
Label userNameLabel = new Label(mainComposite, SWT.NONE);
userNameLabel.setText(Messages.getString("ErrorDialog_user_name"));
userNameLabel.setLayoutData(new GridData());
_userName = new Text(mainComposite, SWT.BORDER);
_userName.setLayoutData(new GridData());
((GridData) _userName.getLayoutData()).horizontalAlignment = SWT.FILL;
((GridData) _userName.getLayoutData()).grabExcessHorizontalSpace = true;
_userName.setText(Activator.getDefault().getPreferenceStore().getString("MAIL_SMTP_AUTH_USER")); //$NON-NLS-1$
Label userPasswordLabel = new Label(mainComposite, SWT.NONE);
userPasswordLabel.setText(Messages.getString("ErrorDialog_password_not_saved"));
userPasswordLabel.setLayoutData(new GridData());
_userPassword = new Text(mainComposite, SWT.BORDER | SWT.PASSWORD);
_userPassword.setLayoutData(new GridData());
((GridData) _userPassword.getLayoutData()).horizontalAlignment = SWT.FILL;
((GridData) _userPassword.getLayoutData()).grabExcessHorizontalSpace = true;
_userPassword.setText(""); //$NON-NLS-1$
parent.pack();
return parent;
}
/**
* creates OKButton.
* @param parent parent composite
* @param id button id
* @param label button label
* @param defaultButton is default
* @return button
*/
protected final Button createOkButton(final Composite parent, final int id, final String label,
final boolean defaultButton)
{
// increment the number of columns in the button bar
((GridLayout) parent.getLayout()).numColumns++;
Button button = new Button(parent, SWT.PUSH);
button.setText(label);
button.setFont(JFaceResources.getDialogFont());
button.setData(new Integer(id));
button.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(final SelectionEvent event)
{
if (isValidInput())
{
okPressed();
saveInput();
close();
}
}
});
if (defaultButton)
{
Shell shell = parent.getShell();
if (shell != null)
{
shell.setDefaultButton(button);
}
}
setButtonLayoutData(button);
return button;
}
@Override
protected final boolean isResizable()
{
return false;
}
/**
* checks if input is valid.
* @return boolean valid TODO die Überprüfung des Benutzernamens und
* Passwortes soll nicht hier, sondern in der Controller-Schicht
* oder sogar in der DAtenhaltung aus geführt werden. TODO
* User-datenbank einbauen.
*/
private boolean isValidInput()
{
return true;
}
@Override
protected final void okPressed()
{
saveInput();
// super.okPressed();
}
/**
* if user name and password are correct the identified current user is
* saved as currentUser in facade.
*/
private void saveInput()
{
Activator.getDefault().getPreferenceStore().setValue("MAIL_ADRESS_SENDER", _userAdress.getText()); //$NON-NLS-1$
Activator.getDefault().getPreferenceStore().setValue("MAIL_SMTP_HOST_NAME", _smtpHostName.getText()); //$NON-NLS-1$
Activator.getDefault().getPreferenceStore().setValue("MAIL_SMTP_AUTH_USER", _userName.getText()); //$NON-NLS-1$
Activator.getDefault().getPreferenceStore().setValue("MAIL_SMTP_AUTH_PWD", _userPassword.getText()); //$NON-NLS-1$
}
}