blob: 1ce1db7fd5ea511b58ad54ff07dc9c28170201b8 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005 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.ltk.core.refactoring;
import org.eclipse.text.edits.TextEdit;
import org.eclipse.text.edits.TextEditGroup;
import org.eclipse.core.runtime.Assert;
import org.eclipse.jface.text.IRegion;
/**
* This class is a wrapper around a {@link TextEditGroup TextEditGroup}
* adding support for marking a group as active and inactive.
* <p>
* Note: this class is not intended to be extended by clients.
* </p>
*
* @see TextEditGroup
*
* @since 3.2
*/
public class TextEditBasedChangeGroup {
/** The associated change */
private TextEditBasedChange fChange;
private boolean fIsEnabled;
private TextEditGroup fTextEditGroup;
/**
* Creates new <code>TextEditBasedChangeGroup</code> for the given <code>
* TextEditBasedChange</code> and <code>TextEditGroup</code>.
*
* @param change the change owning this text edit change group
* @param group the underlying text edit group
*/
public TextEditBasedChangeGroup(TextEditBasedChange change, TextEditGroup group) {
Assert.isNotNull(change);
Assert.isNotNull(group);
fChange= change;
fIsEnabled= true;
fTextEditGroup= group;
}
/**
* Returns the text edit change this group belongs to.
*
* @return the text edit change this group belongs to
*/
public TextEditBasedChange getTextEditChange() {
return fChange;
}
/**
* Returns the groups's name by forwarding the method
* to the underlying text edit group.
*
* @return the group's name
*/
public String getName() {
return fTextEditGroup.getName();
}
/**
* Returns the region covered by the underlying
* text edit group.
*
* @return the region covered by the underlying
* text edit group
*/
public IRegion getRegion() {
return fTextEditGroup.getRegion();
}
/**
* Returns the underlying text edit group.
*
* @return the underlying text edit group
*/
public TextEditGroup getTextEditGroup() {
return fTextEditGroup;
}
/**
* Returns the text edits managed by the underlying
* text edit group.
*
* @return the text edits managed by the underlying
* text edit group
*/
public TextEdit[] getTextEdits() {
return fTextEditGroup.getTextEdits();
}
/**
* Returns whether the group is enabled or not.
*
* @return <code>true</code> if the group is marked as
* enabled; <code>false</code> otherwise
*/
public boolean isEnabled() {
return fIsEnabled;
}
/**
* Marks the group as enabled or disabled. If a group
* is marked as disabled the text edits managed by the
* underlying text edit group aren't executed when
* performing the text change that owns this group.
*
* @param enabled <code>true</code> to mark this group
* as enabled, <code>false</code> to mark it as disabled
*/
public void setEnabled(boolean enabled) {
fIsEnabled= enabled;
}
/**
* Returns the set of group categories.
*
* @return the group categories of this change group
*/
public GroupCategorySet getGroupCategorySet() {
if (fTextEditGroup instanceof CategorizedTextEditGroup) {
return ((CategorizedTextEditGroup)fTextEditGroup).getGroupCategorySet();
}
return GroupCategorySet.NONE;
}
}