01: /*******************************************************************************
02: * Copyright (c) 2006, 2007 IBM Corporation and others.
03: * All rights reserved. This program and the accompanying materials
04: * are made available under the terms of the Eclipse Public License v1.0
05: * which accompanies this distribution, and is available at
06: * http://www.eclipse.org/legal/epl-v10.html
07: *
08: * Contributors:
09: * IBM Corporation - initial API and implementation
10: *******************************************************************************/package org.eclipse.jdt.internal.corext.refactoring.changes;
11:
12: import java.util.List;
13:
14: import org.eclipse.core.runtime.CoreException;
15: import org.eclipse.core.runtime.IProgressMonitor;
16: import org.eclipse.core.runtime.SubProgressMonitor;
17:
18: import org.eclipse.core.resources.IResource;
19:
20: import org.eclipse.ui.ide.undo.ResourceDescription;
21:
22: import org.eclipse.ltk.core.refactoring.Change;
23:
24: public class UndoablePackageDeleteChange extends
25: DynamicValidationStateChange {
26:
27: private final List/*<IResource>*/fPackageDeletes;
28:
29: public UndoablePackageDeleteChange(String name,
30: List/*<IResource>*/packageDeletes) {
31: super (name);
32: fPackageDeletes = packageDeletes;
33: }
34:
35: public Change perform(IProgressMonitor pm) throws CoreException {
36: int count = fPackageDeletes.size();
37: pm.beginTask("", count * 3); //$NON-NLS-1$
38: ResourceDescription[] packageDeleteDescriptions = new ResourceDescription[fPackageDeletes
39: .size()];
40: for (int i = 0; i < fPackageDeletes.size(); i++) {
41: IResource resource = (IResource) fPackageDeletes.get(i);
42: packageDeleteDescriptions[i] = ResourceDescription
43: .fromResource(resource);
44: pm.worked(1);
45: }
46:
47: DynamicValidationStateChange result = (DynamicValidationStateChange) super
48: .perform(new SubProgressMonitor(pm, count));
49:
50: for (int i = 0; i < fPackageDeletes.size(); i++) {
51: IResource resource = (IResource) fPackageDeletes.get(i);
52: ResourceDescription resourceDescription = packageDeleteDescriptions[i];
53: resourceDescription.recordStateFromHistory(resource,
54: new SubProgressMonitor(pm, 1));
55: result
56: .add(new UndoDeleteResourceChange(
57: resourceDescription));
58: }
59: return result;
60: }
61: }
|