【问题标题】:how to invoke viewpart by java code in eclipse plugin如何通过eclipse插件中的java代码调用viewpart
【发布时间】:2016-02-09 02:17:28
【问题描述】:

如何在 Eclipse 插件项目中的菜单命令事件上调用 viewpart 类。基本上我想在 eclipse 插件中打开一个 awt 框架,所以我使用 viewpart 类。 Awt 框架应在用户请求时打开。

我创建了一个菜单选项,我想在该菜单命令上打开该 awt 框架。我试图制作 viewpart 类,然后调用它,但它没有用。下面是我的viewpart类代码

public class LabelView extends ViewPart {
    public static Composite _parent;
    private Label label;
    public LabelView() {
        super();
    }
    public void setFocus() {
        //label.setFocus();
    }
    public void createPartControl(Composite parent) {
        _parent=parent;

        // main composite
        Composite mainComposite = new Composite(parent, SWT.EMBEDDED | SWT.NO_BACKGROUND);

        Frame awtframe = SWT_AWT.new_Frame(mainComposite);
        java.awt.Panel  awtpanel   = new java.awt.Panel();
        awtpanel.setLayout(new java.awt.GridLayout());
        awtframe.setLayout(new java.awt.GridLayout());
        awtframe.add(awtpanel);
    }
}

【问题讨论】:

  • “调用 viewpart 类”是什么意思?此视图是否已打开并且您想在视图中执行某些操作?还是要打开视图?
  • @greg-449 在这两种情况下,当 viewpart 打开并且我想更新一些东西并且如果 viewpart 关闭然后我首先打开它然后更改

标签: java eclipse eclipse-plugin


【解决方案1】:

要查找视图,请使用:

IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();

IViewPart view = page.findView("view id");

其中“view id”是您在 org.eclipse.ui.views 扩展点中声明的视图的 ID。

如果视图没有打开viewfindView会返回null,你可以使用以下方法打开视图:

view = page.showView("view id");

在任何一种情况下,您都可以将视图转换为您的视图类并调用一个方法来做您想做的事情:

LabelView myView = (LabelView)view;

myView.someMethod();  // TODO you write this method

【讨论】:

  • 我面临一个问题,即当视图部分打开时,它不会更新/刷新视图。当我手动关闭并打开 viewpart 时,它工作正常,但通过 java 代码它不会刷新或更新。我能为它做些什么?
猜你喜欢
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 2012-03-23
  • 1970-01-01
  • 2012-03-09
  • 2012-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多