IntelliJ IDEA 开发插件,获取鼠标选中的文本
在开发插件的过程中,需要获取光标框选的文本内容,经过百度查询和查看cut和copy的源码发现并没有直接获取文本的方法(也或者有,我没有找到),通过几个小时的搜索,只能放弃直接获取文本的方式,转向其他方式替代
转变前思路:
光标选中文本--->调用api获取选中的文本
转变后的思路:
光标选中文本--->自定义插件模拟copy动作------>从系统剪贴板获取内容------->清空系统剪切板
经过测试,这个思路完全可行,直接贴代码
//模拟copy动作
RichCopySettings settings = RichCopySettings.getInstance();
boolean savedValue = settings.isEnabled();
try {
settings.setEnabled(true);
ActionManager.getInstance().getAction("EditorCopy").actionPerformed(e);
} finally {
settings.setEnabled(savedValue);
}
//获取剪贴板内容
public static String getSysClipboardText() {
String ret = "";
Clipboard sysClip = Toolkit.getDefaultToolkit().getSystemClipboard();
// 获取剪切板中的内容
Transferable clipTf = sysClip.getContents(null);
if (clipTf != null) {
// 检查内容是否是文本类型
if (clipTf.isDataFlavorSupported(DataFlavor.stringFlavor)) {
try {
ret = (String) clipTf
.getTransferData(DataFlavor.stringFlavor);
} catch (Exception e) {
e.printStackTrace();
}
}
}
return ret;
}
//清空剪贴板
public static void setSysClipboardText(String writeMe) {
Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable tText =new StringSelection(writeMe);//覆盖系统剪切板
clip.setContents(tText,null);
}