当前位置: 首页 > 知识库问答 >
问题:

Eclipse RCP-如何以编程方式创建和打开View?

咸浩初
2023-03-14

我想在执行操作时打开一个包含表的视图。

我可以通过该代码通过viewId打开视图:

    display.asyncExec(new Runnable(){

        public void run() {
        ApplicationGIS.getView(true, viewId);

    }});

这个视图的id定义在plugin.xml,但是我必须将一些参数传递给这个视图的表。我可以通过编程创建我的自定义视图,但是这次我无法打开它,因为我没有它的id。这是我的视图类:

public class MyCustomView extends ViewPart {

    private Text text;
    private Table table;
    private TableViewer tableViewer;


    @Override
    public void createPartControl(Composite parent) {
        // TODO Auto-generated method stub
        parent.setLayout(new GridLayout(4, false));

        Composite composite = new Composite(parent, SWT.NONE);
        composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 4, 1));
        composite.setLayout(new GridLayout(2, false));

        text = new Text(composite, SWT.BORDER);
        text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));

        Composite composite_1 = new Composite(composite, SWT.NONE);
        composite_1.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
        GridLayout gl_composite_1 = new GridLayout(1, false);
        gl_composite_1.horizontalSpacing = 0;
        gl_composite_1.marginHeight = 0;
        gl_composite_1.marginWidth = 0;
        gl_composite_1.verticalSpacing = 0;
        composite_1.setLayout(gl_composite_1);

        tableViewer = new TableViewer(composite_1, SWT.BORDER | SWT.FULL_SELECTION);

        table = tableViewer.getTable();
        table.setHeaderVisible(true);
        table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
    }

    @Override
    public void setFocus() {
        // TODO Auto-generated method stub

    }
}

那么,我如何访问这个以编程方式创建的视图并打开它呢?

共有3个答案

冀弘厚
2023-03-14

来自@Chriss answer;

我在我的视图中添加了一个方法,然后我可以像这样将我的值传递给我的自定义视图

    MyCustomView view = new MyCustomView();     
    view.setInput(parameter);
    display.asyncExec(new Runnable(){

        public void run() {
        ApplicationGIS.getView(true, viewId);


    }});

这很有效。

宋建本
2023-03-14

我也有同样的问题。我想从插件中注册的视图中创建其他视图。这些URL将为您提供您想要的:

http://wiki.eclipse.org/FAQ_How_do_I_open_multiple_instances_of_the_same_view

http://www.java-tips.org/other-api-tips/eclipse/how-to-create-multiple-instances-of-one-viewpart.html

PlatformUI.getWorkbench().getActiveWorkbenchWindow().
getActivePage().showView(String viewID,String secondaryID,int Mode);
柴宏浚
2023-03-14

在Eclipse 3中。x您可以打开如下视图:

MyView view = (MyView) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView(viewer_ID);

或者,如果要实现命令处理程序,可以调用:

HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().showView(viewId);

要设置某些内容,只需在ViewPart中添加一个方法,如void setInput(MyContent input),并在打开该方法后将所需的参数传递给该方法。

 类似资料:
  • 我正尝试使用以下命令以编程方式创建:

  • 问题内容: 概要 我正在开发一个Web应用程序以学习Django(python 3.4和Django 1.6.10)。该Web应用程序具有复杂且经常更新的工作流程。我决定集成Django-Viewflow库(https://github.com/viewflow/viewflow/),因为这似乎是处理工作流且不将工作流逻辑与应用程序模型合并的一种非常方便的方法。 在这种情况下,我创建了一个工作流以

  • 问题内容: 是否有免费的库可根据图像序列创建MPEG(或任何其他简单的视频格式)? 它也必须在Linux上运行,并且最好具有Python绑定。 问题答案: 我知道有一个mencoder(是mplayer项目的一部分)和ffmpeg,它们都可以做到这一点。

  • 我有一个充满自定义视图的应用程序。当我尝试以编程方式创建FAB时,它会抛出一个错误 原因:java.lang.IllegalArgumentException:您需要在设计库中使用theme.AppCompat主题(或后代)。

  • 是否有无论如何创建pem和pk8文件由我的应用程序本身使用java编程?

  • 问题内容: 我正在尝试以编程方式在Java中创建新的密钥库。如下代码: 引发未初始化的KeyStore异常。 问题答案: 创建密钥库后,需要将其加载。load方法要求读取FileInputStream,但是如果您提供一个null,则将加载一个空的KeyStore。 看到这个链接