深入 Common Navigator Framework 之 Link with Editor Support

8.1 概述

这个功能简单的说,就是将选中的节点与对应的编辑器关联起来,可以通过选择节点关联对应的编辑器,反之亦然。

 

8.2 扩展点

扩展点org.eclipse.ui.navigator.linkHelper,允许用户自己设计节点与编辑器中间的关联关系。
 

 
这个扩展点比较简单,需要提供实现类和ID,另外需要指定一些条件:

 

  •    selectionEnablement:何时启用选中节点向编辑器的关联;
  •    editorInputEnablement:何时启用编辑器向节点的关联;
  •    class:实现类,实现接口org.eclipse.ui.navigator.ILinkHelper
  •    id;唯一的标记符。

 

 

定义好的Linker,通过viewerContentBinding引用,与filter类似。

8.3 Eclipse实现

Eclipse的Project Explorer提供了关联操作,单击树形结构的节点时,会自动将对应的编辑器设计当前的激活编辑器,而选中编辑器时,会自动选中树形结构的对应节点。
实现代码:

    <extension
          point="org.eclipse.ui.navigator.linkHelper">
       <linkHelper
             class="org.eclipse.ui.internal.navigator.resources.workbench.ResourceLinkHelper"
             id="org.eclipse.ui.navigator.resources.linkHelper">
          <selectionEnablement>
             <instanceof value="org.eclipse.core.resources.IFile"/>
          </selectionEnablement>
          <editorInputEnablement>
             <instanceof value="org.eclipse.ui.IFileEditorInput"/>
          </editorInputEnablement>
       </linkHelper>
    </extension>
 


类的实现也简单:

 

public class ResourceLinkHelper implements ILinkHelper {

    /* (non-Javadoc)
     * @see org.eclipse.ui.navigator.ILinkHelper#findSelection(org.eclipse.ui.IEditorInput)
     */
    public IStructuredSelection findSelection(IEditorInput anInput) {
        IFile file = ResourceUtil.getFile(anInput);
        if (file != null) {
            return new StructuredSelection(file);
        }
        return StructuredSelection.EMPTY;
    }

    /* (non-Javadoc)
     * @see org.eclipse.ui.navigator.ILinkHelper#activateEditor(org.eclipse.ui.IWorkbenchPage, org.eclipse.jface.viewers.IStructuredSelection)
     */
    public void activateEditor(IWorkbenchPage aPage,
            IStructuredSelection aSelection) {
        if (aSelection == null || aSelection.isEmpty())
            return;
        if (aSelection.getFirstElement() instanceof IFile) {
            IEditorInput fileInput = new FileEditorInput((IFile) aSelection.getFirstElement());
            IEditorPart editor = null;
            if ((editor = aPage.findEditor(fileInput)) != null)
                aPage.bringToTop(editor);
        }

    }

}
 


方法findSelection()进行设置节点选中状态,而activateEditor则进行编辑器激活操作。

 

8.4 说明

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值