/******************************************************************************* * Copyright (c) 2000, 2017 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 * * Contributors: * IBM Corporation - initial API and implementation * Axel Richard (Obeo) - Bug 41353 - Launch configurations prototypes *******************************************************************************/ package org.eclipse.debug.core; import java.util.List; import java.util.Map; import java.util.Set; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IAdaptable; /** * An editable copy of a launch configuration. Attributes of a * launch configuration are modified by modifying the attributes * of a working copy, and then saving the working copy. *
* Since 3.3, working copies can be nested. For example a working copy B can
* be created from the original launch configuration A. Then a nested working
* copy C can be created from working copy B. When the doSave()
method
* is called on C, changes are written back to its parent working copy B without
* effecting the original launch configuration A. When doSave()
is called
* on B, the changes are persisted back to the original A.
*
* Clients that define a launch configuration delegate extension implement the
* ILaunchConfigurationDelegate
interface.
*
* Since 3.3, if this is a nested working copy, the contents of this working copy are * saved to the parent working copy and the parent working copy is returned without * effecting the original launch configuration. *
** Equivalent to #doSave(UPDATE_NONE). *
* @return handle to saved launch configuration * @exception CoreException if an exception occurs while * writing this configuration to its underlying file. * @see #doSave(int) */ public ILaunchConfiguration doSave() throws CoreException; /** * Saves this working copy to its underlying file and returns a handle to * the resulting launch configuration. Has no effect if this configuration * does not need saving. Creates the underlying file if not yet created. ** Since 3.3, if this is a nested working copy, the contents of this working * copy are saved to the parent working copy and the parent working copy is * returned without effecting the original launch configuration. *
** Updates any affected prototype children based on the given flag. When a * working copy is renamed or moved to a new location, prototype children's * back pointers will be updated to refer the proper configuration. *
* @param flag one of {@link ILaunchConfiguration#UPDATE_NONE} or * {@link ILaunchConfiguration#UPDATE_PROTOTYPE_CHILDREN} * @return handle to saved launch configuration * @exception CoreException if an exception occurs while writing this * configuration or any of its affected prototype children to * underlying storage * @since 3.12 */ public ILaunchConfiguration doSave(int flag) throws CoreException; /** * Sets the integer-valued attribute with the given name. * * @param attributeName the name of the attribute, cannot benull
* @param value the value
*/
public void setAttribute(String attributeName, int value);
/**
* Sets the String-valued attribute with the given name.
* If the value is null
, the attribute is removed from
* this launch configuration.
*
* @param attributeName the name of the attribute, cannot be null
* @param value the value, or null
if the attribute is to be undefined
*/
public void setAttribute(String attributeName, String value);
/**
* Sets the java.util.List
-valued attribute with the given name.
* The specified List must contain only String-valued entries.
* If the value is null
, the attribute is removed from
* this launch configuration.
*
* @param attributeName the name of the attribute, cannot be null
* @param value the value, or null
if the attribute is to be undefined
*/
public void setAttribute(String attributeName, Listjava.util.Map
-valued attribute with the given name.
* The specified Map must contain only String keys and String values.
* If the value is null
, the attribute is removed from
* this launch configuration.
*
* @param attributeName the name of the attribute, cannot be null
* @param value the value, or null
if the attribute is to be undefined
*/
public void setAttribute(String attributeName, Mapjava.util.Set
-valued attribute with the given name.
* The specified Set must contain only String values.
* If the value is null
, the attribute is removed from
* this launch configuration.
*
* @param attributeName the name of the attribute, cannot be null
* @param value the value, or null
if the attribute is to be undefined
* @since 3.6
*/
public void setAttribute(String attributeName, Setnull
* @param value the value
*/
public void setAttribute(String attributeName, boolean value);
/**
* Sets the valued attribute with the given name.
*
* @param attributeName the name of the attribute, cannot be null
* @param value the value
* @since 3.12
*/
public void setAttribute(String attributeName, Object value);
/**
* Returns the original launch configuration this working copy
* was created from or null
if this is a new
* working copy created from a launch configuration type.
*
* @return the original launch configuration, or null
*/
public ILaunchConfiguration getOriginal();
/**
* Renames this launch configuration to the specified name.
* The new name cannot be null
. Has no effect if the name
* is the same as the current name. If this working copy is based
* on an existing launch configuration, this will cause
* the underlying launch configuration file to be renamed when
* this working copy is saved.
*
* @param name the new name for this configuration
*/
public void rename(String name);
/**
* Sets the container this launch configuration will be stored
* in when saved. When set to null
, this configuration
* will be stored locally with the workspace. The specified
* container must exist, if specified.
* * If this configuration is changed from local to non-local, * a file will be created in the specified container when * saved. The local file associated with this configuration * will be deleted. *
** If this configuration is changed from non-local to local, * a file will be created locally when saved. * The original file associated with this configuration in * the workspace will be deleted. *
* * @param container the container in which to store this * launch configuration, ornull
if this
* configuration is to be stored locally
*/
public void setContainer(IContainer container);
/**
* Sets the attributes of this launch configuration to be the ones contained
* in the given map. The values must be an instance of one of the following
* classes: String
, Integer
, or
* Boolean
, List
, Map
. Attributes
* previously set on this launch configuration but not included in the given
* map are considered to be removals. Setting the given map to be
* null
is equivalent to removing all attributes.
*
* @param attributes a map of attribute names to attribute values.
* Attribute names are not allowed to be null
* @since 2.1
*/
public void setAttributes(Mapnull
.
* Clients contributing launch configuration types are responsible for maintaining
* resource mappings.
*
* @param resources the resource to map to this launch configuration or null
* @since 3.2
*/
public void setMappedResources(IResource[] resources);
/**
* Set the launch modes for this configuration. Over-writes existing launch
* modes.
*
* Setting launch modes on a configuration allows the configuration to be
* launched in a mixed mode - for example, debug
and
* profile
.
*
null
to clear mode settings
*
* @since 3.3
*/
public void setModes(Setnull
as a delegate
* id will cause the mapping for the specified mode set (if any) to be removed.
*
* @param modes the set of modes to set this delegate id for
* @param delegateId the id of the delegate to associate as preferred for the specified mode set
* or null
to clear the setting
*
* @since 3.3
*/
public void setPreferredLaunchDelegate(Set* Setting launch modes on a configuration allows the configuration to * be launched in a mixed mode - for example, debug and profile. *
* @param modes launch mode identifiers to append to the current set of * launch modes set on this configuration * * @since 3.3 */ public void addModes(Set* Setting launch modes on a configuration allows the configuration to * be launched in a mixed mode - for example, debug and profile. *
* @param modes launch mode identifiers to remove from the current set of * launch modes set on this configuration * * @since 3.3 */ public void removeModes(Set* This method allows non-object attributes to be removed. *
* @param attributeName the name of the attribute to remove * @return previous value of the attribute ornull
*
* @since 3.4
*/
public Object removeAttribute(String attributeName);
/**
* Returns the parent of this working copy or null
if this working
* copy is not a nested copy of another working copy.
*
* @return parent or null
* @since 3.3
*/
public ILaunchConfigurationWorkingCopy getParent();
/**
* Copies all attributes from the given prototype to this working.
* Overwrites any existing attributes with the same key.
*
* @param prototype configuration prototype
* @exception CoreException if unable to retrieve attributes from the prototype
* @since 3.12
*/
public void copyAttributes(ILaunchConfiguration prototype) throws CoreException;
/**
* Sets the prototype that this configuration is based on, possibly null
,
* and optionally copies attributes from the prototype to this working copy.
*
* When the specified prototype is null
, this working copy is no longer
* associated with any prototype.
*
null
* @param copy whether to copy attributes from the prototype to this working copy. Has
* no effect when prototype is null
* @exception CoreException if
*