を使用して並べて配置されたエディターに 2 つのセクションがありTableWrapLayout
ます。以下のスクリーンショットでわかるように、右側のセクションの見出しは全幅を使用していません。展開すると、セクションの見出しとコンテンツの両方が全幅を使用します。セクションが再び閉じられると、そのままになります。そのため、問題はエディターを開いたときにのみ発生します。
では、セクション セクションで全幅を使用するにはどうすればよいでしょうか。私はすでにgrabHorizontal
TableWrapData の属性を設定し、基礎となるコンポジットtrue
で使用しています。GridData.FILL_HORIZONTAL
もちろん、セクションをすぐに展開するように設定すると問題は解決しますが、そのセクションのコンテンツをロードすると重いバックエンド処理が行われ、エディターのロード時間が長くなるため、最初は閉じたままにしたいと思います。
エディタのコード:
public void createPartControl(Composite parent) {
toolkit = new FormToolkit(parent.getDisplay());
form = toolkit.createScrolledForm(parent);
form.setLayoutData(new GridData(GridData.FILL_BOTH));
toolkit.decorateFormHeading(form.getForm());
TableWrapLayout layout = new TableWrapLayout();
layout.numColumns = 2;
form.getBody().setLayout(layout);
createMetaInfoSection();
createUpdateDocumentSection();
}
private void createMetaInfoSection() {
Section metaInfoSection = toolkit.createSection(form.getBody(), Section.DESCRIPTION | Section.TITLE_BAR | Section.TWISTIE | Section.EXPANDED);
TableWrapData twd = new TableWrapData();
twd.grabHorizontal = true;
twd.colspan = 1;
metaInfoSection.setLayoutData(twd);
// Composite
Composite composite = toolkit.createComposite(metaInfoSection);
GridLayout gridLayout = new GridLayout();
composite.setLayout(gridLayout);
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
// Content
...
metaInfoSection.setClient(composite);
}
private void createUpdateDocumentSection() {
Section updateDocumentSection = toolkit.createSection(form.getBody(), Section.DESCRIPTION | Section.TITLE_BAR | Section.TWISTIE | Section.EXPANDED);
TableWrapData twd = new TableWrapData();
twd.grabHorizontal = true;
twd.colspan = 1;
updateDocumentSection.setLayoutData(twd);
// Composite
Composite composite = toolkit.createComposite(updateDocumentSection);
GridLayout gridLayout = new GridLayout();
composite.setLayout(gridLayout);
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
// Content
...
updateDocumentSection.setClient(composite);
}