| package org.eclipse.debug.ui; |
| |
| /* |
| * (c) Copyright IBM Corp. 2000, 2001. |
| * All Rights Reserved. |
| */ |
| |
| import org.eclipse.debug.core.ILaunch; |
| import org.eclipse.debug.core.ILaunchConfiguration; |
| import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; |
| import org.eclipse.swt.graphics.Image; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.swt.widgets.Control; |
| |
| /** |
| * A launch configuration tab is used to edit/view attributes |
| * of a specific type of launch configuration. Launch |
| * configurations are presented in a dialog, with a tab folder. |
| * Each tab manipulates one ore more attributes of a launch |
| * configuration. |
| * <p> |
| * The tab's lifecycle begins when <code>setLaunchConfigurationDialog(ILaunchConfigurationDialog)</code> |
| * is called. A tab may then be asked repeatedly to initialize its |
| * controls to display values for a launch configuration (see |
| * <code>initializeFrom(ILaunchConfiguration)</code>), and to |
| * apply its current settings to a launch configuration (see |
| * <code>performApply(ILaunchConfigurationWorkingCopy)</code>). |
| * While a user manipulates a tab's controls, the tab is not |
| * intended to update a launch configuration. Updating a launch |
| * configuration should only be performed when <code>performApply</code> |
| * is called. To end a tab's lifecyle, <code>dispose()</code> will |
| * be called. Note that a tab can be disposed before its control |
| * has been created. |
| * </p> |
| * <p> |
| * To support single-click launching, tabs are required to initialize |
| * default values into launch configurations (possibly when their controls |
| * have not been created). See <code>setDefault(ILaunchConfigurationWorkingCopy)</code>. |
| * As well, the method <code>launched</code> can be called when the tab's |
| * control does not exist. |
| * </p> |
| * <p> |
| * This interface is intended to be implemented by clients. |
| * </p> |
| * @see org.eclipse.debug.core.ILaunchConfigurationType |
| * @see org.eclipse.debug.core.ILaunchConfiguration |
| * @since 2.0 |
| */ |
| public interface ILaunchConfigurationTab { |
| |
| /** |
| * Creates the top level control for this launch configuration |
| * tab under the given parent composite. This method is called once on |
| * tab creation, after <code>setLaunchConfigurationDialog</code> |
| * is called. |
| * <p> |
| * Implementors are responsible for ensuring that |
| * the created control can be accessed via <code>getControl</code> |
| * </p> |
| * |
| * @param parent the parent composite |
| */ |
| public void createControl(Composite parent); |
| |
| /** |
| * Returns the top level control for this tab. |
| * <p> |
| * May return <code>null</code> if the control |
| * has not been created yet. |
| * </p> |
| * |
| * @return the top level control or <code>null</code> |
| */ |
| public Control getControl(); |
| |
| /** |
| * Initializes the given launch configuration with |
| * default values for this tab. This method |
| * is called when a new launch configuration is created |
| * such that the configuration can be initialized with |
| * meaningful values. This method may be called before this |
| * tab's control is created, to support single-click launching. |
| * |
| * @param configuration launch configuration |
| */ |
| public void setDefaults(ILaunchConfigurationWorkingCopy configuration); |
| |
| /** |
| * Initializes this tab's controls with values from the given |
| * launch configuration. This method is called when |
| * a configuration is selected to view or edit, after this |
| * tab's control has been created. |
| * |
| * @param configuration launch configuration |
| */ |
| public void initializeFrom(ILaunchConfiguration configuration); |
| |
| /** |
| * Notifies this launch configuration tab that it has |
| * been disposed. Marks the end of this tab's lifecycle, |
| * allowing this tab to perform any cleanup required. |
| */ |
| public void dispose(); |
| |
| /** |
| * Copies values from this tab into the given |
| * launch configuration. |
| * |
| * @param configuration launch configuration |
| */ |
| public void performApply(ILaunchConfigurationWorkingCopy configuration); |
| |
| /** |
| * Returns the current error message for this tab. |
| * May be <code>null</code> to indicate no error message. |
| * <p> |
| * An error message should describe some error state, |
| * as opposed to a message which may simply provide instruction |
| * or information to the user. |
| * </p> |
| * |
| * @return the error message, or <code>null</code> if none |
| */ |
| public String getErrorMessage(); |
| |
| /** |
| * Returns the current message for this tab. |
| * <p> |
| * A message provides instruction or information to the |
| * user, as opposed to an error message which should |
| * describe some error state. |
| * </p> |
| * |
| * @return the message, or <code>null</code> if none |
| */ |
| public String getMessage(); |
| |
| /** |
| * Returns whether this tab is in a valid state in the context of the specified launch configuration. |
| * <p> |
| * This information is typically used by the launch configuration |
| * dialog to decide when it is okay to launch. |
| * </p> |
| * |
| * @param launchConfig launch configuration which provides context for validating this tab. |
| * This value must not be <code>null</code>. |
| * |
| * @return whether this tab is in a valid state |
| */ |
| public boolean isValid(ILaunchConfiguration launchConfig); |
| |
| /** |
| * Returns whether this tab is in a state that allows the launch configuration whose values |
| * this tab is showing to be saved. This differs from <code>isValid()</code> in that <code>canSave()</code> |
| * determines if this tab prevents the current launch configuration from being saved, whereas |
| * <code>isValid()</code> determines if this tab prevents the current launch configuration from |
| * being launched. |
| * |
| * <p> |
| * This information is typically used by the launch configuration |
| * dialog to decide when it is okay to save a launch configuration. |
| * </p> |
| * |
| * @return whether this tab is in a state that allows the current launch configuration to be saved |
| */ |
| public boolean canSave(); |
| |
| /** |
| * Sets the launch configuration dialog that hosts this tab. |
| * This is the first method called on a launch configuration |
| * tab, and marks the beginning of this tab's lifecycle. |
| * |
| * @param dialog launch configuration dialog |
| */ |
| public void setLaunchConfigurationDialog(ILaunchConfigurationDialog dialog); |
| |
| /** |
| * Notifies this tab that the specified configuration has been |
| * launched, resulting in the given launch. This method can be |
| * called when a tab's control does not exist, to support single-click |
| * launching. |
| * |
| * @param launch the result of launching the current |
| * launch configuration |
| */ |
| public void launched(ILaunch launch); |
| |
| /** |
| * Returns the name of this tab. |
| * |
| * @return the name of this tab |
| */ |
| public String getName(); |
| |
| /** |
| * Returns the image for this tab, or <code>null</code> if none |
| * |
| * @return the image for this tab, or <code>null</code> if none |
| */ |
| public Image getImage(); |
| } |
| |