Copyright (c) 2000, 2009 IBM Corporation and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ SPDX-License-Identifier: EPL-2.0 Contributors: IBM Corporation - initial API and implementation
/******************************************************************************* * Copyright (c) 2000, 2009 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/
package org.eclipse.jdt.core; import org.eclipse.core.runtime.IProgressMonitor;
Common protocol for Java elements that support source code manipulations such as copy, move, rename, and delete.
@noimplementThis interface is not intended to be implemented by clients.
/** * Common protocol for Java elements that support source code manipulations such * as copy, move, rename, and delete. * * @noimplement This interface is not intended to be implemented by clients. */
public interface ISourceManipulation {
Copies this element to the given container.
Params:
  • container – the container
  • sibling – the sibling element before which the copy should be inserted, or null if the copy should be inserted as the last child of the container
  • rename – the new name for the element, or null if the copy retains the name of this element
  • replace – true if any existing child in the container with the target name should be replaced, and false to throw an exception in the event of a name collision
  • monitor – a progress monitor
Throws:
  • JavaModelException – if this element could not be copied. Reasons include:
    • This Java element, container element, or sibling does not exist (ELEMENT_DOES_NOT_EXIST)
    • A CoreException occurred while updating an underlying resource
    • The container is of an incompatible type (INVALID_DESTINATION)
    • The sibling is not a child of the given container (INVALID_SIBLING)
    • The new name is invalid (INVALID_NAME)
    • A child in the container already exists with the same name (NAME_COLLISION) and replace has been specified as false
    • The container or this element is read-only (READ_ONLY)
  • IllegalArgumentException – if container is null
See Also:
/** * Copies this element to the given container. * * @param container the container * @param sibling the sibling element before which the copy should be inserted, * or <code>null</code> if the copy should be inserted as the last child of * the container * @param rename the new name for the element, or <code>null</code> if the copy * retains the name of this element * @param replace <code>true</code> if any existing child in the container with * the target name should be replaced, and <code>false</code> to throw an * exception in the event of a name collision * @param monitor a progress monitor * @exception JavaModelException if this element could not be copied. Reasons include: * <ul> * <li> This Java element, container element, or sibling does not exist (ELEMENT_DOES_NOT_EXIST)</li> * <li> A <code>CoreException</code> occurred while updating an underlying resource * <li> The container is of an incompatible type (INVALID_DESTINATION) * <li> The sibling is not a child of the given container (INVALID_SIBLING) * <li> The new name is invalid (INVALID_NAME) * <li> A child in the container already exists with the same name (NAME_COLLISION) * and <code>replace</code> has been specified as <code>false</code> * <li> The container or this element is read-only (READ_ONLY) * </ul> * * @exception IllegalArgumentException if container is <code>null</code> * @see org.eclipse.jdt.core.IJavaModelStatusConstants#INVALID_DESTINATION */
void copy(IJavaElement container, IJavaElement sibling, String rename, boolean replace, IProgressMonitor monitor) throws JavaModelException;
Deletes this element, forcing if specified and necessary.
Params:
  • force – a flag controlling whether underlying resources that are not in sync with the local file system will be tolerated (same as the force flag in IResource operations).
  • monitor – a progress monitor
Throws:
  • JavaModelException – if this element could not be deleted. Reasons include:
    • This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
    • A CoreException occurred while updating an underlying resource (CORE_EXCEPTION)
    • This element is read-only (READ_ONLY)
/** * Deletes this element, forcing if specified and necessary. * * @param force a flag controlling whether underlying resources that are not * in sync with the local file system will be tolerated (same as the force flag * in IResource operations). * @param monitor a progress monitor * @exception JavaModelException if this element could not be deleted. Reasons include: * <ul> * <li> This Java element does not exist (ELEMENT_DOES_NOT_EXIST)</li> * <li> A <code>CoreException</code> occurred while updating an underlying resource (CORE_EXCEPTION)</li> * <li> This element is read-only (READ_ONLY)</li> * </ul> */
void delete(boolean force, IProgressMonitor monitor) throws JavaModelException;
Moves this element to the given container.
Params:
  • container – the container
  • sibling – the sibling element before which the element should be inserted, or null if the element should be inserted as the last child of the container
  • rename – the new name for the element, or null if the element retains its name
  • replace – true if any existing child in the container with the target name should be replaced, and false to throw an exception in the event of a name collision
  • monitor – a progress monitor
Throws:
  • JavaModelException – if this element could not be moved. Reasons include:
    • This Java element, container element, or sibling does not exist (ELEMENT_DOES_NOT_EXIST)
    • A CoreException occurred while updating an underlying resource
    • The container is of an incompatible type (INVALID_DESTINATION)
    • The sibling is not a child of the given container (INVALID_SIBLING)
    • The new name is invalid (INVALID_NAME)
    • A child in the container already exists with the same name (NAME_COLLISION) and replace has been specified as false
    • The container or this element is read-only (READ_ONLY)
  • IllegalArgumentException – if container is null
See Also:
/** * Moves this element to the given container. * * @param container the container * @param sibling the sibling element before which the element should be inserted, * or <code>null</code> if the element should be inserted as the last child of * the container * @param rename the new name for the element, or <code>null</code> if the * element retains its name * @param replace <code>true</code> if any existing child in the container with * the target name should be replaced, and <code>false</code> to throw an * exception in the event of a name collision * @param monitor a progress monitor * @exception JavaModelException if this element could not be moved. Reasons include: * <ul> * <li> This Java element, container element, or sibling does not exist (ELEMENT_DOES_NOT_EXIST)</li> * <li> A <code>CoreException</code> occurred while updating an underlying resource * <li> The container is of an incompatible type (INVALID_DESTINATION) * <li> The sibling is not a child of the given container (INVALID_SIBLING) * <li> The new name is invalid (INVALID_NAME) * <li> A child in the container already exists with the same name (NAME_COLLISION) * and <code>replace</code> has been specified as <code>false</code> * <li> The container or this element is read-only (READ_ONLY) * </ul> * * @exception IllegalArgumentException if container is <code>null</code> * @see org.eclipse.jdt.core.IJavaModelStatusConstants#INVALID_DESTINATION */
void move(IJavaElement container, IJavaElement sibling, String rename, boolean replace, IProgressMonitor monitor) throws JavaModelException;
Renames this element to the given name.
Params:
  • name – the new name for the element
  • replace – true if any existing element with the target name should be replaced, and false to throw an exception in the event of a name collision
  • monitor – a progress monitor
Throws:
  • JavaModelException – if this element could not be renamed. Reasons include:
    • This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
    • A CoreException occurred while updating an underlying resource
    • The new name is invalid (INVALID_NAME)
    • A child in the container already exists with the same name (NAME_COLLISION) and replace has been specified as false
    • This element is read-only (READ_ONLY)
/** * Renames this element to the given name. * * @param name the new name for the element * @param replace <code>true</code> if any existing element with the target name * should be replaced, and <code>false</code> to throw an exception in the * event of a name collision * @param monitor a progress monitor * @exception JavaModelException if this element could not be renamed. Reasons include: * <ul> * <li> This Java element does not exist (ELEMENT_DOES_NOT_EXIST)</li> * <li> A <code>CoreException</code> occurred while updating an underlying resource * <li> The new name is invalid (INVALID_NAME) * <li> A child in the container already exists with the same name (NAME_COLLISION) * and <code>replace</code> has been specified as <code>false</code> * <li> This element is read-only (READ_ONLY) * </ul> */
void rename(String name, boolean replace, IProgressMonitor monitor) throws JavaModelException; }