开始在 Eclipse 启动时侦听用户选择



我正在开发一个Eclipse插件,用于对两个程序执行等价性检查。一旦用户在项目资源管理器中选择了两个程序,"最初灰显"图标就会启用,用户可以单击它来执行等效性检查。

问题是,当我在 Eclipse 中安装插件时,它不会侦听用户的选择。不知何故,我必须在 Eclipse 启动时"激活"我的选择类。为此,我使用了一个实现IStartup的类。

如果需要,这是我的选择类;

import java.util.ArrayList;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.ISelectionListener;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;
public class SelectionView extends ViewPart{
static ArrayList<String> paths=new ArrayList<>(2);
private ISelectionListener listener = new ISelectionListener() {
public void selectionChanged(IWorkbenchPart sourcepart, ISelection selection) {
if (sourcepart != SelectionView.this) {
showSelection(sourcepart, selection);
}
}
};
public void showSelection(IWorkbenchPart sourcepart, ISelection selection) {
if (selection instanceof IStructuredSelection) {        
IStructuredSelection ss = (IStructuredSelection) selection;
Object[] ob=ss.toArray();
String path=getPath().substring(0,getPath().lastIndexOf('/'));
String file=null;
for(int i=0;i<ob.length;i++){
if((file=ob[i].toString()).endsWith(".c")){
paths.add(0,path+"/"+file);
if(paths.size()>=2){
Handler.return_val=true;
Handler.arg1=paths.get(0);
Handler.arg2=paths.get(1);
}
}
}
}
}
public String getPath(){
IWorkbenchPart workbenchPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart(); 
IFile file = (IFile) workbenchPart.getSite().getPage().getActiveEditor().getEditorInput().getAdapter(IFile.class);
String path=ResourcesPlugin.getWorkspace().getRoot().getLocation().toString()+file.getFullPath();
return path;
}   
public void createPartControl(Composite parent) {   
getSite().getWorkbenchWindow().getSelectionService().addSelectionListener(listener);
}
public void dispose() {
getSite().getWorkbenchWindow().getSelectionService().removeSelectionListener(listener);
super.dispose();
}
@Override
public void setFocus() {}
}

有人可以帮我如何在 Eclipse 启动时"激活"这门课吗?也就是说,在 IStartup 接口的earlyStartup()方法中编写什么代码才能在 Eclipse 启动后立即开始侦听用户选择?

谢谢!

您有自己的激活器,可以在激活器启动方法上挂钩工作区选择服务。

最新更新