/******************************************************************************* * Copyright (c) 2005, 2007 IBM 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 * *******************************************************************************/ package org.eclipse.dltk.core; import org.eclipse.core.runtime.IProgressMonitor; /** * A script fragment is a portion of the workspace corresponding to an entire * package, or to a portion thereof. * <p> * Script folder elements need to be opened before they can be navigated or * manipulated. The children are of type <code>ISourceModule</code> * (representing a source file) or <code>IBinaryModule</code> (representing a * binary class file). The children are listed in no particular order. * </p> * * @noimplement This interface is not intended to be implemented by clients. */ public interface IScriptFolder extends IOpenable, IParent, IModelElement, ISourceManipulation { /** * <p> * The name of the root folder (value: the empty string, <code>""</code>). * </p> */ public static final String ROOT_FOLDER_NAME = ""; //$NON-NLS-1$ public static final String DEFAULT_FOLDER_NAME = ""; //$NON-NLS-1$ public static final char PACKAGE_DELIMITER = '/'; public static final String PACKAGE_DELIMETER_STR = "/"; //$NON-NLS-1$ /** * Returns the source module with the specified name in this folder. The * name has to be a valid module name. This is a handle-only method. The * module may or may not be present. * * @param name * the given name * @return the source module with the specified name in this folder */ ISourceModule getSourceModule(String name); boolean isRootFolder(); ISourceModule[] getSourceModules() throws ModelException; public Object[] getForeignResources() throws ModelException; /** * Returns whether this package fragment's name is a prefix of other package * fragments in this package fragment's root. * * @exception ModelException * if this element does not exist or if an exception occurs * while accessing its corresponding resource. * @return true if this package fragment's name is a prefix of other package * fragments in this package fragment's root, false otherwise */ boolean hasSubfolders() throws ModelException; /** * Returns whether this fragment contains at least one script resource. * * @return true if this fragment contains at least one script resource, * false otherwise * @exception ModelException * if this element does not exist or if an exception occurs * while accessing its corresponding resource. */ boolean containsScriptResources() throws ModelException; /** * Creates and returns a compilation unit in this package fragment with the * specified name and contents. No verification is performed on the * contents. * * <p> * It is possible that a compilation unit with the same name already exists * in this package fragment. The value of the <code>force</code> parameter * effects the resolution of such a conflict: * <ul> * <li> <code>true</code> - in this case the compilation is created with the * new contents</li> * <li> <code>false</code> - in this case a <code>ModelException</code> is * thrown</li> * </ul> * * @param contents * the given contents * @param force * specify how to handle conflict is the same name already exists * @param monitor * the given progress monitor * @param name * the given name * @exception ModelException * if the element could not be created. Reasons include: * <ul> * <li> This script element does not exist * (ELEMENT_DOES_NOT_EXIST)</li> <li> A <code>CoreException * </code> occurred while creating an underlying resource * <li> The name is not a valid compilation unit name * (INVALID_NAME) <li> The contents are <code>null</code> * (INVALID_CONTENTS) * </ul> * @return a compilation unit in this package fragment with the specified * name and contents */ ISourceModule createSourceModule(String name, String contents, boolean force, IProgressMonitor monitor) throws ModelException; }