// ============================================================================
//
// Copyright (C) 2006-2016 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.dataprofiler.core.pattern;
import org.apache.log4j.Logger;
import org.eclipse.core.runtime.IStatus;
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.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.PlatformUI;
import org.talend.dataprofiler.core.PluginConstant;
import org.talend.dataprofiler.core.i18n.internal.DefaultMessagesImpl;
import org.talend.dataprofiler.core.ui.utils.CheckValueUtils;
import org.talend.dataprofiler.core.ui.wizard.AbstractWizardPage;
import org.talend.dataprofiler.help.HelpPlugin;
import org.talend.dataquality.domain.pattern.ExpressionType;
import org.talend.dq.analysis.parameters.PatternParameter;
/**
* DOC qzhang class global comment. Detailled comment <br/>
*
* $Id: talend.epf 1 2006-09-29 17:06:40Z qzhang $
*
*/
public class CreatePatternWizardPage2 extends AbstractWizardPage {
protected static Logger log = Logger.getLogger(CreatePatternWizardPage2.class);
private Text expressionText;
private Combo comboLang;
public static final String ERROR_MESSAGE = DefaultMessagesImpl.getString("CreatePatternWizardPage2.regularExpression"); //$NON-NLS-1$
public static final String SQLERROR_MESSAGE = DefaultMessagesImpl.getString("CreatePatternWizardPage2.sqlExpression"); //$NON-NLS-1$
private ExpressionType type;
private String expression;
private String language;
public CreatePatternWizardPage2(ExpressionType type) {
super();
this.type = type;
}
public CreatePatternWizardPage2(ExpressionType type, String expression, String language) {
super();
this.type = type;
this.expression = expression;
this.language = language;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
*/
public void createControl(Composite parent) {
Composite container = new Composite(parent, SWT.NONE);
GridLayout gdLayout = new GridLayout(2, false);
container.setLayout(gdLayout);
String s = "Regular expression:"; //$NON-NLS-1$
// Name
Label nameLab = new Label(container, SWT.NONE);
if (type != null) {
switch (type) {
case SQL_LIKE:
s = "SQL Like expression:"; //$NON-NLS-1$
//$FALL-THROUGH$
default:
}
}
nameLab.setText(s);
expressionText = new Text(container, SWT.BORDER);
expressionText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
setControl(container);
expressionText.setText(expression == null ? PluginConstant.EMPTY_STRING : expression);
nameLab = new Label(container, SWT.NONE);
nameLab.setText(DefaultMessagesImpl.getString("CreatePatternWizardPage2.languageSelection")); //$NON-NLS-1$
String[] types = PatternLanguageType.getAllLanguageTypes();
comboLang = new Combo(container, SWT.BORDER);
comboLang.setItems(types);
comboLang.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
if (types.length > 0 && language == null) {
language = PatternLanguageType.Default.getName();
}
comboLang.setText(language);
PatternParameter parameter = (PatternParameter) getParameter();
parameter.setLanguage(language);
parameter.setExpression(expression);
addHelpSurpport();
addListeners();
if (!checkFieldsValue()) {
this.setPageComplete(false);
}
}
/**
* DOC bzhou Comment method "addHelpSurpport".
*/
private void addHelpSurpport() {
if (getControl() != null) {
try {
PlatformUI.getWorkbench().getHelpSystem()
.setHelp(getControl(), HelpPlugin.getDefault().getPatternHelpContextID());
} catch (Exception e) {
log.error(e, e);
}
}
}
private void addListeners() {
expressionText.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
checkFieldsValue();
if (isStatusOnValid()) {
PatternParameter parameter = (PatternParameter) getParameter();
parameter.setExpression(expressionText.getText());
setPageComplete(true);
}
}
});
comboLang.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
PatternParameter parameter = (PatternParameter) getParameter();
parameter.setLanguage(comboLang.getText());
}
});
}
@Override
public boolean checkFieldsValue() {
if (expressionText.getText().equals("")) { //$NON-NLS-1$
updateStatus(IStatus.ERROR, MSG_EMPTY);
return false;
}
if (!CheckValueUtils.isPatternValue(expressionText.getText())) {
if (type != null) {
switch (type) {
case SQL_LIKE:
updateStatus(IStatus.ERROR, SQLERROR_MESSAGE);
break;
default:
updateStatus(IStatus.ERROR, ERROR_MESSAGE);
}
} else {
updateStatus(IStatus.ERROR, ERROR_MESSAGE);
}
return false;
}
updateStatus(IStatus.OK, MSG_OK);
return true;
}
}