Copyright (c) 2000, 2008 IBM Corporation and others.
This program and the accompanying materials
are made available under the terms of the Eclipse Public License 2.0
which accompanies this distribution, and is available at
https://www.eclipse.org/legal/epl-2.0/
SPDX-License-Identifier: EPL-2.0
Contributors:
IBM Corporation - initial API and implementation
/*******************************************************************************
* Copyright (c) 2000, 2008 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ltk.core.refactoring.participants;
A tagging interface to share a concrete RefactoringParticipant
instance across multiple elements to be refactored. Consider the example of moving more than one file: if a corresponding move participant is not tagged as a ISharableParticipant
then a separate instance
of a participant is created for every file to be moved. If the
participant is marked as shared then only one instance is created
and the participant is responsible to handle all files to be moved.
The first element to be refactored will be added to the participant
via the participant specific initialize(Object element)
method. All subsequent elements will be added via the generic
addElement(Object, RefactoringArguments)
method. Implementors
of this interface can assume that the refactoring arguments passed
to the addElement
method conform to the participant. For
example the arguments are of type MoveArguments
if this
interface is mixed into a move participant.
Clients may implement this interface to tag participants as shared.
See Also: Since: 3.0
/**
* A tagging interface to share a concrete {@link RefactoringParticipant} instance across
* multiple elements to be refactored. Consider the example of moving
* more than one file: if a corresponding move participant is not
* tagged as a <code>ISharableParticipant</code> then a separate instance
* of a participant is created for every file to be moved. If the
* participant is marked as shared then only one instance is created
* and the participant is responsible to handle all files to be moved.
* <p>
* The first element to be refactored will be added to the participant
* via the participant specific <code>initialize(Object element)</code>
* method. All subsequent elements will be added via the generic <code>
* addElement(Object, RefactoringArguments)</code> method. Implementors
* of this interface can assume that the refactoring arguments passed
* to the <code>addElement</code> method conform to the participant. For
* example the arguments are of type <code>MoveArguments</code> if this
* interface is mixed into a move participant.
* </p>
* <p>
* Clients may implement this interface to tag participants as shared.
* </p>
*
* @see RefactoringParticipant
* @since 3.0
*/
public interface ISharableParticipant {
Adds the given element and argument to the refactoring participant.
Params: - element – the element to add
- arguments – the corresponding arguments
/**
* Adds the given element and argument to the refactoring participant.
*
* @param element the element to add
* @param arguments the corresponding arguments
*/
public void addElement(Object element, RefactoringArguments arguments);
}