/**
* Copyright (c) 2005-2006 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM - Initial API and implementation
*/
package org.eclipse.emf.exporter.ui;
import java.util.List;
import org.eclipse.core.resources.IFile;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.IWizard;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchWizard;
import org.eclipse.emf.converter.ui.ModelConverterDescriptorSelectionPage;
import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry;
import org.eclipse.emf.exporter.ExporterPlugin;
import org.eclipse.emf.exporter.ui.contribution.ModelExporterDescriptor;
import org.eclipse.emf.exporter.ui.contribution.ModelExporterManager;
/**
* @since 2.2.0
*/
public class EMFExportWizard extends Wizard implements IWorkbenchWizard
{
public class SelectionPage extends ModelConverterDescriptorSelectionPage
{
public SelectionPage(String pageId, IWorkbench workbench, IStructuredSelection selection)
{
super(pageId, ModelExporterManager.INSTANCE, workbench, selection);
}
@Override
protected Object[] getTableInput()
{
return getModelExporterDescriptors().toArray();
}
@Override
protected String getSelectModelConverterLabel()
{
return ExporterPlugin.INSTANCE.getString("_UI_SelectModelExporters_label");
}
public void setModelExporterDescriptor(ModelExporterDescriptor modelExporterDescriptor)
{
setModelConverterDescriptor(modelExporterDescriptor);
}
public ModelExporterDescriptor getModelExporterDescriptor()
{
return (ModelExporterDescriptor)getModelConverterDescriptor();
}
@Override
protected void adjustModelConverterWizard(IWizard modelConverterWizard)
{
adjustModelExporterWizard((IWorkbenchWizard)modelConverterWizard, getModelExporterDescriptor());
}
@Override
protected String getNoModelConverterMessage()
{
return ExporterPlugin.INSTANCE.getString("_UI_NoModelExporters_error");
}
}
protected IStructuredSelection selection;
protected IWorkbench workbench;
protected IFile modelFile;
protected ModelConverterDescriptorSelectionPage selectionPage;
public EMFExportWizard()
{
super();
setForcePreviousAndNextButtons(true);
setWindowTitle(ExporterPlugin.INSTANCE.getString("_UI_ExportModelWizard_title"));
}
public EMFExportWizard(IFile modelFile)
{
this();
this.modelFile = modelFile;
}
@Override
public void dispose()
{
selection = null;
workbench = null;
if (selectionPage != null)
{
selectionPage.clearCache();
selectionPage = null;
}
super.dispose();
}
protected ImageDescriptor getDefaultImageDescriptor()
{
return ExtendedImageRegistry.INSTANCE.getImageDescriptor(ExporterPlugin.INSTANCE.getImage("ExportModel"));
}
@Override
public void addPages()
{
selectionPage = new SelectionPage("ModelExporterDescriptorSelectionPage", workbench, selection);
selectionPage.setTitle(ExporterPlugin.INSTANCE.getString("_UI_SelectModelExporters_title"));
selectionPage.setModeConverterWizardDefaultImageDescriptor(getDefaultImageDescriptor());
addPage(selectionPage);
}
public void init(IWorkbench workbench, IStructuredSelection selection)
{
this.workbench = workbench;
this.selection = selection;
init();
}
protected void init()
{
setDefaultPageImageDescriptor(getDefaultImageDescriptor());
}
protected List<ModelExporterDescriptor> getModelExporterDescriptors()
{
return ModelExporterManager.INSTANCE.getModelConverterDescriptors();
}
protected void adjustModelExporterWizard(IWorkbenchWizard workbenchWizard, ModelExporterDescriptor modelExporterDescriptor)
{
// Subclasses may override
}
@Override
public boolean canFinish()
{
return false;
}
@Override
public boolean performFinish()
{
selectionPage.performFinish();
return true;
}
}