/******************************************************************************* * Copyright (c) 2005, 2010 Symbian Ltd 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: * Symbian Ltd - Initial API and implementation *******************************************************************************/ package org.eclipse.cdt.managedbuilder.core; /** * Implements the functionality that is needed to hold options and option * categories. The functionality has been moved from ITool to here in CDT 3.0. * Backwards compatibility of interfaces has been maintained because ITool * extends IHoldOptions. * * @since 3.0 * @noextend This class is not intended to be subclassed by clients. * @noimplement This interface is not intended to be implemented by clients. */ public interface IHoldsOptions extends IBuildObject { public static final String OPTION = "option"; //$NON-NLS-1$ public static final String OPTION_CAT = "optionCategory"; //$NON-NLS-1$ public static final String OPTION_REF = "optionReference"; //$NON-NLS-1$ /* * M E T H O D S M O V E D F R O M I T O O L I N 3 . 0 */ /** * Creates a child Option * * @param superClass The superClass, if any * @param Id The id for the new option * @param name The name for the new option * @param isExtensionElement Indicates whether this is an extension element or a managed project element * * @return IOption */ public IOption createOption(IOption superClass, String Id, String name, boolean isExtensionElement); /** * Removes an option. */ public void removeOption(IOption option); /** * This is a deprecated method for retrieving an <code>IOption</code> from * the receiver based on an ID. It is preferred that you use the newer method * <code>getOptionById</code> * @see IHoldsOptions#getOptionById(java.lang.String) * * @param id unique identifier of the option to search for * @return <code>IOption</code> * @deprecated use getOptionById() instead */ @Deprecated public IOption getOption(String id); /** * Get the <code>IOption</code> in the receiver with the specified * ID. This is an efficient search in the receiver. * * <p>If the receiver does not have an option with that ID, the method * returns <code>null</code>. It is the responsibility of the caller to * verify the return value. * * @param id unique identifier of the option to search for * @return <code>IOption</code> * @since 2.0 */ public IOption getOptionById(String id); /** * Get the <code>IOption</code> in the receiver with the specified * ID, or an option with a superclass with this id. * * <p>If the receiver does not have an option with that ID, the method * returns <code>null</code>. It is the responsibility of the caller to * verify the return value. * * @param id unique identifier of the option to search for * @return <code>IOption</code> * @since 3.0 */ public IOption getOptionBySuperClassId(String id); /** * Returns the complete list of options that are available for this object. * The list is a merging of the options specified for this object with the * options of its superclasses. The lowest option instance in the hierarchy * takes precedence. * * @return IOption[] */ public IOption[] getOptions(); /** * Returns the option category children of this tool. * * @return IOptionCategory[] */ public IOptionCategory[] getChildCategories(); /* * M E T H O D S M O V E D F R O M T O O L I N 3 . 0 */ /** * Adds the <code>IOptionCategory</code> to this Option Holder's * list of Option Categories. * * @param category The option category to be added */ public void addOptionCategory(IOptionCategory category); /* * N E W M E T H O D S A D D E D I N 3 . 0 */ /** * Answers the <code>IOptionCategory</code> that has the unique identifier * specified in the argument. * * @param id The unique identifier of the option category * @return <code>IOptionCategory</code> with the id specified in the argument * @since 3.0 */ public IOptionCategory getOptionCategory(String id); /** * Creates options from the superclass and adds it to this class. * Each individual option in superclass, will become the superclass for * the new option. * * @param superClass The superClass * @since 3.0 */ public void createOptions(IHoldsOptions superClass); /** * This method should be called in order to obtain the option whose value and attributes could be directly changed/adjusted * * @param option -the option to be modified * @param adjustExtension - if false, modifications are to be made for the non-extension element * (only for some particular configuration associated with some eclipse project) * This is the most common use of this method. * * True is allowed only while while handling the LOAD value handler event. * In this case modifications are to be made for the extension element. * This could be used for adjusting extension options * Note: changing this option will affect all non-extension configurations using this option! */ IOption getOptionToSet(IOption option, boolean adjustExtension) throws BuildException; /** * specifies whether the option holder is modified and needs rebuild * * @return boolean */ public boolean needsRebuild(); /** * sets the holder rebuild state */ public void setRebuildState(boolean rebuild); }