gpt4 book ai didi

java - Eclipse RCP 是否包含内置的剪切/复制/粘贴处理程序?

转载 作者:行者123 更新时间:2023-12-05 04:06:17 24 4
gpt4 key购买 nike

正如标题所说,我想知道 Eclipse RCP 4 是否提供任何可以链接到 org.eclipse.ui.edit.cut 的内置剪切/复制/粘贴处理程序,org.eclipse.ui.edit.copyorg.eclipse.ui.edit.paste 命令?

我明白某些 SWT 小部件或更复杂的剪切/复制/粘贴操作用例可能需要自定义处理程序,但我忍不住觉得我正在尝试重新发明轮子来复制将一个组件中的一些文本粘贴到另一个组件中。

如果没有任何内置的剪切/复制/粘贴处理程序,是否有详细记录的示例说明如何执行此操作?我了解如何使用 clipboard.getContentsclipboard.setContents 方法,但发现在尝试找出在复制命令被调用,哪个组件有焦点,当调用粘贴命令时它是否只读。

我看过这个 StackOverflow问题,但它没有解释是否有任何内置处理程序或提供任何有关编写我自己的处理程序的指导。

最佳答案

对于 3.x 兼容模式的 Eclipse 4 应用程序,这些命令定义为:

 <command
name="%command.cut.name"
description="%command.cut.description"
categoryId="org.eclipse.ui.category.edit"
id="org.eclipse.ui.edit.cut"
defaultHandler="org.eclipse.ui.internal.handlers.WidgetMethodHandler:cut" />
<command
name="%command.copy.name"
description="%command.copy.description"
categoryId="org.eclipse.ui.category.edit"
id="org.eclipse.ui.edit.copy"
defaultHandler="org.eclipse.ui.internal.handlers.WidgetMethodHandler:copy" />
<command
name="%command.paste.name"
description="%command.paste.description"
categoryId="org.eclipse.ui.category.edit"
id="org.eclipse.ui.edit.paste"
defaultHandler="org.eclipse.ui.internal.handlers.WidgetMethodHandler:paste" />

所以他们都使用 org.eclipse.ui.internal.handlers.WidgetMethodHandler 作为默认处理程序,当没有其他处理程序处于 Activity 状态时使用。

此处理程序使用反射在当前聚焦的 SWT 小部件中查找方法名称 cutcopypaste 并调用该方法,如果找到了。

对于纯 e4 应用程序,没有剪切/复制/粘贴命令的默认定义,并且 WidgetMethodHandler 不可用。 SWT 控件将继续支持剪切/复制/粘贴,但不提供其他支持。

您可以使用如下方式将文本放入剪贴板:

Clipboard clipboard = new Clipboard(Display.getCurrent());

clipboard.setContents(new Object [] {"Text for clipboard"},
new Transfer [] {TextTransfer.getInstance()});

clipboard.dispose()

并从剪贴板获取文本:

Clipboard clipboard = new Clipboard(Display.getCurrent());

String text = (String)clipboard.getContents(TextTransfer.getInstance());

clipboard.dispose()

关于java - Eclipse RCP 是否包含内置的剪切/复制/粘贴处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49968043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com