【问题标题】:Enable/Disbale eclispe rcp editor via menu when clicking on a TreeViewer element单击 TreeViewer 元素时通过菜单启用/禁用 eclipse rcp 编辑器
【发布时间】:2012-12-23 04:51:51
【问题描述】:

在我的 Eclipse RCP 应用程序中,我有一个 TreeViewer,我可以从中选择不同的编辑器来绘制元素,双击后会显示这些元素。在我的顶部菜单中,我有一个允许启用/禁用绘图的选项。编辑器的操作如下所示:

public class EnableEditorAction implements IEditorActionDelegate {

IEditor hallEditor = null;

@Override
public void run(IAction action) {       
    if (hallEditor != null){
        hallEditor.setMachineHallEditMode(true);
    }       
}

@Override
public void setActiveEditor(IAction action, IEditorPart targetEditor) {
    // check for enabled
    boolean bEnabled = false;
    if (targetEditor != null && targetEditor instanceof IMachineHallEditor) {
        hallEditor = (IMachineHallEditor) targetEditor;
        bEnabled = !hallEditor.isMachineHallEditingMode();
    } 
    action.setEnabled(bEnabled);
}

@Override
public void selectionChanged(IAction action, ISelection selection) {
    if (hallEditor != null) {
        action.setEnabled(!hallEditor.isMachineHallEditingMode());
    }       
}

}

我遇到的问题是只有在编辑器中单击时才启用菜单选项。我想要的是在单击左侧 TreeViewer 中的一个编辑器后也启用菜单选项。

我该怎么做?

【问题讨论】:

    标签: eclipse editor rcp treeviewer


    【解决方案1】:

    首先,您不需要检查targetEditor 是否为null,因为该操作已经通过plugin.xml 与编辑器挂钩。

    其次,我可以看到你有一个 API isMachineHallEditingMode()。这应该告诉您是否选择了左侧树,并且该操作应该正常工作。

    plugin.xml 中将您的操作设置为始终启用非常重要Enables for: 参数应该为空,因为启用处理在您的selectionChanged 中完成。

    public class EnableEditorAction implements IEditorActionDelegate {
    
         IEditor hallEditor;
    
         @Override
         public void run(IAction action) {       
              hallEditor.setMachineHallEditMode(true);
         }       
    
         @Override
         public void setActiveEditor(IAction action, IEditorPart targetEditor) {
              hallEditor = (IMachineHallEditor) targetEditor;
         }
    
         @Override
         public void selectionChanged(IAction action, ISelection selection) {
              action.setEnabled(!hallEditor.isMachineHallEditingMode());
         }       
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-12
      相关资源
      最近更新 更多