Eclipse 插件视图 - 如何动态添加和处理复合材料

Eclipse plugin view - How to add and dispose composites on the fly

用例很简单:

在 Scrolled Composite 中,我有一个下拉菜单,当我从其中 select 一个项目时,会在下方的网格布局中生成多个 ChartComposite。

然后我再次 select 下拉菜单,我单击另一个项目,所有以前生成的组合都被处理掉,视图中填充了新的。

现在了解更多详情:

Dropdown 和 ChartComposites 都包含在一个常规的 Composite 中 (因为我只能将一个 Composite 设置为 ScrolledComposite)它有一个网格布局,因为我希望它们以某种方式排列。

问题是我不知道如何在创建视图后调用 createPartControl() 以处理我不再需要的复合材料并创建新的复合材料。

我尝试使用 Content Provider,但我认为它不适用于预制的 Composites,因为结果是 ChartComposites 它应该 return 被转换为对象并且不再...图表。

我考虑过使用 StackLayout,但我确实需要我目前拥有的 GridLayout,所以它不起作用。

那么有没有人知道通过侦听器(select 下拉项、按下按钮等)处理组合并将其添加到已创建视图的快速简便的方法?

您可以使用 StackLayoutGridLayout 来实现此目的,而不必乱用 dispose

从你的问题中不清楚GUI设计到底是什么。以下代码堆叠多个复合子项:

Composite parent = new Composite(body, SWT.NONE);
parent.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
StackLayout layout = new StackLayout();
parent.setLayout(layout);

Composite child1 = new Composite(parent, SWT.NONE);
child1.setLayout(new GridLayout());
// TODO .... add controls to child1 for first 'page'

Composite child2 = new Composite(parent, SWT.NONE);
child2.setLayout(new GridLayout());
// TODO .... add controls to child2 for second 'page'

layout.topControl = child;
layout.layout();