package org.teiid.designer.transformation.ui.wizards.file; import java.util.List; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.jface.viewers.ListViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Shell; import org.teiid.designer.query.proc.ITeiidColumnInfo; import org.teiid.designer.transformation.ui.UiConstants; import org.teiid.designer.transformation.ui.UiPlugin; import org.teiid.designer.transformation.ui.UiConstants.Images; import org.teiid.designer.ui.common.util.WidgetFactory; /** * Simple dialog to display parsed data column values from selected flat file data row * * @since 8.0 */ public class ParsedDataRowDialog extends TitleAreaDialog { private final String TITLE = UiConstants.Util.getString("ParsedDataRowDialog.title"); //$NON-NLS-1$ //============================================================= // Instance variables //============================================================= private TeiidMetadataFileInfo fileInfo; private String stringToParse; ListViewer columnDataViewer; //============================================================= // Constructors //============================================================= /** * ParsedDataRowDialog constructor. * * @param parent parent of this dialog * @param fileInfo the flat file business object * @param stringToParse the data string to parse */ public ParsedDataRowDialog(Shell parent, TeiidMetadataFileInfo fileInfo, String stringToParse) { super(parent); this.fileInfo = fileInfo; this.stringToParse = stringToParse; } @Override protected void configureShell( Shell shell ) { super.configureShell(shell); shell.setText(TITLE); } /* (non-Javadoc) * @see org.eclipse.jface.window.Window#setShellStyle(int) */ @Override protected void setShellStyle( int newShellStyle ) { super.setShellStyle(newShellStyle | SWT.RESIZE | SWT.MAX); } //============================================================= // Instance methods //============================================================= @Override protected Control createDialogArea(Composite parent) { setTitleImage(UiPlugin.getDefault().getImage(Images.IMPORT_TEIID_METADATA)); Composite composite = (Composite)super.createDialogArea(parent); //------------------------------ // Set layout for the Composite //------------------------------ GridLayout gridLayout = new GridLayout(); composite.setLayout(gridLayout); gridLayout.numColumns = 1; GridData gridData = new GridData(GridData.FILL_BOTH); gridData.grabExcessHorizontalSpace = true; gridData.widthHint = 500; composite.setLayoutData(gridData); Group columnsGroup = WidgetFactory.createGroup(parent, UiConstants.Util.getString("ParsedDataRowDialog.columnsGroup"), SWT.NONE, 1, 2); //$NON-NLS-1$ GridData gd = new GridData(GridData.FILL_BOTH); gd.heightHint = 280; gd.widthHint = 500; columnsGroup.setLayoutData(gd); this.columnDataViewer = new ListViewer(columnsGroup, SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); GridData data = new GridData(GridData.FILL_BOTH); data.horizontalSpan=1; this.columnDataViewer.getControl().setLayoutData(data); String[] parsedColumns = fileInfo.parseRow(stringToParse); List<ITeiidColumnInfo> infos = fileInfo.getColumnInfoList(); int i=0; for( String row : parsedColumns ) { if( row != null && i < infos.size()) { String value = infos.get(i++).getName() + " : " + row; //$NON-NLS-1$ this.columnDataViewer.add(value); } } setMessage(UiConstants.Util.getString("ParsedDataRowDialog.initialMessage")); //$NON-NLS-1$ return composite; } @Override public void create() { super.create(); getButton(IDialogConstants.OK_ID).setEnabled(true); } @Override protected void okPressed() { super.okPressed(); } }