【问题标题】:How to display given contents in View when developing Eclipse Plugin?开发Eclipse插件时如何在视图中显示给定的内容?
【发布时间】:2010-05-22 09:59:22
【问题描述】:

例如我想在我的 Eclipse 插件的一个视图中显示一个给定的字符串(不是固定的),怎么做?thx。

bb@feijiao.info

【问题讨论】:

    标签: java eclipse plugins


    【解决方案1】:

    如果你关注RCP tutorial,你会看到你可以定义自己的视图:

    package de.vogella.rcp.intro.view;
    
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.widgets.Composite;
    import org.eclipse.swt.widgets.Text;
    import org.eclipse.ui.part.ViewPart;
    
    public class MyView extends ViewPart {
    
        @Override
        public void createPartControl(Composite parent) {
            Text text = new Text(parent, SWT.BORDER);
            text.setText("Imagine a fantastic user interface here");
        }
    
        @Override
        public void setFocus() {
        }
    }
    

    这将为您提供一个带有自定义文本的视图。

    alt text http://www.vogella.de/articles/RichClientPlatform/images/addview200.gif

    如果您保留对用于显示某些文本的 org.eclipse.swt.widgets.Text 的引用,则可以更改该文本。

    【讨论】:

    • 嗯,我想通过点击PopupMenu打开一个自己定义的视图。我需要获取选定的文件来做某事。然后,在视图中显示一些东西。如何保留对 Text 或类似内容的引用?我认为视图是由 WorkBench 或某事初始化的。虽然是我自己定义的……
    • @user347744:如果它是您自己定义的,您可以使用您需要的任何方法专门化该类,包括在 SWT 文本字段上设置文本。无需保持对字段本身的直接 引用。只有一个由您定义的正确视图。
    • @user347744:太好了。您可以发布解决方案的详细信息作为其他人使用的答案。如果你愿意,你甚至可以接受你自己的答案作为这个问题的官方答案。
    • @VonC:我能问你一个关于 Eclipse 插件的问题吗?
    • @user347744:最好将它作为 Stack Overflow 上的一个新问题提出来,让我和其他人回答 ;)
    【解决方案2】:

    我的解决方案来自VonC 的想法。

    //below codes are working for View.
    //variable to keep reference to Canvas
    private Canvas canvas = null;
    ...
    
    //copy
    public void createPartControl(Composite parent) {
        Canvas canvas = new Canvas(parent, SWT.BORDER | 
                SWT.NO_MERGE_PAINTS | SWT.NONE );
        this.canvas = canvas;
    }
    
    //...
    
    //one getter method to get canvas
    public Canvas getCanvas(){
        return this.canvas;
    }
    //////////////////////////////////
    //////////////////////////////////
    //below codes are working in PopupMenu's action
    page.showView("org.act.bpel2automata.views.GraphView");
    IViewPart view = page.findView("org.act.bpel2automata.views.GraphView");
    
    //GraphView is defined by myself,               
    if(view instanceof GraphView){
        GraphView gView = (GraphView)view;
        Canvas canvas = gView.getCanvas();
    }
    
    //other operations,like draw lines or sth.
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-11
      • 1970-01-01
      • 2017-06-10
      • 2013-05-21
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多