Eclipse插件将数据显示为表格

时间:2015-11-17 21:58:16

标签: eclipse eclipse-plugin

我正在编写一个调用程序的Eclipse插件,并将结果数据显示在视图中。

我已成功从通话中获取数据,但无法显示。

这是我的代码(为简洁而编辑)

  static Vector results ;
/**
 * the command has been executed, so extract extract the needed information
 * from the application context.
 */
public Object execute(ExecutionEvent event) throws ExecutionException {
    try{
        IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
        IWorkbenchPage pg = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
        ObjectWhereUsedInputDialog gtid = new ObjectWhereUsedInputDialog(window.getShell());

        ArrayList<Object> input = gtid.openDialog();

        CallProgram callPrg = new CallProgram();
        String callPCML = "callPcml";
        int idx = (input.size()-1);

        AS400 as400 = (AS400) input.get(idx);
        input.remove(idx);
        results = callPrg.callProgram(as400, input);


        ObjectWhereUsedResultTableView dlg = new ObjectWhereUsedResultTableView(results);
public void createPartControl(Composite parent) {
    Table myTable = new Table (parent, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL );
    myTable.setHeaderVisible (true);
    myTable.setLinesVisible (true);
    GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
    gridData.heightHint = 200;
    myTable.setLayoutData(data);
    String[] titles = getColumns(myTable);
    for (int i=0; i<titles.length; i++) {
        TableColumn column = new TableColumn (myTable, SWT.NONE);
        column.setText (titles [i]);
    }
    if(data!=null){System.out.println("datag "+data.size());};

    createTable(myTable, data);


    for (int i=0; i<titles.length; i++) {
        myTable.getColumn (i).pack ();
    }   
    parent.layout(true);
    parent.pack();
}


TableRow[] createTable(Table myTable, Vector<String> dataLines){
    String[] columns = this.getColumns(myTable);
    for (int i=0; i<columns.length; i++) {
    TableColumn column = new TableColumn (myTable, SWT.NONE);
    column.setText (columns[i]);
    }

    int dSize = dataLines==null||dataLines.isEmpty()?0:dataLines.size();

    for(int i = 0;i<dSize;i++){
    String[] elements = dataLines.get(i).split(",");

    TableItem item = new TableItem (myTable, SWT.NONE);

    for(int j = 0;j<elements.length;j++){
        String itemStr =  elements[j].isEmpty()?" ":elements[j];
    item.setText(j,itemStr);
    }
}   

1 个答案:

答案 0 :(得分:0)

要显示视图,您必须使用IWorkbenchPage.showView

ObjectWhereUsedResultTableView view = (ObjectWhereUsedResultTableView)pg.showView("the view id");

这将使用无参数的公共构造函数构造视图部分:

public ObjectWhereUsedResultTableView()
{
 ...
}

您无法将参数传递给构造函数。

要在视图中设置数据,您必须添加一个在显示视图后调用的额外方法:

view.setData(data);

其中setData是您编写的用于使用数据更新表的方法。

注意:您可能会发现TableViewerTable更容易使用。