Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从标记视图中选择标记条目_Java_Eclipse_Eclipse Plugin - Fatal编程技术网

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);
 }