/*******************************************************************************
* This file is protected by Copyright.
* Please refer to the COPYRIGHT file distributed with this source distribution.
*
* This file is part of REDHAWK IDE.
*
* 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
*******************************************************************************/
package gov.redhawk.ide.dcd.ui.wizard;
import gov.redhawk.eclipsecorba.library.IdlLibrary;
import gov.redhawk.ide.codegen.ICodeGeneratorDescriptor;
import gov.redhawk.ide.codegen.util.ImplementationAndSettings;
import gov.redhawk.ide.dcd.generator.newservice.ServiceProjectCreator;
import gov.redhawk.ide.sdr.ui.SdrUiPlugin;
import gov.redhawk.ide.spd.ui.wizard.ImplementationWizardPage;
import gov.redhawk.ide.spd.ui.wizard.NewScaResourceWizard;
import gov.redhawk.ide.ui.wizard.IImportWizard;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.List;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.jface.wizard.Wizard;
/**
* @since 1.1
*/
public class NewScaServiceCreationProjectWizard extends NewScaResourceWizard implements IImportWizard {
public NewScaServiceCreationProjectWizard() {
super(ICodeGeneratorDescriptor.COMPONENT_TYPE_SERVICE);
this.setWindowTitle("New Service Project");
this.setNeedsProgressMonitor(true);
}
/**
* {@inheritDoc}
*/
@SuppressWarnings("unchecked")
@Override
public void addPages() {
setResourcePropertiesPage(new ScaServiceProjectPropertiesWizardPage("", "Service"));
addPage(getResourcePropertiesPage());
setImplPage(new ImplementationWizardPage("", ICodeGeneratorDescriptor.COMPONENT_TYPE_SERVICE));
getImplPage().setDescription("Choose the initial settings for the new implementation.");
getImplPage().setImpl(this.getImplementation());
addPage(getImplPage());
getImplList().add(new ImplementationAndSettings(getImplPage().getImplementation(), getImplPage().getImplSettings()));
try {
final Field field = Wizard.class.getDeclaredField("pages");
field.getModifiers();
if (!Modifier.isPublic(field.getModifiers())) {
field.setAccessible(true);
}
setWizPages((List<IWizardPage>) field.get(this));
} catch (final SecurityException e1) {
// PASS
} catch (final NoSuchFieldException e1) {
// PASS
} catch (final IllegalArgumentException e) {
// PASS
} catch (final IllegalAccessException e) {
// PASS
}
}
@Override
protected String getID() {
return getResourcePropertiesPage().getID();
}
@Override
protected String getProjectName() {
return getResourcePropertiesPage().getProjectName();
}
@Override
protected String getType() {
return ICodeGeneratorDescriptor.COMPONENT_TYPE_RESOURCE;
}
@Override
protected IFile createComponentFiles(IProject project, String name, String spdId, String author, IProgressMonitor monitor) throws CoreException {
final IdlLibrary library = SdrUiPlugin.getDefault().getTargetSdrRoot().getIdlLibrary();
final String serviceRepId = ((ScaServiceProjectPropertiesWizardPage) NewScaServiceCreationProjectWizard.this.getResourcePropertiesPage()).getRepId();
return ServiceProjectCreator.createServiceFiles(project, name, spdId, author, library, serviceRepId, monitor);
}
@Override
protected IProject createEmptyProject(String projectName, java.net.URI locationURI, IProgressMonitor monitor) throws CoreException {
return ServiceProjectCreator.createEmptyProject(projectName, locationURI, monitor);
}
}