| /******************************************************************************* |
| * Copyright (c) 2000, 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.jdt.internal.corext.refactoring.changes; |
| |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.core.runtime.IProgressMonitor; |
| |
| import org.eclipse.jdt.core.IPackageFragment; |
| import org.eclipse.jdt.core.IPackageFragmentRoot; |
| |
| import org.eclipse.jdt.internal.corext.refactoring.RefactoringCoreMessages; |
| import org.eclipse.jdt.internal.corext.refactoring.base.JDTChange; |
| import org.eclipse.ltk.core.refactoring.Change; |
| import org.eclipse.ltk.core.refactoring.NullChange; |
| import org.eclipse.ltk.core.refactoring.RefactoringStatus; |
| |
| public class CreatePackageChange extends JDTChange { |
| |
| private IPackageFragment fPackageFragment; |
| |
| public CreatePackageChange(IPackageFragment pack) { |
| fPackageFragment= pack; |
| } |
| |
| public RefactoringStatus isValid(IProgressMonitor pm) { |
| // Don't do any checking. Peform handles the case |
| // that the package already exists. Furthermore |
| // create package change isn't used as a undo |
| // redo change right now |
| return new RefactoringStatus(); |
| } |
| |
| public Change perform(IProgressMonitor pm) throws CoreException { |
| try { |
| pm.beginTask(RefactoringCoreMessages.CreatePackageChange_Creating_package, 1); |
| |
| if (fPackageFragment.exists()) { |
| return new NullChange(); |
| } else { |
| IPackageFragmentRoot root= (IPackageFragmentRoot) fPackageFragment.getParent(); |
| root.createPackageFragment(fPackageFragment.getElementName(), false, pm); |
| |
| return new DeleteSourceManipulationChange(fPackageFragment, false); |
| } |
| } finally { |
| pm.done(); |
| } |
| } |
| |
| public String getName() { |
| return RefactoringCoreMessages.CreatePackageChange_Create_package; |
| } |
| |
| public Object getModifiedElement() { |
| return fPackageFragment; |
| } |
| } |