/**
* This file is part of Archiv-Editor.
*
* The software Archiv-Editor serves as a client user interface for working with
* the Person Data Repository. See: pdr.bbaw.de
*
* The software Archiv-Editor was developed at the Berlin-Brandenburg Academy
* of Sciences and Humanities, Jägerstr. 22/23, D-10117 Berlin.
* www.bbaw.de
*
* Copyright (C) 2010-2013 Berlin-Brandenburg Academy
* of Sciences and Humanities
*
* The software Archiv-Editor was developed by @author: Christoph Plutte.
*
* Archiv-Editor is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Archiv-Editor is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Archiv-Editor.
* If not, see <http://www.gnu.org/licenses/lgpl-3.0.html>.
*/
package org.bbaw.pdr.ae.export.xml;
//import java.awt.Desktop;
import java.io.File;
//import java.io.IOException;
import org.bbaw.pdr.ae.common.AEConstants;
import org.bbaw.pdr.ae.common.CommonActivator;
import org.bbaw.pdr.ae.common.NLMessages;
import org.bbaw.pdr.ae.export.pluggable.AeExportCoreProvider;
import org.bbaw.pdr.ae.export.pluggable.AeExportUtilities;
import org.bbaw.pdr.ae.export.swt.FileSelectionGroup;
import org.bbaw.pdr.ae.export.swt.PdrObjectsPreview;
import org.bbaw.pdr.ae.export.xml.pages.IntroPage;
import org.bbaw.pdr.ae.export.xml.utils.XMLContainer;
import org.eclipse.core.runtime.ILog;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.ui.IExportWizard;
import org.eclipse.ui.IWorkbench;
//TODO: doc
// FIXME: write superclass to imply how to set up (get provider etc.)
/**
*
* @author jhoeper
*
*/
public class XmlExportWizard extends Wizard implements IExportWizard{
protected WizardPage introPage;
protected WizardPage optionsPage;
public PdrObjectsPreview preview;
public FileSelectionGroup outputFileSelect;
private ILog log = AEConstants.ILOGGER;
public XmlExportWizard() {
super();
setWindowTitle(NLMessages.getString("Export_Start"));
}
@Override
public void init(IWorkbench workbench, IStructuredSelection selection) {
AeExportCoreProvider.getInstance().getWizardProvider(this).setWizard(this);
this.createPageControls(getShell());
}
@Override
public void addPages() {
introPage = new IntroPage("");
addPage(introPage);
}
@Override
public boolean canFinish() {
return introPage.isPageComplete();
}
@Override
public boolean performFinish() {
//TODO: getContainer().run(true, true, new IRunnableWithProgress()
AeExportUtilities provider = AeExportCoreProvider.getInstance().getWizardProvider(this);
File file = outputFileSelect.getFile();
if (file == null) return false;
String filename = file.getAbsolutePath();
//TODO: test!
//XMLContainer xml = new XMLContainer(preview.getSelectedObjects());
XMLContainer xml = new XMLContainer(preview.getSelectionHeads());
try {
xml.saveToFile(filename);
provider.terminateWidgets();
log.log(new Status(IStatus.INFO, CommonActivator.PLUGIN_ID,
"Succesfully saved XML to file " + filename));
} catch (Exception e) {
log.log(new Status(IStatus.ERROR, CommonActivator.PLUGIN_ID,
"Saving file failed!\n"+filename));
e.printStackTrace();
provider.unregisterWidgets();
return false;
}
//AeExportCoreProvider.getInstance().saveSettings();
// open result in external application
/*
try {
Desktop.getDesktop().open(file);
} catch (IOException e) {
e.printStackTrace();
}*/
return true;
}
@Override
public boolean performCancel() {
//AeExportCoreProvider.getInstance().getWizardProvider(this).unregisterWidgets();
return super.performCancel();
}
}