我创建Eclipse RCP应用程序,我坚持传递参数而呈现出视图。 作为第一种方法,我试图从设置在视图1视图2一个静态变量和打开的视图(如下)。 有用。
IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
String viewIdToClose = studentListView.ID;
IViewPart viewToClose = activePage.findView(viewIdToClose);
TableItem item = studentTable.getItem(studentTable.getSelectionIndex());
String text = item.getText(ListViewConstants.TABLE_COLUMN_ONE);
activePage.hideView(viewToClose);
try {
String viewIdToOpen = StudentReview.ID;
StudentReview.userId = text;
activePage.showView(viewIdToOpen);
} catch (PartInitException e) {...}
由于这似乎并没有成为一个好办法,我尝试按在下面的链接(接受的答案)中提到的建议。 将参数传递到视图 。 在这种方法中,我们可以只显示视图后传递参数。
但我有,则视图要打开的问题应该从选择行同时呼吁showView(有值),即,我想基于视图1的选择来填充视图2的参数。 有什么办法来实现这一目标? 这是好使用PULL,而不是PUSH的方式? 任何建议表示赞赏。 谢谢!!!
UPDATE 1:在方法上提到将参数传递给该视图接口:
public interface ICommunicationView extends IViewPart{
public void accept(Object parameter);
}
调用accept():
IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
String viewIdToClose = StudentListView.ID;
IViewPart viewToClose = activePage.findView(viewIdToClose);
TableItem item = studentTable.getItem(studentTable.getSelectionIndex());
String text = item.getText(ListViewConstants.TABLE_COLUMN_ONE);
activePage.hideView(viewToClose);
try {
String viewIdToOpen = StudentReview.ID;
ICommunicationView viewToOpen = (ICommunicationView) activePage.showView(viewIdToOpen);
viewToOpen.accept(text);//Sending userId to Review view
} catch (PartInitException e) { ... }
StudentReviewView:
private String studentId;
//getters and setters
@Override
public void accept(Object parameter) {
setStudentId(parameter.toString());
}
public void createPartControl(final Composite parent) {
...
System.out.println("Student Id" + this.getStudentId());
}
它打印学生ID为空。
我失去了一些东西明显?
谢谢!