繁体   English   中英

Eclipse 插件将数据显示为表格

[英]Eclipse Plugin display data as table

我正在编写一个 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);
    }
}   

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

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

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

public ObjectWhereUsedResultTableView()
{
 ...
}

您不能将参数传递给构造函数。

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

view.setData(data);

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM