我正在编写一个调用程序的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);
}
}
答案 0 :(得分:0)
要显示视图,您必须使用IWorkbenchPage.showView
:
ObjectWhereUsedResultTableView view = (ObjectWhereUsedResultTableView)pg.showView("the view id");
这将使用无参数的公共构造函数构造视图部分:
public ObjectWhereUsedResultTableView()
{
...
}
您无法将参数传递给构造函数。
要在视图中设置数据,您必须添加一个在显示视图后调用的额外方法:
view.setData(data);
其中setData
是您编写的用于使用数据更新表的方法。
注意:您可能会发现TableViewer
比Table
更容易使用。