/*! ******************************************************************************
*
* Pentaho Data Integration
*
* Copyright (C) 2002-2016 by Pentaho : http://www.pentaho.com
*
*******************************************************************************
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************/
package org.pentaho.di.ui.trans.steps.excelwriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.poi.ss.usermodel.BuiltinFormats;
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.custom.ScrolledComposite;
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.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.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.util.Utils;
import org.pentaho.di.core.Props;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.row.RowMetaInterface;
import org.pentaho.di.core.row.ValueMetaInterface;
import org.pentaho.di.core.row.value.ValueMetaFactory;
import org.pentaho.di.i18n.BaseMessages;
import org.pentaho.di.trans.TransMeta;
import org.pentaho.di.trans.step.BaseStepMeta;
import org.pentaho.di.trans.step.StepDialogInterface;
import org.pentaho.di.trans.step.StepMeta;
import org.pentaho.di.trans.steps.excelwriter.ExcelWriterStepField;
import org.pentaho.di.trans.steps.excelwriter.ExcelWriterStepMeta;
import org.pentaho.di.ui.core.dialog.EnterSelectionDialog;
import org.pentaho.di.ui.core.dialog.ErrorDialog;
import org.pentaho.di.ui.core.widget.ColumnInfo;
import org.pentaho.di.ui.core.widget.PasswordTextVar;
import org.pentaho.di.ui.core.widget.TableView;
import org.pentaho.di.ui.core.widget.TextVar;
import org.pentaho.di.ui.trans.step.BaseStepDialog;
import org.pentaho.di.ui.trans.step.TableItemInsertListener;
public class ExcelWriterStepDialog extends BaseStepDialog implements StepDialogInterface {
private static Class<?> PKG = ExcelWriterStepMeta.class; // for i18n
private CTabFolder wTabFolder;
private FormData fdTabFolder;
private CTabItem wFileTab, wContentTab;
private FormData fdFileComp, fdContentComp;
private Label wlFilename;
private Button wbFilename;
private TextVar wFilename;
private FormData fdlFilename, fdbFilename, fdFilename;
private Label wlExtension;
private CCombo wExtension;
private FormData fdlExtension, fdExtension;
private Label wlStreamData;
private Button wStreamData;
private FormData fdlStreamData, fdStreamData;
private Label wlAddStepnr;
private Button wAddStepnr;
private FormData fdlAddStepnr, fdAddStepnr;
private Label wlAddDate;
private Button wAddDate;
private FormData fdlAddDate, fdAddDate;
private Label wlAddTime;
private Button wAddTime;
private FormData fdlAddTime, fdAddTime;
private Label wlProtectSheet;
private Button wProtectSheet;
private FormData fdlProtectSheet, fdProtectSheet;
private Button wbShowFiles;
private FormData fdbShowFiles;
private Label wlHeader;
private Button wHeader;
private FormData fdlHeader, fdHeader;
private Label wlFooter;
private Button wFooter;
private FormData fdlFooter, fdFooter;
private Label wlSplitEvery;
private Text wSplitEvery;
private FormData fdlSplitEvery, fdSplitEvery;
private Label wlTemplate;
private Button wTemplate;
private FormData fdlTemplate, fdTemplate;
private Label wlTemplateFilename;
private Button wbTemplateFilename;
private TextVar wTemplateFilename;
private FormData fdlTemplateFilename, fdbTemplateFilename, fdTemplateFilename;
private Label wlPassword;
private TextVar wPassword;
private FormData fdlPassword, fdPassword;
private Label wlSheetname;
private TextVar wSheetname;
private FormData fdlSheetname, fdSheetname;
private TableView wFields;
private FormData fdFields;
private ExcelWriterStepMeta input;
private Button wMinWidth;
private Listener lsMinWidth;
private Label wlAddToResult;
private Button wAddToResult;
private FormData fdlAddToResult, fdAddToResult;
// private Label wlAppend;
// private Button wAppend;
// private FormData fdlAppend, fdAppend;
private Label wlDoNotOpenNewFileInit;
private Button wDoNotOpenNewFileInit;
private FormData fdlDoNotOpenNewFileInit, fdDoNotOpenNewFileInit;
private Label wlSpecifyFormat;
private Button wSpecifyFormat;
private FormData fdlSpecifyFormat, fdSpecifyFormat;
private Label wlDateTimeFormat;
private CCombo wDateTimeFormat;
private FormData fdlDateTimeFormat, fdDateTimeFormat;
private Label wlAutoSize;
private Button wAutoSize;
private FormData fdlAutoSize, fdAutoSize;
// private Label wlNullIsBlank;
// private Button wNullIsBlank;
// private FormData fdlNullIsBlank, fdNullIsBlank;
private Group wTemplateGroup;
private FormData fdTemplateGroup;
private ColumnInfo[] colinf;
private Map<String, Integer> inputFields;
private Label wlIfFileExists;
private FormData fdlIfFileExists;
private CCombo wIfFileExists;
private Label wlIfSheetExists;
private CCombo wIfSheetExists;
private Label wlTemplateSheetname;
private TextVar wTemplateSheetname;
private Label wlStartingCell;
private TextVar wStartingCell;
private Label wlRowWritingMethod;
private CCombo wRowWritingMethod;
private Label wlTemplateSheet;
private Button wTemplateSheet;
private Label wlTemplateSheetHide;
private Button wTemplateSheetHide;
private Button wAppendLines;
private Text wSkipRows;
private Text wEmptyRows;
private Button wOmitHeader;
private TextVar wProtectedBy;
private Button wMakeActiveSheet;
private Label wlForceFormulaRecalculation;
private FormData fdlForceFormulaRecalculation;
private Button wForceFormulaRecalculation;
private FormData fdForceFormulaRecalculation;
private Label wlLeaveExistingStylesUnchanged;
private FormData fdlLeaveExistingStylesUnchanged;
private Button wLeaveExistingStylesUnchanged;
private FormData fdLeaveExistingStylesUnchanged;
public ExcelWriterStepDialog( Shell parent, Object in, TransMeta transMeta, String sname ) {
super( parent, (BaseStepMeta) in, transMeta, sname );
input = (ExcelWriterStepMeta) in;
inputFields = new HashMap<String, Integer>();
}
@Override
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 );
SelectionAdapter lsSel = new SelectionAdapter() {
@Override
public void widgetSelected( SelectionEvent e ) {
input.setChanged();
}
};
ModifyListener lsMod = new ModifyListener() {
@Override
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, "ExcelWriterDialog.DialogTitle" ) );
int middle = props.getMiddlePct();
int 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 );
ScrolledComposite sc = new ScrolledComposite( shell, SWT.H_SCROLL | SWT.V_SCROLL );
wTabFolder = new CTabFolder( sc, SWT.BORDER );
props.setLook( wTabFolder, Props.WIDGET_STYLE_TAB );
// ////////////////////////
// START OF FILE TAB///
// /
wFileTab = new CTabItem( wTabFolder, SWT.NONE );
wFileTab.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.FileTab.TabTitle" ) );
Composite wFileComp = new Composite( wTabFolder, SWT.NONE );
props.setLook( wFileComp );
FormLayout fileLayout = new FormLayout();
fileLayout.marginWidth = 3;
fileLayout.marginHeight = 3;
wFileComp.setLayout( fileLayout );
Group fileGroup = new Group( wFileComp, SWT.SHADOW_NONE );
props.setLook( fileGroup );
fileGroup.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.fileGroup.Label" ) );
FormLayout fileGroupgroupLayout = new FormLayout();
fileGroupgroupLayout.marginWidth = 10;
fileGroupgroupLayout.marginHeight = 10;
fileGroup.setLayout( fileGroupgroupLayout );
// Filename line
wlFilename = new Label( fileGroup, SWT.RIGHT );
wlFilename.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.Filename.Label" ) );
props.setLook( wlFilename );
fdlFilename = new FormData();
fdlFilename.left = new FormAttachment( 0, 0 );
fdlFilename.top = new FormAttachment( 0, margin );
fdlFilename.right = new FormAttachment( middle, -margin );
wlFilename.setLayoutData( fdlFilename );
wbFilename = new Button( fileGroup, SWT.PUSH | SWT.CENTER );
props.setLook( wbFilename );
wbFilename.setText( BaseMessages.getString( PKG, "System.Button.Browse" ) );
fdbFilename = new FormData();
fdbFilename.right = new FormAttachment( 100, 0 );
fdbFilename.top = new FormAttachment( 0, 0 );
wbFilename.setLayoutData( fdbFilename );
wFilename = new TextVar( transMeta, fileGroup, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wFilename );
wFilename.addModifyListener( lsMod );
wFilename.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.Filename.Tooltip" ) );
fdFilename = new FormData();
fdFilename.left = new FormAttachment( middle, 0 );
fdFilename.top = new FormAttachment( 0, margin );
fdFilename.right = new FormAttachment( wbFilename, -margin );
wFilename.setLayoutData( fdFilename );
// Extension line
wlExtension = new Label( fileGroup, SWT.RIGHT );
wlExtension.setText( BaseMessages.getString( PKG, "System.Label.Extension" ) );
props.setLook( wlExtension );
fdlExtension = new FormData();
fdlExtension.left = new FormAttachment( 0, 0 );
fdlExtension.top = new FormAttachment( wFilename, margin );
fdlExtension.right = new FormAttachment( middle, -margin );
wlExtension.setLayoutData( fdlExtension );
wExtension = new CCombo( fileGroup, SWT.LEFT | SWT.BORDER | SWT.SINGLE | SWT.READ_ONLY );
String xlsLabel = BaseMessages.getString( PKG, "ExcelWriterDialog.FormatXLS.Label" );
String xlsxLabel = BaseMessages.getString( PKG, "ExcelWriterDialog.FormatXLSX.Label" );
wExtension.setItems( new String[] { xlsLabel, xlsxLabel } );
wExtension.setData( xlsLabel, "xls" );
wExtension.setData( xlsxLabel, "xlsx" );
props.setLook( wExtension );
wExtension.addModifyListener( lsMod );
wExtension.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( SelectionEvent e ) {
input.setChanged();
enableExtension();
}
} );
wExtension.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.Extension.Tooltip" ) );
fdExtension = new FormData();
fdExtension.left = new FormAttachment( middle, 0 );
fdExtension.top = new FormAttachment( wFilename, margin );
fdExtension.right = new FormAttachment( wbFilename, -margin );
wExtension.setLayoutData( fdExtension );
wlStreamData = new Label( fileGroup, SWT.RIGHT );
wlStreamData.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.StreamData.Label" ) );
props.setLook( wlStreamData );
fdlStreamData = new FormData();
fdlStreamData.left = new FormAttachment( 0, 0 );
fdlStreamData.top = new FormAttachment( wExtension, margin );
fdlStreamData.right = new FormAttachment( middle, -margin );
wlStreamData.setLayoutData( fdlStreamData );
wStreamData = new Button( fileGroup, SWT.CHECK );
props.setLook( wStreamData );
fdStreamData = new FormData();
fdStreamData.left = new FormAttachment( middle, 0 );
fdStreamData.top = new FormAttachment( wExtension, margin );
fdStreamData.right = new FormAttachment( 100, 0 );
wStreamData.setLayoutData( fdStreamData );
wStreamData.addSelectionListener( lsSel );
// split every x rows
wlSplitEvery = new Label( fileGroup, SWT.RIGHT );
wlSplitEvery.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.SplitEvery.Label" ) );
props.setLook( wlSplitEvery );
fdlSplitEvery = new FormData();
fdlSplitEvery.left = new FormAttachment( 0, 0 );
fdlSplitEvery.top = new FormAttachment( wStreamData, margin );
fdlSplitEvery.right = new FormAttachment( middle, -margin );
wlSplitEvery.setLayoutData( fdlSplitEvery );
wSplitEvery = new Text( fileGroup, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wSplitEvery );
wSplitEvery.addModifyListener( lsMod );
wSplitEvery.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.SplitEvery.Tooltip" ) );
fdSplitEvery = new FormData();
fdSplitEvery.left = new FormAttachment( middle, 0 );
fdSplitEvery.top = new FormAttachment( wStreamData, margin );
fdSplitEvery.right = new FormAttachment( 100, 0 );
wSplitEvery.setLayoutData( fdSplitEvery );
// Create multi-part file?
wlAddStepnr = new Label( fileGroup, SWT.RIGHT );
wlAddStepnr.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.AddStepnr.Label" ) );
props.setLook( wlAddStepnr );
fdlAddStepnr = new FormData();
fdlAddStepnr.left = new FormAttachment( 0, 0 );
fdlAddStepnr.top = new FormAttachment( wSplitEvery, margin );
fdlAddStepnr.right = new FormAttachment( middle, -margin );
wlAddStepnr.setLayoutData( fdlAddStepnr );
wAddStepnr = new Button( fileGroup, SWT.CHECK );
props.setLook( wAddStepnr );
fdAddStepnr = new FormData();
fdAddStepnr.left = new FormAttachment( middle, 0 );
fdAddStepnr.top = new FormAttachment( wSplitEvery, margin );
fdAddStepnr.right = new FormAttachment( 100, 0 );
wAddStepnr.setLayoutData( fdAddStepnr );
wAddStepnr.addSelectionListener( lsSel );
// Create multi-part file?
wlAddDate = new Label( fileGroup, SWT.RIGHT );
wlAddDate.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.AddDate.Label" ) );
props.setLook( wlAddDate );
fdlAddDate = new FormData();
fdlAddDate.left = new FormAttachment( 0, 0 );
fdlAddDate.top = new FormAttachment( wAddStepnr, margin );
fdlAddDate.right = new FormAttachment( middle, -margin );
wlAddDate.setLayoutData( fdlAddDate );
wAddDate = new Button( fileGroup, SWT.CHECK );
props.setLook( wAddDate );
fdAddDate = new FormData();
fdAddDate.left = new FormAttachment( middle, 0 );
fdAddDate.top = new FormAttachment( wAddStepnr, margin );
fdAddDate.right = new FormAttachment( 100, 0 );
wAddDate.setLayoutData( fdAddDate );
wAddDate.addSelectionListener( lsSel );
// Create multi-part file?
wlAddTime = new Label( fileGroup, SWT.RIGHT );
wlAddTime.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.AddTime.Label" ) );
props.setLook( wlAddTime );
fdlAddTime = new FormData();
fdlAddTime.left = new FormAttachment( 0, 0 );
fdlAddTime.top = new FormAttachment( wAddDate, margin );
fdlAddTime.right = new FormAttachment( middle, -margin );
wlAddTime.setLayoutData( fdlAddTime );
wAddTime = new Button( fileGroup, SWT.CHECK );
props.setLook( wAddTime );
fdAddTime = new FormData();
fdAddTime.left = new FormAttachment( middle, 0 );
fdAddTime.top = new FormAttachment( wAddDate, margin );
fdAddTime.right = new FormAttachment( 100, 0 );
wAddTime.setLayoutData( fdAddTime );
wAddTime.addSelectionListener( lsSel );
// Specify date time format?
wlSpecifyFormat = new Label( fileGroup, SWT.RIGHT );
wlSpecifyFormat.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.SpecifyFormat.Label" ) );
props.setLook( wlSpecifyFormat );
fdlSpecifyFormat = new FormData();
fdlSpecifyFormat.left = new FormAttachment( 0, 0 );
fdlSpecifyFormat.top = new FormAttachment( wAddTime, margin );
fdlSpecifyFormat.right = new FormAttachment( middle, -margin );
wlSpecifyFormat.setLayoutData( fdlSpecifyFormat );
wSpecifyFormat = new Button( fileGroup, SWT.CHECK );
props.setLook( wSpecifyFormat );
wSpecifyFormat.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.SpecifyFormat.Tooltip" ) );
fdSpecifyFormat = new FormData();
fdSpecifyFormat.left = new FormAttachment( middle, 0 );
fdSpecifyFormat.top = new FormAttachment( wAddTime, margin );
fdSpecifyFormat.right = new FormAttachment( 100, 0 );
wSpecifyFormat.setLayoutData( fdSpecifyFormat );
wSpecifyFormat.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( SelectionEvent e ) {
input.setChanged();
setDateTimeFormat();
}
} );
// Prepare a list of possible DateTimeFormats...
String[] dats = Const.getDateFormats();
// DateTimeFormat
wlDateTimeFormat = new Label( fileGroup, SWT.RIGHT );
wlDateTimeFormat.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.DateTimeFormat.Label" ) );
props.setLook( wlDateTimeFormat );
fdlDateTimeFormat = new FormData();
fdlDateTimeFormat.left = new FormAttachment( 0, 0 );
fdlDateTimeFormat.top = new FormAttachment( wSpecifyFormat, margin );
fdlDateTimeFormat.right = new FormAttachment( middle, -margin );
wlDateTimeFormat.setLayoutData( fdlDateTimeFormat );
wDateTimeFormat = new CCombo( fileGroup, SWT.BORDER | SWT.READ_ONLY );
wDateTimeFormat.setEditable( true );
props.setLook( wDateTimeFormat );
wDateTimeFormat.addModifyListener( lsMod );
fdDateTimeFormat = new FormData();
fdDateTimeFormat.left = new FormAttachment( middle, 0 );
fdDateTimeFormat.top = new FormAttachment( wSpecifyFormat, margin );
fdDateTimeFormat.right = new FormAttachment( 100, 0 );
wDateTimeFormat.setLayoutData( fdDateTimeFormat );
for ( int x = 0; x < dats.length; x++ ) {
wDateTimeFormat.add( dats[x] );
}
wbShowFiles = new Button( fileGroup, SWT.PUSH | SWT.CENTER );
props.setLook( wbShowFiles );
wbShowFiles.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.ShowFiles.Button" ) );
fdbShowFiles = new FormData();
fdbShowFiles.left = new FormAttachment( middle, 0 );
fdbShowFiles.top = new FormAttachment( wDateTimeFormat, margin * 3 );
wbShowFiles.setLayoutData( fdbShowFiles );
wbShowFiles.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( SelectionEvent e ) {
ExcelWriterStepMeta tfoi = new ExcelWriterStepMeta();
getInfo( tfoi );
String[] files = tfoi.getFiles( transMeta );
if ( files != null && files.length > 0 ) {
EnterSelectionDialog esd =
new EnterSelectionDialog( shell, files,
BaseMessages.getString( PKG, "ExcelWriterDialog.SelectOutputFiles.DialogTitle" ),
BaseMessages.getString( PKG, "ExcelWriterDialog.SelectOutputFiles.DialogMessage" ) );
esd.setViewOnly();
esd.open();
} else {
MessageBox mb = new MessageBox( shell, SWT.OK | SWT.ICON_ERROR );
mb.setMessage( BaseMessages.getString( PKG, "ExcelWriterDialog.NoFilesFound.DialogMessage" ) );
mb.setText( BaseMessages.getString( PKG, "System.Dialog.Error.Title" ) );
mb.open();
}
}
} );
// If output file exists line
wlIfFileExists = new Label( fileGroup, SWT.RIGHT );
wlIfFileExists.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.IfFileExists.Label" ) );
props.setLook( wlIfFileExists );
fdlIfFileExists = new FormData();
fdlIfFileExists.left = new FormAttachment( 0, 0 );
fdlIfFileExists.top = new FormAttachment( wbShowFiles, 2 * margin, margin );
fdlIfFileExists.right = new FormAttachment( middle, -margin );
wlIfFileExists.setLayoutData( fdlIfFileExists );
// wIfFileExists=new TextVar(transMeta,wFileComp, SWT.SINGLE | SWT.LEFT |
// SWT.BORDER);
wIfFileExists = new CCombo( fileGroup, SWT.LEFT | SWT.BORDER | SWT.SINGLE | SWT.READ_ONLY );
String createNewLabel = BaseMessages.getString( PKG, "ExcelWriterDialog.IfFileExists.CreateNew.Label" );
String reuseLabel = BaseMessages.getString( PKG, "ExcelWriterDialog.IfFileExists.Reuse.Label" );
wIfFileExists.setItems( new String[] { createNewLabel, reuseLabel } );
wIfFileExists.setData( createNewLabel, ExcelWriterStepMeta.IF_FILE_EXISTS_CREATE_NEW );
wIfFileExists.setData( reuseLabel, ExcelWriterStepMeta.IF_FILE_EXISTS_REUSE );
props.setLook( wIfFileExists );
wIfFileExists.addModifyListener( lsMod );
wIfFileExists.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.IfFileExists.Tooltip" ) );
FormData fdIfFileExists = new FormData();
fdIfFileExists.left = new FormAttachment( middle, 0 );
fdIfFileExists.top = new FormAttachment( wbShowFiles, 2 * margin, margin );
fdIfFileExists.right = new FormAttachment( 100, 0 );
wIfFileExists.setLayoutData( fdIfFileExists );
// Open new File at Init
wlDoNotOpenNewFileInit = new Label( fileGroup, SWT.RIGHT );
wlDoNotOpenNewFileInit.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.DoNotOpenNewFileInit.Label" ) );
props.setLook( wlDoNotOpenNewFileInit );
fdlDoNotOpenNewFileInit = new FormData();
fdlDoNotOpenNewFileInit.left = new FormAttachment( 0, 0 );
fdlDoNotOpenNewFileInit.top = new FormAttachment( wIfFileExists, 2 * margin, margin );
fdlDoNotOpenNewFileInit.right = new FormAttachment( middle, -margin );
wlDoNotOpenNewFileInit.setLayoutData( fdlDoNotOpenNewFileInit );
wDoNotOpenNewFileInit = new Button( fileGroup, SWT.CHECK );
wDoNotOpenNewFileInit.setToolTipText( BaseMessages.getString(
PKG, "ExcelWriterDialog.DoNotOpenNewFileInit.Tooltip" ) );
props.setLook( wDoNotOpenNewFileInit );
fdDoNotOpenNewFileInit = new FormData();
fdDoNotOpenNewFileInit.left = new FormAttachment( middle, 0 );
fdDoNotOpenNewFileInit.top = new FormAttachment( wIfFileExists, 2 * margin, margin );
fdDoNotOpenNewFileInit.right = new FormAttachment( 100, 0 );
wDoNotOpenNewFileInit.setLayoutData( fdDoNotOpenNewFileInit );
wDoNotOpenNewFileInit.addSelectionListener( lsSel );
// Add File to the result files name
wlAddToResult = new Label( fileGroup, SWT.RIGHT );
wlAddToResult.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.AddFileToResult.Label" ) );
props.setLook( wlAddToResult );
fdlAddToResult = new FormData();
fdlAddToResult.left = new FormAttachment( 0, 0 );
fdlAddToResult.top = new FormAttachment( wDoNotOpenNewFileInit );
fdlAddToResult.right = new FormAttachment( middle, -margin );
wlAddToResult.setLayoutData( fdlAddToResult );
wAddToResult = new Button( fileGroup, SWT.CHECK );
wAddToResult.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.AddFileToResult.Tooltip" ) );
props.setLook( wAddToResult );
fdAddToResult = new FormData();
fdAddToResult.left = new FormAttachment( middle, 0 );
fdAddToResult.top = new FormAttachment( wDoNotOpenNewFileInit );
fdAddToResult.right = new FormAttachment( 100, 0 );
wAddToResult.setLayoutData( fdAddToResult );
wAddToResult.addSelectionListener( lsSel );
FormData fsFileGroup = new FormData();
fsFileGroup.left = new FormAttachment( 0, margin );
fsFileGroup.top = new FormAttachment( 0, margin );
fsFileGroup.right = new FormAttachment( 100, -margin );
fileGroup.setLayoutData( fsFileGroup );
// END OF FILE GROUP
Group sheetGroup = new Group( wFileComp, SWT.SHADOW_NONE );
props.setLook( sheetGroup );
sheetGroup.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.sheetGroup.Label" ) );
FormLayout sheetGroupLayout = new FormLayout();
sheetGroupLayout.marginWidth = 10;
sheetGroupLayout.marginHeight = 10;
sheetGroup.setLayout( sheetGroupLayout );
// Sheet name line
wlSheetname = new Label( sheetGroup, SWT.RIGHT );
wlSheetname.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.Sheetname.Label" ) );
props.setLook( wlSheetname );
fdlSheetname = new FormData();
fdlSheetname.left = new FormAttachment( 0, 0 );
fdlSheetname.top = new FormAttachment( 0, margin );
fdlSheetname.right = new FormAttachment( middle, -margin );
wlSheetname.setLayoutData( fdlSheetname );
wSheetname = new TextVar( transMeta, sheetGroup, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
wSheetname.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.Sheetname.Tooltip" ) );
props.setLook( wSheetname );
wSheetname.addModifyListener( lsMod );
fdSheetname = new FormData();
fdSheetname.left = new FormAttachment( middle, 0 );
fdSheetname.top = new FormAttachment( 0, margin );
fdSheetname.right = new FormAttachment( 100, 0 );
wSheetname.setLayoutData( fdSheetname );
// Make sheet active Sheet Line
Label wlMakeActiveSheet = new Label( sheetGroup, SWT.RIGHT );
wlMakeActiveSheet.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.MakeActiveSheet.Label" ) );
props.setLook( wlMakeActiveSheet );
FormData fdlMakeActiveSheet = new FormData();
fdlMakeActiveSheet.left = new FormAttachment( 0, 0 );
fdlMakeActiveSheet.top = new FormAttachment( wSheetname, margin );
fdlMakeActiveSheet.right = new FormAttachment( middle, -margin );
wlMakeActiveSheet.setLayoutData( fdlMakeActiveSheet );
wMakeActiveSheet = new Button( sheetGroup, SWT.CHECK );
wMakeActiveSheet.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.MakeActiveSheet.Tooltip" ) );
props.setLook( wMakeActiveSheet );
FormData fdMakeActiveSheet = new FormData();
fdMakeActiveSheet.left = new FormAttachment( middle, 0 );
fdMakeActiveSheet.top = new FormAttachment( wSheetname, margin );
fdMakeActiveSheet.right = new FormAttachment( 100, 0 );
wMakeActiveSheet.setLayoutData( fdMakeActiveSheet );
wMakeActiveSheet.addSelectionListener( lsSel );
// If output sheet exists line
wlIfSheetExists = new Label( sheetGroup, SWT.RIGHT );
wlIfSheetExists.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.IfSheetExists.Label" ) );
props.setLook( wlIfSheetExists );
FormData fdlIfSheetExists = new FormData();
fdlIfSheetExists.left = new FormAttachment( 0, 0 );
fdlIfSheetExists.top = new FormAttachment( wMakeActiveSheet, margin );
fdlIfSheetExists.right = new FormAttachment( middle, -margin );
wlIfSheetExists.setLayoutData( fdlIfSheetExists );
wIfSheetExists = new CCombo( sheetGroup, SWT.LEFT | SWT.BORDER | SWT.SINGLE | SWT.READ_ONLY );
String replaceSheetNewLabel = BaseMessages.getString( PKG, "ExcelWriterDialog.IfSheetExists.CreateNew.Label" );
String reuseSheetLabel = BaseMessages.getString( PKG, "ExcelWriterDialog.IfSheetExists.Reuse.Label" );
wIfSheetExists.setItems( new String[] { replaceSheetNewLabel, reuseSheetLabel } );
wIfSheetExists.setData( replaceSheetNewLabel, ExcelWriterStepMeta.IF_SHEET_EXISTS_CREATE_NEW );
wIfSheetExists.setData( reuseSheetLabel, ExcelWriterStepMeta.IF_SHEET_EXISTS_REUSE );
props.setLook( wIfSheetExists );
wIfSheetExists.addModifyListener( lsMod );
wIfSheetExists.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.IfSheetExists.Tooltip" ) );
FormData fdIfSheetExists = new FormData();
fdIfSheetExists.left = new FormAttachment( middle, 0 );
fdIfSheetExists.top = new FormAttachment( wMakeActiveSheet, margin );
fdIfSheetExists.right = new FormAttachment( 100, 0 );
wIfSheetExists.setLayoutData( fdIfSheetExists );
// Protect Sheet?
wlProtectSheet = new Label( sheetGroup, SWT.RIGHT );
wlProtectSheet.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.ProtectSheet.Label" ) );
props.setLook( wlProtectSheet );
fdlProtectSheet = new FormData();
fdlProtectSheet.left = new FormAttachment( 0, 0 );
fdlProtectSheet.top = new FormAttachment( wIfSheetExists, margin );
fdlProtectSheet.right = new FormAttachment( middle, -margin );
wlProtectSheet.setLayoutData( fdlProtectSheet );
wProtectSheet = new Button( sheetGroup, SWT.CHECK );
wProtectSheet.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.ProtectSheet.Tooltip" ) );
props.setLook( wProtectSheet );
fdProtectSheet = new FormData();
fdProtectSheet.left = new FormAttachment( middle, 0 );
fdProtectSheet.top = new FormAttachment( wIfSheetExists, margin );
fdProtectSheet.right = new FormAttachment( 100, 0 );
wProtectSheet.setLayoutData( fdProtectSheet );
wProtectSheet.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( SelectionEvent e ) {
input.setChanged();
enablePassword();
}
} );
// Protected by line
Label wlProtectedBy = new Label( sheetGroup, SWT.RIGHT );
wlProtectedBy.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.ProtectedBy.Label" ) );
props.setLook( wlProtectedBy );
FormData fdlProtectedBy = new FormData();
fdlProtectedBy.left = new FormAttachment( 0, 0 );
fdlProtectedBy.top = new FormAttachment( wProtectSheet, margin );
fdlProtectedBy.right = new FormAttachment( middle, -margin );
wlProtectedBy.setLayoutData( fdlProtectedBy );
wProtectedBy = new TextVar( transMeta, sheetGroup, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
wProtectedBy.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.ProtectedBy.Tooltip" ) );
props.setLook( wProtectedBy );
wProtectedBy.addModifyListener( lsMod );
FormData fdProtectedBy = new FormData();
fdProtectedBy.left = new FormAttachment( middle, 0 );
fdProtectedBy.top = new FormAttachment( wProtectSheet, margin );
fdProtectedBy.right = new FormAttachment( 100, 0 );
wProtectedBy.setLayoutData( fdProtectedBy );
// Password line
wlPassword = new Label( sheetGroup, SWT.RIGHT );
wlPassword.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.Password.Label" ) );
props.setLook( wlPassword );
fdlPassword = new FormData();
fdlPassword.left = new FormAttachment( 0, 0 );
fdlPassword.top = new FormAttachment( wProtectedBy, margin );
fdlPassword.right = new FormAttachment( middle, -margin );
wlPassword.setLayoutData( fdlPassword );
wPassword = new PasswordTextVar( transMeta, sheetGroup, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
wPassword.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.Password.Tooltip" ) );
props.setLook( wPassword );
wPassword.addModifyListener( lsMod );
fdPassword = new FormData();
fdPassword.left = new FormAttachment( middle, 0 );
fdPassword.top = new FormAttachment( wProtectedBy, margin );
fdPassword.right = new FormAttachment( 100, 0 );
wPassword.setLayoutData( fdPassword );
FormData fsSheetGroup = new FormData();
fsSheetGroup.left = new FormAttachment( 0, margin );
fsSheetGroup.top = new FormAttachment( fileGroup, margin );
fsSheetGroup.right = new FormAttachment( 100, -margin );
sheetGroup.setLayoutData( fsSheetGroup );
// END OF SHEET GROUP
// ///////////////////////////////
// START OF Template Group GROUP //
// ///////////////////////////////
wTemplateGroup = new Group( wFileComp, SWT.SHADOW_NONE );
props.setLook( wTemplateGroup );
wTemplateGroup.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.TemplateGroup.Label" ) );
FormLayout TemplateGroupgroupLayout = new FormLayout();
TemplateGroupgroupLayout.marginWidth = 10;
TemplateGroupgroupLayout.marginHeight = 10;
wTemplateGroup.setLayout( TemplateGroupgroupLayout );
// Use template
wlTemplate = new Label( wTemplateGroup, SWT.RIGHT );
wlTemplate.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.Template.Label" ) );
props.setLook( wlTemplate );
fdlTemplate = new FormData();
fdlTemplate.left = new FormAttachment( 0, 0 );
fdlTemplate.top = new FormAttachment( 0, margin );
fdlTemplate.right = new FormAttachment( middle, -margin );
wlTemplate.setLayoutData( fdlTemplate );
wTemplate = new Button( wTemplateGroup, SWT.CHECK );
props.setLook( wTemplate );
fdTemplate = new FormData();
fdTemplate.left = new FormAttachment( middle, 0 );
fdTemplate.top = new FormAttachment( 0, margin );
fdTemplate.right = new FormAttachment( 100, 0 );
wTemplate.setLayoutData( fdTemplate );
wTemplate.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( SelectionEvent e ) {
input.setChanged();
enableTemplate();
}
} );
wTemplate.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.Template.Tooltip" ) );
// TemplateFilename line
wlTemplateFilename = new Label( wTemplateGroup, SWT.RIGHT );
wlTemplateFilename.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.TemplateFilename.Label" ) );
props.setLook( wlTemplateFilename );
fdlTemplateFilename = new FormData();
fdlTemplateFilename.left = new FormAttachment( 0, 0 );
fdlTemplateFilename.top = new FormAttachment( wTemplate, margin );
fdlTemplateFilename.right = new FormAttachment( middle, -margin );
wlTemplateFilename.setLayoutData( fdlTemplateFilename );
wbTemplateFilename = new Button( wTemplateGroup, SWT.PUSH | SWT.CENTER );
props.setLook( wbTemplateFilename );
wbTemplateFilename.setText( BaseMessages.getString( PKG, "System.Button.Browse" ) );
fdbTemplateFilename = new FormData();
fdbTemplateFilename.right = new FormAttachment( 100, 0 );
fdbTemplateFilename.top = new FormAttachment( wTemplate, 0 );
wbTemplateFilename.setLayoutData( fdbTemplateFilename );
wTemplateFilename = new TextVar( transMeta, wTemplateGroup, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wTemplateFilename );
wTemplateFilename.addModifyListener( lsMod );
fdTemplateFilename = new FormData();
fdTemplateFilename.left = new FormAttachment( middle, 0 );
fdTemplateFilename.top = new FormAttachment( wTemplate, margin );
fdTemplateFilename.right = new FormAttachment( wbTemplateFilename, -margin );
wTemplateFilename.setLayoutData( fdTemplateFilename );
// Use template sheet
wlTemplateSheet = new Label( wTemplateGroup, SWT.RIGHT );
wlTemplateSheet.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.TemplateSheet.Label" ) );
props.setLook( wlTemplateSheet );
FormData fdlTemplateSheet = new FormData();
fdlTemplateSheet.left = new FormAttachment( 0, 0 );
fdlTemplateSheet.top = new FormAttachment( wTemplateFilename, margin );
fdlTemplateSheet.right = new FormAttachment( middle, -margin );
wlTemplateSheet.setLayoutData( fdlTemplateSheet );
wTemplateSheet = new Button( wTemplateGroup, SWT.CHECK );
wTemplateSheet.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.TemplateSheet.Tooltip" ) );
props.setLook( wTemplateSheet );
FormData fdTemplateSheet = new FormData();
fdTemplateSheet.left = new FormAttachment( middle, 0 );
fdTemplateSheet.top = new FormAttachment( wTemplateFilename, margin );
fdTemplateSheet.right = new FormAttachment( 100, 0 );
wTemplateSheet.setLayoutData( fdTemplateSheet );
wTemplateSheet.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( SelectionEvent e ) {
input.setChanged();
enableTemplateSheet();
}
} );
// TemplateSheetname line
wlTemplateSheetname = new Label( wTemplateGroup, SWT.RIGHT );
wlTemplateSheetname.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.TemplateSheetname.Label" ) );
props.setLook( wlTemplateSheetname );
FormData fdlTemplateSheetname = new FormData();
fdlTemplateSheetname.left = new FormAttachment( 0, 0 );
fdlTemplateSheetname.top = new FormAttachment( wTemplateSheet, margin );
fdlTemplateSheetname.right = new FormAttachment( middle, -margin );
wlTemplateSheetname.setLayoutData( fdlTemplateSheetname );
wTemplateSheetname = new TextVar( transMeta, wTemplateGroup, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wTemplateSheetname );
wTemplateSheetname.addModifyListener( lsMod );
FormData fdTemplateSheetname = new FormData();
fdTemplateSheetname.left = new FormAttachment( middle, 0 );
fdTemplateSheetname.top = new FormAttachment( wTemplateSheet, margin );
fdTemplateSheetname.right = new FormAttachment( wbTemplateFilename, -margin );
wTemplateSheetname.setLayoutData( fdTemplateSheetname );
//Hide Template Sheet
wlTemplateSheetHide = new Label( wTemplateGroup, SWT.RIGHT );
wlTemplateSheetHide.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.TemplateSheetHide.Label" ) );
props.setLook( wlTemplateSheetHide );
FormData fdlTemplateSheetHide = new FormData();
fdlTemplateSheetHide.left = new FormAttachment( 0, 0 );
fdlTemplateSheetHide.top = new FormAttachment( wTemplateSheetname, margin );
fdlTemplateSheetHide.right = new FormAttachment( middle, -margin );
wlTemplateSheetHide.setLayoutData( fdlTemplateSheetHide );
wTemplateSheetHide = new Button( wTemplateGroup, SWT.CHECK );
wTemplateSheetHide.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.TemplateSheetHide.Tooltip" ) );
props.setLook( wTemplateSheetHide );
FormData fdTemplateSheetHide = new FormData();
fdTemplateSheetHide.left = new FormAttachment( middle, 0 );
fdTemplateSheetHide.top = new FormAttachment( wTemplateSheetname, margin );
fdTemplateSheetHide.right = new FormAttachment( 100, 0 );
wTemplateSheetHide.setLayoutData( fdTemplateSheetHide );
wTemplateSheetHide.addSelectionListener( lsSel );
fdTemplateGroup = new FormData();
fdTemplateGroup.left = new FormAttachment( 0, margin );
fdTemplateGroup.top = new FormAttachment( sheetGroup, margin );
fdTemplateGroup.right = new FormAttachment( 100, -margin );
wTemplateGroup.setLayoutData( fdTemplateGroup );
// ///////////////////////////////////////////////////////////
// / END OF Write to existing Group GROUP
// ///////////////////////////////////////////////////////////
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, "ExcelWriterDialog.ContentTab.TabTitle" ) );
FormLayout contentLayout = new FormLayout();
contentLayout.marginWidth = 3;
contentLayout.marginHeight = 3;
Composite wContentComp = new Composite( wTabFolder, SWT.NONE );
props.setLook( wContentComp );
wContentComp.setLayout( contentLayout );
Group wContentGroup = new Group( wContentComp, SWT.SHADOW_NONE );
props.setLook( wContentGroup );
wContentGroup.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.ContentGroup.Label" ) );
FormLayout ContentGroupgroupLayout = new FormLayout();
ContentGroupgroupLayout.marginWidth = 10;
ContentGroupgroupLayout.marginHeight = 10;
wContentGroup.setLayout( ContentGroupgroupLayout );
// starting cell
wlStartingCell = new Label( wContentGroup, SWT.RIGHT );
wlStartingCell.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.StartingCell.Label" ) );
props.setLook( wlStartingCell );
FormData fdlStartingCell = new FormData();
fdlStartingCell.left = new FormAttachment( 0, 0 );
fdlStartingCell.top = new FormAttachment( wIfSheetExists, margin );
fdlStartingCell.right = new FormAttachment( middle, -margin );
wlStartingCell.setLayoutData( fdlStartingCell );
wStartingCell = new TextVar( transMeta, wContentGroup, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
wStartingCell.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.StartingCell.Tooltip" ) );
props.setLook( wStartingCell );
wStartingCell.addModifyListener( lsMod );
FormData fdStartingCell = new FormData();
fdStartingCell.left = new FormAttachment( middle, 0 );
fdStartingCell.top = new FormAttachment( wIfSheetExists, margin );
fdStartingCell.right = new FormAttachment( 100, 0 );
wStartingCell.setLayoutData( fdStartingCell );
// row writing method line
wlRowWritingMethod = new Label( wContentGroup, SWT.RIGHT );
wlRowWritingMethod.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.RowWritingMethod.Label" ) );
props.setLook( wlRowWritingMethod );
FormData fdlRowWritingMethod = new FormData();
fdlRowWritingMethod.left = new FormAttachment( 0, 0 );
fdlRowWritingMethod.top = new FormAttachment( wStartingCell, margin );
fdlRowWritingMethod.right = new FormAttachment( middle, -margin );
wlRowWritingMethod.setLayoutData( fdlRowWritingMethod );
wRowWritingMethod = new CCombo( wContentGroup, SWT.LEFT | SWT.BORDER | SWT.SINGLE | SWT.READ_ONLY );
String overwriteLabel = BaseMessages.getString( PKG, "ExcelWriterDialog.RowWritingMethod.Overwrite.Label" );
String pushDownLabel = BaseMessages.getString( PKG, "ExcelWriterDialog.RowWritingMethod.PushDown.Label" );
wRowWritingMethod.setItems( new String[] { overwriteLabel, pushDownLabel } );
wRowWritingMethod.setData( overwriteLabel, ExcelWriterStepMeta.ROW_WRITE_OVERWRITE );
wRowWritingMethod.setData( pushDownLabel, ExcelWriterStepMeta.ROW_WRITE_PUSH_DOWN );
wRowWritingMethod.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.RowWritingMethod.Tooltip" ) );
props.setLook( wRowWritingMethod );
wRowWritingMethod.addModifyListener( lsMod );
// wRowWritingMethod.addSelectionListener(new SelectionAdapter() {
// public void widgetSelected(SelectionEvent e) {
// input.setChanged();
// EnableRowWritingMethod();
// }
// });
FormData fdRowWritingMethod = new FormData();
fdRowWritingMethod.left = new FormAttachment( middle, 0 );
fdRowWritingMethod.top = new FormAttachment( wStartingCell, margin );
fdRowWritingMethod.right = new FormAttachment( 100, 0 );
wRowWritingMethod.setLayoutData( fdRowWritingMethod );
wlHeader = new Label( wContentGroup, SWT.RIGHT );
wlHeader.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.Header.Label" ) );
props.setLook( wlHeader );
fdlHeader = new FormData();
fdlHeader.left = new FormAttachment( 0, 0 );
fdlHeader.top = new FormAttachment( wRowWritingMethod, margin );
fdlHeader.right = new FormAttachment( middle, -margin );
wlHeader.setLayoutData( fdlHeader );
wHeader = new Button( wContentGroup, SWT.CHECK );
props.setLook( wHeader );
fdHeader = new FormData();
fdHeader.left = new FormAttachment( middle, 0 );
fdHeader.top = new FormAttachment( wRowWritingMethod, margin );
fdHeader.right = new FormAttachment( 100, 0 );
wHeader.setLayoutData( fdHeader );
wHeader.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.Header.Tooltip" ) );
wHeader.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( SelectionEvent e ) {
input.setChanged();
enableHeader();
}
} );
wlFooter = new Label( wContentGroup, SWT.RIGHT );
wlFooter.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.Footer.Label" ) );
props.setLook( wlFooter );
fdlFooter = new FormData();
fdlFooter.left = new FormAttachment( 0, 0 );
fdlFooter.top = new FormAttachment( wHeader, margin );
fdlFooter.right = new FormAttachment( middle, -margin );
wlFooter.setLayoutData( fdlFooter );
wFooter = new Button( wContentGroup, SWT.CHECK );
props.setLook( wFooter );
fdFooter = new FormData();
fdFooter.left = new FormAttachment( middle, 0 );
fdFooter.top = new FormAttachment( wHeader, margin );
fdFooter.right = new FormAttachment( 100, 0 );
wFooter.setLayoutData( fdFooter );
wFooter.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.Footer.Tooltip" ) );
wFooter.addSelectionListener( lsSel );
// auto size columns?
wlAutoSize = new Label( wContentGroup, SWT.RIGHT );
wlAutoSize.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.AutoSize.Label" ) );
props.setLook( wlAutoSize );
fdlAutoSize = new FormData();
fdlAutoSize.left = new FormAttachment( 0, 0 );
fdlAutoSize.top = new FormAttachment( wFooter, margin );
fdlAutoSize.right = new FormAttachment( middle, -margin );
wlAutoSize.setLayoutData( fdlAutoSize );
wAutoSize = new Button( wContentGroup, SWT.CHECK );
props.setLook( wAutoSize );
wAutoSize.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.AutoSize.Tooltip" ) );
fdAutoSize = new FormData();
fdAutoSize.left = new FormAttachment( middle, 0 );
fdAutoSize.top = new FormAttachment( wFooter, margin );
fdAutoSize.right = new FormAttachment( 100, 0 );
wAutoSize.setLayoutData( fdAutoSize );
wAutoSize.addSelectionListener( lsSel );
// force formula recalculation?
wlForceFormulaRecalculation = new Label( wContentGroup, SWT.RIGHT );
wlForceFormulaRecalculation.setText( BaseMessages.getString(
PKG, "ExcelWriterDialog.ForceFormulaRecalculation.Label" ) );
props.setLook( wlForceFormulaRecalculation );
fdlForceFormulaRecalculation = new FormData();
fdlForceFormulaRecalculation.left = new FormAttachment( 0, 0 );
fdlForceFormulaRecalculation.top = new FormAttachment( wAutoSize, margin );
fdlForceFormulaRecalculation.right = new FormAttachment( middle, -margin );
wlForceFormulaRecalculation.setLayoutData( fdlForceFormulaRecalculation );
wForceFormulaRecalculation = new Button( wContentGroup, SWT.CHECK );
props.setLook( wForceFormulaRecalculation );
wForceFormulaRecalculation.setToolTipText( BaseMessages.getString(
PKG, "ExcelWriterDialog.ForceFormulaRecalculation.Tooltip" ) );
fdForceFormulaRecalculation = new FormData();
fdForceFormulaRecalculation.left = new FormAttachment( middle, 0 );
fdForceFormulaRecalculation.top = new FormAttachment( wAutoSize, margin );
fdForceFormulaRecalculation.right = new FormAttachment( 100, 0 );
wForceFormulaRecalculation.setLayoutData( fdForceFormulaRecalculation );
wForceFormulaRecalculation.addSelectionListener( lsSel );
// leave existing styles alone?
wlLeaveExistingStylesUnchanged = new Label( wContentGroup, SWT.RIGHT );
wlLeaveExistingStylesUnchanged.setText( BaseMessages.getString(
PKG, "ExcelWriterDialog.LeaveExistingStylesUnchanged.Label" ) );
props.setLook( wlLeaveExistingStylesUnchanged );
fdlLeaveExistingStylesUnchanged = new FormData();
fdlLeaveExistingStylesUnchanged.left = new FormAttachment( 0, 0 );
fdlLeaveExistingStylesUnchanged.top = new FormAttachment( wForceFormulaRecalculation, margin );
fdlLeaveExistingStylesUnchanged.right = new FormAttachment( middle, -margin );
wlLeaveExistingStylesUnchanged.setLayoutData( fdlLeaveExistingStylesUnchanged );
wLeaveExistingStylesUnchanged = new Button( wContentGroup, SWT.CHECK );
props.setLook( wLeaveExistingStylesUnchanged );
wLeaveExistingStylesUnchanged.setToolTipText( BaseMessages.getString(
PKG, "ExcelWriterDialog.LeaveExistingStylesUnchanged.Tooltip" ) );
fdLeaveExistingStylesUnchanged = new FormData();
fdLeaveExistingStylesUnchanged.left = new FormAttachment( middle, 0 );
fdLeaveExistingStylesUnchanged.top = new FormAttachment( wForceFormulaRecalculation, margin );
fdLeaveExistingStylesUnchanged.right = new FormAttachment( 100, 0 );
wLeaveExistingStylesUnchanged.setLayoutData( fdLeaveExistingStylesUnchanged );
wLeaveExistingStylesUnchanged.addSelectionListener( lsSel );
FormData fdContentGroup = new FormData();
fdContentGroup.left = new FormAttachment( 0, margin );
fdContentGroup.top = new FormAttachment( 0, margin );
fdContentGroup.right = new FormAttachment( 100, -margin );
wContentGroup.setLayoutData( fdContentGroup );
// / END OF CONTENT GROUP
Group writeToExistingGroup = new Group( wContentComp, SWT.SHADOW_NONE );
props.setLook( writeToExistingGroup );
writeToExistingGroup.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.writeToExistingGroup.Label" ) );
FormLayout writeToExistingGroupgroupLayout = new FormLayout();
writeToExistingGroupgroupLayout.marginWidth = 10;
writeToExistingGroupgroupLayout.marginHeight = 10;
writeToExistingGroup.setLayout( writeToExistingGroupgroupLayout );
// Use AppendLines
Label wlAppendLines = new Label( writeToExistingGroup, SWT.RIGHT );
wlAppendLines.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.AppendLines.Label" ) );
props.setLook( wlAppendLines );
FormData fdlAppendLines = new FormData();
fdlAppendLines.left = new FormAttachment( 0, 0 );
fdlAppendLines.top = new FormAttachment( 0, margin );
fdlAppendLines.right = new FormAttachment( middle, -margin );
wlAppendLines.setLayoutData( fdlAppendLines );
wAppendLines = new Button( writeToExistingGroup, SWT.CHECK );
wAppendLines.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.AppendLines.Tooltip" ) );
props.setLook( wAppendLines );
FormData fdAppendLines = new FormData();
fdAppendLines.left = new FormAttachment( middle, 0 );
fdAppendLines.top = new FormAttachment( 0, margin );
fdAppendLines.right = new FormAttachment( 100, 0 );
wAppendLines.setLayoutData( fdAppendLines );
// wAppendLines.addSelectionListener(lsMod);
wAppendLines.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( SelectionEvent arg0 ) {
input.setChanged();
enableAppend();
}
} );
// SkipRows line
Label wlSkipRows = new Label( writeToExistingGroup, SWT.RIGHT );
wlSkipRows.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.SkipRows.Label" ) );
props.setLook( wlSkipRows );
FormData fdlSkipRows = new FormData();
fdlSkipRows.left = new FormAttachment( 0, 0 );
fdlSkipRows.top = new FormAttachment( wAppendLines, margin );
fdlSkipRows.right = new FormAttachment( middle, -margin );
wlSkipRows.setLayoutData( fdlSkipRows );
wSkipRows = new Text( writeToExistingGroup, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
wSkipRows.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.SkipRows.Tooltip" ) );
props.setLook( wSkipRows );
wSkipRows.addModifyListener( lsMod );
FormData fdSkipRows = new FormData();
fdSkipRows.left = new FormAttachment( middle, 0 );
fdSkipRows.top = new FormAttachment( wAppendLines, margin );
fdSkipRows.right = new FormAttachment( 100, 0 );
wSkipRows.setLayoutData( fdSkipRows );
// EmptyRows line
Label wlEmptyRows = new Label( writeToExistingGroup, SWT.RIGHT );
wlEmptyRows.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.EmptyRows.Label" ) );
props.setLook( wlEmptyRows );
FormData fdlEmptyRows = new FormData();
fdlEmptyRows.left = new FormAttachment( 0, 0 );
fdlEmptyRows.top = new FormAttachment( wSkipRows, margin );
fdlEmptyRows.right = new FormAttachment( middle, -margin );
wlEmptyRows.setLayoutData( fdlEmptyRows );
wEmptyRows = new Text( writeToExistingGroup, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
wEmptyRows.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.EmptyRows.Tooltip" ) );
props.setLook( wEmptyRows );
wEmptyRows.addModifyListener( lsMod );
FormData fdEmptyRows = new FormData();
fdEmptyRows.left = new FormAttachment( middle, 0 );
fdEmptyRows.top = new FormAttachment( wSkipRows, margin );
fdEmptyRows.right = new FormAttachment( 100, 0 );
wEmptyRows.setLayoutData( fdEmptyRows );
// Use AppendLines
Label wlOmitHeader = new Label( writeToExistingGroup, SWT.RIGHT );
wlOmitHeader.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.OmitHeader.Label" ) );
props.setLook( wlOmitHeader );
FormData fdlOmitHeader = new FormData();
fdlOmitHeader.left = new FormAttachment( 0, 0 );
fdlOmitHeader.top = new FormAttachment( wEmptyRows, margin );
fdlOmitHeader.right = new FormAttachment( middle, -margin );
wlOmitHeader.setLayoutData( fdlOmitHeader );
wOmitHeader = new Button( writeToExistingGroup, SWT.CHECK );
wOmitHeader.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.OmitHeader.Tooltip" ) );
props.setLook( wOmitHeader );
FormData fdOmitHeader = new FormData();
fdOmitHeader.left = new FormAttachment( middle, 0 );
fdOmitHeader.top = new FormAttachment( wEmptyRows, margin );
fdOmitHeader.right = new FormAttachment( 100, 0 );
wOmitHeader.setLayoutData( fdOmitHeader );
wOmitHeader.addSelectionListener( lsSel );
FormData fdWriteToExistingGroup = new FormData();
fdWriteToExistingGroup.left = new FormAttachment( 0, margin );
fdWriteToExistingGroup.top = new FormAttachment( wContentGroup, margin );
fdWriteToExistingGroup.right = new FormAttachment( 100, -margin );
writeToExistingGroup.setLayoutData( fdWriteToExistingGroup );
// ///////////////////////////////////////////////////////////
// / END OF Write to existing Group GROUP
// ///////////////////////////////////////////////////////////
Group fieldGroup = new Group( wContentComp, SWT.SHADOW_NONE );
props.setLook( fieldGroup );
fieldGroup.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.fieldGroup.Label" ) );
FormLayout fieldGroupgroupLayout = new FormLayout();
fieldGroupgroupLayout.marginWidth = 10;
fieldGroupgroupLayout.marginHeight = 10;
fieldGroup.setLayout( fieldGroupgroupLayout );
wGet = new Button( fieldGroup, SWT.PUSH );
wGet.setText( BaseMessages.getString( PKG, "System.Button.GetFields" ) );
wGet.setToolTipText( BaseMessages.getString( PKG, "System.Tooltip.GetFields" ) );
wMinWidth = new Button( fieldGroup, SWT.PUSH );
wMinWidth.setText( BaseMessages.getString( PKG, "ExcelWriterDialog.MinWidth.Button" ) );
wMinWidth.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.MinWidth.Tooltip" ) );
setButtonPositions( new Button[] { wGet, wMinWidth }, margin, null );
final int FieldsRows = input.getOutputFields().length;
// Prepare a list of possible formats, filtering reserved internal formats away
String[] formats = BuiltinFormats.getAll();
List<String> allFormats = Arrays.asList( BuiltinFormats.getAll() );
List<String> nonReservedFormats = new ArrayList<String>( allFormats.size() );
for ( String format : allFormats ) {
if ( !format.startsWith( "reserved" ) ) {
nonReservedFormats.add( format );
}
}
Collections.sort( nonReservedFormats );
formats = nonReservedFormats.toArray( new String[0] );
colinf =
new ColumnInfo[] {
new ColumnInfo(
BaseMessages.getString( PKG, "ExcelWriterDialog.NameColumn.Column" ),
ColumnInfo.COLUMN_TYPE_CCOMBO, new String[] { "" }, false ),
new ColumnInfo(
BaseMessages.getString( PKG, "ExcelWriterDialog.TypeColumn.Column" ),
ColumnInfo.COLUMN_TYPE_CCOMBO, ValueMetaFactory.getValueMetaNames() ),
new ColumnInfo(
BaseMessages.getString( PKG, "ExcelWriterDialog.FormatColumn.Column" ),
ColumnInfo.COLUMN_TYPE_CCOMBO, formats ),
new ColumnInfo(
BaseMessages.getString( PKG, "ExcelWriterDialog.UseStyleCell.Column" ),
ColumnInfo.COLUMN_TYPE_TEXT ),
new ColumnInfo(
BaseMessages.getString( PKG, "ExcelWriterDialog.TitleColumn.Column" ), ColumnInfo.COLUMN_TYPE_TEXT ),
new ColumnInfo(
BaseMessages.getString( PKG, "ExcelWriterDialog.UseTitleStyleCell.Column" ),
ColumnInfo.COLUMN_TYPE_TEXT ),
new ColumnInfo(
BaseMessages.getString( PKG, "ExcelWriterDialog.FormulaField.Column" ),
ColumnInfo.COLUMN_TYPE_CCOMBO, new String[] { "N", "Y" }, true ),
new ColumnInfo(
BaseMessages.getString( PKG, "ExcelWriterDialog.HyperLinkField.Column" ),
ColumnInfo.COLUMN_TYPE_CCOMBO, new String[] { "" }, false ),
new ColumnInfo(
BaseMessages.getString( PKG, "ExcelWriterDialog.CommentField.Column" ),
ColumnInfo.COLUMN_TYPE_CCOMBO, new String[] { "" }, false ),
new ColumnInfo(
BaseMessages.getString( PKG, "ExcelWriterDialog.CommentAuthor.Column" ),
ColumnInfo.COLUMN_TYPE_CCOMBO, new String[] { "" }, false ) };
wFields =
new TableView(
transMeta, fieldGroup, SWT.BORDER | 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( wGet, -margin );
wFields.setLayoutData( fdFields );
wFields.addModifyListener( lsMod );
// Search the fields in the background
final Runnable runnable = new Runnable() {
@Override
public void run() {
StepMeta stepMeta = transMeta.findStep( stepname );
if ( stepMeta != null ) {
try {
RowMetaInterface row = transMeta.getPrevStepFields( stepMeta );
// Remember these fields...
for ( int i = 0; i < row.size(); i++ ) {
inputFields.put( row.getValueMeta( i ).getName(), Integer.valueOf( i ) );
}
setComboBoxes();
} catch ( KettleException e ) {
logError( BaseMessages.getString( PKG, "System.Dialog.GetFieldsFailed.Message" ) );
}
}
}
};
new Thread( runnable ).start();
FormData fdFieldGroup = new FormData();
fdFieldGroup.left = new FormAttachment( 0, margin );
fdFieldGroup.top = new FormAttachment( writeToExistingGroup, margin );
fdFieldGroup.bottom = new FormAttachment( 100, 0 );
fdFieldGroup.right = new FormAttachment( 100, -margin );
fieldGroup.setLayoutData( fdFieldGroup );
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 );
fdTabFolder = new FormData();
fdTabFolder.left = new FormAttachment( 0, 0 );
fdTabFolder.top = new FormAttachment( 0, 0 );
fdTabFolder.right = new FormAttachment( 100, 0 );
fdTabFolder.bottom = new FormAttachment( 100, 0 );
wTabFolder.setLayoutData( fdTabFolder );
FormData fdSc = new FormData();
fdSc.left = new FormAttachment( 0, 0 );
fdSc.top = new FormAttachment( wStepname, margin );
fdSc.right = new FormAttachment( 100, 0 );
fdSc.bottom = new FormAttachment( 100, -50 );
sc.setLayoutData( fdSc );
sc.setContent( wTabFolder );
// ///////////////////////////////////////////////////////////
// / END OF CONTENT TAB
// ///////////////////////////////////////////////////////////
wOK = new Button( shell, SWT.PUSH );
wOK.setText( BaseMessages.getString( PKG, "System.Button.OK" ) );
wCancel = new Button( shell, SWT.PUSH );
wCancel.setText( BaseMessages.getString( PKG, "System.Button.Cancel" ) );
setButtonPositions( new Button[] { wOK, wCancel }, margin, sc );
// Add listeners
lsOK = new Listener() {
@Override
public void handleEvent( Event e ) {
ok();
}
};
lsGet = new Listener() {
@Override
public void handleEvent( Event e ) {
get();
}
};
lsMinWidth = new Listener() {
@Override
public void handleEvent( Event e ) {
setMinimalWidth();
}
};
lsCancel = new Listener() {
@Override
public void handleEvent( Event e ) {
cancel();
}
};
wOK.addListener( SWT.Selection, lsOK );
wGet.addListener( SWT.Selection, lsGet );
wMinWidth.addListener( SWT.Selection, lsMinWidth );
wCancel.addListener( SWT.Selection, lsCancel );
lsDef = new SelectionAdapter() {
@Override
public void widgetDefaultSelected( SelectionEvent e ) {
ok();
}
};
wStepname.addSelectionListener( lsDef );
wFilename.addSelectionListener( lsDef );
wTemplateFilename.addSelectionListener( lsDef );
// Whenever something changes, set the tooltip to the expanded version:
wFilename.addModifyListener( new ModifyListener() {
@Override
public void modifyText( ModifyEvent e ) {
wFilename.setToolTipText( transMeta.environmentSubstitute( wFilename.getText() )
+ "\n\n" + BaseMessages.getString( PKG, "ExcelWriterDialog.Filename.Tooltip" ) );
}
} );
wTemplateFilename.addModifyListener( new ModifyListener() {
@Override
public void modifyText( ModifyEvent e ) {
wTemplateFilename.setToolTipText( transMeta.environmentSubstitute( wTemplateFilename.getText() ) );
}
} );
wSheetname.addModifyListener( new ModifyListener() {
@Override
public void modifyText( ModifyEvent e ) {
wSheetname.setToolTipText( transMeta.environmentSubstitute( wSheetname.getText() )
+ "\n\n" + BaseMessages.getString( PKG, "ExcelWriterDialog.Sheetname.Tooltip" ) );
}
} );
wTemplateSheetname.addModifyListener( new ModifyListener() {
@Override
public void modifyText( ModifyEvent e ) {
wTemplateSheetname.setToolTipText( transMeta.environmentSubstitute( wTemplateSheetname.getText() ) );
}
} );
wStartingCell.addModifyListener( new ModifyListener() {
@Override
public void modifyText( ModifyEvent e ) {
wStartingCell.setToolTipText( transMeta.environmentSubstitute( wStartingCell.getText() )
+ "\n\n" + BaseMessages.getString( PKG, "ExcelWriterDialog.StartingCell.Tooltip" ) );
}
} );
wPassword.addModifyListener( new ModifyListener() {
@Override
public void modifyText( ModifyEvent e ) {
wPassword.setToolTipText( BaseMessages.getString( PKG, "ExcelWriterDialog.Password.Tooltip" ) );
}
} );
wProtectedBy.addModifyListener( new ModifyListener() {
@Override
public void modifyText( ModifyEvent e ) {
wProtectedBy.setToolTipText( transMeta.environmentSubstitute( wProtectedBy.getText() )
+ "\n\n" + BaseMessages.getString( PKG, "ExcelWriterDialog.ProtectedBy.Tooltip" ) );
}
} );
wbFilename.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( SelectionEvent e ) {
FileDialog dialog = new FileDialog( shell, SWT.SAVE );
dialog.setFilterExtensions( new String[] { "*.xls", "*.xlsx", "*.*" } );
if ( wFilename.getText() != null ) {
dialog.setFileName( transMeta.environmentSubstitute( wFilename.getText() ) );
}
dialog.setFilterNames( new String[] {
BaseMessages.getString( PKG, "ExcelWriterDialog.FormatXLS.Label" ),
BaseMessages.getString( PKG, "ExcelWriterDialog.FormatXLSX.Label" ),
BaseMessages.getString( PKG, "System.FileType.AllFiles" ) } );
if ( dialog.open() != null ) {
wFilename.setText( dialog.getFilterPath()
+ System.getProperty( "file.separator" ) + dialog.getFileName() );
}
}
} );
wbTemplateFilename.addSelectionListener( new SelectionAdapter() {
@Override
public void widgetSelected( SelectionEvent e ) {
FileDialog dialog = new FileDialog( shell, SWT.OPEN );
dialog.setFilterExtensions( new String[] { "*.xls", "*.xlsx", "*.*" } );
if ( wTemplateFilename.getText() != null ) {
dialog.setFileName( transMeta.environmentSubstitute( wTemplateFilename.getText() ) );
}
dialog.setFilterNames( new String[] {
BaseMessages.getString( PKG, "ExcelWriterDialog.FormatXLS.Label" ),
BaseMessages.getString( PKG, "ExcelWriterDialog.FormatXLSX.Label" ),
BaseMessages.getString( PKG, "System.FileType.AllFiles" ) } );
if ( dialog.open() != null ) {
wTemplateFilename.setText( dialog.getFilterPath()
+ System.getProperty( "file.separator" ) + dialog.getFileName() );
}
}
} );
// Detect X or ALT-F4 or something that kills this window...
shell.addShellListener( new ShellAdapter() {
@Override
public void shellClosed( ShellEvent e ) {
cancel();
}
} );
wTabFolder.setSelection( 0 );
getData();
setDateTimeFormat();
enableExtension();
enableAppend();
enableHeader();
enableTemplateSheet();
input.setChanged( changed );
// artificially reduce table size
for ( int t = 0; t < wFields.table.getColumnCount(); t++ ) {
wFields.table.getColumn( t ).setWidth( 20 );
}
wFields.layout();
wFields.pack();
// determine scrollable area
sc.setMinSize( wTabFolder.computeSize( SWT.DEFAULT, SWT.DEFAULT ) );
sc.setExpandHorizontal( true );
sc.setExpandVertical( true );
// set window size
setSize( shell, 600, 600, true );
// restore optimal column widths
wFields.optWidth( true );
shell.open();
while ( !shell.isDisposed() ) {
if ( !display.readAndDispatch() ) {
display.sleep();
}
}
return stepname;
}
private void enableAppend() {
wSplitEvery.setEnabled( !wAppendLines.getSelection() );
}
private void enableHeader() {
wOmitHeader.setEnabled( wHeader.getSelection() );
}
private void setDateTimeFormat() {
if ( wSpecifyFormat.getSelection() ) {
wAddDate.setSelection( false );
wAddTime.setSelection( false );
}
wDateTimeFormat.setEnabled( wSpecifyFormat.getSelection() );
wlDateTimeFormat.setEnabled( wSpecifyFormat.getSelection() );
wAddDate.setEnabled( !wSpecifyFormat.getSelection() );
wlAddDate.setEnabled( !wSpecifyFormat.getSelection() );
wAddTime.setEnabled( !wSpecifyFormat.getSelection() );
wlAddTime.setEnabled( !wSpecifyFormat.getSelection() );
}
protected void setComboBoxes() {
// Something was changed in the row.
//
final Map<String, Integer> fields = new HashMap<String, Integer>();
// Add the currentMeta fields...
fields.putAll( inputFields );
Set<String> keySet = fields.keySet();
List<String> entries = new ArrayList<String>( keySet );
String[] fieldNames = entries.toArray( new String[entries.size()] );
Const.sortStrings( fieldNames );
colinf[0].setComboValues( fieldNames );
colinf[7].setComboValues( fieldNames );
colinf[8].setComboValues( fieldNames );
colinf[9].setComboValues( fieldNames );
}
/**
* Copy information from the meta-data input to the dialog fields.
*/
public void getData() {
if ( input.getFileName() != null ) {
wFilename.setText( input.getFileName() );
}
wDoNotOpenNewFileInit.setSelection( input.isDoNotOpenNewFileInit() );
if ( input.getExtension() != null ) {
if ( input.getExtension().equals( "xlsx" ) ) {
wExtension.select( 1 );
} else {
wExtension.select( 0 );
}
}
wStreamData.setSelection( input.isStreamingData() );
wSplitEvery.setText( "" + input.getSplitEvery() );
wEmptyRows.setText( "" + input.getAppendEmpty() );
wSkipRows.setText( "" + input.getAppendOffset() );
wAppendLines.setSelection( input.isAppendLines() );
wHeader.setSelection( input.isHeaderEnabled() );
wFooter.setSelection( input.isFooterEnabled() );
wOmitHeader.setSelection( input.isAppendOmitHeader() );
wForceFormulaRecalculation.setSelection( input.isForceFormulaRecalculation() );
wLeaveExistingStylesUnchanged.setSelection( input.isLeaveExistingStylesUnchanged() );
if ( input.getStartingCell() != null ) {
wStartingCell.setText( input.getStartingCell() );
}
wAddDate.setSelection( input.isDateInFilename() );
wAddTime.setSelection( input.isTimeInFilename() );
if ( input.getDateTimeFormat() != null ) {
wDateTimeFormat.setText( input.getDateTimeFormat() );
}
wSpecifyFormat.setSelection( input.isSpecifyFormat() );
wAddToResult.setSelection( input.isAddToResultFiles() );
wAutoSize.setSelection( input.isAutoSizeColums() );
wIfFileExists.select( ExcelWriterStepMeta.IF_FILE_EXISTS_REUSE.equals( input.getIfFileExists() ) ? 1 : 0 );
wIfSheetExists.select( ExcelWriterStepMeta.IF_SHEET_EXISTS_REUSE.equals( input.getIfSheetExists() ) ? 1 : 0 );
wRowWritingMethod.select( ExcelWriterStepMeta.ROW_WRITE_PUSH_DOWN.equals( input.getRowWritingMethod() )
? 1 : 0 );
wAddStepnr.setSelection( input.isStepNrInFilename() );
wMakeActiveSheet.setSelection( input.isMakeSheetActive() );
wTemplate.setSelection( input.isTemplateEnabled() );
wTemplateSheet.setSelection( input.isTemplateSheetEnabled() );
if ( input.getTemplateFileName() != null ) {
wTemplateFilename.setText( input.getTemplateFileName() );
}
if ( input.getTemplateSheetName() != null ) {
wTemplateSheetname.setText( input.getTemplateSheetName() );
}
if ( input.getSheetname() != null ) {
wSheetname.setText( input.getSheetname() );
} else {
wSheetname.setText( "Sheet1" );
}
wTemplateSheetHide.setSelection( input.isTemplateSheetHidden() );
wProtectSheet.setSelection( input.isSheetProtected() );
enablePassword();
enableTemplate();
if ( input.getPassword() != null ) {
wPassword.setText( input.getPassword() );
}
if ( input.getProtectedBy() != null ) {
wProtectedBy.setText( input.getProtectedBy() );
}
logDebug( "getting fields info..." );
for ( int i = 0; i < input.getOutputFields().length; i++ ) {
ExcelWriterStepField field = input.getOutputFields()[i];
TableItem item = wFields.table.getItem( i );
if ( field.getName() != null ) {
item.setText( 1, field.getName() );
}
item.setText( 2, field.getTypeDesc() );
if ( field.getFormat() != null ) {
item.setText( 3, field.getFormat() );
}
if ( field.getStyleCell() != null ) {
item.setText( 4, field.getStyleCell() );
}
if ( field.getTitle() != null ) {
item.setText( 5, field.getTitle() );
}
if ( field.getTitleStyleCell() != null ) {
item.setText( 6, field.getTitleStyleCell() );
}
if ( field.isFormula() ) {
item.setText( 7, "Y" );
} else {
item.setText( 7, "N" );
}
if ( field.getHyperlinkField() != null ) {
item.setText( 8, field.getHyperlinkField() );
}
if ( field.getCommentField() != null ) {
item.setText( 9, field.getCommentField() );
}
if ( field.getCommentAuthorField() != null ) {
item.setText( 10, field.getCommentAuthorField() );
}
}
wFields.optWidth( true );
wStepname.selectAll();
wStepname.setFocus();
}
private void cancel() {
stepname = null;
input.setChanged( backupChanged );
dispose();
}
private void getInfo( ExcelWriterStepMeta tfoi ) {
tfoi.setFileName( wFilename.getText() );
tfoi.setStreamingData( wStreamData.getSelection() );
tfoi.setDoNotOpenNewFileInit( wDoNotOpenNewFileInit.getSelection() );
tfoi.setAppendOmitHeader( wOmitHeader.getSelection() );
tfoi.setExtension( (String) wExtension.getData( wExtension.getText() ) );
tfoi.setSplitEvery( Const.toInt( wSplitEvery.getText(), 0 ) );
tfoi.setAppendOffset( Const.toInt( wSkipRows.getText(), 0 ) );
tfoi.setAppendEmpty( Const.toInt( wEmptyRows.getText(), 0 ) );
tfoi.setAppendLines( wAppendLines.getSelection() );
tfoi.setHeaderEnabled( wHeader.getSelection() );
tfoi.setFooterEnabled( wFooter.getSelection() );
tfoi.setStartingCell( wStartingCell.getText() );
tfoi.setStepNrInFilename( wAddStepnr.getSelection() );
tfoi.setDateInFilename( wAddDate.getSelection() );
tfoi.setTimeInFilename( wAddTime.getSelection() );
tfoi.setIfFileExists( (String) wIfFileExists.getData( wIfFileExists.getText() ) );
tfoi.setIfSheetExists( (String) wIfSheetExists.getData( wIfSheetExists.getText() ) );
tfoi.setRowWritingMethod( (String) wRowWritingMethod.getData( wRowWritingMethod.getText() ) );
tfoi.setForceFormulaRecalculation( wForceFormulaRecalculation.getSelection() );
tfoi.setLeaveExistingStylesUnchanged( wLeaveExistingStylesUnchanged.getSelection() );
tfoi.setDateTimeFormat( wDateTimeFormat.getText() );
tfoi.setSpecifyFormat( wSpecifyFormat.getSelection() );
tfoi.setAutoSizeColums( wAutoSize.getSelection() );
tfoi.setAddToResultFiles( wAddToResult.getSelection() );
tfoi.setMakeSheetActive( wMakeActiveSheet.getSelection() );
tfoi.setProtectSheet( wProtectSheet.getSelection() );
tfoi.setProtectedBy( wProtectedBy.getText() );
tfoi.setPassword( wPassword.getText() );
tfoi.setTemplateEnabled( wTemplate.getSelection() );
tfoi.setTemplateSheetEnabled( wTemplateSheet.getSelection() );
tfoi.setTemplateFileName( wTemplateFilename.getText() );
tfoi.setTemplateSheetName( wTemplateSheetname.getText() );
tfoi.setTemplateSheetHidden( wTemplateSheetHide.getSelection() );
if ( wSheetname.getText() != null ) {
tfoi.setSheetname( wSheetname.getText() );
} else {
tfoi.setSheetname( "Sheet 1" );
}
int nrfields = wFields.nrNonEmpty();
tfoi.allocate( nrfields );
for ( int i = 0; i < nrfields; i++ ) {
ExcelWriterStepField field = new ExcelWriterStepField();
TableItem item = wFields.getNonEmpty( i );
field.setName( item.getText( 1 ) );
field.setType( item.getText( 2 ) );
field.setFormat( item.getText( 3 ) );
field.setStyleCell( item.getText( 4 ) );
field.setTitle( item.getText( 5 ) );
field.setTitleStyleCell( item.getText( 6 ) );
field.setFormula( item.getText( 7 ).equalsIgnoreCase( "Y" ) );
field.setHyperlinkField( item.getText( 8 ) );
field.setCommentField( item.getText( 9 ) );
field.setCommentAuthorField( item.getText( 10 ) );
//CHECKSTYLE:Indentation:OFF
tfoi.getOutputFields()[i] = field;
}
}
private void ok() {
if ( Utils.isEmpty( wStepname.getText() ) ) {
return;
}
stepname = wStepname.getText(); // return value
getInfo( input );
dispose();
}
private void enablePassword() {
wPassword.setEnabled( wProtectSheet.getSelection() );
wProtectedBy.setEnabled( wProtectSheet.getSelection() );
}
private void enableTemplate() {
wbTemplateFilename.setEnabled( wTemplate.getSelection() );
wTemplateFilename.setEnabled( wTemplate.getSelection() );
}
private void enableTemplateSheet() {
wTemplateSheetname.setEnabled( wTemplateSheet.getSelection() );
wTemplateSheetHide.setEnabled( wTemplateSheet.getSelection() );
}
private void enableExtension() {
wProtectSheet.setEnabled( wExtension.getSelectionIndex() == 0 );
if ( wExtension.getSelectionIndex() == 0 ) {
wPassword.setEnabled( wProtectSheet.getSelection() );
wProtectedBy.setEnabled( wProtectSheet.getSelection() );
wStreamData.setEnabled( false );
} else {
wPassword.setEnabled( false );
wProtectedBy.setEnabled( false );
wStreamData.setEnabled( true );
}
}
private void get() {
try {
RowMetaInterface r = transMeta.getPrevStepFields( stepname );
if ( r != null ) {
TableItemInsertListener listener = new TableItemInsertListener() {
@Override
public boolean tableItemInserted( TableItem tableItem, ValueMetaInterface v ) {
if ( v.isNumber() ) {
if ( v.getLength() > 0 ) {
int le = v.getLength();
int pr = v.getPrecision();
if ( v.getPrecision() <= 0 ) {
pr = 0;
}
String mask = "";
for ( int m = 0; m < le - pr; m++ ) {
mask += "0";
}
if ( pr > 0 ) {
mask += ".";
}
for ( int m = 0; m < pr; m++ ) {
mask += "0";
}
tableItem.setText( 3, mask );
}
}
return true;
}
};
BaseStepDialog.getFieldsFromPrevious( r, wFields, 1, new int[] { 1, 5 }, new int[] { 2 }, 0, 0, listener );
}
} catch ( KettleException ke ) {
new ErrorDialog( shell, BaseMessages.getString( PKG, "System.Dialog.GetFieldsFailed.Title" ), BaseMessages
.getString( PKG, "System.Dialog.GetFieldsFailed.Message" ), ke );
}
}
/**
* Sets the output width to minimal width...
*
*/
public void setMinimalWidth() {
int nrNonEmptyFields = wFields.nrNonEmpty();
for ( int i = 0; i < nrNonEmptyFields; i++ ) {
TableItem item = wFields.getNonEmpty( i );
int type = ValueMetaFactory.getIdForValueMeta( item.getText( 2 ) );
switch ( type ) {
case ValueMetaInterface.TYPE_STRING:
item.setText( 3, "" );
break;
case ValueMetaInterface.TYPE_INTEGER:
item.setText( 3, "0" );
break;
case ValueMetaInterface.TYPE_NUMBER:
item.setText( 3, "0.#####" );
break;
case ValueMetaInterface.TYPE_DATE:
break;
default:
break;
}
}
wFields.optWidth( true );
}
}