blob: e904b7abeafe2bb61bef6e9044c00defc4f75eda [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2009 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
*******************************************************************************/
package org.eclipse.ui;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.resource.ImageDescriptor;
/**
* A working set holds a number of IAdaptable elements.
* A working set is intended to group elements for presentation to
* the user or for operations on a set of elements.
*
* @since 1.1
* @noimplement This interface is not intended to be implemented by clients.
*/
public interface IWorkingSet extends IPersistableElement, IAdaptable {
/**
* Returns the elements that are contained in this working set.
* <p>
* This method might throw an {@link IllegalStateException} if
* the working set is invalid.
* </p>
* @return the working set's elements
*/
public IAdaptable[] getElements();
/**
* Returns the working set id. Returns <code>null</code> if no
* working set id has been set.
* This is one of the ids defined by extensions of the
* org.eclipse.ui.workingSets extension point.
* It is used by the workbench to determine the page to use in
* the working set edit wizard. The default resource edit page
* is used if this value is <code>null</code>.
*
* @return the working set id. May be <code>null</code>
*/
public String getId();
/**
* Returns the working set icon.
* Currently, this is one of the icons specified in the extensions
* of the org.eclipse.ui.workingSets extension point.
* The extension is identified using the value returned by
* <code>getId()</code>.
* Returns <code>null</code> if no icon has been specified in the
* extension or if <code>getId()</code> returns <code>null</code>.
*
* @return the working set icon or <code>null</code>.
* @deprecated use {@link #getImageDescriptor()} instead
*/
public ImageDescriptor getImage();
/**
* Returns the working set icon.
* Currently, this is one of the icons specified in the extensions
* of the org.eclipse.ui.workingSets extension point.
* The extension is identified using the value returned by
* <code>getId()</code>.
* Returns <code>null</code> if no icon has been specified in the
* extension or if <code>getId()</code> returns <code>null</code>.
*
* @return the working set icon or <code>null</code>.
*/
public ImageDescriptor getImageDescriptor();
/**
* Returns the name of the working set.
*
* @return the name of the working set
*/
public String getName();
/**
* Sets the elements that are contained in this working set.
* it is now recommended that all calls to this method pass
* through the results from calling
* {@link #adaptElements(IAdaptable[])} with the desired elements.
*
* @param elements
* the elements to set in this working set
*/
public void setElements(IAdaptable[] elements);
/**
* Sets the working set id. This is one of the ids defined by extensions of
* the org.eclipse.ui.workingSets extension point. It is used by the
* workbench to determine the page to use in the working set edit wizard.
* The default resource edit page is used if this value is <code>null</code>.
*
* @param id
* the working set id. May be <code>null</code>
*/
public void setId(String id);
/**
* Sets the name of the working set.
* The working set name should be unique.
* The working set name must not have leading or trailing
* whitespace.
*
* @param name the name of the working set
*/
public void setName(String name);
/**
* Returns whether this working set can be edited or not. To make
* a working set editable the attribute <code>pageClass</code> of
* the extension defining a working set must be provided.
*
* @return <code>true</code> if the working set can be edited; otherwise
* <code>false</code>
*
*/
public boolean isEditable();
/**
* Returns whether this working set should be shown in user interface
* components that list working sets by name.
*
* @return <code>true</code> if the working set should be shown in the
* user interface; otherwise <code>false</code>
*
*/
public boolean isVisible();
/**
* Return the name of this working set, formated for the end user. Often this value is
* the same as the one returned from {@link #getName()}.
*
* @return the name of this working set, formated for the end user
*/
public String getLabel();
/**
* Set the name of this working set, formated for the end user.
*
* @param label
* the label for this working set. If <code>null</code> is
* supplied then the value of {@link #getName()} will be used.
*/
public void setLabel(String label);
/**
* Returns <code>true</code> if this working set is capable of updating
* itself and reacting to changes in the state of its members. For
* non-aggregate working sets this means that the working set has an
* {@link IWorkingSetUpdater} installed while for aggregates it means that
* all component sets have {@link IWorkingSetUpdater}s installed. Otherwise
* returns <code>false</code>.
*
* @return whether the set is self-updating or not
*/
public boolean isSelfUpdating();
/**
* Returns whether this working set is an aggregate working set or not.
*
* <p>
* It is recommended that clients of aggregate working sets treat them in a
* specific way. Please see the documentation for
* {@link IWorkbenchPage#getAggregateWorkingSet()} for details.
* <p>
* If this is true, you can cast this working set to an {@link IAggregateWorkingSet}
*
* @return whether this working set is an aggregate working set or not
*/
public boolean isAggregateWorkingSet();
/**
* Returns whether this working set is currently empty (has no elements).
*
* @return whether this working set is currently empty
*/
public boolean isEmpty();
/**
* Transforms the supplied elements into elements that are suitable for
* containment in this working set. This is useful for UI elements which
* wish to filter contributions to working sets based on applicability. This
* is a hint, however, and is not considered when the
* {@link #setElements(IAdaptable[])} method is invoked.
*
* @param objects
* the objects to transform
* @return an array of transformed elements that be empty if no elements
* from the original array are suitable
* @see org.eclipse.ui.IWorkingSetElementAdapter
* @see org.eclipse.ui.BasicWorkingSetElementAdapter
*/
public IAdaptable[] adaptElements(IAdaptable[] objects);
}