/*! ******************************************************************************
*
* Pentaho Data Integration
*
* Copyright (C) 2002-2013 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.rssoutput;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
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.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.exception.KettleStepException;
import org.pentaho.di.core.row.RowMetaInterface;
import org.pentaho.di.core.row.ValueMetaInterface;
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.steps.rssoutput.RssOutputMeta;
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.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 RssOutputDialog extends BaseStepDialog implements StepDialogInterface {
private static Class<?> PKG = RssOutputMeta.class; // for i18n purposes, needed by Translator2!!
private Label wlRemarqChannel;
private FormData fdlRemarqChannel;
private Label wlRemarqMandatory;
private FormData fdlRemarqMandatory;
private Label wlRemarqItem;
private FormData fdlRemarqItem;
private Label wlAddToResult;
private Button wAddToResult;
private FormData fdlAddToResult, fdAddToResult;
private Label wlCustomRss;
private Button wCustomRss;
private FormData fdlCustomRss, fdCustomRss;
private Label wlDisplayItem;
private Button wDisplayItem;
private FormData fdlDisplayItem, fdDisplayItem;
private Group wFileName;
private FormData fdFileName;
private Group wChannelGroup;
private FormData fdChannelGroup;
private Group wResultFile;
private FormData fdResultFile;
private Group wFields;
private FormData fdFields;
private Label wlFilename;
private Button wbFilename;
private TextVar wFilename;
private FormData fdlFilename, fdbFilename, fdFilename;
private Label wlExtension;
private TextVar wExtension;
private FormData fdlExtension, fdExtension;
private Label wlChannelTitle;
private CCombo wChannelTitle;
private FormData fdlChannelTitle, fdChannelTitle;
private Label wlChannelLink;
private CCombo wChannelLink;
private FormData fdlChannelLink, fdChannelLink;
private Label wlChannelDescription;
private CCombo wChannelDescription;
private FormData fdlChannelDescription, fdChannelDescription;
private Label wlChannelPubDate;
private CCombo wChannelPubDate;
private FormData fdlChannelPubDate, fdChannelPubDate;
private Label wlChannelImageTitle;
private CCombo wChannelImageTitle;
private FormData fdlChannelImageTitle, fdChannelImageTitle;
private Label wlChannelImageLink;
private CCombo wChannelImageLink;
private FormData fdlChannelImageLink, fdChannelImageLink;
private Label wlChannelImageUrl;
private CCombo wChannelImageUrl;
private FormData fdlChannelImageUrl, fdChannelImageUrl;
private Label wlChannelImageDescription;
private CCombo wChannelImageDescription;
private FormData fdlChannelImageDescription, fdChannelImageDescription;
private Label wlChannelLanguage;
private CCombo wChannelLanguage;
private FormData fdlChannelLanguage, fdChannelLanguage;
private Label wlChannelCopyright;
private CCombo wChannelCopyright;
private FormData fdlChannelCopyright, fdChannelCopyright;
private Label wlChannelAuthor;
private CCombo wChannelAuthor;
private FormData fdlChannelAuthor, fdChannelAuthor;
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 Button wbShowFiles;
private FormData fdbShowFiles;
private Label wlVersion;
private CCombo wVersion;
private FormData fdlVersion, fdVersion;
private Label wlItemTitle;
private CCombo wItemTitle;
private FormData fdlItemTitle, fdItemTitle;
private Label wlItemLink;
private CCombo wItemLink;
private FormData fdlItemLink, fdItemLink;
private Label wlItemDescription;
private CCombo wItemDescription;
private FormData fdlItemDescription, fdItemDescription;
private Label wlItemPubDate;
private CCombo wItemPubDate;
private FormData fdlItemPubDate, fdItemPubDate;
private Label wlItemAuthor;
private CCombo wItemAuthor;
private FormData fdlItemAuthor, fdItemAuthor;
private Label wlGeoPointLat;
private CCombo wGeoPointLat;
private FormData fdlGeoPointLat, fdGeoPointLat;
private Label wlGeoPointLong;
private CCombo wGeoPointLong;
private FormData fdlGeoPointLong, fdGeoPointLong;
private Label wlChannelCustom;
private TableView wChannelCustom;
private FormData fdlChannelCustom, fdChannelCustom;
private TableView wNameSpaceCustom;
private FormData fdNameSpaceCustom;
private CTabFolder wTabFolder;
private FormData fdTabFolder;
private CTabItem wChannelTab;
private Composite wChannelComp;
private FormData fdChannelComp;
private CTabItem wGeneralTab, wContentTab, wCustomTab, wCustomNameSpace;
private Composite wGeneralComp, wContentComp, wCustomComp, wCustomNameSpaceComp;
private FormData fdGeneralComp, fdContentComp, fdCustomComp, fdCustomNameSpace;
private Label wlCreateParentFolder;
private Button wCreateParentFolder;
private FormData fdlCreateParentFolder, fdCreateParentFolder;
private Label wlAddImage;
private Button wAddImage;
private FormData fdlAddImage, fdAddImage;
private Label wlAddGeoRSS;
private Button wAddGeoRSS;
private FormData fdlAddGeoRSS, fdAddGeoRSS;
private Label wluseGeoRSSGML;
private Button wuseGeoRSSGML;
private FormData fdluseGeoRSSGML, fduseGeoRSSGML;
private Label wlFileNameInField;
private Button wFileNameInField;
private FormData fdlFileNameInField, fdFileNameInField;
private Label wlFieldFilename;
private CCombo wFieldFilename;
private FormData fdlFieldFilename, fdFieldFilename;
private Label wlEncoding;
private CCombo wEncoding;
private FormData fdlEncoding, fdEncoding;
private Label wlItemCustom, wlNameSpace;
private TableView wItemCustom;
private FormData fdlItemCustom, fdItemCustom, fdlNameSpace;
private Button wGetCustomItem;
private FormData fdGetCustomItem;
private Listener lsGetCustomItem;
private boolean gotEncodings = false;
private boolean gotPreviousFields = false;
private String[] fieldNames;
private String[] rss_versions = {
"rss_2.0", "rss_1.0", "rss_0.94", "rss_0.93", "rss_0.92", "atom_1.0", "atom_0.3" };
private RssOutputMeta input;
public RssOutputDialog( Shell parent, Object in, TransMeta transMeta, String sname ) {
super( parent, (BaseStepMeta) in, transMeta, sname );
input = (RssOutputMeta) 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 );
ModifyListener lsMod = new ModifyListener() {
public void modifyText( ModifyEvent e ) {
input.setChanged();
}
};
backupChanged = input.hasChanged();
int middle = props.getMiddlePct();
int margin = Const.MARGIN;
FormLayout formLayout = new FormLayout();
formLayout.marginWidth = Const.FORM_MARGIN;
formLayout.marginHeight = Const.FORM_MARGIN;
shell.setLayout( formLayout );
shell.setText( BaseMessages.getString( PKG, "RssOutputDialog.DialogTitle" ) );
// get previous fields name
getFields();
// 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.right = new FormAttachment( middle, -margin );
fdlStepname.top = new FormAttachment( 0, 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 CHANNEL TAB ///
// ////////////////////////
wChannelTab = new CTabItem( wTabFolder, SWT.NONE );
wChannelTab.setText( BaseMessages.getString( PKG, "RssOutputDialog.ChannelTab.TabTitle" ) );
wChannelComp = new Composite( wTabFolder, SWT.NONE );
props.setLook( wChannelComp );
FormLayout channelLayout = new FormLayout();
channelLayout.marginWidth = 3;
channelLayout.marginHeight = 3;
wChannelComp.setLayout( channelLayout );
// Create Custom RSS?
wlCustomRss = new Label( wChannelComp, SWT.RIGHT );
wlCustomRss.setText( BaseMessages.getString( PKG, "RssOutputDialog.CustomRss.Label" ) );
props.setLook( wlCustomRss );
fdlCustomRss = new FormData();
fdlCustomRss.left = new FormAttachment( 0, 0 );
fdlCustomRss.top = new FormAttachment( 0, margin );
fdlCustomRss.right = new FormAttachment( middle, -margin );
wlCustomRss.setLayoutData( fdlCustomRss );
wCustomRss = new Button( wChannelComp, SWT.CHECK );
wCustomRss.setToolTipText( BaseMessages.getString( PKG, "RssOutputDialog.CustomRss.Tooltip" ) );
props.setLook( wCustomRss );
fdCustomRss = new FormData();
fdCustomRss.left = new FormAttachment( middle, 0 );
fdCustomRss.top = new FormAttachment( 0, margin );
fdCustomRss.right = new FormAttachment( 100, 0 );
wCustomRss.setLayoutData( fdCustomRss );
wCustomRss.addSelectionListener( new SelectionAdapter() {
public void widgetSelected( SelectionEvent e ) {
setCustomRSS();
}
} );
// Create Custom RSS?
wlDisplayItem = new Label( wChannelComp, SWT.RIGHT );
wlDisplayItem.setText( BaseMessages.getString( PKG, "RssOutputDialog.DisplayItem.Label" ) );
props.setLook( wlDisplayItem );
fdlDisplayItem = new FormData();
fdlDisplayItem.left = new FormAttachment( 0, 0 );
fdlDisplayItem.top = new FormAttachment( wCustomRss, margin );
fdlDisplayItem.right = new FormAttachment( middle, -margin );
wlDisplayItem.setLayoutData( fdlDisplayItem );
wDisplayItem = new Button( wChannelComp, SWT.CHECK );
wDisplayItem.setToolTipText( BaseMessages.getString( PKG, "RssOutputDialog.DisplayItem.Tooltip" ) );
props.setLook( wDisplayItem );
fdDisplayItem = new FormData();
fdDisplayItem.left = new FormAttachment( middle, 0 );
fdDisplayItem.top = new FormAttachment( wCustomRss, margin );
fdDisplayItem.right = new FormAttachment( 100, 0 );
wDisplayItem.setLayoutData( fdDisplayItem );
wDisplayItem.addSelectionListener( new SelectionAdapter() {
public void widgetSelected( SelectionEvent e ) {
}
} );
// ChannelGroup grouping?
// ////////////////////////
// START OF ChannelGroup GROUP
//
wChannelGroup = new Group( wChannelComp, SWT.SHADOW_NONE );
props.setLook( wChannelGroup );
wChannelGroup.setText( BaseMessages.getString( PKG, "RssOutputDialog.Group.ChannelGroup.Label" ) );
FormLayout groupChannelGroupLayout = new FormLayout();
groupChannelGroupLayout.marginWidth = 10;
groupChannelGroupLayout.marginHeight = 10;
wChannelGroup.setLayout( groupChannelGroupLayout );
// RemarqChannel
wlRemarqChannel = new Label( wChannelGroup, SWT.RIGHT );
wlRemarqChannel.setText( BaseMessages.getString( PKG, "RssOutputDialog.RemarqChannel.Label" ) );
props.setLook( wlRemarqChannel );
fdlRemarqChannel = new FormData();
fdlRemarqChannel.left = new FormAttachment( 0, 0 );
fdlRemarqChannel.top = new FormAttachment( wDisplayItem, margin );
// fdlRemarq.right = new FormAttachment(middle, -margin);
wlRemarqChannel.setLayoutData( fdlRemarqChannel );
// RemarqMandatory
wlRemarqMandatory = new Label( wChannelGroup, SWT.RIGHT );
wlRemarqMandatory.setText( BaseMessages.getString( PKG, "RssOutputDialog.RemarqMandatory.Label" ) );
props.setLook( wlRemarqMandatory );
fdlRemarqMandatory = new FormData();
fdlRemarqMandatory.left = new FormAttachment( 0, 0 );
fdlRemarqMandatory.top = new FormAttachment( wlRemarqChannel, margin );
// fdlRemarq.right = new FormAttachment(middle, -margin);
wlRemarqMandatory.setLayoutData( fdlRemarqMandatory );
// ChannelTitle line
wlChannelTitle = new Label( wChannelGroup, SWT.RIGHT );
wlChannelTitle.setText( BaseMessages.getString( PKG, "RssOutputDialog.ChannelTitle.Label" ) );
props.setLook( wlChannelTitle );
fdlChannelTitle = new FormData();
fdlChannelTitle.left = new FormAttachment( 0, 0 );
fdlChannelTitle.top = new FormAttachment( wlRemarqMandatory, 2 * margin );
fdlChannelTitle.right = new FormAttachment( middle, -margin );
wlChannelTitle.setLayoutData( fdlChannelTitle );
wChannelTitle = new CCombo( wChannelGroup, SWT.BORDER | SWT.READ_ONLY );
wChannelTitle.setEditable( true );
wChannelTitle.setItems( fieldNames );
props.setLook( wChannelTitle );
wChannelTitle.addModifyListener( lsMod );
fdChannelTitle = new FormData();
fdChannelTitle.left = new FormAttachment( middle, 0 );
fdChannelTitle.top = new FormAttachment( wlRemarqMandatory, 2 * margin );
fdChannelTitle.right = new FormAttachment( 100, 0 );
wChannelTitle.setLayoutData( fdChannelTitle );
// Channel Description
wlChannelDescription = new Label( wChannelGroup, SWT.RIGHT );
wlChannelDescription.setText( BaseMessages.getString( PKG, "RssOutputDialog.ChannelDescription.Label" ) );
props.setLook( wlChannelDescription );
fdlChannelDescription = new FormData();
fdlChannelDescription.left = new FormAttachment( 0, 0 );
fdlChannelDescription.top = new FormAttachment( wChannelTitle, margin );
fdlChannelDescription.right = new FormAttachment( middle, -margin );
wlChannelDescription.setLayoutData( fdlChannelDescription );
wChannelDescription = new CCombo( wChannelGroup, SWT.BORDER | SWT.READ_ONLY );
wChannelDescription.setEditable( true );
wChannelDescription.setItems( fieldNames );
props.setLook( wChannelDescription );
wChannelDescription.addModifyListener( lsMod );
fdChannelDescription = new FormData();
fdChannelDescription.left = new FormAttachment( middle, 0 );
fdChannelDescription.top = new FormAttachment( wChannelTitle, margin );
fdChannelDescription.right = new FormAttachment( 100, 0 );
wChannelDescription.setLayoutData( fdChannelDescription );
// ChannelLink line
wlChannelLink = new Label( wChannelGroup, SWT.RIGHT );
wlChannelLink.setText( BaseMessages.getString( PKG, "RssOutputDialog.ChannelLink.Label" ) );
props.setLook( wlChannelLink );
fdlChannelLink = new FormData();
fdlChannelLink.left = new FormAttachment( 0, 0 );
fdlChannelLink.top = new FormAttachment( wChannelDescription, margin );
fdlChannelLink.right = new FormAttachment( middle, -margin );
wlChannelLink.setLayoutData( fdlChannelLink );
wChannelLink = new CCombo( wChannelGroup, SWT.BORDER | SWT.READ_ONLY );
wChannelLink.setEditable( true );
wChannelLink.setItems( fieldNames );
props.setLook( wChannelLink );
wChannelLink.addModifyListener( lsMod );
fdChannelLink = new FormData();
fdChannelLink.left = new FormAttachment( middle, 0 );
fdChannelLink.top = new FormAttachment( wChannelDescription, margin );
fdChannelLink.right = new FormAttachment( 100, 0 );
wChannelLink.setLayoutData( fdChannelLink );
// ChannelPubDate line
wlChannelPubDate = new Label( wChannelGroup, SWT.RIGHT );
wlChannelPubDate.setText( BaseMessages.getString( PKG, "RssOutputDialog.ChannelPubDate.Label" ) );
props.setLook( wlChannelPubDate );
fdlChannelPubDate = new FormData();
fdlChannelPubDate.left = new FormAttachment( 0, 0 );
fdlChannelPubDate.top = new FormAttachment( wChannelLink, margin );
fdlChannelPubDate.right = new FormAttachment( middle, -margin );
wlChannelPubDate.setLayoutData( fdlChannelPubDate );
wChannelPubDate = new CCombo( wChannelGroup, SWT.BORDER | SWT.READ_ONLY );
wChannelPubDate.setEditable( true );
wChannelPubDate.setItems( fieldNames );
props.setLook( wChannelPubDate );
wChannelPubDate.addModifyListener( lsMod );
fdChannelPubDate = new FormData();
fdChannelPubDate.left = new FormAttachment( middle, 0 );
fdChannelPubDate.top = new FormAttachment( wChannelLink, margin );
fdChannelPubDate.right = new FormAttachment( 100, 0 );
wChannelPubDate.setLayoutData( fdChannelPubDate );
// Channel Language
wlChannelLanguage = new Label( wChannelGroup, SWT.RIGHT );
wlChannelLanguage.setText( BaseMessages.getString( PKG, "RssOutputDialog.ChannelLanguage.Label" ) );
props.setLook( wlChannelLanguage );
fdlChannelLanguage = new FormData();
fdlChannelLanguage.left = new FormAttachment( 0, 0 );
fdlChannelLanguage.top = new FormAttachment( wChannelPubDate, margin );
fdlChannelLanguage.right = new FormAttachment( middle, -margin );
wlChannelLanguage.setLayoutData( fdlChannelLanguage );
wChannelLanguage = new CCombo( wChannelGroup, SWT.BORDER | SWT.READ_ONLY );
wChannelLanguage.setEditable( true );
wChannelLanguage.setItems( fieldNames );
props.setLook( wChannelLanguage );
wChannelLanguage.addModifyListener( lsMod );
fdChannelLanguage = new FormData();
fdChannelLanguage.left = new FormAttachment( middle, 0 );
fdChannelLanguage.top = new FormAttachment( wChannelPubDate, margin );
fdChannelLanguage.right = new FormAttachment( 100, 0 );
wChannelLanguage.setLayoutData( fdChannelLanguage );
// Channel Author
wlChannelAuthor = new Label( wChannelGroup, SWT.RIGHT );
wlChannelAuthor.setText( BaseMessages.getString( PKG, "RssOutputDialog.ChannelAuthor.Label" ) );
props.setLook( wlChannelAuthor );
fdlChannelAuthor = new FormData();
fdlChannelAuthor.left = new FormAttachment( 0, 0 );
fdlChannelAuthor.top = new FormAttachment( wChannelLanguage, margin );
fdlChannelAuthor.right = new FormAttachment( middle, -margin );
wlChannelAuthor.setLayoutData( fdlChannelAuthor );
wChannelAuthor = new CCombo( wChannelGroup, SWT.BORDER | SWT.READ_ONLY );
wChannelAuthor.setEditable( true );
wChannelAuthor.setItems( fieldNames );
props.setLook( wChannelAuthor );
wChannelAuthor.addModifyListener( lsMod );
fdChannelAuthor = new FormData();
fdChannelAuthor.left = new FormAttachment( middle, 0 );
fdChannelAuthor.top = new FormAttachment( wChannelLanguage, margin );
fdChannelAuthor.right = new FormAttachment( 100, 0 );
wChannelAuthor.setLayoutData( fdChannelAuthor );
// Channel Copyright
wlChannelCopyright = new Label( wChannelGroup, SWT.RIGHT );
wlChannelCopyright.setText( BaseMessages.getString( PKG, "RssOutputDialog.ChannelCopyright.Label" ) );
props.setLook( wlChannelCopyright );
fdlChannelCopyright = new FormData();
fdlChannelCopyright.left = new FormAttachment( 0, 0 );
fdlChannelCopyright.top = new FormAttachment( wChannelAuthor, margin );
fdlChannelCopyright.right = new FormAttachment( middle, -margin );
wlChannelCopyright.setLayoutData( fdlChannelCopyright );
wChannelCopyright = new CCombo( wChannelGroup, SWT.BORDER | SWT.READ_ONLY );
wChannelCopyright.setEditable( true );
wChannelCopyright.setItems( fieldNames );
props.setLook( wChannelCopyright );
wChannelCopyright.addModifyListener( lsMod );
fdChannelCopyright = new FormData();
fdChannelCopyright.left = new FormAttachment( middle, 0 );
fdChannelCopyright.top = new FormAttachment( wChannelAuthor, margin );
fdChannelCopyright.right = new FormAttachment( 100, 0 );
wChannelCopyright.setLayoutData( fdChannelCopyright );
// Add Image ?
wlAddImage = new Label( wChannelGroup, SWT.RIGHT );
wlAddImage.setText( BaseMessages.getString( PKG, "RssOutputDialog.AddImage.Label" ) );
props.setLook( wlAddImage );
fdlAddImage = new FormData();
fdlAddImage.left = new FormAttachment( 0, 0 );
fdlAddImage.top = new FormAttachment( wChannelCopyright, margin );
fdlAddImage.right = new FormAttachment( middle, -margin );
wlAddImage.setLayoutData( fdlAddImage );
wAddImage = new Button( wChannelGroup, SWT.CHECK );
wAddImage.setToolTipText( BaseMessages.getString( PKG, "RssOutputDialog.AddImage.Tooltip" ) );
props.setLook( wAddImage );
fdAddImage = new FormData();
fdAddImage.left = new FormAttachment( middle, 0 );
fdAddImage.top = new FormAttachment( wChannelCopyright, margin );
fdAddImage.right = new FormAttachment( 100, 0 );
wAddImage.setLayoutData( fdAddImage );
wAddImage.addSelectionListener( new SelectionAdapter() {
public void widgetSelected( SelectionEvent e ) {
setImage();
input.setChanged();
}
} );
// Channel Image title
wlChannelImageTitle = new Label( wChannelGroup, SWT.RIGHT );
wlChannelImageTitle.setText( BaseMessages.getString( PKG, "RssOutputDialog.ChannelImageTitle.Label" ) );
props.setLook( wlChannelImageTitle );
fdlChannelImageTitle = new FormData();
fdlChannelImageTitle.left = new FormAttachment( 0, 0 );
fdlChannelImageTitle.top = new FormAttachment( wAddImage, margin );
fdlChannelImageTitle.right = new FormAttachment( middle, -margin );
wlChannelImageTitle.setLayoutData( fdlChannelImageTitle );
wChannelImageTitle = new CCombo( wChannelGroup, SWT.BORDER | SWT.READ_ONLY );
wChannelImageTitle.setEditable( true );
wChannelImageTitle.setItems( fieldNames );
props.setLook( wChannelImageTitle );
wChannelImageTitle.addModifyListener( lsMod );
fdChannelImageTitle = new FormData();
fdChannelImageTitle.left = new FormAttachment( middle, 0 );
fdChannelImageTitle.top = new FormAttachment( wAddImage, margin );
fdChannelImageTitle.right = new FormAttachment( 100, 0 );
wChannelImageTitle.setLayoutData( fdChannelImageTitle );
// Channel Image Link
wlChannelImageLink = new Label( wChannelGroup, SWT.RIGHT );
wlChannelImageLink.setText( BaseMessages.getString( PKG, "RssOutputDialog.ChannelImageLink.Label" ) );
props.setLook( wlChannelImageLink );
fdlChannelImageLink = new FormData();
fdlChannelImageLink.left = new FormAttachment( 0, 0 );
fdlChannelImageLink.top = new FormAttachment( wChannelImageTitle, margin );
fdlChannelImageLink.right = new FormAttachment( middle, -margin );
wlChannelImageLink.setLayoutData( fdlChannelImageLink );
wChannelImageLink = new CCombo( wChannelGroup, SWT.BORDER | SWT.READ_ONLY );
wChannelImageLink.setEditable( true );
wChannelImageLink.setItems( fieldNames );
props.setLook( wChannelImageLink );
wChannelImageLink.addModifyListener( lsMod );
fdChannelImageLink = new FormData();
fdChannelImageLink.left = new FormAttachment( middle, 0 );
fdChannelImageLink.top = new FormAttachment( wChannelImageTitle, margin );
fdChannelImageLink.right = new FormAttachment( 100, 0 );
wChannelImageLink.setLayoutData( fdChannelImageLink );
// Channel Image Url
wlChannelImageUrl = new Label( wChannelGroup, SWT.RIGHT );
wlChannelImageUrl.setText( BaseMessages.getString( PKG, "RssOutputDialog.ChannelImageUrl.Label" ) );
props.setLook( wlChannelImageUrl );
fdlChannelImageUrl = new FormData();
fdlChannelImageUrl.left = new FormAttachment( 0, 0 );
fdlChannelImageUrl.top = new FormAttachment( wChannelImageLink, margin );
fdlChannelImageUrl.right = new FormAttachment( middle, -margin );
wlChannelImageUrl.setLayoutData( fdlChannelImageUrl );
wChannelImageUrl = new CCombo( wChannelGroup, SWT.BORDER | SWT.READ_ONLY );
wChannelImageUrl.setEditable( true );
wChannelImageUrl.setItems( fieldNames );
props.setLook( wChannelImageUrl );
wChannelImageUrl.addModifyListener( lsMod );
fdChannelImageUrl = new FormData();
fdChannelImageUrl.left = new FormAttachment( middle, 0 );
fdChannelImageUrl.top = new FormAttachment( wChannelImageLink, margin );
fdChannelImageUrl.right = new FormAttachment( 100, 0 );
wChannelImageUrl.setLayoutData( fdChannelImageUrl );
// Channel Image Description
wlChannelImageDescription = new Label( wChannelGroup, SWT.RIGHT );
wlChannelImageDescription.setText( BaseMessages.getString(
PKG, "RssOutputDialog.ChannelImageDescription.Label" ) );
props.setLook( wlChannelImageDescription );
fdlChannelImageDescription = new FormData();
fdlChannelImageDescription.left = new FormAttachment( 0, 0 );
fdlChannelImageDescription.top = new FormAttachment( wChannelImageUrl, margin );
fdlChannelImageDescription.right = new FormAttachment( middle, -margin );
wlChannelImageDescription.setLayoutData( fdlChannelImageDescription );
wChannelImageDescription = new CCombo( wChannelGroup, SWT.BORDER | SWT.READ_ONLY );
wChannelImageDescription.setEditable( true );
wChannelImageDescription.setItems( fieldNames );
props.setLook( wChannelImageDescription );
wChannelImageDescription.addModifyListener( lsMod );
fdChannelImageDescription = new FormData();
fdChannelImageDescription.left = new FormAttachment( middle, 0 );
fdChannelImageDescription.top = new FormAttachment( wChannelImageUrl, margin );
fdChannelImageDescription.right = new FormAttachment( 100, 0 );
wChannelImageDescription.setLayoutData( fdChannelImageDescription );
// Encoding
wlEncoding = new Label( wChannelComp, SWT.RIGHT );
wlEncoding.setText( BaseMessages.getString( PKG, "RssOutputDialog.Encoding.Label" ) );
props.setLook( wlEncoding );
fdlEncoding = new FormData();
fdlEncoding.left = new FormAttachment( 0, 0 );
fdlEncoding.top = new FormAttachment( wChannelGroup, 2 * margin );
fdlEncoding.right = new FormAttachment( middle, -margin );
wlEncoding.setLayoutData( fdlEncoding );
wEncoding = new CCombo( wChannelComp, SWT.BORDER | SWT.READ_ONLY );
wEncoding.setEditable( true );
props.setLook( wEncoding );
wEncoding.addModifyListener( lsMod );
fdEncoding = new FormData();
fdEncoding.left = new FormAttachment( middle, 0 );
fdEncoding.top = new FormAttachment( wChannelGroup, 2 * margin );
fdEncoding.right = new FormAttachment( 100, 0 );
wEncoding.setLayoutData( fdEncoding );
wEncoding.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 );
setEncodings();
shell.setCursor( null );
busy.dispose();
}
} );
// Version
wlVersion = new Label( wChannelComp, SWT.RIGHT );
wlVersion.setText( BaseMessages.getString( PKG, "RssOutputDialog.Version.Label" ) );
props.setLook( wlVersion );
fdlVersion = new FormData();
fdlVersion.left = new FormAttachment( 0, 0 );
fdlVersion.top = new FormAttachment( wEncoding, margin );
fdlVersion.right = new FormAttachment( middle, -margin );
wlVersion.setLayoutData( fdlVersion );
wVersion = new CCombo( wChannelComp, SWT.BORDER | SWT.READ_ONLY );
wVersion.setEditable( true );
wVersion.setItems( rss_versions );
props.setLook( wVersion );
wVersion.addModifyListener( lsMod );
fdVersion = new FormData();
fdVersion.left = new FormAttachment( middle, 0 );
fdVersion.top = new FormAttachment( wEncoding, margin );
fdVersion.right = new FormAttachment( 100, 0 );
wVersion.setLayoutData( fdVersion );
fdChannelGroup = new FormData();
fdChannelGroup.left = new FormAttachment( 0, margin );
fdChannelGroup.top = new FormAttachment( wDisplayItem, margin );
fdChannelGroup.right = new FormAttachment( 100, -margin );
wChannelGroup.setLayoutData( fdChannelGroup );
// ///////////////////////////////////////////////////////////
// / END OF ChannelGroup GROUP
// ///////////////////////////////////////////////////////////
fdChannelComp = new FormData();
fdChannelComp.left = new FormAttachment( 0, 0 );
fdChannelComp.top = new FormAttachment( 0, 0 );
fdChannelComp.right = new FormAttachment( 100, 0 );
fdChannelComp.bottom = new FormAttachment( 100, 0 );
wChannelComp.setLayoutData( fdChannelComp );
wChannelComp.layout();
wChannelTab.setControl( wChannelComp );
props.setLook( wChannelComp );
// ///////////////////////////////////////////////////////////
// / END OF GENERAL TAB
// ///////////////////////////////////////////////////////////
// ////////////////////////
// START OF GENERAL TAB ///
// ////////////////////////
wGeneralTab = new CTabItem( wTabFolder, SWT.NONE );
wGeneralTab.setText( BaseMessages.getString( PKG, "RssOutputDialog.GeneralTab.TabTitle" ) );
wGeneralComp = new Composite( wTabFolder, SWT.NONE );
props.setLook( wGeneralComp );
FormLayout generalLayout = new FormLayout();
generalLayout.marginWidth = 3;
generalLayout.marginHeight = 3;
wGeneralComp.setLayout( generalLayout );
// Fields grouping?
// ////////////////////////
// START OF Fields GROUP
//
wFields = new Group( wGeneralComp, SWT.SHADOW_NONE );
props.setLook( wFields );
wFields.setText( BaseMessages.getString( PKG, "RssOutputDialog.Group.Fields.Label" ) );
FormLayout groupFieldsLayout = new FormLayout();
groupFieldsLayout.marginWidth = 10;
groupFieldsLayout.marginHeight = 10;
wFields.setLayout( groupFieldsLayout );
// RemarqItem
wlRemarqItem = new Label( wFields, SWT.RIGHT );
wlRemarqItem.setText( BaseMessages.getString( PKG, "RssOutputDialog.RemarqItem.Label" ) );
props.setLook( wlRemarqItem );
fdlRemarqItem = new FormData();
fdlRemarqItem.left = new FormAttachment( 0, 0 );
fdlRemarqItem.top = new FormAttachment( 0, margin );
// fdlRemarq.right = new FormAttachment(middle, -margin);
wlRemarqItem.setLayoutData( fdlRemarqItem );
// Item Title
wlItemTitle = new Label( wFields, SWT.RIGHT );
wlItemTitle.setText( BaseMessages.getString( PKG, "RssOutputDialog.ItemTitle.Label" ) );
props.setLook( wlItemTitle );
fdlItemTitle = new FormData();
fdlItemTitle.left = new FormAttachment( 0, 0 );
fdlItemTitle.top = new FormAttachment( wlRemarqItem, 3 * margin );
fdlItemTitle.right = new FormAttachment( middle, -margin );
wlItemTitle.setLayoutData( fdlItemTitle );
wItemTitle = new CCombo( wFields, SWT.BORDER | SWT.READ_ONLY );
wItemTitle.setEditable( true );
wItemTitle.setItems( fieldNames );
props.setLook( wItemTitle );
wItemTitle.addModifyListener( lsMod );
fdItemTitle = new FormData();
fdItemTitle.left = new FormAttachment( middle, 0 );
fdItemTitle.top = new FormAttachment( wlRemarqItem, 3 * margin );
fdItemTitle.right = new FormAttachment( 100, 0 );
wItemTitle.setLayoutData( fdItemTitle );
// Item Description
wlItemDescription = new Label( wFields, SWT.RIGHT );
wlItemDescription.setText( BaseMessages.getString( PKG, "RssOutputDialog.ItemDescripion.Label" ) );
props.setLook( wlItemDescription );
fdlItemDescription = new FormData();
fdlItemDescription.left = new FormAttachment( 0, 0 );
fdlItemDescription.top = new FormAttachment( wItemTitle, margin );
fdlItemDescription.right = new FormAttachment( middle, -margin );
wlItemDescription.setLayoutData( fdlItemDescription );
wItemDescription = new CCombo( wFields, SWT.BORDER | SWT.READ_ONLY );
wItemDescription.setEditable( true );
wItemDescription.setItems( fieldNames );
props.setLook( wItemDescription );
wItemDescription.addModifyListener( lsMod );
fdItemDescription = new FormData();
fdItemDescription.left = new FormAttachment( middle, 0 );
fdItemDescription.top = new FormAttachment( wItemTitle, margin );
fdItemDescription.right = new FormAttachment( 100, 0 );
wItemDescription.setLayoutData( fdItemDescription );
// Item Link
wlItemLink = new Label( wFields, SWT.RIGHT );
wlItemLink.setText( BaseMessages.getString( PKG, "RssOutputDialog.ItemLink.Label" ) );
props.setLook( wlItemLink );
fdlItemLink = new FormData();
fdlItemLink.left = new FormAttachment( 0, 0 );
fdlItemLink.top = new FormAttachment( wItemDescription, margin );
fdlItemLink.right = new FormAttachment( middle, -margin );
wlItemLink.setLayoutData( fdlItemLink );
wItemLink = new CCombo( wFields, SWT.BORDER | SWT.READ_ONLY );
wItemLink.setEditable( true );
wItemLink.setItems( fieldNames );
props.setLook( wItemLink );
wItemLink.addModifyListener( lsMod );
fdItemLink = new FormData();
fdItemLink.left = new FormAttachment( middle, 0 );
fdItemLink.top = new FormAttachment( wItemDescription, margin );
fdItemLink.right = new FormAttachment( 100, 0 );
wItemLink.setLayoutData( fdItemLink );
// Item PubDate
wlItemPubDate = new Label( wFields, SWT.RIGHT );
wlItemPubDate.setText( BaseMessages.getString( PKG, "RssOutputDialog.ItemPubDate.Label" ) );
props.setLook( wlItemPubDate );
fdlItemPubDate = new FormData();
fdlItemPubDate.left = new FormAttachment( 0, 0 );
fdlItemPubDate.top = new FormAttachment( wItemLink, margin );
fdlItemPubDate.right = new FormAttachment( middle, -margin );
wlItemPubDate.setLayoutData( fdlItemPubDate );
wItemPubDate = new CCombo( wFields, SWT.BORDER | SWT.READ_ONLY );
wItemPubDate.setEditable( true );
wItemPubDate.setItems( fieldNames );
props.setLook( wItemPubDate );
wItemPubDate.addModifyListener( lsMod );
fdItemPubDate = new FormData();
fdItemPubDate.left = new FormAttachment( middle, 0 );
fdItemPubDate.top = new FormAttachment( wItemLink, margin );
fdItemPubDate.right = new FormAttachment( 100, 0 );
wItemPubDate.setLayoutData( fdItemPubDate );
// Item Author
wlItemAuthor = new Label( wFields, SWT.RIGHT );
wlItemAuthor.setText( BaseMessages.getString( PKG, "RssOutputDialog.ItemAuthor.Label" ) );
props.setLook( wlItemAuthor );
fdlItemAuthor = new FormData();
fdlItemAuthor.left = new FormAttachment( 0, 0 );
fdlItemAuthor.top = new FormAttachment( wItemPubDate, margin );
fdlItemAuthor.right = new FormAttachment( middle, -margin );
wlItemAuthor.setLayoutData( fdlItemAuthor );
wItemAuthor = new CCombo( wFields, SWT.BORDER | SWT.READ_ONLY );
wItemAuthor.setEditable( true );
wItemAuthor.setItems( fieldNames );
props.setLook( wItemAuthor );
wItemAuthor.addModifyListener( lsMod );
fdItemAuthor = new FormData();
fdItemAuthor.left = new FormAttachment( middle, 0 );
fdItemAuthor.top = new FormAttachment( wItemPubDate, margin );
fdItemAuthor.right = new FormAttachment( 100, 0 );
wItemAuthor.setLayoutData( fdItemAuthor );
// Add GeoRSS ?
wlAddGeoRSS = new Label( wFields, SWT.RIGHT );
wlAddGeoRSS.setText( BaseMessages.getString( PKG, "RssOutputDialog.AddGeoRSS.Label" ) );
props.setLook( wlAddGeoRSS );
fdlAddGeoRSS = new FormData();
fdlAddGeoRSS.left = new FormAttachment( 0, 0 );
fdlAddGeoRSS.top = new FormAttachment( wItemAuthor, margin );
fdlAddGeoRSS.right = new FormAttachment( middle, -margin );
wlAddGeoRSS.setLayoutData( fdlAddGeoRSS );
wAddGeoRSS = new Button( wFields, SWT.CHECK );
wAddGeoRSS.setToolTipText( BaseMessages.getString( PKG, "RssOutputDialog.AddGeoRSS.Tooltip" ) );
props.setLook( wAddGeoRSS );
fdAddGeoRSS = new FormData();
fdAddGeoRSS.left = new FormAttachment( middle, 0 );
fdAddGeoRSS.top = new FormAttachment( wItemAuthor, margin );
fdAddGeoRSS.right = new FormAttachment( 100, 0 );
wAddGeoRSS.setLayoutData( fdAddGeoRSS );
wAddGeoRSS.addSelectionListener( new SelectionAdapter() {
public void widgetSelected( SelectionEvent e ) {
activateGeoRSS();
input.setChanged();
}
} );
// Add GeoRSS ?
wluseGeoRSSGML = new Label( wFields, SWT.RIGHT );
wluseGeoRSSGML.setText( BaseMessages.getString( PKG, "RssOutputDialog.useGeoRSSGML.Label" ) );
props.setLook( wluseGeoRSSGML );
fdluseGeoRSSGML = new FormData();
fdluseGeoRSSGML.left = new FormAttachment( 0, 0 );
fdluseGeoRSSGML.top = new FormAttachment( wAddGeoRSS, margin );
fdluseGeoRSSGML.right = new FormAttachment( middle, -margin );
wluseGeoRSSGML.setLayoutData( fdluseGeoRSSGML );
wuseGeoRSSGML = new Button( wFields, SWT.CHECK );
wuseGeoRSSGML.setToolTipText( BaseMessages.getString( PKG, "RssOutputDialog.useGeoRSSGML.Tooltip" ) );
props.setLook( wuseGeoRSSGML );
fduseGeoRSSGML = new FormData();
fduseGeoRSSGML.left = new FormAttachment( middle, 0 );
fduseGeoRSSGML.top = new FormAttachment( wAddGeoRSS, margin );
fduseGeoRSSGML.right = new FormAttachment( 100, 0 );
wuseGeoRSSGML.setLayoutData( fduseGeoRSSGML );
wuseGeoRSSGML.addSelectionListener( new SelectionAdapter() {
public void widgetSelected( SelectionEvent e ) {
input.setChanged();
}
} );
// GeoPointLat
wlGeoPointLat = new Label( wFields, SWT.RIGHT );
wlGeoPointLat.setText( BaseMessages.getString( PKG, "RssOutputDialog.GeoPointLat.Label" ) );
props.setLook( wlGeoPointLat );
fdlGeoPointLat = new FormData();
fdlGeoPointLat.left = new FormAttachment( 0, 0 );
fdlGeoPointLat.top = new FormAttachment( wuseGeoRSSGML, margin );
fdlGeoPointLat.right = new FormAttachment( middle, -margin );
wlGeoPointLat.setLayoutData( fdlGeoPointLat );
wGeoPointLat = new CCombo( wFields, SWT.BORDER | SWT.READ_ONLY );
wGeoPointLat.setEditable( true );
wGeoPointLat.setItems( fieldNames );
props.setLook( wGeoPointLat );
wGeoPointLat.addModifyListener( lsMod );
fdGeoPointLat = new FormData();
fdGeoPointLat.left = new FormAttachment( middle, 0 );
fdGeoPointLat.top = new FormAttachment( wuseGeoRSSGML, margin );
fdGeoPointLat.right = new FormAttachment( 100, 0 );
wGeoPointLat.setLayoutData( fdGeoPointLat );
// GeoPointLong
wlGeoPointLong = new Label( wFields, SWT.RIGHT );
wlGeoPointLong.setText( BaseMessages.getString( PKG, "RssOutputDialog.GeoPointLong.Label" ) );
props.setLook( wlGeoPointLong );
fdlGeoPointLong = new FormData();
fdlGeoPointLong.left = new FormAttachment( 0, 0 );
fdlGeoPointLong.top = new FormAttachment( wGeoPointLat, margin );
fdlGeoPointLong.right = new FormAttachment( middle, -margin );
wlGeoPointLong.setLayoutData( fdlGeoPointLong );
wGeoPointLong = new CCombo( wFields, SWT.BORDER | SWT.READ_ONLY );
wGeoPointLong.setEditable( true );
wGeoPointLong.setItems( fieldNames );
props.setLook( wGeoPointLong );
wGeoPointLong.addModifyListener( lsMod );
fdGeoPointLong = new FormData();
fdGeoPointLong.left = new FormAttachment( middle, 0 );
fdGeoPointLong.top = new FormAttachment( wGeoPointLat, margin );
fdGeoPointLong.right = new FormAttachment( 100, 0 );
wGeoPointLong.setLayoutData( fdGeoPointLong );
fdFields = new FormData();
fdFields.left = new FormAttachment( 0, margin );
fdFields.top = new FormAttachment( 0, margin );
fdFields.right = new FormAttachment( 100, -margin );
wFields.setLayoutData( fdFields );
// ///////////////////////////////////////////////////////////
// / END OF Fields GROUP
// ///////////////////////////////////////////////////////////
fdGeneralComp = new FormData();
fdGeneralComp.left = new FormAttachment( 0, 0 );
fdGeneralComp.top = new FormAttachment( 0, 0 );
fdGeneralComp.right = new FormAttachment( 100, 0 );
fdGeneralComp.bottom = new FormAttachment( 100, 0 );
wGeneralComp.setLayoutData( fdGeneralComp );
wGeneralComp.layout();
wGeneralTab.setControl( wGeneralComp );
props.setLook( wGeneralComp );
// ///////////////////////////////////////////////////////////
// / END OF GENERAL TAB
// ///////////////////////////////////////////////////////////
// ////////////////////////
// START OF CUSTOM TAB ///
// ////////////////////////
wCustomTab = new CTabItem( wTabFolder, SWT.NONE );
wCustomTab.setText( BaseMessages.getString( PKG, "RssOutputDialog.CustomTab.TabTitle" ) );
wCustomComp = new Composite( wTabFolder, SWT.NONE );
props.setLook( wCustomComp );
FormLayout customLayout = new FormLayout();
customLayout.marginWidth = 3;
customLayout.marginHeight = 3;
wCustomComp.setLayout( customLayout );
wlChannelCustom = new Label( wCustomComp, SWT.NONE );
wlChannelCustom.setText( BaseMessages.getString( PKG, "RssOutputDialog.Keys.Label" ) );
props.setLook( wlChannelCustom );
fdlChannelCustom = new FormData();
fdlChannelCustom.left = new FormAttachment( 0, 0 );
fdlChannelCustom.top = new FormAttachment( 0, margin );
wlChannelCustom.setLayoutData( fdlChannelCustom );
int nrChannelCols = 2;
int nrChannelRows = ( input.getChannelCustomFields() != null ? input.getChannelCustomFields().length : 1 );
ColumnInfo[] ciChannel = new ColumnInfo[nrChannelCols];
ciChannel[0] =
new ColumnInfo(
BaseMessages.getString( PKG, "RssOutputDialog.ColumnInfo.Tag" ), ColumnInfo.COLUMN_TYPE_TEXT, false );
ciChannel[1] =
new ColumnInfo(
BaseMessages.getString( PKG, "RssOutputDialog.ColumnInfo.Field" ), ColumnInfo.COLUMN_TYPE_CCOMBO );
ciChannel[0].setUsingVariables( true );
ciChannel[1].setComboValues( fieldNames );
wChannelCustom =
new TableView( transMeta, wCustomComp, SWT.BORDER
| SWT.FULL_SELECTION | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL, ciChannel, nrChannelRows, lsMod, props );
wGet = new Button( wCustomComp, SWT.PUSH );
wGet.setText( BaseMessages.getString( PKG, "RssOutputDialog.GetFields.Button" ) );
fdGet = new FormData();
fdGet.right = new FormAttachment( 100, 0 );
fdGet.top = new FormAttachment( wlChannelCustom, margin );
wGet.setLayoutData( fdGet );
fdChannelCustom = new FormData();
fdChannelCustom.left = new FormAttachment( 0, 0 );
fdChannelCustom.top = new FormAttachment( wlChannelCustom, margin );
fdChannelCustom.right = new FormAttachment( wGet, -margin );
fdChannelCustom.bottom = new FormAttachment( wlChannelCustom, 190 );
wChannelCustom.setLayoutData( fdChannelCustom );
// THE BUTTONS
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, null );
// THE Item Custom
wlItemCustom = new Label( wCustomComp, SWT.NONE );
wlItemCustom.setText( BaseMessages.getString( PKG, "RssOutputDialog.ItemCustom.Label" ) );
props.setLook( wlItemCustom );
fdlItemCustom = new FormData();
fdlItemCustom.left = new FormAttachment( 0, 0 );
fdlItemCustom.top = new FormAttachment( wChannelCustom, margin );
wlItemCustom.setLayoutData( fdlItemCustom );
int UpInsCols = 2;
int UpInsRows = ( input.getItemCustomFields() != null ? input.getItemCustomFields().length : 1 );
ColumnInfo[] ciItem = new ColumnInfo[UpInsCols];
ciItem[0] =
new ColumnInfo(
BaseMessages.getString( PKG, "RssOutputDialog.ColumnInfo.Tag" ), ColumnInfo.COLUMN_TYPE_TEXT, false );
ciItem[1] =
new ColumnInfo(
BaseMessages.getString( PKG, "RssOutputDialog.ColumnInfo.Field" ), ColumnInfo.COLUMN_TYPE_CCOMBO );
ciItem[1].setComboValues( fieldNames );
wItemCustom =
new TableView( transMeta, wCustomComp, SWT.BORDER
| SWT.FULL_SELECTION | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL, ciItem, UpInsRows, lsMod, props );
wGetCustomItem = new Button( wCustomComp, SWT.PUSH );
wGetCustomItem.setText( BaseMessages.getString( PKG, "RssOutputDialog.GetItemFields.Label" ) );
fdGetCustomItem = new FormData();
fdGetCustomItem.top = new FormAttachment( wlItemCustom, margin );
fdGetCustomItem.right = new FormAttachment( 100, 0 );
wGetCustomItem.setLayoutData( fdGetCustomItem );
fdItemCustom = new FormData();
fdItemCustom.left = new FormAttachment( 0, 0 );
fdItemCustom.top = new FormAttachment( wlItemCustom, margin );
fdItemCustom.right = new FormAttachment( wGetCustomItem, -margin );
fdItemCustom.bottom = new FormAttachment( 100, -2 * margin );
wItemCustom.setLayoutData( fdItemCustom );
fdCustomComp = new FormData();
fdCustomComp.left = new FormAttachment( 0, 0 );
fdCustomComp.top = new FormAttachment( 0, 0 );
fdCustomComp.right = new FormAttachment( 100, 0 );
fdCustomComp.bottom = new FormAttachment( 100, 0 );
wCustomComp.setLayoutData( fdCustomComp );
wCustomComp.layout();
wCustomTab.setControl( wCustomComp );
props.setLook( wCustomComp );
// ///////////////////////////////////////////////////////////
// / END OF CUSTOM TAB
// ///////////////////////////////////////////////////////////
// ////////////////////////////////////
// START OF CUSTOM NAMESPACE TAB ///
// ////////////////////////////////////
wCustomNameSpace = new CTabItem( wTabFolder, SWT.NONE );
wCustomNameSpace.setText( BaseMessages.getString( PKG, "RssOutputDialog.CustomNameSpace.TabTitle" ) );
wCustomNameSpaceComp = new Composite( wTabFolder, SWT.NONE );
props.setLook( wCustomNameSpaceComp );
FormLayout customnamespaceLayout = new FormLayout();
customnamespaceLayout.marginWidth = 3;
customnamespaceLayout.marginHeight = 3;
wCustomNameSpaceComp.setLayout( customnamespaceLayout );
// Namespaces
wlNameSpace = new Label( wCustomNameSpaceComp, SWT.NONE );
wlNameSpace.setText( BaseMessages.getString( PKG, "RssOutputDialog.NameSpace.Label" ) );
props.setLook( wlNameSpace );
fdlNameSpace = new FormData();
fdlNameSpace.left = new FormAttachment( 0, 0 );
fdlNameSpace.top = new FormAttachment( 0, margin );
wlNameSpace.setLayoutData( fdlItemCustom );
int nrRows = ( input.getNameSpaces() != null ? input.getNameSpaces().length : 1 );
ColumnInfo[] ciNameSpace = new ColumnInfo[2];
ciNameSpace[0] =
new ColumnInfo(
BaseMessages.getString( PKG, "RssOutputDialog.ColumnInfo.NameSpace.Title" ),
ColumnInfo.COLUMN_TYPE_TEXT, false );
ciNameSpace[1] =
new ColumnInfo(
BaseMessages.getString( PKG, "RssOutputDialog.ColumnInfo.NameSpace" ), ColumnInfo.COLUMN_TYPE_TEXT,
false );
ciNameSpace[0].setUsingVariables( true );
ciNameSpace[1].setUsingVariables( true );
wNameSpaceCustom =
new TableView( transMeta, wCustomNameSpaceComp, SWT.BORDER
| SWT.FULL_SELECTION | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL, ciNameSpace, nrRows, lsMod, props );
fdNameSpaceCustom = new FormData();
fdNameSpaceCustom.left = new FormAttachment( 0, 0 );
fdNameSpaceCustom.top = new FormAttachment( wlNameSpace, margin );
fdNameSpaceCustom.right = new FormAttachment( 100, -margin );
fdNameSpaceCustom.bottom = new FormAttachment( 100, -2 * margin );
wNameSpaceCustom.setLayoutData( fdNameSpaceCustom );
fdCustomNameSpace = new FormData();
fdCustomNameSpace.left = new FormAttachment( 0, 0 );
fdCustomNameSpace.top = new FormAttachment( 0, 0 );
fdCustomNameSpace.right = new FormAttachment( 100, 0 );
fdCustomNameSpace.bottom = new FormAttachment( 100, 0 );
wCustomNameSpaceComp.setLayoutData( fdCustomNameSpace );
wCustomNameSpaceComp.layout();
wCustomNameSpace.setControl( wCustomNameSpaceComp );
props.setLook( wCustomNameSpaceComp );
// ///////////////////////////////////////////////////////////
// / END OF CUSTOM NAMESPACE TAB
// ///////////////////////////////////////////////////////////
// ////////////////////////
// START OF CONTENT TAB///
// /
wContentTab = new CTabItem( wTabFolder, SWT.NONE );
wContentTab.setText( BaseMessages.getString( PKG, "RssOutputDialog.ContentTab.TabTitle" ) );
FormLayout contentLayout = new FormLayout();
contentLayout.marginWidth = 3;
contentLayout.marginHeight = 3;
wContentComp = new Composite( wTabFolder, SWT.NONE );
props.setLook( wContentComp );
wContentComp.setLayout( contentLayout );
// File grouping?
// ////////////////////////
// START OF FileName GROUP
//
wFileName = new Group( wContentComp, SWT.SHADOW_NONE );
props.setLook( wFileName );
wFileName.setText( BaseMessages.getString( PKG, "RssOutputDialog.Group.File.Label" ) );
FormLayout groupFileLayout = new FormLayout();
groupFileLayout.marginWidth = 10;
groupFileLayout.marginHeight = 10;
wFileName.setLayout( groupFileLayout );
// Filename line
wlFilename = new Label( wFileName, SWT.RIGHT );
wlFilename.setText( BaseMessages.getString( PKG, "RssOutputDialog.Filename.Label" ) );
props.setLook( wlFilename );
fdlFilename = new FormData();
fdlFilename.left = new FormAttachment( 0, 0 );
fdlFilename.top = new FormAttachment( wFields, margin );
fdlFilename.right = new FormAttachment( middle, -margin );
wlFilename.setLayoutData( fdlFilename );
wbFilename = new Button( wFileName, 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( wFields, 0 );
wbFilename.setLayoutData( fdbFilename );
wFilename = new TextVar( transMeta, wFileName, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wFilename );
wFilename.addModifyListener( lsMod );
fdFilename = new FormData();
fdFilename.left = new FormAttachment( middle, 0 );
fdFilename.top = new FormAttachment( wFields, margin );
fdFilename.right = new FormAttachment( wbFilename, -margin );
wFilename.setLayoutData( fdFilename );
// Create Parent Folder
wlCreateParentFolder = new Label( wFileName, SWT.RIGHT );
wlCreateParentFolder.setText( BaseMessages.getString( PKG, "RssOutputDialog.CreateParentFolder.Label" ) );
props.setLook( wlCreateParentFolder );
fdlCreateParentFolder = new FormData();
fdlCreateParentFolder.left = new FormAttachment( 0, 0 );
fdlCreateParentFolder.top = new FormAttachment( wFilename, margin );
fdlCreateParentFolder.right = new FormAttachment( middle, -margin );
wlCreateParentFolder.setLayoutData( fdlCreateParentFolder );
wCreateParentFolder = new Button( wFileName, SWT.CHECK );
wCreateParentFolder
.setToolTipText( BaseMessages.getString( PKG, "RssOutputDialog.CreateParentFolder.Tooltip" ) );
props.setLook( wCreateParentFolder );
fdCreateParentFolder = new FormData();
fdCreateParentFolder.left = new FormAttachment( middle, 0 );
fdCreateParentFolder.top = new FormAttachment( wFilename, margin );
fdCreateParentFolder.right = new FormAttachment( 100, 0 );
wCreateParentFolder.setLayoutData( fdCreateParentFolder );
wCreateParentFolder.addSelectionListener( new SelectionAdapter() {
public void widgetSelected( SelectionEvent e ) {
input.setChanged();
}
} );
// FileName defined in a field
wlFileNameInField = new Label( wFileName, SWT.RIGHT );
wlFileNameInField.setText( BaseMessages.getString( PKG, "RssOutputDialog.FileNameInField.Label" ) );
props.setLook( wlFileNameInField );
fdlFileNameInField = new FormData();
fdlFileNameInField.left = new FormAttachment( 0, 0 );
fdlFileNameInField.top = new FormAttachment( wCreateParentFolder, margin );
fdlFileNameInField.right = new FormAttachment( middle, -margin );
wlFileNameInField.setLayoutData( fdlFileNameInField );
wFileNameInField = new Button( wFileName, SWT.CHECK );
wFileNameInField.setToolTipText( BaseMessages.getString( PKG, "RssOutputDialog.FileNameInField.Tooltip" ) );
props.setLook( wFileNameInField );
fdFileNameInField = new FormData();
fdFileNameInField.left = new FormAttachment( middle, 0 );
fdFileNameInField.top = new FormAttachment( wCreateParentFolder, margin );
fdFileNameInField.right = new FormAttachment( 100, 0 );
wFileNameInField.setLayoutData( fdFileNameInField );
wFileNameInField.addSelectionListener( new SelectionAdapter() {
public void widgetSelected( SelectionEvent e ) {
setFieldFilename();
}
} );
// FieldFieldFileName line
wlFieldFilename = new Label( wFileName, SWT.RIGHT );
wlFieldFilename.setText( BaseMessages.getString( PKG, "RssOutputDialog.FieldFilename.Label" ) );
props.setLook( wlFieldFilename );
fdlFieldFilename = new FormData();
fdlFieldFilename.left = new FormAttachment( 0, 0 );
fdlFieldFilename.top = new FormAttachment( wFileNameInField, margin );
fdlFieldFilename.right = new FormAttachment( middle, -margin );
wlFieldFilename.setLayoutData( fdlFieldFilename );
wFieldFilename = new CCombo( wFileName, SWT.BORDER | SWT.READ_ONLY );
wFieldFilename.setEditable( true );
wFieldFilename.setItems( fieldNames );
props.setLook( wFieldFilename );
wFieldFilename.addModifyListener( lsMod );
fdFieldFilename = new FormData();
fdFieldFilename.left = new FormAttachment( middle, 0 );
fdFieldFilename.top = new FormAttachment( wFileNameInField, margin );
fdFieldFilename.right = new FormAttachment( 100, -margin );
wFieldFilename.setLayoutData( fdFieldFilename );
// Extension line
wlExtension = new Label( wFileName, 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( wFieldFilename, margin );
fdlExtension.right = new FormAttachment( middle, -margin );
wlExtension.setLayoutData( fdlExtension );
wExtension = new TextVar( transMeta, wFileName, SWT.SINGLE | SWT.LEFT | SWT.BORDER );
props.setLook( wExtension );
wExtension.addModifyListener( lsMod );
fdExtension = new FormData();
fdExtension.left = new FormAttachment( middle, 0 );
fdExtension.top = new FormAttachment( wFieldFilename, margin );
fdExtension.right = new FormAttachment( 100, -margin );
wExtension.setLayoutData( fdExtension );
// Create multi-part file?
wlAddStepnr = new Label( wFileName, SWT.RIGHT );
wlAddStepnr.setText( BaseMessages.getString( PKG, "RssOutputDialog.AddStepnr.Label" ) );
props.setLook( wlAddStepnr );
fdlAddStepnr = new FormData();
fdlAddStepnr.left = new FormAttachment( 0, 0 );
fdlAddStepnr.top = new FormAttachment( wExtension, 2 * margin );
fdlAddStepnr.right = new FormAttachment( middle, -margin );
wlAddStepnr.setLayoutData( fdlAddStepnr );
wAddStepnr = new Button( wFileName, SWT.CHECK );
props.setLook( wAddStepnr );
fdAddStepnr = new FormData();
fdAddStepnr.left = new FormAttachment( middle, 0 );
fdAddStepnr.top = new FormAttachment( wExtension, 2 * margin );
fdAddStepnr.right = new FormAttachment( 100, 0 );
wAddStepnr.setLayoutData( fdAddStepnr );
wAddStepnr.addSelectionListener( new SelectionAdapter() {
public void widgetSelected( SelectionEvent e ) {
input.setChanged();
}
} );
// Create multi-part file?
wlAddDate = new Label( wFileName, SWT.RIGHT );
wlAddDate.setText( BaseMessages.getString( PKG, "RssOutputDialog.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( wFileName, 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( new SelectionAdapter() {
public void widgetSelected( SelectionEvent e ) {
input.setChanged();
// System.out.println("wAddDate.getSelection()="+wAddDate.getSelection());
}
} );
// Create multi-part file?
wlAddTime = new Label( wFileName, SWT.RIGHT );
wlAddTime.setText( BaseMessages.getString( PKG, "RssOutputDialog.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( wFileName, 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( new SelectionAdapter() {
public void widgetSelected( SelectionEvent e ) {
input.setChanged();
}
} );
wbShowFiles = new Button( wFileName, SWT.PUSH | SWT.CENTER );
props.setLook( wbShowFiles );
wbShowFiles.setText( BaseMessages.getString( PKG, "RssOutputDialog.ShowFiles.Button" ) );
fdbShowFiles = new FormData();
fdbShowFiles.left = new FormAttachment( middle, 0 );
fdbShowFiles.top = new FormAttachment( wAddTime, margin * 2 );
wbShowFiles.setLayoutData( fdbShowFiles );
wbShowFiles.addSelectionListener( new SelectionAdapter() {
public void widgetSelected( SelectionEvent e ) {
RssOutputMeta tfoi = new RssOutputMeta();
getInfo( tfoi );
try {
String[] files = tfoi.getFiles( transMeta );
if ( files != null && files.length > 0 ) {
EnterSelectionDialog esd = new EnterSelectionDialog( shell, files,
BaseMessages.getString( PKG, "RssOutputDialog.SelectOutputFiles.DialogTitle" ),
BaseMessages.getString( PKG, "RssOutputDialog.SelectOutputFiles.DialogMessage" ) );
esd.setViewOnly();
esd.open();
} else {
MessageBox mb = new MessageBox( shell, SWT.OK | SWT.ICON_ERROR );
mb.setMessage( BaseMessages.getString( PKG, "RssOutputDialog.NoFilesFound.DialogMessage" ) );
mb.setText( BaseMessages.getString( PKG, "System.DialogTitle.Error" ) );
mb.open();
}
} catch ( KettleStepException s ) {
MessageBox mb = new MessageBox( shell, SWT.OK | SWT.ICON_ERROR );
mb.setMessage( BaseMessages.getString( PKG, "RssOutputDialog.ErrorGettingFiles.DialogMessage", s
.getMessage() ) );
mb.setText( BaseMessages.getString( PKG, "System.DialogTitle.Error" ) );
mb.open();
}
}
} );
fdFileName = new FormData();
fdFileName.left = new FormAttachment( 0, margin );
fdFileName.top = new FormAttachment( wFields, margin );
fdFileName.right = new FormAttachment( 100, -margin );
wFileName.setLayoutData( fdFileName );
// ///////////////////////////////////////////////////////////
// / END OF FileName GROUP
// ///////////////////////////////////////////////////////////
// File grouping?
// ////////////////////////
// START OF ResultFile GROUP
//
wResultFile = new Group( wContentComp, SWT.SHADOW_NONE );
props.setLook( wResultFile );
wResultFile.setText( BaseMessages.getString( PKG, "RssOutputDialog.Group.ResultFile.Label" ) );
FormLayout groupResultFile = new FormLayout();
groupResultFile.marginWidth = 10;
groupResultFile.marginHeight = 10;
wResultFile.setLayout( groupResultFile );
// Add File to the result files name
wlAddToResult = new Label( wResultFile, SWT.RIGHT );
wlAddToResult.setText( BaseMessages.getString( PKG, "RssOutputDialog.AddFileToResult.Label" ) );
props.setLook( wlAddToResult );
fdlAddToResult = new FormData();
fdlAddToResult.left = new FormAttachment( 0, 0 );
fdlAddToResult.top = new FormAttachment( wFileName, margin );
fdlAddToResult.right = new FormAttachment( middle, -margin );
wlAddToResult.setLayoutData( fdlAddToResult );
wAddToResult = new Button( wResultFile, SWT.CHECK );
wAddToResult.setToolTipText( BaseMessages.getString( PKG, "RssOutputDialog.AddFileToResult.Tooltip" ) );
props.setLook( wAddToResult );
fdAddToResult = new FormData();
fdAddToResult.left = new FormAttachment( middle, 0 );
fdAddToResult.top = new FormAttachment( wFileName, margin );
fdAddToResult.right = new FormAttachment( 100, 0 );
wAddToResult.setLayoutData( fdAddToResult );
SelectionAdapter lsSelAR = new SelectionAdapter() {
public void widgetSelected( SelectionEvent arg0 ) {
input.setChanged();
}
};
wAddToResult.addSelectionListener( lsSelAR );
fdResultFile = new FormData();
fdResultFile.left = new FormAttachment( 0, margin );
fdResultFile.top = new FormAttachment( wFileName, margin );
fdResultFile.right = new FormAttachment( 100, -margin );
wResultFile.setLayoutData( fdResultFile );
// ///////////////////////////////////////////////////////////
// / END OF ResultFile 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( wContentComp );
wContentComp.layout();
wContentTab.setControl( wContentComp );
// ///////////////////////////////////////////////////////////
// / END OF CONTENT TAB
// ///////////////////////////////////////////////////////////
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 );
// Add listeners
lsOK = new Listener() {
public void handleEvent( Event e ) {
ok();
}
};
lsCancel = new Listener() {
public void handleEvent( Event e ) {
cancel();
}
};
lsGet = new Listener() {
public void handleEvent( Event e ) {
get( wChannelCustom );
}
};
lsGetCustomItem = new Listener() {
public void handleEvent( Event e ) {
get( wItemCustom );
}
};
wOK.addListener( SWT.Selection, lsOK );
wCancel.addListener( SWT.Selection, lsCancel );
wGet.addListener( SWT.Selection, lsGet );
wGetCustomItem.addListener( SWT.Selection, lsGetCustomItem );
lsDef = new SelectionAdapter() {
public void widgetDefaultSelected( SelectionEvent e ) {
ok();
}
};
wStepname.addSelectionListener( lsDef );
wbFilename.addSelectionListener( new SelectionAdapter() {
public void widgetSelected( SelectionEvent e ) {
FileDialog dialog = new FileDialog( shell, SWT.SAVE );
dialog.setFilterExtensions( new String[] { "*.txt", "*.TXT", "*" } );
if ( wFilename.getText() != null ) {
dialog.setFileName( transMeta.environmentSubstitute( wFilename.getText() ) );
}
dialog.setFilterNames( new String[] {
BaseMessages.getString( PKG, "System.FileType.TextFiles" ),
BaseMessages.getString( PKG, "System.FileType.CSVFiles" ),
BaseMessages.getString( PKG, "System.FileType.AllFiles" ) } );
if ( dialog.open() != null ) {
String extension = wExtension.getText();
if ( extension != null
&& dialog.getFileName() != null && dialog.getFileName().endsWith( "." + extension ) ) {
// The extension is filled in and matches the end
// of the selected file => Strip off the extension.
String fileName = dialog.getFileName();
wFilename.setText( dialog.getFilterPath()
+ System.getProperty( "file.separator" )
+ fileName.substring( 0, fileName.length() - ( extension.length() + 1 ) ) );
} else {
wFilename.setText( dialog.getFilterPath()
+ System.getProperty( "file.separator" ) + dialog.getFileName() );
}
}
}
} );
// Detect X or ALT-F4 or something that kills this window...
shell.addShellListener( new ShellAdapter() {
public void shellClosed( ShellEvent e ) {
cancel();
}
} );
lsResize = new Listener() {
public void handleEvent( Event event ) {
// Point size = shell.getSize();
}
};
shell.addListener( SWT.Resize, lsResize );
wTabFolder.setSelection( 0 );
// Set the shell size, based upon previous time...
setSize();
getData();
setCustomRSS();
setFieldFilename();
setImage();
activateGeoRSS();
input.setChanged( changed ); // backupChanged);
shell.open();
while ( !shell.isDisposed() ) {
if ( !display.readAndDispatch() ) {
display.sleep();
}
}
return stepname;
}
private void setImage() {
wlChannelImageTitle.setEnabled( wAddImage.getSelection() );
wChannelImageTitle.setEnabled( wAddImage.getSelection() );
wlChannelImageLink.setEnabled( wAddImage.getSelection() );
wChannelImageLink.setEnabled( wAddImage.getSelection() );
wlChannelImageUrl.setEnabled( wAddImage.getSelection() );
wChannelImageUrl.setEnabled( wAddImage.getSelection() );
wChannelImageDescription.setEnabled( wAddImage.getSelection() );
wlChannelImageDescription.setEnabled( wAddImage.getSelection() );
}
private void setCustomRSS() {
wlDisplayItem.setEnabled( wCustomRss.getSelection() );
wDisplayItem.setEnabled( wCustomRss.getSelection() );
wlRemarqChannel.setEnabled( !wCustomRss.getSelection() );
wlRemarqMandatory.setEnabled( !wCustomRss.getSelection() );
wChannelTitle.setEnabled( !wCustomRss.getSelection() );
wlChannelTitle.setEnabled( !wCustomRss.getSelection() );
wlChannelTitle.setEnabled( !wCustomRss.getSelection() );
wlChannelTitle.setEnabled( !wCustomRss.getSelection() );
wlChannelTitle.setEnabled( !wCustomRss.getSelection() );
wlChannelTitle.setEnabled( !wCustomRss.getSelection() );
wlChannelTitle.setEnabled( !wCustomRss.getSelection() );
wlChannelTitle.setEnabled( !wCustomRss.getSelection() );
wlChannelTitle.setEnabled( !wCustomRss.getSelection() );
wlChannelTitle.setEnabled( !wCustomRss.getSelection() );
wlChannelDescription.setEnabled( !wCustomRss.getSelection() );
wChannelDescription.setEnabled( !wCustomRss.getSelection() );
wlChannelLink.setEnabled( !wCustomRss.getSelection() );
wChannelLink.setEnabled( !wCustomRss.getSelection() );
wlChannelPubDate.setEnabled( !wCustomRss.getSelection() );
wChannelPubDate.setEnabled( !wCustomRss.getSelection() );
wlChannelLanguage.setEnabled( !wCustomRss.getSelection() );
wChannelLanguage.setEnabled( !wCustomRss.getSelection() );
wlChannelAuthor.setEnabled( !wCustomRss.getSelection() );
wChannelAuthor.setEnabled( !wCustomRss.getSelection() );
wChannelCopyright.setEnabled( !wCustomRss.getSelection() );
wlChannelCopyright.setEnabled( !wCustomRss.getSelection() );
wlChannelImageTitle.setEnabled( !wCustomRss.getSelection() );
wChannelImageTitle.setEnabled( !wCustomRss.getSelection() );
wlChannelImageLink.setEnabled( !wCustomRss.getSelection() );
wChannelImageLink.setEnabled( !wCustomRss.getSelection() );
wlChannelImageUrl.setEnabled( !wCustomRss.getSelection() );
wChannelImageUrl.setEnabled( !wCustomRss.getSelection() );
wChannelImageDescription.setEnabled( !wCustomRss.getSelection() );
wlAddImage.setEnabled( !wCustomRss.getSelection() );
wAddImage.setEnabled( !wCustomRss.getSelection() );
wlRemarqItem.setEnabled( !wCustomRss.getSelection() );
wlItemTitle.setEnabled( !wCustomRss.getSelection() );
wItemTitle.setEnabled( !wCustomRss.getSelection() );
wItemDescription.setEnabled( !wCustomRss.getSelection() );
wlItemDescription.setEnabled( !wCustomRss.getSelection() );
wlItemLink.setEnabled( !wCustomRss.getSelection() );
wItemLink.setEnabled( !wCustomRss.getSelection() );
wlItemPubDate.setEnabled( !wCustomRss.getSelection() );
wItemPubDate.setEnabled( !wCustomRss.getSelection() );
wlItemAuthor.setEnabled( !wCustomRss.getSelection() );
wItemAuthor.setEnabled( !wCustomRss.getSelection() );
wAddGeoRSS.setEnabled( !wCustomRss.getSelection() );
wlChannelCustom.setEnabled( wCustomRss.getSelection() );
wChannelCustom.setEnabled( wCustomRss.getSelection() );
wItemCustom.setEnabled( wCustomRss.getSelection() );
wGetCustomItem.setEnabled( wCustomRss.getSelection() );
wGet.setEnabled( wCustomRss.getSelection() );
wlNameSpace.setEnabled( wCustomRss.getSelection() );
wCustomNameSpaceComp.setEnabled( wCustomRss.getSelection() );
}
private void activateGeoRSS() {
wluseGeoRSSGML.setEnabled( wAddGeoRSS.getSelection() );
wuseGeoRSSGML.setEnabled( wAddGeoRSS.getSelection() );
wlGeoPointLat.setEnabled( wAddGeoRSS.getSelection() );
wGeoPointLat.setEnabled( wAddGeoRSS.getSelection() );
wlGeoPointLong.setEnabled( wAddGeoRSS.getSelection() );
wGeoPointLong.setEnabled( wAddGeoRSS.getSelection() );
}
private void setFieldFilename() {
wlFieldFilename.setEnabled( wFileNameInField.getSelection() );
wFieldFilename.setEnabled( wFileNameInField.getSelection() );
wlExtension.setEnabled( !wFileNameInField.getSelection() );
wExtension.setEnabled( !wFileNameInField.getSelection() );
wlFilename.setEnabled( !wFileNameInField.getSelection() );
wFilename.setEnabled( !wFileNameInField.getSelection() );
wbFilename.setEnabled( !wFileNameInField.getSelection() );
wAddDate.setEnabled( !wFileNameInField.getSelection() );
wAddTime.setEnabled( !wFileNameInField.getSelection() );
wAddStepnr.setEnabled( !wFileNameInField.getSelection() );
wbShowFiles.setEnabled( !wFileNameInField.getSelection() );
}
private void setEncodings() {
// Encoding of the text file:
if ( !gotEncodings ) {
gotEncodings = true;
wEncoding.removeAll();
List<Charset> values = new ArrayList<Charset>( Charset.availableCharsets().values() );
for ( int i = 0; i < values.size(); i++ ) {
Charset charSet = values.get( i );
wEncoding.add( charSet.displayName() );
}
// Now select the default!
String defEncoding = Const.getEnvironmentVariable( "file.encoding", "UTF-8" );
int idx = Const.indexOfString( defEncoding, wEncoding.getItems() );
if ( idx >= 0 ) {
wEncoding.select( idx );
}
}
}
private void getFields() {
if ( !gotPreviousFields ) {
try {
RowMetaInterface r = transMeta.getPrevStepFields( stepname );
if ( r != null ) {
fieldNames = r.getFieldNames();
}
} catch ( KettleException ke ) {
new ErrorDialog(
shell, BaseMessages.getString( PKG, "RssOutputDialog.FailedToGetFields.DialogTitle" ), BaseMessages
.getString( PKG, "RssOutputDialog.FailedToGetFields.DialogMessage" ), ke );
}
gotPreviousFields = true;
}
}
private void get( TableView wTable ) {
try {
RowMetaInterface r = transMeta.getPrevStepFields( stepname );
if ( r != null ) {
TableItemInsertListener listener = new TableItemInsertListener() {
public boolean tableItemInserted( TableItem tableItem, ValueMetaInterface v ) {
return true;
}
};
BaseStepDialog.getFieldsFromPrevious( r, wTable, 1, new int[] { 1, 2 }, new int[] {}, -1, -1, listener );
}
} catch ( KettleException ke ) {
new ErrorDialog(
shell, BaseMessages.getString( PKG, "RssOutputDialog.UnableToGetFieldsError.DialogTitle" ), BaseMessages
.getString( PKG, "RssOutputDialog.UnableToGetFieldsError.DialogMessage" ), ke );
}
}
/**
* Copy information from the meta-data input to the dialog fields.
*/
public void getData() {
if ( input.getVersion() != null ) {
wVersion.setText( input.getVersion() );
}
if ( input.getEncoding() != null ) {
wEncoding.setText( input.getEncoding() );
} else {
wEncoding.setText( "iso-8859-1" );
}
if ( input.getChannelDescription() != null ) {
wChannelDescription.setText( input.getChannelDescription() );
}
if ( input.getChannelLink() != null ) {
wChannelLink.setText( input.getChannelLink() );
}
if ( input.getChannelPubDate() != null ) {
wChannelPubDate.setText( input.getChannelPubDate() );
}
if ( input.getChannelCopyright() != null ) {
wChannelCopyright.setText( input.getChannelCopyright() );
}
if ( input.getChannelImageTitle() != null ) {
wChannelImageTitle.setText( input.getChannelImageTitle() );
}
if ( input.getChannelImageLink() != null ) {
wChannelImageLink.setText( input.getChannelImageLink() );
}
if ( input.getChannelImageUrl() != null ) {
wChannelImageUrl.setText( input.getChannelImageUrl() );
}
if ( input.getChannelImageDescription() != null ) {
wChannelImageDescription.setText( input.getChannelImageDescription() );
}
if ( input.getChannelLanguage() != null ) {
wChannelLanguage.setText( input.getChannelLanguage() );
}
if ( input.getChannelAuthor() != null ) {
wChannelAuthor.setText( input.getChannelAuthor() );
}
if ( input.getChannelTitle() != null ) {
wChannelTitle.setText( input.getChannelTitle() );
}
wAddImage.setSelection( input.AddImage() );
// items ...
if ( input.getItemTitle() != null ) {
wItemTitle.setText( input.getItemTitle() );
}
if ( input.getItemDescription() != null ) {
wItemDescription.setText( input.getItemDescription() );
}
if ( input.getItemLink() != null ) {
wItemLink.setText( input.getItemLink() );
}
if ( input.getItemPubDate() != null ) {
wItemPubDate.setText( input.getItemPubDate() );
}
if ( input.getItemAuthor() != null ) {
wItemAuthor.setText( input.getItemAuthor() );
}
// GeoRSS
wAddGeoRSS.setSelection( input.AddGeoRSS() );
wuseGeoRSSGML.setSelection( input.useGeoRSSGML() );
if ( input.getGeoPointLat() != null ) {
wGeoPointLat.setText( input.getGeoPointLat() );
}
if ( input.getGeoPointLong() != null ) {
wGeoPointLong.setText( input.getGeoPointLong() );
}
if ( input.getFileName() != null ) {
wFilename.setText( input.getFileName() );
}
if ( input.getFileNameField() != null ) {
wFieldFilename.setText( input.getFileNameField() );
}
wFileNameInField.setSelection( input.isFilenameInField() );
wCreateParentFolder.setSelection( input.isCreateParentFolder() );
if ( input.getExtension() != null ) {
wExtension.setText( input.getExtension() );
} else {
wExtension.setText( "xml" );
}
wAddDate.setSelection( input.isDateInFilename() );
wAddTime.setSelection( input.isTimeInFilename() );
wAddStepnr.setSelection( input.isStepNrInFilename() );
wAddToResult.setSelection( input.AddToResult() );
wCustomRss.setSelection( input.isCustomRss() );
wDisplayItem.setSelection( input.isDisplayItem() );
if ( input.getChannelCustomFields() != null ) {
for ( int i = 0; i < input.getChannelCustomFields().length; i++ ) {
TableItem item = wChannelCustom.table.getItem( i );
if ( input.getChannelCustomTags()[i] != null ) {
item.setText( 1, input.getChannelCustomTags()[i] );
}
if ( input.getChannelCustomFields()[i] != null ) {
item.setText( 2, input.getChannelCustomFields()[i] );
}
}
}
wChannelCustom.setRowNums();
wChannelCustom.optWidth( true );
if ( input.getItemCustomFields() != null ) {
for ( int i = 0; i < input.getItemCustomFields().length; i++ ) {
TableItem item = wItemCustom.table.getItem( i );
if ( input.getItemCustomTags()[i] != null ) {
item.setText( 1, input.getItemCustomTags()[i] );
}
if ( input.getItemCustomFields()[i] != null ) {
item.setText( 2, input.getItemCustomFields()[i] );
}
}
}
wItemCustom.setRowNums();
wItemCustom.optWidth( true );
if ( input.getNameSpaces() != null ) {
for ( int i = 0; i < input.getNameSpaces().length; i++ ) {
TableItem item = wNameSpaceCustom.table.getItem( i );
if ( input.getNameSpacesTitle()[i] != null ) {
item.setText( 1, input.getNameSpacesTitle()[i] );
}
if ( input.getNameSpaces()[i] != null ) {
item.setText( 2, input.getNameSpaces()[i] );
}
}
}
wNameSpaceCustom.setRowNums();
wNameSpaceCustom.optWidth( true );
wStepname.selectAll();
wStepname.setFocus();
}
private void cancel() {
stepname = null;
input.setChanged( backupChanged );
dispose();
}
private void getInfo( RssOutputMeta info ) {
info.setChannelTitle( wChannelTitle.getText() );
info.setChannelDescription( wChannelDescription.getText() );
info.setChannelLink( wChannelLink.getText() );
info.setChannelPubDate( wChannelPubDate.getText() );
info.setChannelCopyright( wChannelCopyright.getText() );
info.setChannelAuthor( wChannelAuthor.getText() );
// Channel image
info.setAddImage( wAddImage.getSelection() );
info.setChannelImageTitle( wChannelImageTitle.getText() );
info.setChannelImageLink( wChannelImageLink.getText() );
info.setChannelImageUrl( wChannelImageUrl.getText() );
info.setChannelImageDescription( wChannelImageDescription.getText() );
info.setChannelLanguage( wChannelLanguage.getText() );
info.setVersion( wVersion.getText() );
info.setEncoding( wEncoding.getText() );
// Items ...
info.setItemTitle( wItemTitle.getText() );
info.setItemDescription( wItemDescription.getText() );
info.setItemLink( wItemLink.getText() );
info.setItemPubDate( wItemPubDate.getText() );
info.setItemAuthor( wItemAuthor.getText() );
info.setAddGeoRSS( wAddGeoRSS.getSelection() );
info.setUseGeoRSSGML( wuseGeoRSSGML.getSelection() );
info.setGeoPointLat( wGeoPointLat.getText() );
info.setGeoPointLong( wGeoPointLong.getText() );
info.setCreateParentFolder( wCreateParentFolder.getSelection() );
info.setFilenameInField( wFileNameInField.getSelection() );
info.setFileNameField( wFieldFilename.getText() );
info.setFileName( wFilename.getText() );
info.setExtension( wExtension.getText() );
info.setStepNrInFilename( wAddStepnr.getSelection() );
info.setDateInFilename( wAddDate.getSelection() );
info.setTimeInFilename( wAddTime.getSelection() );
info.setAddToResult( wAddToResult.getSelection() );
info.setCustomRss( wCustomRss.getSelection() );
info.setDisplayItem( wDisplayItem.getSelection() );
int nrchannelfields = wChannelCustom.nrNonEmpty();
info.allocate( nrchannelfields );
//CHECKSTYLE:Indentation:OFF
for ( int i = 0; i < nrchannelfields; i++ ) {
TableItem item = wChannelCustom.getNonEmpty( i );
info.getChannelCustomTags()[i] = item.getText( 1 );
info.getChannelCustomFields()[i] = item.getText( 2 );
}
// Custom item fields
int nritemfields = wItemCustom.nrNonEmpty();
info.allocateitem( nritemfields );
//CHECKSTYLE:Indentation:OFF
for ( int i = 0; i < nritemfields; i++ ) {
TableItem item = wItemCustom.getNonEmpty( i );
info.getItemCustomTags()[i] = item.getText( 1 );
info.getItemCustomFields()[i] = item.getText( 2 );
}
// Add Namespaces ?
int nrnamespaces = wNameSpaceCustom.nrNonEmpty();
info.allocatenamespace( nrnamespaces );
//CHECKSTYLE:Indentation:OFF
for ( int i = 0; i < nrnamespaces; i++ ) {
TableItem item = wNameSpaceCustom.getNonEmpty( i );
info.getNameSpacesTitle()[i] = item.getText( 1 );
info.getNameSpaces()[i] = item.getText( 2 );
}
}
private void ok() {
stepname = wStepname.getText(); // return value
getInfo( input );
dispose();
}
}