【问题标题】:Save changes before renaming重命名前保存更改
【发布时间】:2019-05-28 09:02:46
【问题描述】:

如何将我自己的实现添加到 Eclipse 资源管理器视图的重命名上下文菜单。当我点击重命名时,我想在重命名项目之前进行一些验证

  <extension
     point="org.eclipse.ltk.core.refactoring.renameParticipants">
  <renameParticipant
        class="core.ui.project.RenameProject"
        id="core.ui.renameParticipant"
        name="Rename">
  </renameParticipant>

public class RenameProject extends RenameParticipant {

@Override
protected boolean initialize(Object element) {
    System.out.println("HERE");
    return false;
}

@Override
public String getName() {
    System.out.println("HERE");
    return null;
}

@Override
public RefactoringStatus checkConditions(IProgressMonitor pm, CheckConditionsContext context)
        throws OperationCanceledException {
    System.out.println("HERE");
    return null;
}

@Override
public Change createChange(IProgressMonitor pm) throws CoreException, OperationCanceledException {
    System.out.println("HERE");
    return null;
}

}

谢谢

【问题讨论】:

    标签: java eclipse eclipse-rcp rcp


    【解决方案1】:

    您无需更改菜单的实现即可在重命名期间验证某些内容。

    改为使用org.eclipse.ltk.core.refactoring.renameParticipants 扩展点来定义将在重命名操作期间调用的“重命名参与者”。参与者可以检查重命名是否有效,并在重命名期间添加要完成的额外工作。

    参与者代码扩展了org.eclipse.ltk.core.refactoring 插件中的org.eclipse.ltk.core.refactoring.participants.RenameParticipant 类。

    还有创建、复制、移动和删除的参与者。

    Ant 插件中文件重命名的示例参与者:

    <extension point="org.eclipse.ltk.core.refactoring.renameParticipants">
      <renameParticipant
             class="org.eclipse.ant.internal.ui.refactoring.LaunchConfigurationBuildfileRenameParticipant"
             name="%AntRenameParticipant.name"
             id="org.eclipse.ant.ui.refactoring.launchConfiguration.buildfileRename"> 
          <enablement>
            <with variable="element">
              <instanceof value="org.eclipse.core.resources.IFile"/>
            </with>
          </enablement>
       </renameParticipant>
    

    【讨论】:

    • 当我尝试重命名项目时出现资源不同步的错误,如何在重命名项目之前确保其同步
    • 你能提供一些代码来了解我如何使用 renameParticipants
    • Eclipse 帮助中有很多关于参与者的信息。我没有任何例子。资源不同步是一个单独的问题。
    • 我不需要实现 IResourceChangeListener 吗?
    • 从菜单中重命名会直接调用重命名参与者,不需要任何监听器
    猜你喜欢
    • 1970-01-01
    • 2019-06-08
    • 2012-05-04
    • 1970-01-01
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    相关资源
    最近更新 更多