Java 如何从标记视图中选择标记条目
我试图将一个标记项转换为一个自定义对象,并试图通过右键单击标记表视图中的标记项,并从上下文菜单中的选项调用一个操作/处理程序来执行相同的操作 但在处理程序中,当我尝试访问选择时,返回的对象是Java 如何从标记视图中选择标记条目,java,eclipse,eclipse-plugin,Java,Eclipse,Eclipse Plugin,我试图将一个标记项转换为一个自定义对象,并试图通过右键单击标记表视图中的标记项,并从上下文菜单中的选项调用一个操作/处理程序来执行相同的操作 但在处理程序中,当我尝试访问选择时,返回的对象是MarkerEntry(org.eclipse.ui.internal.views.markers.MarkerEntry),而不是IMarker。因为MarkerEntry是一个内部类,所以不知道如何使用它,也不知道使用它是否安全 请提出任何解决方案/备选方案。下面是相关代码和plugin.xml片段 pl
MarkerEntry
(org.eclipse.ui.internal.views.markers.MarkerEntry),而不是IMarker
。因为MarkerEntry是一个内部类,所以不知道如何使用它,也不知道使用它是否安全
请提出任何解决方案/备选方案。下面是相关代码和plugin.xml片段
plugin.xml
<extension point="org.eclipse.ui.views">
<view class="view.ReviewMarkerView" icon="icons/insta_window_16.png" id="id.instaReviewMarkerView" name="Insta Review Defects"> </view>
</extension>
<extension point="org.eclipse.ui.commands">
<command defaultHandler="handlers.DefectToReviewIssueHandler" id="id.defectToReviewIssueHandler" name="Add defect to Review Tracker"></command>
</extension>
<extension point="org.eclipse.ui.menus">
<menuContribution locationURI="popup:id.instaReviewMarkerView">
<command commandId="id.defectToReviewIssueHandler" style="push"></command>
</menuContribution>
</extension>
正如您所说,
MarkerEntry
是内部的,因此您不应该直接引用该类
但是,MarkerEntry
确实实现了IAdaptable
,这提供了一种获取IMarker
的方法:
if (item instanceof IAdaptable)
{
IAdaptable adaptable = (IAdaptable)item;
IMarker marker = (IMarker)adaptable.getAdapter(IMarker.class);
}
好极了非常优雅的解决方案。
if (item instanceof IAdaptable)
{
IAdaptable adaptable = (IAdaptable)item;
IMarker marker = (IMarker)adaptable.getAdapter(IMarker.class);
}