-1

我编写了一个 Eclipse 插件,它允许用户比较两个项目之间的 SLOC 计数。只需在 Project Explorer 视图中突出显示两个项目,右键单击并选择插件(通过上下文菜单启动插件),即可启动该插件。无论选择 ProjectA 和 ProjectB 的顺序如何,插件都会将 ProjectA 与 ProjectB 进行比较。我想使用选择顺序来确定用户是否将获得 ProjectA 与 ProjectB 或 ProjectB 与 ProjectA 的比较。

给定一个IStructuredSelection,我如何判断哪个项目首先被选中?

顺便说一句 - 似乎getFirstElement()没有给你选择的第一个元素,只是列表中的第一个元素(同样,它不一定是第一个元素 [Project in this case] selected)

4

2 回答 2

0

您无法从 IStructuredSelection 中获取选择顺序,但还有另一种选择。对于菜单/弹出操作,您可以通过 selectionChanged(IAction action, ISelection selection) 方法获得当前选择。This method is called whenever the selection changes. 通常你会丢弃最后一个选择而只保留新的 IStructuredSelection,但是如果你将之前的 IStructuredSelection 与传递给你的那个进行比较,你会看到自上次选择操作以来添加和删除的内容。通过随着时间的推移跟踪这些变化,您应该能够知道选择的顺序。

于 2012-10-19T16:32:47.133 回答
0

您根本不应该根据选择事件的顺序进行此操作。作为用户,我会很生气,如果我不仅要选择 2 个项目,而且必须按正确的顺序单击它们才能得到我想要的结果。

相反,将按钮或其他 UI 元素放入结果视图以“切换比较顺序”。这对用户来说更容易理解和记住。

于 2012-10-21T08:16:56.253 回答