/*******************************************************************************
* Copyright (c) 2000, 2003 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package net.sourceforge.phpdt.core;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.runtime.IProgressMonitor;
/**
* Represent the root Java element corresponding to the workspace. Since there
* is only one such root element, it is commonly referred to as the
* Java model element. The Java model element needs to be opened before it can
* be navigated or manipulated. The Java model element has no parent (it is the
* root of the Java element hierarchy). Its children are
* IJavaProject
s.
*
* This interface provides methods for performing copy, move, rename, and delete * operations on multiple Java elements. *
*
* This interface is not intended to be implemented by clients. An instance of
* one of these handles can be created via
* JavaCore.create(workspace.getRoot())
.
*
IJavaElement
* whose resource is the given resource or a non-Java resource which is the
* given resource.
*
* Note: no existency check is performed on the argument resource. If it is
* not accessible (see IResource.isAccessible()
) yet but
* would be located in Java model range, then it will return
* true
.
*
* If the resource is accessible, it can be reached by navigating the Java
* model down using the getChildren()
and/or
* getNonJavaResources()
methods.
*
* Optionally, each copy can positioned before a sibling element. If
* null
is specified for a given sibling, the copy is
* inserted as the last child of its associated container.
*
* Optionally, each copy can be renamed. If null
is specified
* for the new name, the copy is not renamed.
*
* Optionally, any existing child in the destination container with the same
* name can be replaced by specifying true
for force.
* Otherwise an exception is thrown in the event that a name collision
* occurs.
*
null
; or null
* @param renamings
* the list of new names any of which may be null
;
* or null
* @param replace
* true
if any existing child in a target
* container with the target name should be replaced, and
* false
to throw an exception in the event of a
* name collision
* @param monitor
* a progress monitor
* @exception JavaModelException
* if an element could not be copied. Reasons include:
* CoreException
occurred while
* updating an underlying resourceINVALID_DESTINATION
)INVALID_SIBLING
)INVALID_NAME
)replace
has been
* specified as false
(NAME_COLLISION
)READ_ONLY
)
* CoreException
occurred while
* updating an underlying resourceREAD_ONLY
)
* * Non-Java projects include all projects that are closed (even if they have * the Java nature). *
* * @return an array of non-Java projects contained in the workspace. * @throws JavaModelException * if this element does not exist or if an exception occurs * while accessing its corresponding resource * @since 2.1 */ // Object[] getNonJavaResources() throws JavaModelException; /** * Returns the workspace associated with this Java model. * * @return the workspace associated with this Java model */ IWorkspace getWorkspace(); /** * Moves the given elements to the specified container(s). If one container * is specified, all elements are moved to that container. If more than one * container is specified, the number of elements and containers must match, * and each element is moved to its associated container. *
* Optionally, each element can positioned before a sibling element. If
* null
is specified for sibling, the element is inserted as
* the last child of its associated container.
*
* Optionally, each element can be renamed. If null
is
* specified for the new name, the element is not renamed.
*
* Optionally, any existing child in the destination container with the same
* name can be replaced by specifying true
for force.
* Otherwise an exception is thrown in the event that a name collision
* occurs.
*
null
; or null
* @param renamings
* the list of new names any of which may be null
;
* or null
* @param replace
* true
if any existing child in a target
* container with the target name should be replaced, and
* false
to throw an exception in the event of a
* name collision
* @param monitor
* a progress monitor
* @exception JavaModelException
* if an element could not be moved. Reasons include:
* CoreException
occurred while
* updating an underlying resourceINVALID_DESTINATION
)INVALID_SIBLING
)INVALID_NAME
)replace
has been
* specified as false
(NAME_COLLISION
)READ_ONLY
)
* null
*/
void move(IJavaElement[] elements, IJavaElement[] containers,
IJavaElement[] siblings, String[] renamings, boolean replace,
IProgressMonitor monitor) throws JavaModelException;
/**
* Triggers an update of the JavaModel with respect to the referenced
* external archives. This operation will issue a JavaModel delta describing
* the discovered changes, in term of Java element package fragment roots
* added, removed or changed. Note that a collection of elements can be
* passed so as to narrow the set of archives to refresh (passing
* null
along is equivalent to refreshing the entire mode).
* The elements can be:
* * In case an archive is used by multiple projects, the delta issued will * account for all of them. This means that even if a project was not part * of the elements scope, it may still be notified of changes if it is * referencing a library comprised in the scope. *
* * @param elementsScope - * a collection of elements defining the scope of the refresh * @param monitor - * a progress monitor used to report progress * @exception JavaModelException * in one of the corresponding situation: *
true
if an existing child in a target container
* with the target name should be replaced, and
* false
to throw an exception in the event of a
* name collision
* @param monitor
* a progress monitor
* @exception JavaModelException
* if an element could not be renamed. Reasons include:
* CoreException
occurred while
* updating an underlying resource
* INVALID_NAME
)
* replace
has been specified as
* false
(NAME_COLLISION
)
* READ_ONLY
)
*