通过继承 org.eclipse.ui.part.ViewPart,可以实现业务逻辑的查询封装展示我们需要的视图效果。
随记录心得:
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.ISelectionListener;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.part.ViewPart;
import com.teamcenter.rac.util.OSGIUtil;
import com.teamcenter.rac.common.IContextInputService;
public class MyView extends ViewPart {
private ISelection m_selection;
private MySelectionListener m_listener;
@Override
public void createPartControl(Composite parent) {
//自定义界面
//注册监听主界面的选中事件
m_listener = new MySelectionListener();
getSite().getWorkbenchWindow().getSelectionService().addSelectionListener(m_listener);
}
@Override
public void setFocus() {
}
private void initData(){
//刷新自定义界面内数据
}
private class MySelectionListener implements ISelectionListener {
public void selectionChanged(IWorkbenchPart part, ISelection selection) {
m_selection = selection;
if (selection == null || selection.isEmpty()) {
IContextInputService contextInputService = (IContextInputService) OSGIUtil.getService(Activator.getDefault(), IContextInputService.class);
if (contextInputService != null) {
m_selection = contextInputService.getInput();
}
}
if (m_selection != null) {
Job j = new Job("") {
@Override
protected IStatus run(IProgressMonitor monitor) {
//自定义处理界面的数据显示
initData();
return Status.OK_STATUS;
}
};
j.schedule();
}
}
}
}