0

操作実行時にテーブルを含むビューを開きたい。

そのコードで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

    }
}

では、このプログラムで作成されたビューにアクセスして開くにはどうすればよいでしょうか?

4

3 に答える 3

7

Eclipse 3.x では、次のようにビューを開くことができます。

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

または、コマンド ハンドラーを実装している場合は、次を呼び出すことができます。

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

一部のコンテンツを設定するvoid setInput(MyContent input)には、ViewPart のようなメソッドを追加し、このメソッドを開いた後に必要な引数を渡すだけです。

于 2013-03-14T11:00:49.350 に答える
1

私はまったく同じ問題を抱えていました。プラグインに登録されているビューから追加のビューを作成したかったのです。これらの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);
于 2013-03-18T14:21:28.460 に答える
0

@Chrissの回答から;

ビューにメソッドを追加したsetInput(parameter)ので、このように値をカスタム ビューに渡すことができます

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

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


    }});

これは機能します。

于 2013-03-14T11:57:03.960 に答える