blob: 7d827ed12a146964b324f0d64d835486614f9e4b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2011 EclipseSource 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:
* Holger Staudacher - initial API and implementation
*******************************************************************************/
package org.eclipse.libra.warproducts.ui.newwizard;
import java.lang.reflect.InvocationTargetException;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.libra.warproducts.core.*;
import org.eclipse.libra.warproducts.ui.Messages;
import org.eclipse.libra.warproducts.ui.WARProductConstants;
import org.eclipse.pde.internal.core.PDECore;
import org.eclipse.pde.internal.core.iproduct.IProduct;
import org.eclipse.pde.internal.ui.PDEPlugin;
import org.eclipse.pde.internal.ui.wizards.product.BaseProductCreationOperation;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.*;
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.part.ISetSelectionTarget;
public class BaseWARProductCreationOperation
extends BaseProductCreationOperation
{
private IContainer productParent;
private IFile file;
public BaseWARProductCreationOperation( final IFile file ) {
super( file );
productParent = file.getParent();
this.file = file;
}
protected void initializeProduct( final IProduct product ) {
super.initializeProduct( product );
InfrastructureCreator creator = new InfrastructureCreator( productParent );
createWebInfContent( creator );
if( product instanceof WARProduct ) {
WARProduct warProduct = ( WARProduct )product;
warProduct.addLaunchIni( creator.getLaunchIniPath() );
warProduct.addWebXml( creator.getWebXmlPath() );
WARProductInitializer initializer
= new WARProductInitializer( warProduct );
initializer.initialize();
}
}
protected void createWebInfContent( final InfrastructureCreator creator )
{
try {
creator.createWebInf();
creator.createLaunchIni();
creator.createWebXml();
} catch( final CoreException e ) {
Shell shell = PlatformUI.getWorkbench().getDisplay().getActiveShell();
MessageDialog.openError( shell,
Messages.NewWARProductError,
e.getMessage() );
}
}
protected void execute( final IProgressMonitor monitor )
throws CoreException, InvocationTargetException, InterruptedException
{
monitor.beginTask( Messages.BaseWARProductCreationOperation, 2 );
createContent();
monitor.worked( 1 );
openFile();
monitor.done();
}
private void createContent() {
WARWorkspaceProductModel model
= new WARWorkspaceProductModel( file, false );
initializeProduct( model.getProduct() );
model.save();
model.dispose();
}
private void openFile() {
Display.getCurrent().asyncExec( new Runnable() {
public void run() {
IWorkbenchWindow window = PDEPlugin.getActiveWorkbenchWindow();
if( window != null ) {
IWorkbenchPage page = window.getActivePage();
if( page != null && file.exists() ) {
IWorkbenchPart focusPart = page.getActivePart();
if( focusPart instanceof ISetSelectionTarget ) {
ISelection selection = new StructuredSelection( file );
( ( ISetSelectionTarget )focusPart ).selectReveal( selection );
}
try {
IDE.openEditor( page, file, WARProductConstants.EDITOR_ID );
} catch( final PartInitException e ) {
PDECore.log( e );
}
}
}
}
} );
}
}