我正在开发一个Eclipse-RCP应用程序,其中我有两个不同文件夹的透视图。左侧文件夹中的视图显示用户可以单击以获取更多信息的信息。因此,详细信息显示在右侧文件夹中
当右侧文件夹中只有一个视图时没有问题。然而,当我向右侧文件夹添加另一个视图时,事情变得混乱。由于视图必须以某种方式进行通信,我为此编写了一些代码。在createPartControl(Composite)
期间,视图会注册用户选择的更改。但是文件夹的第二个视图在用户单击它之前不会加载,因此当用户选择表格行或其他内容时,它不会自动更新。
这可能很难理解,所以这里有一个例子:用户打开应用程序并看到两个标签文件夹。然后他在表格中选择第X行。右侧文件夹的前视图现在包含有关行X的信息。该文件夹的第二个视图尚未加载,因此它尚未注册选择更改。如果用户现在打开此视图,它将处于默认状态,因为它没有获得有关选择更改的信息。
只有在用户打开视图后,它才能显示信息。有没有办法创建一个在加载透视图后自动加载(创建)的视图?
与此同时,如果用户选择行X并且最小化右侧选项卡文件夹,我想打开正确的选项卡文件夹。为此,我使用了IWorkbenchPage.showView(String)
。打开选项卡文件夹的第一个视图。但每当我打开另一个视图并选择第Y行时,"打开"第一个视图将导致它被带到前面。有办法防止这种情况吗?
答案 0 :(得分:1)
您可以使用以下方式打开视图而不将其激活:
IWorkbenchPage page = ...
page.showView("view id", null, IWorkbenchPage.VIEW_VISIBLE);
您也可以使用
IViewPart part = page.findView("view id");
查找视图是否已打开。