001: /*******************************************************************************
002: * Copyright (c) 2000, 2006 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.jdt.internal.corext.refactoring.reorg;
011:
012: import org.eclipse.core.runtime.OperationCanceledException;
013:
014: import org.eclipse.core.resources.mapping.ResourceMapping;
015:
016: import org.eclipse.core.resources.IResource;
017:
018: import org.eclipse.ltk.core.refactoring.participants.ReorgExecutionLog;
019:
020: import org.eclipse.jdt.core.ICompilationUnit;
021: import org.eclipse.jdt.core.IPackageFragment;
022: import org.eclipse.jdt.core.IPackageFragmentRoot;
023:
024: import org.eclipse.jdt.internal.corext.util.JavaElementResourceMapping;
025: import org.eclipse.jdt.internal.corext.util.JavaModelUtil;
026:
027: public class MonitoringNewNameQueries implements INewNameQueries {
028: private INewNameQueries fDelegate;
029: private ReorgExecutionLog fExecutionLog;
030:
031: public MonitoringNewNameQueries(INewNameQueries delegate,
032: ReorgExecutionLog log) {
033: fDelegate = delegate;
034: fExecutionLog = log;
035: }
036:
037: public INewNameQuery createNewCompilationUnitNameQuery(
038: final ICompilationUnit cu, final String initialSuggestedName) {
039: return new INewNameQuery() {
040: public String getNewName()
041: throws OperationCanceledException {
042: String result = fDelegate
043: .createNewCompilationUnitNameQuery(cu,
044: initialSuggestedName).getNewName();
045: String newName = JavaModelUtil.getRenamedCUName(cu,
046: result);
047: fExecutionLog.setNewName(cu, newName);
048: ResourceMapping mapping = JavaElementResourceMapping
049: .create(cu);
050: if (mapping != null) {
051: fExecutionLog.setNewName(mapping, newName);
052: }
053: return result;
054: }
055: };
056: }
057:
058: public INewNameQuery createNewPackageFragmentRootNameQuery(
059: final IPackageFragmentRoot root,
060: final String initialSuggestedName) {
061: return new INewNameQuery() {
062: public String getNewName()
063: throws OperationCanceledException {
064: String result = fDelegate
065: .createNewPackageFragmentRootNameQuery(root,
066: initialSuggestedName).getNewName();
067: fExecutionLog.setNewName(root, result);
068: ResourceMapping mapping = JavaElementResourceMapping
069: .create(root);
070: if (mapping != null) {
071: fExecutionLog.setNewName(mapping, result);
072: }
073: return result;
074: }
075: };
076: }
077:
078: public INewNameQuery createNewPackageNameQuery(
079: final IPackageFragment pack,
080: final String initialSuggestedName) {
081: return new INewNameQuery() {
082: public String getNewName()
083: throws OperationCanceledException {
084: String result = fDelegate.createNewPackageNameQuery(
085: pack, initialSuggestedName).getNewName();
086: fExecutionLog.setNewName(pack, result);
087: ResourceMapping mapping = JavaElementResourceMapping
088: .create(pack);
089: if (mapping != null) {
090: int index = result.lastIndexOf('.');
091: String newFolderName = index == -1 ? result
092: : result.substring(index + 1);
093: fExecutionLog.setNewName(mapping, newFolderName);
094: }
095: return result;
096: }
097: };
098: }
099:
100: public INewNameQuery createNewResourceNameQuery(
101: final IResource res, final String initialSuggestedName) {
102: return new INewNameQuery() {
103: public String getNewName()
104: throws OperationCanceledException {
105: String result = fDelegate.createNewResourceNameQuery(
106: res, initialSuggestedName).getNewName();
107: fExecutionLog.setNewName(res, result);
108: return result;
109: }
110: };
111: }
112:
113: public INewNameQuery createNullQuery() {
114: return fDelegate.createNullQuery();
115: }
116:
117: public INewNameQuery createStaticQuery(String newName) {
118: return fDelegate.createStaticQuery(newName);
119: }
120: }
|