/*******************************************************************************
* Copyright (c) 2011 Gerd Wuetherich (gerd@gerd-wuetherich.de).
* 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:
* Gerd Wuetherich (gerd@gerd-wuetherich.de) - initial API and implementation
******************************************************************************/
package org.bundlemaker.core.project;
import java.util.List;
import org.eclipse.core.runtime.CoreException;
/**
* <p>
* Defines the interface of a modifiable bundle maker project description.
* </p>
*
* @author Gerd Wütherich (gerd@gerd-wuetherich.de)
*
* @noimplement This interface is not intended to be implemented by clients.
* @noextend This interface is not intended to be extended by clients.
*/
public interface IModifiableProjectDescription extends IProjectDescription {
/**
* <p>
* Sets the JRE:
* </p>
*
* @param jre
*/
void setJre(String jre);
/**
* <p>
* </p>
*
* @param contentProvider
*/
void addContentProvider(IProjectContentProvider contentProvider);
/**
* <p>
* </p>
*
* @param contentProvider
*/
void removeContentProvider(IProjectContentProvider contentProvider);
/**
* <p>
* </p>
*
* @param move
*/
void moveUpContentProviders(List<? extends IProjectContentProvider> move);
/**
* <p>
* </p>
*
* @param move
*/
void moveDownContentProviders(List<? extends IProjectContentProvider> move);
/**
* <p>
* Removes the content provider with the specified identifier.
* </p>
*
* @param identifier
* the identifier
*/
void removeContentProvider(String identifier);
/**
* <p>
* Clears the list of content entries. After calling this method the list of content entries is empty.
* </p>
*/
void clear();
/**
* <p>
* Saves the {@link IModifiableProjectDescription}.
* </p>
* <p>
* The project description is saved internally in the xml file
* <code>"<project-directory>/.bundlemaker/projectdescription.xml"</code> . Note that it's not intended to
* directly modify this file.
* </p>
*
* @throws CoreException
*
* @precondition none
*/
void save() throws CoreException;
}