/*******************************************************************************
* Copyright (c) 2007, 2008 Borland Software 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:
* Borland Software Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.m2m.internal.qvt.oml.ui.wizards.project;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IProject;
/**
* This interface represents destination where <code>QVT Project</code>
* elements, like for instance compilation units, can be placed.
* <p>
*
* The motivation behind this interface is to allow clients dependent on related
* settings (possibly modified) in other wizard pages to handle to these changes.
* <p>
* There is no active listening mechanism involved here, the way to handle this
* is just considering elements maintained by this provider as
* <code>volatile</code>.
*/
public interface INewQVTElementDestinationWizardDelegate {
/**
* Get the project handle for this destination.
* <p>
* <code>Remark:</code> The project may or may not exist, depending
* whether the project to contain the element to be created is also newly
* created during the same wizard session.
*
* @return The project handle. The returned instance may be different
* between multiple calls to this method as the implementor may
* allow modification of this settings/
*/
IProject getProjectHandle();
/**
* Get the source container for QVT source elements within the project
* associated with this provider.
*
* @return The container handle. The returned instance may be different
* between multiple calls to this method as the implementor may
* allow modification of this settings.
*/
IContainer getSourceContainer();
/**
* Creates the project and source container for the currently handle objects
* with this provider.
*
* @return <code>true</code> if successfully created, <code>false</code>
* if an error occurred
*/
boolean createDestination();
}