package com.openMap1.mapper.presentation;
import java.util.Iterator;
import java.util.Vector;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
import org.eclipse.core.resources.IFile;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.StructuredSelection;
import com.openMap1.mapper.query.DataSource;
/**
* Allow the user to choose one destination file for each active data source.
* The file either holds the results of a translation (xml) or generated XSLT (xsl)
* @author robert
*
*/
public class TranslateDestinationWizard extends Wizard{
private Vector<DataSource> activeSources;
private Vector<IFile> destinationFiles = new Vector<IFile>();
public Vector<IFile> destinationFiles() {return destinationFiles;}
private boolean isXSLTGeneration;
// required extension for result files ='xml' or 'txt'
private String resultExtension;
protected Vector<WizardNewFileCreationPage> pages
= new Vector<WizardNewFileCreationPage>();
public TranslateDestinationWizard(Vector<DataSource> activeSources,
boolean isXSLTGeneration,String resultExtension)
{
super();
this.activeSources = activeSources;
this.isXSLTGeneration = isXSLTGeneration;
this.resultExtension = resultExtension;
}
/**
* The wizard only succeeds if files are created for all active data sources
*/
public boolean performFinish() {
boolean success =true;
for (Iterator<WizardNewFileCreationPage> it = pages.iterator();it.hasNext();)
{
WizardNewFileCreationPage page = it.next();
IFile file = page.createNewFile();
success = success && (file != null) && (file.exists());
if (success) destinationFiles.add(file);
}
if (!success) destinationFiles = new Vector<IFile>();
return success;
}
public void init(IWorkbench workbench, IStructuredSelection selection) {
setWindowTitle("Choose destination files for translation");
if (isXSLTGeneration) setWindowTitle("Choose destination files for generated XSLT");
}
public void addPages() {
for (Iterator<DataSource> it = activeSources.iterator();it.hasNext();)
{
DataSource ds = it.next();
WizardNewFileCreationPage destinationPage =
new WizardNewFileCreationPage("FilePage", new StructuredSelection());
String pageTitle = "Choose a new file to store the result of translation from data source "
+ ds.instanceURIString();
destinationPage.setFileExtension(resultExtension);
if (isXSLTGeneration)
{
pageTitle = "Choose a new file to store generated XSLT to translate from mapped source "
+ ds.mappingSetURIString();
destinationPage.setFileExtension("xsl");
}
destinationPage.setTitle(pageTitle);
addPage(destinationPage);
pages.add(destinationPage);
}
}
}