【问题标题】:Add QuickAccess TextField to an eclipse RCP application将 QuickAccess TextField 添加到 Eclipse RCP 应用程序
【发布时间】:2020-03-22 10:29:16
【问题描述】:

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

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

@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
}

在我的例子中,这会产生一个快速访问按钮,但不会产生 TextField。如果您单击它,它的工作方式相同,但我更喜欢 TextField,因为它对用户来说更清楚。

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

如果有人对 JCrypTool 项目感兴趣:

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

【问题讨论】:

  • 您将不得不查看源代码 - 请务必使用正确的源代码,因为此代码已更改多次。例如,您显示的代码与 Eclipse 2020-03 不匹配。猜测在 LegacyIDE.e4xmi 中定义了一些东西
  • @greg-449 啊,是的,我完全忽略了我使用的是旧版本的 Eclipse。我看到新的使用搜索图标,这也很好。我会研究一下 - 谢谢。

标签: java eclipse swt eclipse-rcp


【解决方案1】:

我现在选择了一个稍微不同的解决方案。

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

这是我的plugin.xml 现在的(简化)版本。相关部分是调用org.eclipse.ui.window.quickAccess的扩展点org.eclipse.ui.menus

<?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>

看起来像这样:

对于一个真正花哨的实现,我猜你必须为它编写一些代码。但作为相当不错的 RCP 解决方案,这对我来说没问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    相关资源
    最近更新 更多