/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.ui.common.dialog;
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.Shell;
import org.eclipse.swt.widgets.Text;
import org.teiid.core.designer.util.I18nUtil;
import org.teiid.designer.ui.common.InternalUiConstants;
import org.teiid.designer.ui.common.util.WidgetFactory;
import org.teiid.designer.ui.common.widget.Dialog;
import org.teiid.designer.ui.common.widget.Label;
/**<p>
* </p>
* @since 8.0
*/
public abstract class AbstractPasswordDialog extends Dialog implements InternalUiConstants,
InternalUiConstants.Widgets {
//============================================================================================================================
// Constants
private static final String I18N_PREFIX = I18nUtil.getPropertyPrefix(AbstractPasswordDialog.class);
private static final String TITLE = getString("title"); //$NON-NLS-1$
private static final int COLUMN_COUNT = 2;
private String passwordLabel = PASSWORD_LABEL;
//============================================================================================================================
// Static Utility Methods
/**<p>
* </p>
* @since 4.0
*/
private static String getString(final String id) {
return Util.getString(I18N_PREFIX + id);
}
//============================================================================================================================
// Variables
private Text pwdFld;
//============================================================================================================================
// Constructors
/**<p>
* </p>
* @param parent
* @param title
* @since 4.0
*/
public AbstractPasswordDialog(final Shell shell) {
super(shell, TITLE);
}
/**<p>
* </p>
* @param parent
* @param title
* @since 4.0
*/
public AbstractPasswordDialog(final Shell shell, String overrideTitle, String passwordLabel) {
super(shell, overrideTitle);
if( passwordLabel != null ) {
this.passwordLabel = passwordLabel;
}
}
//============================================================================================================================
// Overridden Methods
/**<p>
* </p>
* @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
* @since 4.0
*/
@Override
protected Control createDialogArea(final Composite parent) {
final Composite dlgPanel = (Composite)super.createDialogArea(parent);
((GridLayout)dlgPanel.getLayout()).numColumns = COLUMN_COUNT;
((GridData)dlgPanel.getLayoutData()).minimumWidth = 320;
Label label = WidgetFactory.createLabel(dlgPanel, passwordLabel);
((GridData)label.getLayoutData()).verticalAlignment = GridData.VERTICAL_ALIGN_CENTER;
this.pwdFld = WidgetFactory.createPasswordField(dlgPanel);
return dlgPanel;
}
/**<p>
* </p>
* @see org.eclipse.jface.dialogs.Dialog#okPressed()
* @since 4.0
*/
@Override
protected void okPressed() {
if (isPasswordValid(this.pwdFld.getText())) {
super.okPressed();
}
}
//============================================================================================================================
// Abstract Methods
/**<p>
* </p>
* @since 4.0
*/
protected abstract boolean isPasswordValid(String password);
}