/**
* <p>Copyright: Copyright (c) 2009</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.ui.action;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ltk.core.refactoring.participants.RenameRefactoring;
import org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation;
import org.eclipse.ui.actions.SelectionListenerAction;
import org.eclipse.ui.navigator.ICommonViewerWorkbenchSite;
import com.hundsun.ares.studio.core.ARESCore;
import com.hundsun.ares.studio.core.IARESElement;
import com.hundsun.ares.studio.internal.core.ARESProject;
import com.hundsun.ares.studio.internal.ui.refactoring.ARESRenameProcessor;
import com.hundsun.ares.studio.internal.ui.refactoring.RefactoringSaveHelper;
import com.hundsun.ares.studio.internal.ui.refactoring.RenameARESResourceWizard;
import com.hundsun.ares.studio.internal.ui.refactoring.RenameProjectProcessor;
import com.hundsun.ares.studio.internal.ui.refactoring.RenameSelectionState;
/**
*
* @author liaogc
*/
public class RefactorProjectAction extends SelectionListenerAction{
private ICommonViewerWorkbenchSite site;
public RefactorProjectAction(ICommonViewerWorkbenchSite site) {
super("������");
this.site = site;
}
@Override
protected boolean updateSelection(IStructuredSelection selection) {
if (selection.size() == 1) {
Object obj = selection.getFirstElement();
if (obj instanceof IProject){
return ARESProject.hasARESNature((IProject)obj);
}
}
return false;
}
@Override
public void run() {
Object obj = getStructuredSelection().getFirstElement();
ARESRenameProcessor processor = null;
if (obj instanceof IProject){
obj= ARESCore.create((IProject)obj);
processor = new RenameProjectProcessor((IARESElement) obj);
}
RenameSelectionState state = new RenameSelectionState(obj);
RenameRefactoring refactoring = new RenameRefactoring(processor);
RenameARESResourceWizard wizard = new RenameARESResourceWizard(refactoring);
RefactoringWizardOpenOperation op = new RefactoringWizardOpenOperation(wizard);
RefactoringSaveHelper refactoringSaveHelper = new RefactoringSaveHelper();
try {
if(refactoringSaveHelper.saveEditors(site.getShell())){
op.run(site.getShell(), "������");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
Object newElement = processor.getNewElement();
if (newElement != null)
state.restore(newElement);
}
}