如何将用户输入的功能添加到我的eclipse插件?

问题描述:

我正在Eclipse中开发一个插件,它可以生成一个文本文件(基于用户输入),并且可以触发一个perl脚本。我可以轻松地制作一个简单的插件(如Hello World),并且可以添加新的菜单和命令。我明白这些事情是如何相互关联的,但我陷入困境的地方是用户输入。如何将用户输入的功能添加到我的eclipse插件?

如何让用户输入他的选择?我的意思是我应该用什么扩展点来问他?我找不到任何可以要求用户输入数据的内容。一旦我可以让他输入所需的信息,我可以轻松访问该信息以进一步进行。

PLZ。注意:这是我第一次参加在线社区,所以我试图在我的描述中尽可能详尽。我是eclipse的新手,对Java有非常基本的了解。我通过Mark Dexter在线学习了一些Java课程。我对C++有很深的理解和工作经验。

+1

我可能没有正确理解你的问题,但你应该能够在工作台上注册一个动作,然后使用该动作钩子来弹出对话框或为用户提供另一种与插件交互的方式。 –

+0

首先感谢您的答复。我不知道注册操作到工作台的意义是什么?我相信这是在您将扩展点添加到插件时自动发生的事情。我想我可以使用org.eclipse.ui.menus轻松地弹出对话框。你是否同意我的观点?? – NumbersInMyHead

继续我上面的评论(对不起,不能适应评论的600个字符限制,所以我将此作为可能的答案添加到您的问题中) - 快速搜索将我引导至 - http://www.eclipse.org/articles/article.php?file=Article-action-contribution/index.html。您可以使用操作轻松添加由您的插件处理的工具栏按钮,菜单项等。简而言之,这就是你如何将功能插入工作台。我建议检查上面的链接以获得更好的理解。至于收集输入,您可以使用JFace对话框(http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse% 2Fjface%2Fdialogs%2FDialog.html)。有许多预先设定好的对话框可供您使用,因此我建议您多做一些研究,以查看哪些对您的用例最有效。祝你好运!

+0

你能给我一些关于SWT的建议吗?我创建了一个java类(SWT),现在我希望将它与我现有的插件集成在一起。你认为如果这可能吗?你可以点亮它吗?感谢TK。 8) – NumbersInMyHead

Eclipse中没有用于输入用户信息的扩展点。为此,您通常根据具体的使用情况使用对话框或视图。

+0

你能告诉我你的意思是什么意思吗?我只是被我所遇到的所有新东西所淹没。视图是否引用普通视图,如包资源管理器,错误日志,问题等?如果你能给我一个关于你所指的视图的链接,那将是非常棒的。谢谢!!!! – NumbersInMyHead

+0

对于某些用例,您可能希望始终将输入区域设为“打开”,以便随时对区域中的值进行更改。这可以通过打开一个对话框来对现有值进行更改来完成,但也可以通过在Eclipse中具有可直接更改当前值的视图来完成。无论何时您进行更改,这些都会立即反映在结果中。在Eclipse中,“属性”视图可以被视为一个示例,因为您可以直接更改后备对象的值。 –

启动Eclipse插件开发可能有点压倒性。

排序的答案: 我假设你已经用“hello,world command”模板创建了一个新的插件项目。如果不是,你可以轻松做到。它会帮助你开始。在这个示例项目中,eclipse为你创建了一个简单的菜单贡献。我不打算详细讨论细节,但本质上,您创建一个命令(org.eclipse.ui.commands)并将其与工作台中的某个位置(如菜单或工具栏图标)相关联(org.eclipse.ui.menus )。然后你需要创建一些能够处理这个命令的东西,就像它被执行时一样(通过用户点击菜单)。这是由处理程序(org.eclipse.ui.handlers)完成的,处理程序就是你想要代码进入的地方。

  1. 打开“的plugin.xml”文件在您的插件,并导航到“扩展”部分
  2. 展开“org.eclipse.ui.handlers”分支,选择唯一的“(处理器) “项目。
  3. 点击编辑器右侧的“class”链接,它将导航到生成的类。
  4. 您的代码转到“执行”方法。这是用户执行命令时将运行的内容。在你的情况,如果你要问一个输入,您可以使用输入对话框:

代码:

public Object execute(ExecutionEvent event) throws ExecutionException { 
     InputDialog dlg = new InputDialog(
      HandlerUtil.getActiveShellChecked(event), "Title", 
      "Enter text", "Initial value", null); 
     if (dlg.open() == Window.OK) { 
     // User clicked OK; run perl 
     String input = dlg.getValue(); 
     // TODO:do something with value 
     } 
     return null; 
} 

没有询问用户输入您需要显示一个对话框。我建议你仔细阅读一下这个很好的教程:http://www.vogella.de/articles/EclipseDialogs/article.html,其中详细描述了这一点。

长的答案是查看http://www.vogella.de/articles/EclipsePlugIn/article.htmlhttp://www.vogella.de/articles/EclipseCommands/article.html以查看Eclipse RPC和命令背后的基础知识。

最后,您还需要查看http://www.vogella.de/articles/EclipseJobs/article.html以了解如何运行更长的任务,例如您正在讨论的perl脚本。

+0

我似乎有格式化的问题 - 在这里它的格式很好:https://gist.github.com/1733662 – fikovnik

+0

谢谢吨fikovnik ......这真的有助于确认我有很多事情一直在阅读......我无法给你评分因为我的代表是不够好的率...再次感谢 – NumbersInMyHead

+0

你已经帮助我这么多,我没有言语来形容我多么感谢你。但是从哪里获得有关插件开发的所有信息?我已经做了好几个星期了,但把我在互联网上找到的所有信息放在一起非常困难。请指教。谢谢 – NumbersInMyHead