/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.ui.refactor.rename; import org.eclipse.core.resources.IResource; import org.eclipse.ltk.core.refactoring.Change; import org.eclipse.ltk.core.refactoring.ChangeDescriptor; import org.eclipse.ltk.core.refactoring.RefactoringChangeDescriptor; import org.eclipse.ltk.core.refactoring.resource.ResourceChange; import org.teiid.designer.core.refactor.IRefactorModelHandler.RefactorType; import org.teiid.designer.core.refactor.RefactorModelExtensionManager; import org.teiid.designer.ui.refactor.AbstractResourcesCompositeChange; import org.teiid.designer.ui.refactor.RefactorResourcesUtils; import org.teiid.designer.ui.util.ErrorHandler; /** * */ public class RenameResourceCompositeChange extends AbstractResourcesCompositeChange { private final String newName; private final IResource resource; /** * @param name * @param changes * @param newName * @param resource */ public RenameResourceCompositeChange(String name, Change[] changes, String newName, IResource resource) { super(name, changes); this.newName = newName; this.resource = resource; } @Override public ChangeDescriptor getDescriptor() { String project = resource.getProject().getName(); String description = RefactorResourcesUtils.getString("RenameRefactoring.moveDescriptorDescription"); //$NON-NLS-1$ String comment = RefactorResourcesUtils.getString("RenameRefactoring.moveDescriptorComment"); //$NON-NLS-1$ RenameResourceDescriptor descriptor = new RenameResourceDescriptor(project, description, comment); descriptor.setResourceToRename(resource); descriptor.setNewName(newName); return new RefactoringChangeDescriptor(descriptor); } @Override protected Change createUndoChange(Change[] childUndos) { return new RenameResourceCompositeChange(getName(), childUndos, newName, resource); } @Override protected void postPerform(Change change) { try { Object[] objects = change.getAffectedObjects(); if (objects != null) { for (Object object : objects) { if (object instanceof IResource) { RefactorModelExtensionManager.postProcess(RefactorType.RENAME, (IResource) object); } } } if (change instanceof ResourceChange) { ResourceChange resourceChange = (ResourceChange)change; Object object = resourceChange.getModifiedElement(); if (object instanceof IResource) { RefactorModelExtensionManager.postProcess(RefactorType.RENAME, (IResource) object); } } } catch (Exception ex) { ErrorHandler.toExceptionDialog(ex); } } }