将QuickAccess TextField添加到Eclipse RCP应用程序中

问题描述 投票:0回答:1

我有一个使用SWT的Eclipse RCP应用程序(RCP版本4.12.0.v20190605-1801)。我想像在Java eclipse IDE中一样,将eclipse QuickAccess TextField作为搜索栏添加到我的项目中(也可以通过按ctrl + 3来获得)。

Eclipse view of QuickAccess

我搜索了文档,发现的唯一内容如下:

@Override
protected void fillCoolBar(ICoolBarManager coolBar) {
    // ToolBar File & Additions
    IToolBarManager fileToolBar = new ToolBarManager(coolBar.getStyle());
    fileToolBar.add(ActionFactory.SHOW_QUICK_ACCESS.create(window));   // window == class attribute

    // Add some other stuff
}

在我的情况下,这将产生一个QuickAccess按钮,但没有TextField。如果您单击它,它的工作方式相同,但我希望使用TextField,因为它对用户更清晰。

My QuickAccess button using org.eclipse.ui.acitons.ActionFactory

我只发现了有关如何删除TextField的线程,但没有找到如何添加文本的线程,例如SO post here。所以我想它一定是内置的功能。

如果有人感兴趣,请关注JCrypTool项目:

希望我没有错过任何重要的事情,感谢您的提前帮助。

java eclipse swt eclipse-rcp
1个回答
0
投票

我现在决定采用稍微不同的解决方案。

我在定义我的工具栏的plugin.xml中将QuickAccess条目作为扩展名包括在内。现在,它不再是输入文本,而是一个按钮(显示放大镜图标)。我采用这种方法是因为使用RCP扩展点非常容易实现。

这是我的plugin.xml现在的样子(缩小版)。相关部分是扩展点org.eclipse.ui.menus,它调用org.eclipse.ui.window.quickAccess

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
   <extension id="application" point="org.eclipse.core.runtime.applications">
      <application>
         <run class="org.jcryptool.core.Application"/>
      </application>
   </extension>

   <extension point="org.eclipse.ui.menus">
      <menuContribution
            allPopups="false"
            locationURI="toolbar:org.jcryptool.core.searchToolbar">
         <command
               commandId="org.eclipse.ui.window.quickAccess"
               icon="icons/searchIcon.png"
               style="push">
         </command>
      </menuContribution>
   </extension>

   <extension id="product" point="org.eclipse.core.runtime.products">
      <product application="org.jcryptool.core.application" name="JCrypTool">
         <property name="appName" value="JCrypTool"/>
         <property name="cssTheme" value="org.jcryptool.themes.default"/>
      </product>
   </extension>

</plugin>

看起来像这样:

enter image description here

对于真正理想的实现,我想您必须为此编写一些代码。但作为相当不错的RCP解决方案,对我来说还可以。

© www.soinside.com 2019 - 2024. All rights reserved.