// Copyright (c) 2008 by Leif Frenzel - see http://leiffrenzel.de
// This code is made available under the terms of the Eclipse Public License,
// version 1.0 (EPL). See http://www.eclipse.org/legal/epl-v10.html
package net.sf.eclipsefp.haskell.ui.internal.wizards;
import java.io.File;
import net.sf.eclipsefp.haskell.core.internal.project.IProjectCreationOperationExtraOp;
import net.sf.eclipsefp.haskell.core.project.HaskellProjectCreationOperation;
import net.sf.eclipsefp.haskell.ui.internal.util.UITexts;
import net.sf.eclipsefp.haskell.ui.util.HaskellUIImages;
import net.sf.eclipsefp.haskell.ui.util.IImageNames;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.IImportWizard;
/** <p>wizard for importing a cabalized package into a new Haskell project
* in the workspace.</p>
*
* @author Leif Frenzel
*/
public class CabalPackageImportWizard extends ProjectCreationWizard
implements IImportWizard {
public CabalPackageImportWizard() {
super( new HaskellProjectCreationOperation() );
}
// interface methods of ProjectCreationWizard
/////////////////////////////////////////////
@Override
public boolean performFinish() {
getOperation().setExtraOperation( new IProjectCreationOperationExtraOp() {
@Override
public void run( final IProject project,
final IProgressMonitor mo ) throws CoreException {
mo.beginTask( "Importing files", 100 );
try {
String loc = ( ( CabalPackageImportWP )page ).getArchiveLocation();
File sourceFile = new File( loc );
Extractor.extract( sourceFile, project );
} finally {
mo.done();
}
}
} );
return super.performFinish();
}
@Override
public void addPages() {
page = new CabalPackageImportWP();
page.setTitle( getPageTitle() );
page.setDescription( getPageDescription() );
addPage( page );
}
@Override
protected ImageDescriptor getBannerImage() {
String key = IImageNames.IMPORT_CABAL_PACKAGE;
return HaskellUIImages.getImageDescriptor( key );
}
@Override
protected String getPageDescription() {
return UITexts.cabalPackageImportWizard_pageDesc;
}
@Override
protected String getPageTitle() {
return UITexts.cabalPackageImportWizard_pageTitle;
}
@Override
protected String getTheWindowTitle() {
return UITexts.cabalPackageImportWizard_windowTitle;
}
}