package com.trail2peak.pdi.fastjsoninput;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CCombo;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.ShellAdapter;
import org.eclipse.swt.events.ShellEvent;
import org.eclipse.swt.graphics.Cursor;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
import org.pentaho.di.core.Const;
import org.pentaho.di.core.Props;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.fileinput.FileInputList;
import org.pentaho.di.core.row.RowMetaInterface;
import org.pentaho.di.core.row.ValueMeta;
import org.pentaho.di.i18n.BaseMessages;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;
import org.pentaho.di.trans.TransPreviewFactory;
import org.pentaho.di.trans.step.BaseStepMeta;
import org.pentaho.di.trans.step.StepDialogInterface;
import org.pentaho.di.ui.core.dialog.EnterNumberDialog;
import org.pentaho.di.ui.core.dialog.EnterSelectionDialog;
import org.pentaho.di.ui.core.dialog.EnterTextDialog;
import org.pentaho.di.ui.core.dialog.ErrorDialog;
import org.pentaho.di.ui.core.dialog.PreviewRowsDialog;
import org.pentaho.di.ui.core.widget.ColumnInfo;
import org.pentaho.di.ui.core.widget.TableView;
import org.pentaho.di.ui.core.widget.TextVar;
import org.pentaho.di.ui.trans.dialog.TransPreviewProgressDialog;
import org.pentaho.di.ui.trans.step.BaseStepDialog;
public class FastJsonInputDialog extends BaseStepDialog implements
StepDialogInterface {
private static Class<?> PKG = FastJsonInputMeta.class; // for i18n purposes,
// needed by
// Translator2!!
private CTabFolder wTabFolder;
private FormData fdTabFolder;
private CTabItem wFileTab, wContentTab, wFieldsTab;
private Composite wFileComp, wContentComp, wFieldsComp;
private FormData fdFileComp, fdContentComp, fdFieldsComp;
private Label wlFilename, wlSourceIsAFile;
private Button wbbFilename; // Browse: add file or directory
private Button wbdFilename; // Delete
private Button wbeFilename; // Edit
private Button wbaFilename; // Add or change
private TextVar wFilename;
private FormData fdlFilename, fdbFilename, fdbdFilename, fdbeFilename,
fdbaFilename, fdFilename;
private Label wlFilenameList;
private TableView wFilenameList;
private FormData fdlFilenameList, fdFilenameList;
private Label wlFilemask;
private TextVar wFilemask;
private FormData fdlFilemask, fdFilemask;
private Button wbShowFiles;
private FormData fdbShowFiles;
private FormData fdlFieldValue, fdlSourceStreamField, fdlSourceIsAFile;
private FormData fdFieldValue, fdSourceStreamField;
private FormData fdOutputField, fdSourceIsAFile, fdAdditionalFields,
fdAddFileResult, fdConf;
private Label wlSourceField, wlSourceStreamField;
private CCombo wFieldValue;
private Button wSourceStreamField, wSourceIsAFile;
private Label wlInclFilename;
private Button wInclFilename, wAddResult;
private FormData fdlInclFilename, fdInclFilename, fdAddResult,
fdlAddResult;
private Label wlreadUrl;
private Button wreadUrl;
private FormData fdlreadUrl, fdreadUrl;
private Label wlremoveSourceField;
private Button wremoveSourceField;
private FormData fdlremoveSourceField, fdremoveSourceField;
private Label wlInclFilenameField;
private TextVar wInclFilenameField;
private FormData fdlInclFilenameField, fdInclFilenameField;
private Label wlInclRownum, wlAddResult;
private Button wInclRownum;
private FormData fdlInclRownum, fdRownum;
private Label wlInclRownumField;
private TextVar wInclRownumField;
private FormData fdlInclRownumField, fdInclRownumField;
private Label wlLimit;
private Text wLimit;
private FormData fdlLimit, fdLimit;
private TableView wFields;
private FormData fdFields;
private Group wOutputField;
private Group wAdditionalFields;
private Group wAddFileResult;
private Group wConf;
private Label wlExcludeFilemask;
private TextVar wExcludeFilemask;
private FormData fdlExcludeFilemask, fdExcludeFilemask;
// ignore empty files flag
private Label wlIgnoreEmptyFile;
private Button wIgnoreEmptyFile;
private FormData fdlIgnoreEmptyFile, fdIgnoreEmptyFile;
// ignore missing path
private Label wlIgnoreMissingPath;
private Button wIgnoreMissingPath;
private FormData fdlIgnoreMissingPath, fdIgnoreMissingPath;
// default path leaf to null
private Label wlDefaultPathLeafToNull;
private Button wDefaultPathLeafToNull;
private FormData fdlDefaultPathLeafToNull, fdDefaultPathLeafToNull;
// do not fail if no files?
private Label wldoNotFailIfNoFile;
private Button wdoNotFailIfNoFile;
private FormData fdldoNotFailIfNoFile, fddoNotFailIfNoFile;
private CTabItem wAdditionalFieldsTab;
private Composite wAdditionalFieldsComp;
private FormData fdAdditionalFieldsComp;
private Label wlShortFileFieldName;
private FormData fdlShortFileFieldName;
private TextVar wShortFileFieldName;
private FormData fdShortFileFieldName;
private Label wlPathFieldName;
private FormData fdlPathFieldName;
private TextVar wPathFieldName;
private FormData fdPathFieldName;
private Label wlIsHiddenName;
private FormData fdlIsHiddenName;
private TextVar wIsHiddenName;
private FormData fdIsHiddenName;
private Label wlLastModificationTimeName;
private FormData fdlLastModificationTimeName;
private TextVar wLastModificationTimeName;
private FormData fdLastModificationTimeName;
private Label wlUriName;
private FormData fdlUriName;
private TextVar wUriName;
private FormData fdUriName;
private Label wlRootUriName;
private FormData fdlRootUriName;
private TextVar wRootUriName;
private FormData fdRootUriName;
private Label wlExtensionFieldName;
private FormData fdlExtensionFieldName;
private TextVar wExtensionFieldName;
private FormData fdExtensionFieldName;
private Label wlSizeFieldName;
private FormData fdlSizeFieldName;
private TextVar wSizeFieldName;
private FormData fdSizeFieldName;
private FastJsonInputMeta input;
private int middle;
private int margin;
private ModifyListener lsMod;
public FastJsonInputDialog(Shell parent, Object in, TransMeta transMeta,
String sname) {
super(parent, (BaseStepMeta) in, transMeta, sname);
input = (FastJsonInputMeta) in;
}
public String open() {
Shell parent = getParent();
Display display = parent.getDisplay();
shell = new Shell(parent, SWT.DIALOG_TRIM | SWT.RESIZE | SWT.MAX
| SWT.MIN);
props.setLook(shell);
setShellImage(shell, input);
lsMod = new ModifyListener() {
public void modifyText(ModifyEvent e) {
input.setChanged();
}
};
changed = input.hasChanged();
FormLayout formLayout = new FormLayout();
formLayout.marginWidth = Const.FORM_MARGIN;
formLayout.marginHeight = Const.FORM_MARGIN;
shell.setLayout(formLayout);
shell.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.DialogTitle"));
middle = props.getMiddlePct();
margin = Const.MARGIN;
// Stepname line
wlStepname = new Label(shell, SWT.RIGHT);
wlStepname
.setText(BaseMessages.getString(PKG, "System.Label.StepName"));
props.setLook(wlStepname);
fdlStepname = new FormData();
fdlStepname.left = new FormAttachment(0, 0);
fdlStepname.top = new FormAttachment(0, margin);
fdlStepname.right = new FormAttachment(middle, -margin);
wlStepname.setLayoutData(fdlStepname);
wStepname = new Text(shell, SWT.SINGLE | SWT.LEFT | SWT.BORDER);
wStepname.setText(stepname);
props.setLook(wStepname);
wStepname.addModifyListener(lsMod);
fdStepname = new FormData();
fdStepname.left = new FormAttachment(middle, 0);
fdStepname.top = new FormAttachment(0, margin);
fdStepname.right = new FormAttachment(100, 0);
wStepname.setLayoutData(fdStepname);
wTabFolder = new CTabFolder(shell, SWT.BORDER);
props.setLook(wTabFolder, Props.WIDGET_STYLE_TAB);
// ////////////////////////
// START OF FILE TAB ///
// ////////////////////////
wFileTab = new CTabItem(wTabFolder, SWT.NONE);
wFileTab.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.File.Tab"));
wFileComp = new Composite(wTabFolder, SWT.NONE);
props.setLook(wFileComp);
FormLayout fileLayout = new FormLayout();
fileLayout.marginWidth = 3;
fileLayout.marginHeight = 3;
wFileComp.setLayout(fileLayout);
// ///////////////////////////////
// START OF Output Field GROUP //
// ///////////////////////////////
wOutputField = new Group(wFileComp, SWT.SHADOW_NONE);
props.setLook(wOutputField);
wOutputField.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.wOutputField.Label"));
FormLayout outputfieldgroupLayout = new FormLayout();
outputfieldgroupLayout.marginWidth = 10;
outputfieldgroupLayout.marginHeight = 10;
wOutputField.setLayout(outputfieldgroupLayout);
// Is source string defined in a Field
wlSourceStreamField = new Label(wOutputField, SWT.RIGHT);
wlSourceStreamField.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.wlSourceStreamField.Label"));
props.setLook(wlSourceStreamField);
fdlSourceStreamField = new FormData();
fdlSourceStreamField.left = new FormAttachment(0, -margin);
fdlSourceStreamField.top = new FormAttachment(0, margin);
fdlSourceStreamField.right = new FormAttachment(middle, -2 * margin);
wlSourceStreamField.setLayoutData(fdlSourceStreamField);
wSourceStreamField = new Button(wOutputField, SWT.CHECK);
props.setLook(wSourceStreamField);
wSourceStreamField.setToolTipText(BaseMessages.getString(PKG,
"FastJsonInputDialog.wSourceStreamField.Tooltip"));
fdSourceStreamField = new FormData();
fdSourceStreamField.left = new FormAttachment(middle, -margin);
fdSourceStreamField.top = new FormAttachment(0, margin);
wSourceStreamField.setLayoutData(fdSourceStreamField);
SelectionAdapter lsstream = new SelectionAdapter() {
public void widgetSelected(SelectionEvent arg0) {
ActiveStreamField();
input.setChanged();
}
};
wSourceStreamField.addSelectionListener(lsstream);
// Is source is a file?
wlSourceIsAFile = new Label(wOutputField, SWT.RIGHT);
wlSourceIsAFile.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.SourceIsAFile.Label"));
props.setLook(wlSourceIsAFile);
fdlSourceIsAFile = new FormData();
fdlSourceIsAFile.left = new FormAttachment(0, -margin);
fdlSourceIsAFile.top = new FormAttachment(wSourceStreamField, margin);
fdlSourceIsAFile.right = new FormAttachment(middle, -2 * margin);
wlSourceIsAFile.setLayoutData(fdlSourceIsAFile);
wSourceIsAFile = new Button(wOutputField, SWT.CHECK);
props.setLook(wSourceIsAFile);
wSourceIsAFile.setToolTipText(BaseMessages.getString(PKG,
"FastJsonInputDialog.SourceIsAFile.Tooltip"));
fdSourceIsAFile = new FormData();
fdSourceIsAFile.left = new FormAttachment(middle, -margin);
fdSourceIsAFile.top = new FormAttachment(wSourceStreamField, margin);
wSourceIsAFile.setLayoutData(fdSourceIsAFile);
SelectionAdapter lssourceisafile = new SelectionAdapter() {
public void widgetSelected(SelectionEvent arg0) {
if (wSourceIsAFile.getSelection()) {
wreadUrl.setSelection(false);
}
input.setChanged();
}
};
wSourceIsAFile.addSelectionListener(lssourceisafile);
// read url as source ?
wlreadUrl = new Label(wOutputField, SWT.RIGHT);
wlreadUrl.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.readUrl.Label"));
props.setLook(wlreadUrl);
fdlreadUrl = new FormData();
fdlreadUrl.left = new FormAttachment(0, -margin);
fdlreadUrl.top = new FormAttachment(wSourceIsAFile, margin);
fdlreadUrl.right = new FormAttachment(middle, -2 * margin);
wlreadUrl.setLayoutData(fdlreadUrl);
wreadUrl = new Button(wOutputField, SWT.CHECK);
props.setLook(wreadUrl);
wreadUrl.setToolTipText(BaseMessages.getString(PKG,
"FastJsonInputDialog.readUrl.Tooltip"));
fdreadUrl = new FormData();
fdreadUrl.left = new FormAttachment(middle, -margin);
fdreadUrl.top = new FormAttachment(wSourceIsAFile, margin);
wreadUrl.setLayoutData(fdreadUrl);
SelectionAdapter lsreadurl = new SelectionAdapter() {
public void widgetSelected(SelectionEvent arg0) {
if (wreadUrl.getSelection()) {
wSourceIsAFile.setSelection(false);
}
input.setChanged();
}
};
wreadUrl.addSelectionListener(lsreadurl);
// If source string defined in a Field
wlSourceField = new Label(wOutputField, SWT.RIGHT);
wlSourceField.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.wlSourceField.Label"));
props.setLook(wlSourceField);
fdlFieldValue = new FormData();
fdlFieldValue.left = new FormAttachment(0, -margin);
fdlFieldValue.top = new FormAttachment(wreadUrl, margin);
fdlFieldValue.right = new FormAttachment(middle, -2 * margin);
wlSourceField.setLayoutData(fdlFieldValue);
wFieldValue = new CCombo(wOutputField, SWT.BORDER | SWT.READ_ONLY);
wFieldValue.setEditable(true);
props.setLook(wFieldValue);
wFieldValue.addModifyListener(lsMod);
fdFieldValue = new FormData();
fdFieldValue.left = new FormAttachment(middle, -margin);
fdFieldValue.top = new FormAttachment(wreadUrl, margin);
fdFieldValue.right = new FormAttachment(100, -margin);
wFieldValue.setLayoutData(fdFieldValue);
wFieldValue.addFocusListener(new FocusListener() {
public void focusLost(org.eclipse.swt.events.FocusEvent e) {
}
public void focusGained(org.eclipse.swt.events.FocusEvent e) {
Cursor busy = new Cursor(shell.getDisplay(), SWT.CURSOR_WAIT);
shell.setCursor(busy);
setSourceStreamField();
shell.setCursor(null);
busy.dispose();
}
});
fdOutputField = new FormData();
fdOutputField.left = new FormAttachment(0, margin);
fdOutputField.top = new FormAttachment(wFilenameList, margin);
fdOutputField.right = new FormAttachment(100, -margin);
wOutputField.setLayoutData(fdOutputField);
// Remove source field from output stream?
wlremoveSourceField = new Label(wOutputField, SWT.RIGHT);
wlremoveSourceField.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.removeSourceField.Label"));
props.setLook(wlremoveSourceField);
fdlremoveSourceField = new FormData();
fdlremoveSourceField.left = new FormAttachment(0, -margin);
fdlremoveSourceField.top = new FormAttachment(wFieldValue, margin);
fdlremoveSourceField.right = new FormAttachment(middle, -2 * margin);
wlremoveSourceField.setLayoutData(fdlremoveSourceField);
wremoveSourceField = new Button(wOutputField, SWT.CHECK);
props.setLook(wremoveSourceField);
wremoveSourceField.setToolTipText(BaseMessages.getString(PKG,
"FastJsonInputDialog.removeSourceField.Tooltip"));
fdremoveSourceField = new FormData();
fdremoveSourceField.left = new FormAttachment(middle, -margin);
fdremoveSourceField.top = new FormAttachment(wFieldValue, margin);
wremoveSourceField.setLayoutData(fdremoveSourceField);
// ///////////////////////////////////////////////////////////
// / END OF Output Field GROUP
// ///////////////////////////////////////////////////////////
// Filename line
wlFilename = new Label(wFileComp, SWT.RIGHT);
wlFilename.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.Filename.Label"));
props.setLook(wlFilename);
fdlFilename = new FormData();
fdlFilename.left = new FormAttachment(0, 0);
fdlFilename.top = new FormAttachment(wOutputField, margin);
fdlFilename.right = new FormAttachment(middle, -margin);
wlFilename.setLayoutData(fdlFilename);
wbbFilename = new Button(wFileComp, SWT.PUSH | SWT.CENTER);
props.setLook(wbbFilename);
wbbFilename.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.FilenameBrowse.Button"));
wbbFilename.setToolTipText(BaseMessages.getString(PKG,
"System.Tooltip.BrowseForFileOrDirAndAdd"));
fdbFilename = new FormData();
fdbFilename.right = new FormAttachment(100, 0);
fdbFilename.top = new FormAttachment(wOutputField, margin);
wbbFilename.setLayoutData(fdbFilename);
wbaFilename = new Button(wFileComp, SWT.PUSH | SWT.CENTER);
props.setLook(wbaFilename);
wbaFilename.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.FilenameAdd.Button"));
wbaFilename.setToolTipText(BaseMessages.getString(PKG,
"FastJsonInputDialog.FilenameAdd.Tooltip"));
fdbaFilename = new FormData();
fdbaFilename.right = new FormAttachment(wbbFilename, -margin);
fdbaFilename.top = new FormAttachment(wOutputField, margin);
wbaFilename.setLayoutData(fdbaFilename);
wFilename = new TextVar(transMeta, wFileComp, SWT.SINGLE | SWT.LEFT
| SWT.BORDER);
props.setLook(wFilename);
wFilename.addModifyListener(lsMod);
fdFilename = new FormData();
fdFilename.left = new FormAttachment(middle, 0);
fdFilename.right = new FormAttachment(wbaFilename, -margin);
fdFilename.top = new FormAttachment(wOutputField, margin);
wFilename.setLayoutData(fdFilename);
wlFilemask = new Label(wFileComp, SWT.RIGHT);
wlFilemask.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.RegExp.Label"));
props.setLook(wlFilemask);
fdlFilemask = new FormData();
fdlFilemask.left = new FormAttachment(0, 0);
fdlFilemask.top = new FormAttachment(wFilename, margin);
fdlFilemask.right = new FormAttachment(middle, -margin);
wlFilemask.setLayoutData(fdlFilemask);
wFilemask = new TextVar(transMeta, wFileComp, SWT.SINGLE | SWT.LEFT
| SWT.BORDER);
props.setLook(wFilemask);
wFilemask.addModifyListener(lsMod);
fdFilemask = new FormData();
fdFilemask.left = new FormAttachment(middle, 0);
fdFilemask.top = new FormAttachment(wFilename, margin);
fdFilemask.right = new FormAttachment(100, 0);
wFilemask.setLayoutData(fdFilemask);
wlExcludeFilemask = new Label(wFileComp, SWT.RIGHT);
wlExcludeFilemask.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.ExcludeFilemask.Label"));
props.setLook(wlExcludeFilemask);
fdlExcludeFilemask = new FormData();
fdlExcludeFilemask.left = new FormAttachment(0, 0);
fdlExcludeFilemask.top = new FormAttachment(wFilemask, margin);
fdlExcludeFilemask.right = new FormAttachment(middle, -margin);
wlExcludeFilemask.setLayoutData(fdlExcludeFilemask);
wExcludeFilemask = new TextVar(transMeta, wFileComp, SWT.SINGLE
| SWT.LEFT | SWT.BORDER);
props.setLook(wExcludeFilemask);
wExcludeFilemask.addModifyListener(lsMod);
fdExcludeFilemask = new FormData();
fdExcludeFilemask.left = new FormAttachment(middle, 0);
fdExcludeFilemask.top = new FormAttachment(wFilemask, margin);
fdExcludeFilemask.right = new FormAttachment(wFilename, 0, SWT.RIGHT);
wExcludeFilemask.setLayoutData(fdExcludeFilemask);
// Filename list line
wlFilenameList = new Label(wFileComp, SWT.RIGHT);
wlFilenameList.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.FilenameList.Label"));
props.setLook(wlFilenameList);
fdlFilenameList = new FormData();
fdlFilenameList.left = new FormAttachment(0, 0);
fdlFilenameList.top = new FormAttachment(wExcludeFilemask, margin);
fdlFilenameList.right = new FormAttachment(middle, -margin);
wlFilenameList.setLayoutData(fdlFilenameList);
// Buttons to the right of the screen...
wbdFilename = new Button(wFileComp, SWT.PUSH | SWT.CENTER);
props.setLook(wbdFilename);
wbdFilename.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.FilenameRemove.Button"));
wbdFilename.setToolTipText(BaseMessages.getString(PKG,
"FastJsonInputDialog.FilenameRemove.Tooltip"));
fdbdFilename = new FormData();
fdbdFilename.right = new FormAttachment(100, 0);
fdbdFilename.top = new FormAttachment(wExcludeFilemask, 40);
wbdFilename.setLayoutData(fdbdFilename);
wbeFilename = new Button(wFileComp, SWT.PUSH | SWT.CENTER);
props.setLook(wbeFilename);
wbeFilename.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.FilenameEdit.Button"));
wbeFilename.setToolTipText(BaseMessages.getString(PKG,
"FastJsonInputDialog.FilenameEdit.Tooltip"));
fdbeFilename = new FormData();
fdbeFilename.right = new FormAttachment(100, 0);
fdbeFilename.left = new FormAttachment(wbdFilename, 0, SWT.LEFT);
fdbeFilename.top = new FormAttachment(wbdFilename, margin);
wbeFilename.setLayoutData(fdbeFilename);
wbShowFiles = new Button(wFileComp, SWT.PUSH | SWT.CENTER);
props.setLook(wbShowFiles);
wbShowFiles.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.ShowFiles.Button"));
fdbShowFiles = new FormData();
fdbShowFiles.left = new FormAttachment(middle, 0);
fdbShowFiles.bottom = new FormAttachment(100, 0);
wbShowFiles.setLayoutData(fdbShowFiles);
ColumnInfo[] colinfo = new ColumnInfo[5];
colinfo[0] = new ColumnInfo(BaseMessages.getString(PKG,
"FastJsonInputDialog.Files.Filename.Column"),
ColumnInfo.COLUMN_TYPE_TEXT, false);
colinfo[1] = new ColumnInfo(BaseMessages.getString(PKG,
"FastJsonInputDialog.Files.Wildcard.Column"),
ColumnInfo.COLUMN_TYPE_TEXT, false);
colinfo[2] = new ColumnInfo(BaseMessages.getString(PKG,
"FastJsonInputDialog.Files.ExcludeWildcard.Column"),
ColumnInfo.COLUMN_TYPE_TEXT, false);
colinfo[0].setUsingVariables(true);
colinfo[1].setUsingVariables(true);
colinfo[1].setToolTip(BaseMessages.getString(PKG,
"FastJsonInputDialog.Files.Wildcard.Tooltip"));
colinfo[2].setUsingVariables(true);
colinfo[2].setToolTip(BaseMessages.getString(PKG,
"FastJsonInputDialog.Files.ExcludeWildcard.Tooltip"));
colinfo[3] = new ColumnInfo(BaseMessages.getString(PKG,
"FastJsonInputDialog.Required.Column"),
ColumnInfo.COLUMN_TYPE_CCOMBO,
FastJsonInputMeta.RequiredFilesDesc);
colinfo[3].setToolTip(BaseMessages.getString(PKG,
"FastJsonInputDialog.Required.Tooltip"));
colinfo[4] = new ColumnInfo(BaseMessages.getString(PKG,
"FastJsonInputDialog.IncludeSubDirs.Column"),
ColumnInfo.COLUMN_TYPE_CCOMBO,
FastJsonInputMeta.RequiredFilesDesc);
colinfo[4].setToolTip(BaseMessages.getString(PKG,
"FastJsonInputDialog.IncludeSubDirs.Tooltip"));
wFilenameList = new TableView(transMeta, wFileComp, SWT.FULL_SELECTION
| SWT.SINGLE | SWT.BORDER, colinfo, 2, lsMod, props);
props.setLook(wFilenameList);
fdFilenameList = new FormData();
fdFilenameList.left = new FormAttachment(middle, 0);
fdFilenameList.right = new FormAttachment(wbdFilename, -margin);
fdFilenameList.top = new FormAttachment(wExcludeFilemask, margin);
fdFilenameList.bottom = new FormAttachment(wbShowFiles, -margin);
wFilenameList.setLayoutData(fdFilenameList);
fdFileComp = new FormData();
fdFileComp.left = new FormAttachment(0, 0);
fdFileComp.top = new FormAttachment(0, 0);
fdFileComp.right = new FormAttachment(100, 0);
fdFileComp.bottom = new FormAttachment(100, 0);
wFileComp.setLayoutData(fdFileComp);
wFileComp.layout();
wFileTab.setControl(wFileComp);
// ///////////////////////////////////////////////////////////
// / END OF FILE TAB
// ///////////////////////////////////////////////////////////
// ////////////////////////
// START OF CONTENT TAB///
// /
wContentTab = new CTabItem(wTabFolder, SWT.NONE);
wContentTab.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.Content.Tab"));
FormLayout contentLayout = new FormLayout();
contentLayout.marginWidth = 3;
contentLayout.marginHeight = 3;
wContentComp = new Composite(wTabFolder, SWT.NONE);
props.setLook(wContentComp);
wContentComp.setLayout(contentLayout);
// ///////////////////////////////
// START OF Conf Field GROUP //
// ///////////////////////////////
wConf = new Group(wContentComp, SWT.SHADOW_NONE);
props.setLook(wConf);
wConf.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.wConf.Label"));
FormLayout ConfgroupLayout = new FormLayout();
ConfgroupLayout.marginWidth = 10;
ConfgroupLayout.marginHeight = 10;
wConf.setLayout(ConfgroupLayout);
// Ignore Empty File
wlIgnoreEmptyFile = new Label(wConf, SWT.RIGHT);
wlIgnoreEmptyFile.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.IgnoreEmptyFile.Label"));
props.setLook(wlIgnoreEmptyFile);
fdlIgnoreEmptyFile = new FormData();
fdlIgnoreEmptyFile.left = new FormAttachment(0, 0);
fdlIgnoreEmptyFile.top = new FormAttachment(0, margin);
fdlIgnoreEmptyFile.right = new FormAttachment(middle, -margin);
wlIgnoreEmptyFile.setLayoutData(fdlIgnoreEmptyFile);
wIgnoreEmptyFile = new Button(wConf, SWT.CHECK);
props.setLook(wIgnoreEmptyFile);
wIgnoreEmptyFile.setToolTipText(BaseMessages.getString(PKG,
"FastJsonInputDialog.IgnoreEmptyFile.Tooltip"));
fdIgnoreEmptyFile = new FormData();
fdIgnoreEmptyFile.left = new FormAttachment(middle, 0);
fdIgnoreEmptyFile.top = new FormAttachment(0, margin);
wIgnoreEmptyFile.setLayoutData(fdIgnoreEmptyFile);
// do not fail if no files?
wldoNotFailIfNoFile = new Label(wConf, SWT.RIGHT);
wldoNotFailIfNoFile.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.doNotFailIfNoFile.Label"));
props.setLook(wldoNotFailIfNoFile);
fdldoNotFailIfNoFile = new FormData();
fdldoNotFailIfNoFile.left = new FormAttachment(0, 0);
fdldoNotFailIfNoFile.top = new FormAttachment(wIgnoreEmptyFile, margin);
fdldoNotFailIfNoFile.right = new FormAttachment(middle, -margin);
wldoNotFailIfNoFile.setLayoutData(fdldoNotFailIfNoFile);
wdoNotFailIfNoFile = new Button(wConf, SWT.CHECK);
props.setLook(wdoNotFailIfNoFile);
wdoNotFailIfNoFile.setToolTipText(BaseMessages.getString(PKG,
"FastJsonInputDialog.doNotFailIfNoFile.Tooltip"));
fddoNotFailIfNoFile = new FormData();
fddoNotFailIfNoFile.left = new FormAttachment(middle, 0);
fddoNotFailIfNoFile.top = new FormAttachment(wIgnoreEmptyFile, margin);
wdoNotFailIfNoFile.setLayoutData(fddoNotFailIfNoFile);
// Ignore missing path
wlIgnoreMissingPath = new Label(wConf, SWT.RIGHT);
wlIgnoreMissingPath.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.IgnoreMissingPath.Label"));
props.setLook(wlIgnoreMissingPath);
fdlIgnoreMissingPath = new FormData();
fdlIgnoreMissingPath.left = new FormAttachment(0, 0);
fdlIgnoreMissingPath.top = new FormAttachment(wdoNotFailIfNoFile,
margin);
fdlIgnoreMissingPath.right = new FormAttachment(middle, -margin);
wlIgnoreMissingPath.setLayoutData(fdlIgnoreMissingPath);
wIgnoreMissingPath = new Button(wConf, SWT.CHECK);
props.setLook(wIgnoreMissingPath);
wIgnoreMissingPath.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
input.setChanged();
}
});
wIgnoreMissingPath.setToolTipText(BaseMessages.getString(PKG,
"FastJsonInputDialog.IgnoreMissingPath.Tooltip"));
fdIgnoreMissingPath = new FormData();
fdIgnoreMissingPath.left = new FormAttachment(middle, 0);
fdIgnoreMissingPath.top = new FormAttachment(wdoNotFailIfNoFile, margin);
wIgnoreMissingPath.setLayoutData(fdIgnoreMissingPath);
// default path leaf to null
wlDefaultPathLeafToNull = new Label(wConf, SWT.RIGHT);
wlDefaultPathLeafToNull.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.DefaultPathLeafToNull.Label"));
props.setLook(wlDefaultPathLeafToNull);
fdlDefaultPathLeafToNull = new FormData();
fdlDefaultPathLeafToNull.left = new FormAttachment(0, 0);
fdlDefaultPathLeafToNull.top = new FormAttachment(wIgnoreMissingPath,
margin);
fdlDefaultPathLeafToNull.right = new FormAttachment(middle, -margin);
wlDefaultPathLeafToNull.setLayoutData(fdlDefaultPathLeafToNull);
wDefaultPathLeafToNull = new Button(wConf, SWT.CHECK);
props.setLook(wDefaultPathLeafToNull);
wDefaultPathLeafToNull.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
input.setChanged();
}
});
wDefaultPathLeafToNull.setToolTipText(BaseMessages.getString(PKG,
"FastJsonInputDialog.DefaultPathLeafToNull.Tooltip"));
fdDefaultPathLeafToNull = new FormData();
fdDefaultPathLeafToNull.left = new FormAttachment(middle, 0);
fdDefaultPathLeafToNull.top = new FormAttachment(wIgnoreMissingPath, margin);
wDefaultPathLeafToNull.setLayoutData(fdDefaultPathLeafToNull);
wlLimit = new Label(wConf, SWT.RIGHT);
wlLimit.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.Limit.Label"));
props.setLook(wlLimit);
fdlLimit = new FormData();
fdlLimit.left = new FormAttachment(0, 0);
fdlLimit.top = new FormAttachment(wDefaultPathLeafToNull, margin);
fdlLimit.right = new FormAttachment(middle, -margin);
wlLimit.setLayoutData(fdlLimit);
wLimit = new Text(wConf, SWT.SINGLE | SWT.LEFT | SWT.BORDER);
props.setLook(wLimit);
wLimit.addModifyListener(lsMod);
fdLimit = new FormData();
fdLimit.left = new FormAttachment(middle, 0);
fdLimit.top = new FormAttachment(wDefaultPathLeafToNull, margin);
fdLimit.right = new FormAttachment(100, 0);
wLimit.setLayoutData(fdLimit);
fdConf = new FormData();
fdConf.left = new FormAttachment(0, margin);
fdConf.top = new FormAttachment(0, margin);
fdConf.right = new FormAttachment(100, -margin);
wConf.setLayoutData(fdConf);
// ///////////////////////////////////////////////////////////
// / END OF Conf Field GROUP
// ///////////////////////////////////////////////////////////
// ///////////////////////////////
// START OF Additional Fields GROUP //
// ///////////////////////////////
wAdditionalFields = new Group(wContentComp, SWT.SHADOW_NONE);
props.setLook(wAdditionalFields);
wAdditionalFields.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.wAdditionalFields.Label"));
FormLayout AdditionalFieldsgroupLayout = new FormLayout();
AdditionalFieldsgroupLayout.marginWidth = 10;
AdditionalFieldsgroupLayout.marginHeight = 10;
wAdditionalFields.setLayout(AdditionalFieldsgroupLayout);
wlInclFilename = new Label(wAdditionalFields, SWT.RIGHT);
wlInclFilename.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.InclFilename.Label"));
props.setLook(wlInclFilename);
fdlInclFilename = new FormData();
fdlInclFilename.left = new FormAttachment(0, 0);
fdlInclFilename.top = new FormAttachment(wConf, 4 * margin);
fdlInclFilename.right = new FormAttachment(middle, -margin);
wlInclFilename.setLayoutData(fdlInclFilename);
wInclFilename = new Button(wAdditionalFields, SWT.CHECK);
props.setLook(wInclFilename);
wInclFilename.setToolTipText(BaseMessages.getString(PKG,
"FastJsonInputDialog.InclFilename.Tooltip"));
fdInclFilename = new FormData();
fdInclFilename.left = new FormAttachment(middle, 0);
fdInclFilename.top = new FormAttachment(wConf, 4 * margin);
wInclFilename.setLayoutData(fdInclFilename);
wlInclFilenameField = new Label(wAdditionalFields, SWT.LEFT);
wlInclFilenameField.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.InclFilenameField.Label"));
props.setLook(wlInclFilenameField);
fdlInclFilenameField = new FormData();
fdlInclFilenameField.left = new FormAttachment(wInclFilename, margin);
fdlInclFilenameField.top = new FormAttachment(wLimit, 4 * margin);
wlInclFilenameField.setLayoutData(fdlInclFilenameField);
wInclFilenameField = new TextVar(transMeta, wAdditionalFields,
SWT.SINGLE | SWT.LEFT | SWT.BORDER);
props.setLook(wInclFilenameField);
wInclFilenameField.addModifyListener(lsMod);
fdInclFilenameField = new FormData();
fdInclFilenameField.left = new FormAttachment(wlInclFilenameField,
margin);
fdInclFilenameField.top = new FormAttachment(wLimit, 4 * margin);
fdInclFilenameField.right = new FormAttachment(100, 0);
wInclFilenameField.setLayoutData(fdInclFilenameField);
wlInclRownum = new Label(wAdditionalFields, SWT.RIGHT);
wlInclRownum.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.InclRownum.Label"));
props.setLook(wlInclRownum);
fdlInclRownum = new FormData();
fdlInclRownum.left = new FormAttachment(0, 0);
fdlInclRownum.top = new FormAttachment(wInclFilenameField, margin);
fdlInclRownum.right = new FormAttachment(middle, -margin);
wlInclRownum.setLayoutData(fdlInclRownum);
wInclRownum = new Button(wAdditionalFields, SWT.CHECK);
props.setLook(wInclRownum);
wInclRownum.setToolTipText(BaseMessages.getString(PKG,
"FastJsonInputDialog.InclRownum.Tooltip"));
fdRownum = new FormData();
fdRownum.left = new FormAttachment(middle, 0);
fdRownum.top = new FormAttachment(wInclFilenameField, margin);
wInclRownum.setLayoutData(fdRownum);
wlInclRownumField = new Label(wAdditionalFields, SWT.RIGHT);
wlInclRownumField.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.InclRownumField.Label"));
props.setLook(wlInclRownumField);
fdlInclRownumField = new FormData();
fdlInclRownumField.left = new FormAttachment(wInclRownum, margin);
fdlInclRownumField.top = new FormAttachment(wInclFilenameField, margin);
wlInclRownumField.setLayoutData(fdlInclRownumField);
wInclRownumField = new TextVar(transMeta, wAdditionalFields, SWT.SINGLE
| SWT.LEFT | SWT.BORDER);
props.setLook(wInclRownumField);
wInclRownumField.addModifyListener(lsMod);
fdInclRownumField = new FormData();
fdInclRownumField.left = new FormAttachment(wlInclRownumField, margin);
fdInclRownumField.top = new FormAttachment(wInclFilenameField, margin);
fdInclRownumField.right = new FormAttachment(100, 0);
wInclRownumField.setLayoutData(fdInclRownumField);
fdAdditionalFields = new FormData();
fdAdditionalFields.left = new FormAttachment(0, margin);
fdAdditionalFields.top = new FormAttachment(wConf, margin);
fdAdditionalFields.right = new FormAttachment(100, -margin);
wAdditionalFields.setLayoutData(fdAdditionalFields);
// ///////////////////////////////////////////////////////////
// / END OF Additional Fields GROUP
// ///////////////////////////////////////////////////////////
// ///////////////////////////////
// START OF AddFileResult GROUP //
// ///////////////////////////////
wAddFileResult = new Group(wContentComp, SWT.SHADOW_NONE);
props.setLook(wAddFileResult);
wAddFileResult.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.wAddFileResult.Label"));
FormLayout AddFileResultgroupLayout = new FormLayout();
AddFileResultgroupLayout.marginWidth = 10;
AddFileResultgroupLayout.marginHeight = 10;
wAddFileResult.setLayout(AddFileResultgroupLayout);
wlAddResult = new Label(wAddFileResult, SWT.RIGHT);
wlAddResult.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.AddResult.Label"));
props.setLook(wlAddResult);
fdlAddResult = new FormData();
fdlAddResult.left = new FormAttachment(0, 0);
fdlAddResult.top = new FormAttachment(wAdditionalFields, margin);
fdlAddResult.right = new FormAttachment(middle, -margin);
wlAddResult.setLayoutData(fdlAddResult);
wAddResult = new Button(wAddFileResult, SWT.CHECK);
props.setLook(wAddResult);
wAddResult.setToolTipText(BaseMessages.getString(PKG,
"FastJsonInputDialog.AddResult.Tooltip"));
fdAddResult = new FormData();
fdAddResult.left = new FormAttachment(middle, 0);
fdAddResult.top = new FormAttachment(wAdditionalFields, margin);
wAddResult.setLayoutData(fdAddResult);
fdAddFileResult = new FormData();
fdAddFileResult.left = new FormAttachment(0, margin);
fdAddFileResult.top = new FormAttachment(wAdditionalFields, margin);
fdAddFileResult.right = new FormAttachment(100, -margin);
wAddFileResult.setLayoutData(fdAddFileResult);
// ///////////////////////////////////////////////////////////
// / END OF AddFileResult GROUP
// ///////////////////////////////////////////////////////////
fdContentComp = new FormData();
fdContentComp.left = new FormAttachment(0, 0);
fdContentComp.top = new FormAttachment(0, 0);
fdContentComp.right = new FormAttachment(100, 0);
fdContentComp.bottom = new FormAttachment(100, 0);
wContentComp.setLayoutData(fdContentComp);
wContentComp.layout();
wContentTab.setControl(wContentComp);
// ///////////////////////////////////////////////////////////
// / END OF CONTENT TAB
// ///////////////////////////////////////////////////////////
// Fields tab...
//
wFieldsTab = new CTabItem(wTabFolder, SWT.NONE);
wFieldsTab.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.Fields.Tab"));
FormLayout fieldsLayout = new FormLayout();
fieldsLayout.marginWidth = Const.FORM_MARGIN;
fieldsLayout.marginHeight = Const.FORM_MARGIN;
wFieldsComp = new Composite(wTabFolder, SWT.NONE);
wFieldsComp.setLayout(fieldsLayout);
props.setLook(wFieldsComp);
final int FieldsRows = input.getInputFields().length;
ColumnInfo[] colinf = new ColumnInfo[] {
new ColumnInfo(BaseMessages.getString(PKG,
"FastJsonInputDialog.FieldsTable.Name.Column"),
ColumnInfo.COLUMN_TYPE_TEXT, false),
new ColumnInfo(BaseMessages.getString(PKG,
"FastJsonInputDialog.FieldsTable.Path.Column"),
ColumnInfo.COLUMN_TYPE_TEXT, false),
new ColumnInfo(BaseMessages.getString(PKG,
"FastJsonInputDialog.FieldsTable.Type.Column"),
ColumnInfo.COLUMN_TYPE_CCOMBO, ValueMeta.getTypes(),
true),
new ColumnInfo(BaseMessages.getString(PKG,
"FastJsonInputDialog.FieldsTable.Format.Column"),
ColumnInfo.COLUMN_TYPE_CCOMBO,
Const.getConversionFormats()),
new ColumnInfo(BaseMessages.getString(PKG,
"FastJsonInputDialog.FieldsTable.Length.Column"),
ColumnInfo.COLUMN_TYPE_TEXT, false),
new ColumnInfo(BaseMessages.getString(PKG,
"FastJsonInputDialog.FieldsTable.Precision.Column"),
ColumnInfo.COLUMN_TYPE_TEXT, false),
new ColumnInfo(BaseMessages.getString(PKG,
"FastJsonInputDialog.FieldsTable.Currency.Column"),
ColumnInfo.COLUMN_TYPE_TEXT, false),
new ColumnInfo(BaseMessages.getString(PKG,
"FastJsonInputDialog.FieldsTable.Decimal.Column"),
ColumnInfo.COLUMN_TYPE_TEXT, false),
new ColumnInfo(BaseMessages.getString(PKG,
"FastJsonInputDialog.FieldsTable.Group.Column"),
ColumnInfo.COLUMN_TYPE_TEXT, false),
new ColumnInfo(BaseMessages.getString(PKG,
"FastJsonInputDialog.FieldsTable.TrimType.Column"),
ColumnInfo.COLUMN_TYPE_CCOMBO,
FastJsonInputField.trimTypeDesc, true),
new ColumnInfo(
BaseMessages
.getString(PKG,
"FastJsonInputDialog.FieldsTable.Repeat.Column"),
ColumnInfo.COLUMN_TYPE_CCOMBO,
new String[] {
BaseMessages.getString(PKG, "System.Combo.Yes"),
BaseMessages.getString(PKG, "System.Combo.No") },
true),
};
colinf[0].setUsingVariables(true);
colinf[0].setToolTip(BaseMessages.getString(PKG,
"FastJsonInputDialog.FieldsTable.Name.Column.Tooltip"));
colinf[1].setUsingVariables(true);
colinf[1].setToolTip(BaseMessages.getString(PKG,
"FastJsonInputDialog.FieldsTable.Path.Column.Tooltip"));
wFields = new TableView(transMeta, wFieldsComp, SWT.FULL_SELECTION
| SWT.MULTI, colinf, FieldsRows, lsMod, props);
fdFields = new FormData();
fdFields.left = new FormAttachment(0, 0);
fdFields.top = new FormAttachment(0, 0);
fdFields.right = new FormAttachment(100, 0);
fdFields.bottom = new FormAttachment(100, -margin);
wFields.setLayoutData(fdFields);
fdFieldsComp = new FormData();
fdFieldsComp.left = new FormAttachment(0, 0);
fdFieldsComp.top = new FormAttachment(0, 0);
fdFieldsComp.right = new FormAttachment(100, 0);
fdFieldsComp.bottom = new FormAttachment(100, 0);
wFieldsComp.setLayoutData(fdFieldsComp);
wFieldsComp.layout();
wFieldsTab.setControl(wFieldsComp);
addAdditionalFieldsTab();
fdTabFolder = new FormData();
fdTabFolder.left = new FormAttachment(0, 0);
fdTabFolder.top = new FormAttachment(wStepname, margin);
fdTabFolder.right = new FormAttachment(100, 0);
fdTabFolder.bottom = new FormAttachment(100, -50);
wTabFolder.setLayoutData(fdTabFolder);
wOK = new Button(shell, SWT.PUSH);
wOK.setText(BaseMessages.getString(PKG, "System.Button.OK"));
wPreview = new Button(shell, SWT.PUSH);
wPreview.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.Button.PreviewRows"));
wCancel = new Button(shell, SWT.PUSH);
wCancel.setText(BaseMessages.getString(PKG, "System.Button.Cancel"));
setButtonPositions(new Button[] { wOK, wPreview, wCancel }, margin,
wTabFolder);
// Add listeners
lsOK = new Listener() {
public void handleEvent(Event e) {
ok();
}
};
lsPreview = new Listener() {
public void handleEvent(Event e) {
preview();
}
};
lsCancel = new Listener() {
public void handleEvent(Event e) {
cancel();
}
};
wOK.addListener(SWT.Selection, lsOK);
wPreview.addListener(SWT.Selection, lsPreview);
wCancel.addListener(SWT.Selection, lsCancel);
lsDef = new SelectionAdapter() {
public void widgetDefaultSelected(SelectionEvent e) {
ok();
}
};
wStepname.addSelectionListener(lsDef);
wLimit.addSelectionListener(lsDef);
wInclRownumField.addSelectionListener(lsDef);
wInclFilenameField.addSelectionListener(lsDef);
// Add the file to the list of files...
SelectionAdapter selA = new SelectionAdapter() {
public void widgetSelected(SelectionEvent arg0) {
wFilenameList.add(new String[] { wFilename.getText(),
wFilemask.getText(), wExcludeFilemask.getText(),
FastJsonInputMeta.RequiredFilesCode[0],
FastJsonInputMeta.RequiredFilesCode[0] });
wFilename.setText("");
wFilemask.setText("");
wExcludeFilemask.setText("");
wFilenameList.removeEmptyRows();
wFilenameList.setRowNums();
wFilenameList.optWidth(true);
}
};
wbaFilename.addSelectionListener(selA);
wFilename.addSelectionListener(selA);
// Delete files from the list of files...
wbdFilename.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent arg0) {
int[] idx = wFilenameList.getSelectionIndices();
wFilenameList.remove(idx);
wFilenameList.removeEmptyRows();
wFilenameList.setRowNums();
}
});
// Edit the selected file & remove from the list...
wbeFilename.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent arg0) {
int idx = wFilenameList.getSelectionIndex();
if (idx >= 0) {
String[] string = wFilenameList.getItem(idx);
wFilename.setText(string[0]);
wFilemask.setText(string[1]);
wExcludeFilemask.setText(string[2]);
wFilenameList.remove(idx);
}
wFilenameList.removeEmptyRows();
wFilenameList.setRowNums();
}
});
// Show the files that are selected at this time...
wbShowFiles.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
try {
FastJsonInputMeta tfii = new FastJsonInputMeta();
getInfo(tfii);
FileInputList fileInputList = tfii.getFiles(transMeta);
String[] files = fileInputList.getFileStrings();
if (files != null && files.length > 0) {
EnterSelectionDialog esd = new EnterSelectionDialog(
shell,
files,
BaseMessages
.getString(PKG,
"FastJsonInputDialog.FilesReadSelection.DialogTitle"),
BaseMessages
.getString(PKG,
"FastJsonInputDialog.FilesReadSelection.DialogMessage"));
esd.setViewOnly();
esd.open();
} else {
MessageBox mb = new MessageBox(shell, SWT.OK
| SWT.ICON_ERROR);
mb.setMessage(BaseMessages
.getString(PKG,
"FastJsonInputDialog.NoFileFound.DialogMessage"));
mb.setText(BaseMessages.getString(PKG,
"System.Dialog.Error.Title"));
mb.open();
}
} catch (KettleException ex) {
new ErrorDialog(
shell,
BaseMessages
.getString(PKG,
"FastJsonInputDialog.ErrorParsingData.DialogTitle"),
BaseMessages
.getString(PKG,
"FastJsonInputDialog.ErrorParsingData.DialogMessage"),
ex);
}
}
});
// Enable/disable the right fields to allow a filename to be added to
// each row...
wInclFilename.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
setIncludeFilename();
}
});
// Enable/disable the right fields to allow a row number to be added to
// each row...
wInclRownum.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
setIncludeRownum();
}
});
// Whenever something changes, set the tooltip to the expanded version
// of the filename:
wFilename.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
wFilename.setToolTipText(wFilename.getText());
}
});
// Listen to the Browse... button
wbbFilename.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
if (!Const.isEmpty(wFilemask.getText())
|| !Const.isEmpty(wExcludeFilemask.getText())) // A
// mask:
// a
// directory!
{
DirectoryDialog dialog = new DirectoryDialog(shell,
SWT.OPEN);
if (wFilename.getText() != null) {
String fpath = transMeta
.environmentSubstitute(wFilename.getText());
dialog.setFilterPath(fpath);
}
if (dialog.open() != null) {
String str = dialog.getFilterPath();
wFilename.setText(str);
}
} else {
FileDialog dialog = new FileDialog(shell, SWT.OPEN);
dialog.setFilterExtensions(new String[] { "*.js;*.JS", "*" });
if (wFilename.getText() != null) {
String fname = transMeta
.environmentSubstitute(wFilename.getText());
dialog.setFileName(fname);
}
dialog.setFilterNames(new String[] {
BaseMessages.getString(PKG,
"System.FileType.JsonFiles"),
BaseMessages.getString(PKG,
"System.FileType.AllFiles") });
if (dialog.open() != null) {
String str = dialog.getFilterPath()
+ System.getProperty("file.separator")
+ dialog.getFileName();
wFilename.setText(str);
}
}
}
});
// Detect X or ALT-F4 or something that kills this window...
shell.addShellListener(new ShellAdapter() {
public void shellClosed(ShellEvent e) {
cancel();
}
});
wTabFolder.setSelection(0);
// Set the shell size, based upon previous time...
setSize();
getData(input);
ActiveStreamField();
setIncludeFilename();
setIncludeRownum();
input.setChanged(changed);
wFields.optWidth(true);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
return stepname;
}
private void setSourceStreamField() {
try {
String value = wFieldValue.getText();
wFieldValue.removeAll();
RowMetaInterface r = transMeta.getPrevStepFields(stepname);
if (r != null) {
wFieldValue.setItems(r.getFieldNames());
}
if (value != null) {
wFieldValue.setText(value);
}
} catch (KettleException ke) {
new ErrorDialog(
shell,
BaseMessages
.getString(PKG,
"FastJsonInputDialog.FailedToGetFields.DialogTitle"),
BaseMessages
.getString(PKG,
"FastJsonInputDialog.FailedToGetFields.DialogMessage"),
ke);
}
}
private void ActiveStreamField() {
wlSourceField.setEnabled(wSourceStreamField.getSelection());
wFieldValue.setEnabled(wSourceStreamField.getSelection());
wlSourceIsAFile.setEnabled(wSourceStreamField.getSelection());
wSourceIsAFile.setEnabled(wSourceStreamField.getSelection());
wlreadUrl.setEnabled(wSourceStreamField.getSelection());
wreadUrl.setEnabled(wSourceStreamField.getSelection());
wlremoveSourceField.setEnabled(wSourceStreamField.getSelection());
wremoveSourceField.setEnabled(wSourceStreamField.getSelection());
wlFilename.setEnabled(!wSourceStreamField.getSelection());
wbbFilename.setEnabled(!wSourceStreamField.getSelection());
wbaFilename.setEnabled(!wSourceStreamField.getSelection());
wFilename.setEnabled(!wSourceStreamField.getSelection());
wlExcludeFilemask.setEnabled(!wSourceStreamField.getSelection());
wExcludeFilemask.setEnabled(!wSourceStreamField.getSelection());
wlFilemask.setEnabled(!wSourceStreamField.getSelection());
wFilemask.setEnabled(!wSourceStreamField.getSelection());
wlFilenameList.setEnabled(!wSourceStreamField.getSelection());
wbdFilename.setEnabled(!wSourceStreamField.getSelection());
wbeFilename.setEnabled(!wSourceStreamField.getSelection());
wbShowFiles.setEnabled(!wSourceStreamField.getSelection());
wlFilenameList.setEnabled(!wSourceStreamField.getSelection());
wFilenameList.setEnabled(!wSourceStreamField.getSelection());
wInclFilename.setEnabled(!wSourceStreamField.getSelection());
wlInclFilename.setEnabled(!wSourceStreamField.getSelection());
if (wSourceStreamField.getSelection()) {
wInclFilename.setSelection(false);
wlInclFilenameField.setEnabled(false);
wInclFilenameField.setEnabled(false);
} else {
wlInclFilenameField.setEnabled(wInclFilename.getSelection());
wInclFilenameField.setEnabled(wInclFilename.getSelection());
}
wAddResult.setEnabled(!wSourceStreamField.getSelection());
wlAddResult.setEnabled(!wSourceStreamField.getSelection());
wLimit.setEnabled(!wSourceStreamField.getSelection());
wlLimit.setEnabled(!wSourceStreamField.getSelection());
wPreview.setEnabled(!wSourceStreamField.getSelection());
}
public void setIncludeFilename() {
wlInclFilenameField.setEnabled(wInclFilename.getSelection());
wInclFilenameField.setEnabled(wInclFilename.getSelection());
}
public void setIncludeRownum() {
wlInclRownumField.setEnabled(wInclRownum.getSelection());
wInclRownumField.setEnabled(wInclRownum.getSelection());
}
/**
* Read the data from the TextFileInputMeta object and show it in this
* dialog.
*
* @param in
* The TextFileInputMeta object to obtain the data from.
*/
public void getData(FastJsonInputMeta in) {
if (in.getFileName() != null) {
wFilenameList.removeAll();
for (int i = 0; i < in.getFileName().length; i++) {
wFilenameList
.add(new String[] {
in.getFileName()[i],
in.getFileMask()[i],
in.getExludeFileMask()[i],
in.getRequiredFilesDesc(in.getFileRequired()[i]),
in.getRequiredFilesDesc(in
.getIncludeSubFolders()[i]) });
}
wFilenameList.removeEmptyRows();
wFilenameList.setRowNums();
wFilenameList.optWidth(true);
}
wInclFilename.setSelection(in.includeFilename());
wInclRownum.setSelection(in.includeRowNumber());
wAddResult.setSelection(in.addResultFile());
wreadUrl.setSelection(in.isReadUrl());
wremoveSourceField.setSelection(in.isRemoveSourceField());
wIgnoreEmptyFile.setSelection(in.isIgnoreEmptyFile());
wdoNotFailIfNoFile.setSelection(in.isdoNotFailIfNoFile());
wIgnoreMissingPath.setSelection(in.isIgnoreMissingPath());
wDefaultPathLeafToNull.setSelection(in.isDefaultPathLeafToNull());
wSourceStreamField.setSelection(in.isInFields());
wSourceIsAFile.setSelection(in.getIsAFile());
if (in.getFieldValue() != null) {
wFieldValue.setText(in.getFieldValue());
}
if (in.getFilenameField() != null) {
wInclFilenameField.setText(in.getFilenameField());
}
if (in.getRowNumberField() != null) {
wInclRownumField.setText(in.getRowNumberField());
}
wLimit.setText("" + in.getRowLimit());
if (isDebug()) {
logDebug(BaseMessages.getString(PKG,
"FastJsonInputDialog.Log.GettingFieldsInfo"));
}
for (int i = 0; i < in.getInputFields().length; i++) {
FastJsonInputField field = in.getInputFields()[i];
if (field != null) {
TableItem item = wFields.table.getItem(i);
String name = field.getName();
String xpath = field.getPath();
String type = field.getTypeDesc();
String format = field.getFormat();
String length = "" + field.getLength();
String prec = "" + field.getPrecision();
String curr = field.getCurrencySymbol();
String group = field.getGroupSymbol();
String decim = field.getDecimalSymbol();
String trim = field.getTrimTypeDesc();
String rep = field.isRepeated() ? BaseMessages.getString(PKG,
"System.Combo.Yes") : BaseMessages.getString(PKG,
"System.Combo.No");
if (name != null) {
item.setText(1, name);
}
if (xpath != null) {
item.setText(2, xpath);
}
if (type != null) {
item.setText(3, type);
}
if (format != null) {
item.setText(4, format);
}
if (length != null && !"-1".equals(length)) {
item.setText(5, length);
}
if (prec != null && !"-1".equals(prec)) {
item.setText(6, prec);
}
if (curr != null) {
item.setText(7, curr);
}
if (decim != null) {
item.setText(8, decim);
}
if (group != null) {
item.setText(9, group);
}
if (trim != null) {
item.setText(10, trim);
}
if (rep != null) {
item.setText(11, rep);
}
}
}
wFields.removeEmptyRows();
wFields.setRowNums();
wFields.optWidth(true);
if (in.getShortFileNameField() != null) {
wShortFileFieldName.setText(in.getShortFileNameField());
}
if (in.getPathField() != null) {
wPathFieldName.setText(in.getPathField());
}
if (in.isHiddenField() != null) {
wIsHiddenName.setText(in.isHiddenField());
}
if (in.getLastModificationDateField() != null) {
wLastModificationTimeName
.setText(in.getLastModificationDateField());
}
if (in.getUriField() != null) {
wUriName.setText(in.getUriField());
}
if (in.getRootUriField() != null) {
wRootUriName.setText(in.getRootUriField());
}
if (in.getExtensionField() != null) {
wExtensionFieldName.setText(in.getExtensionField());
}
if (in.getSizeField() != null) {
wSizeFieldName.setText(in.getSizeField());
}
wStepname.selectAll();
wStepname.setFocus();
}
private void cancel() {
stepname = null;
input.setChanged(changed);
dispose();
}
private void ok() {
try {
getInfo(input);
} catch (KettleException e) {
new ErrorDialog(
shell,
BaseMessages.getString(PKG,
"FastJsonInputDialog.ErrorParsingData.DialogTitle"),
BaseMessages
.getString(PKG,
"FastJsonInputDialog.ErrorParsingData.DialogMessage"),
e);
}
dispose();
}
private void getInfo(FastJsonInputMeta in) throws KettleException {
stepname = wStepname.getText(); // return value
in.setRowLimit(Const.toLong(wLimit.getText(), 0L));
in.setFilenameField(wInclFilenameField.getText());
in.setRowNumberField(wInclRownumField.getText());
in.setAddResultFile(wAddResult.getSelection());
in.setIncludeFilename(wInclFilename.getSelection());
in.setIncludeRowNumber(wInclRownum.getSelection());
in.setReadUrl(wreadUrl.getSelection());
in.setRemoveSourceField(wremoveSourceField.getSelection());
in.setIgnoreEmptyFile(wIgnoreEmptyFile.getSelection());
in.setdoNotFailIfNoFile(wdoNotFailIfNoFile.getSelection());
in.setIgnoreMissingPath(wIgnoreMissingPath.getSelection());
in.setDefaultPathLeafToNull(wDefaultPathLeafToNull.getSelection());
in.setInFields(wSourceStreamField.getSelection());
in.setIsAFile(wSourceIsAFile.getSelection());
in.setFieldValue(wFieldValue.getText());
int nrFiles = wFilenameList.getItemCount();
int nrFields = wFields.nrNonEmpty();
in.allocate(nrFiles, nrFields);
in.setFileName(wFilenameList.getItems(0));
in.setFileMask(wFilenameList.getItems(1));
in.setExcludeFileMask(wFilenameList.getItems(2));
in.setFileRequired(wFilenameList.getItems(3));
in.setIncludeSubFolders(wFilenameList.getItems(4));
for (int i = 0; i < nrFields; i++) {
FastJsonInputField field = new FastJsonInputField();
TableItem item = wFields.getNonEmpty(i);
field.setName(item.getText(1));
field.setPath(item.getText(2));
field.setType(ValueMeta.getType(item.getText(3)));
field.setFormat(item.getText(4));
field.setLength(Const.toInt(item.getText(5), -1));
field.setPrecision(Const.toInt(item.getText(6), -1));
field.setCurrencySymbol(item.getText(7));
field.setDecimalSymbol(item.getText(8));
field.setGroupSymbol(item.getText(9));
field.setTrimType(FastJsonInputField.getTrimTypeByDesc(item
.getText(10)));
field.setRepeated(BaseMessages.getString(PKG, "System.Combo.Yes")
.equalsIgnoreCase(item.getText(11)));
// CHECKSTYLE:Indentation:OFF
in.getInputFields()[i] = field;
}
in.setShortFileNameField(wShortFileFieldName.getText());
in.setPathField(wPathFieldName.getText());
in.setIsHiddenField(wIsHiddenName.getText());
in.setLastModificationDateField(wLastModificationTimeName.getText());
in.setUriField(wUriName.getText());
in.setRootUriField(wRootUriName.getText());
in.setExtensionField(wExtensionFieldName.getText());
in.setSizeField(wSizeFieldName.getText());
}
// Preview the data
private void preview() {
try {
FastJsonInputMeta oneMeta = new FastJsonInputMeta();
getInfo(oneMeta);
TransMeta previewMeta = TransPreviewFactory
.generatePreviewTransformation(transMeta, oneMeta,
wStepname.getText());
EnterNumberDialog numberDialog = new EnterNumberDialog(shell,
props.getDefaultPreviewSize(), BaseMessages.getString(PKG,
"FastJsonInputDialog.NumberRows.DialogTitle"),
BaseMessages.getString(PKG,
"FastJsonInputDialog.NumberRows.DialogMessage"));
int previewSize = numberDialog.open();
if (previewSize > 0) {
TransPreviewProgressDialog progressDialog = new TransPreviewProgressDialog(
shell, previewMeta,
new String[] { wStepname.getText() },
new int[] { previewSize });
progressDialog.open();
if (!progressDialog.isCancelled()) {
Trans trans = progressDialog.getTrans();
String loggingText = progressDialog.getLoggingText();
if (trans.getResult() != null
&& trans.getResult().getNrErrors() > 0) {
EnterTextDialog etd = new EnterTextDialog(shell,
BaseMessages.getString(PKG,
"System.Dialog.PreviewError.Title"),
BaseMessages.getString(PKG,
"System.Dialog.PreviewError.Message"),
loggingText, true);
etd.setReadOnly();
etd.open();
}
PreviewRowsDialog prd = new PreviewRowsDialog(shell,
transMeta, SWT.NONE, wStepname.getText(),
progressDialog.getPreviewRowsMeta(wStepname
.getText()),
progressDialog.getPreviewRows(wStepname.getText()),
loggingText);
prd.open();
}
}
} catch (KettleException e) {
new ErrorDialog(
shell,
BaseMessages
.getString(PKG,
"FastJsonInputDialog.ErrorPreviewingData.DialogTitle"),
BaseMessages
.getString(PKG,
"FastJsonInputDialog.ErrorPreviewingData.DialogMessage"),
e);
}
}
private void addAdditionalFieldsTab() {
// ////////////////////////
// START OF ADDITIONAL FIELDS TAB ///
// ////////////////////////
wAdditionalFieldsTab = new CTabItem(wTabFolder, SWT.NONE);
wAdditionalFieldsTab.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.AdditionalFieldsTab.TabTitle"));
wAdditionalFieldsComp = new Composite(wTabFolder, SWT.NONE);
props.setLook(wAdditionalFieldsComp);
FormLayout fieldsLayout = new FormLayout();
fieldsLayout.marginWidth = 3;
fieldsLayout.marginHeight = 3;
wAdditionalFieldsComp.setLayout(fieldsLayout);
// ShortFileFieldName line
wlShortFileFieldName = new Label(wAdditionalFieldsComp, SWT.RIGHT);
wlShortFileFieldName.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.ShortFileFieldName.Label"));
props.setLook(wlShortFileFieldName);
fdlShortFileFieldName = new FormData();
fdlShortFileFieldName.left = new FormAttachment(0, 0);
fdlShortFileFieldName.top = new FormAttachment(wInclRownumField, margin);
fdlShortFileFieldName.right = new FormAttachment(middle, -margin);
wlShortFileFieldName.setLayoutData(fdlShortFileFieldName);
wShortFileFieldName = new TextVar(transMeta, wAdditionalFieldsComp,
SWT.SINGLE | SWT.LEFT | SWT.BORDER);
props.setLook(wShortFileFieldName);
wShortFileFieldName.addModifyListener(lsMod);
fdShortFileFieldName = new FormData();
fdShortFileFieldName.left = new FormAttachment(middle, 0);
fdShortFileFieldName.right = new FormAttachment(100, -margin);
fdShortFileFieldName.top = new FormAttachment(wInclRownumField, margin);
wShortFileFieldName.setLayoutData(fdShortFileFieldName);
// ExtensionFieldName line
wlExtensionFieldName = new Label(wAdditionalFieldsComp, SWT.RIGHT);
wlExtensionFieldName.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.ExtensionFieldName.Label"));
props.setLook(wlExtensionFieldName);
fdlExtensionFieldName = new FormData();
fdlExtensionFieldName.left = new FormAttachment(0, 0);
fdlExtensionFieldName.top = new FormAttachment(wShortFileFieldName,
margin);
fdlExtensionFieldName.right = new FormAttachment(middle, -margin);
wlExtensionFieldName.setLayoutData(fdlExtensionFieldName);
wExtensionFieldName = new TextVar(transMeta, wAdditionalFieldsComp,
SWT.SINGLE | SWT.LEFT | SWT.BORDER);
props.setLook(wExtensionFieldName);
wExtensionFieldName.addModifyListener(lsMod);
fdExtensionFieldName = new FormData();
fdExtensionFieldName.left = new FormAttachment(middle, 0);
fdExtensionFieldName.right = new FormAttachment(100, -margin);
fdExtensionFieldName.top = new FormAttachment(wShortFileFieldName,
margin);
wExtensionFieldName.setLayoutData(fdExtensionFieldName);
// PathFieldName line
wlPathFieldName = new Label(wAdditionalFieldsComp, SWT.RIGHT);
wlPathFieldName.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.PathFieldName.Label"));
props.setLook(wlPathFieldName);
fdlPathFieldName = new FormData();
fdlPathFieldName.left = new FormAttachment(0, 0);
fdlPathFieldName.top = new FormAttachment(wExtensionFieldName, margin);
fdlPathFieldName.right = new FormAttachment(middle, -margin);
wlPathFieldName.setLayoutData(fdlPathFieldName);
wPathFieldName = new TextVar(transMeta, wAdditionalFieldsComp,
SWT.SINGLE | SWT.LEFT | SWT.BORDER);
props.setLook(wPathFieldName);
wPathFieldName.addModifyListener(lsMod);
fdPathFieldName = new FormData();
fdPathFieldName.left = new FormAttachment(middle, 0);
fdPathFieldName.right = new FormAttachment(100, -margin);
fdPathFieldName.top = new FormAttachment(wExtensionFieldName, margin);
wPathFieldName.setLayoutData(fdPathFieldName);
// SizeFieldName line
wlSizeFieldName = new Label(wAdditionalFieldsComp, SWT.RIGHT);
wlSizeFieldName.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.SizeFieldName.Label"));
props.setLook(wlSizeFieldName);
fdlSizeFieldName = new FormData();
fdlSizeFieldName.left = new FormAttachment(0, 0);
fdlSizeFieldName.top = new FormAttachment(wPathFieldName, margin);
fdlSizeFieldName.right = new FormAttachment(middle, -margin);
wlSizeFieldName.setLayoutData(fdlSizeFieldName);
wSizeFieldName = new TextVar(transMeta, wAdditionalFieldsComp,
SWT.SINGLE | SWT.LEFT | SWT.BORDER);
props.setLook(wSizeFieldName);
wSizeFieldName.addModifyListener(lsMod);
fdSizeFieldName = new FormData();
fdSizeFieldName.left = new FormAttachment(middle, 0);
fdSizeFieldName.right = new FormAttachment(100, -margin);
fdSizeFieldName.top = new FormAttachment(wPathFieldName, margin);
wSizeFieldName.setLayoutData(fdSizeFieldName);
// IsHiddenName line
wlIsHiddenName = new Label(wAdditionalFieldsComp, SWT.RIGHT);
wlIsHiddenName.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.IsHiddenName.Label"));
props.setLook(wlIsHiddenName);
fdlIsHiddenName = new FormData();
fdlIsHiddenName.left = new FormAttachment(0, 0);
fdlIsHiddenName.top = new FormAttachment(wSizeFieldName, margin);
fdlIsHiddenName.right = new FormAttachment(middle, -margin);
wlIsHiddenName.setLayoutData(fdlIsHiddenName);
wIsHiddenName = new TextVar(transMeta, wAdditionalFieldsComp,
SWT.SINGLE | SWT.LEFT | SWT.BORDER);
props.setLook(wIsHiddenName);
wIsHiddenName.addModifyListener(lsMod);
fdIsHiddenName = new FormData();
fdIsHiddenName.left = new FormAttachment(middle, 0);
fdIsHiddenName.right = new FormAttachment(100, -margin);
fdIsHiddenName.top = new FormAttachment(wSizeFieldName, margin);
wIsHiddenName.setLayoutData(fdIsHiddenName);
// LastModificationTimeName line
wlLastModificationTimeName = new Label(wAdditionalFieldsComp, SWT.RIGHT);
wlLastModificationTimeName.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.LastModificationTimeName.Label"));
props.setLook(wlLastModificationTimeName);
fdlLastModificationTimeName = new FormData();
fdlLastModificationTimeName.left = new FormAttachment(0, 0);
fdlLastModificationTimeName.top = new FormAttachment(wIsHiddenName,
margin);
fdlLastModificationTimeName.right = new FormAttachment(middle, -margin);
wlLastModificationTimeName.setLayoutData(fdlLastModificationTimeName);
wLastModificationTimeName = new TextVar(transMeta,
wAdditionalFieldsComp, SWT.SINGLE | SWT.LEFT | SWT.BORDER);
props.setLook(wLastModificationTimeName);
wLastModificationTimeName.addModifyListener(lsMod);
fdLastModificationTimeName = new FormData();
fdLastModificationTimeName.left = new FormAttachment(middle, 0);
fdLastModificationTimeName.right = new FormAttachment(100, -margin);
fdLastModificationTimeName.top = new FormAttachment(wIsHiddenName,
margin);
wLastModificationTimeName.setLayoutData(fdLastModificationTimeName);
// UriName line
wlUriName = new Label(wAdditionalFieldsComp, SWT.RIGHT);
wlUriName.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.UriName.Label"));
props.setLook(wlUriName);
fdlUriName = new FormData();
fdlUriName.left = new FormAttachment(0, 0);
fdlUriName.top = new FormAttachment(wLastModificationTimeName, margin);
fdlUriName.right = new FormAttachment(middle, -margin);
wlUriName.setLayoutData(fdlUriName);
wUriName = new TextVar(transMeta, wAdditionalFieldsComp, SWT.SINGLE
| SWT.LEFT | SWT.BORDER);
props.setLook(wUriName);
wUriName.addModifyListener(lsMod);
fdUriName = new FormData();
fdUriName.left = new FormAttachment(middle, 0);
fdUriName.right = new FormAttachment(100, -margin);
fdUriName.top = new FormAttachment(wLastModificationTimeName, margin);
wUriName.setLayoutData(fdUriName);
// RootUriName line
wlRootUriName = new Label(wAdditionalFieldsComp, SWT.RIGHT);
wlRootUriName.setText(BaseMessages.getString(PKG,
"FastJsonInputDialog.RootUriName.Label"));
props.setLook(wlRootUriName);
fdlRootUriName = new FormData();
fdlRootUriName.left = new FormAttachment(0, 0);
fdlRootUriName.top = new FormAttachment(wUriName, margin);
fdlRootUriName.right = new FormAttachment(middle, -margin);
wlRootUriName.setLayoutData(fdlRootUriName);
wRootUriName = new TextVar(transMeta, wAdditionalFieldsComp, SWT.SINGLE
| SWT.LEFT | SWT.BORDER);
props.setLook(wRootUriName);
wRootUriName.addModifyListener(lsMod);
fdRootUriName = new FormData();
fdRootUriName.left = new FormAttachment(middle, 0);
fdRootUriName.right = new FormAttachment(100, -margin);
fdRootUriName.top = new FormAttachment(wUriName, margin);
wRootUriName.setLayoutData(fdRootUriName);
fdAdditionalFieldsComp = new FormData();
fdAdditionalFieldsComp.left = new FormAttachment(0, 0);
fdAdditionalFieldsComp.top = new FormAttachment(wStepname, margin);
fdAdditionalFieldsComp.right = new FormAttachment(100, 0);
fdAdditionalFieldsComp.bottom = new FormAttachment(100, 0);
wAdditionalFieldsComp.setLayoutData(fdAdditionalFieldsComp);
wAdditionalFieldsComp.layout();
wAdditionalFieldsTab.setControl(wAdditionalFieldsComp);
// ///////////////////////////////////////////////////////////
// / END OF ADDITIONAL FIELDS TAB
// ///////////////////////////////////////////////////////////
}
}