2

Eclipseビューパーツに拡張バーを追加しようとしています。展開ボタンをクリックすると、ビューパーツでアイテムを展開バーの下に移動して、展開されたアイテムを表示します。現在発生しているのは、エキスパンドバーのアイテムがエキスパンドバーの下のアイテムの下に表示されなくなったことです。何かご意見は?

final ExpandBar expandBar = new ExpandBar(parent, SWT.NONE);
expandBar.setBackground(SWTResourceManager.getColor(SWT.COLOR_WIDGET_LIGHT_SHADOW));
expandBar.setSpacing(0);
fd_toolBar.top = new FormAttachment(expandBar, 6);
FormData fd_expandBar = new FormData();
fd_expandBar.top = new FormAttachment(0, 62);
fd_expandBar.left = new FormAttachment(0, 3);
expandBar.setLayoutData(fd_expandBar);
formToolkit.paintBordersFor(expandBar);

final ExpandItem xpndtmWarningDetails = new ExpandItem(expandBar, SWT.NONE);
xpndtmWarningDetails.setExpanded(true);
xpndtmWarningDetails.setText("Warning Details");

final Composite composite_1 = new Composite(expandBar, SWT.NONE);
composite_1.setBackground(SWTResourceManager.getColor(SWT.COLOR_YELLOW));
xpndtmWarningDetails.setControl(composite_1);
formToolkit.paintBordersFor(composite_1);
xpndtmWarningDetails.setHeight(xpndtmWarningDetails.getControl().computeSize(SWT.DEFAULT, SWT.DEFAULT).y);

Label lblTest = new Label(composite_1, SWT.NONE);
lblTest.setBounds(10, 10, 55, 15);
lblTest.setText("Test");

expandBar.addExpandListener(new ExpandListener(){

    @Override
    public void itemCollapsed(ExpandEvent e) {
        expandBar.setSize(expandBar.getSize().x, xpndtmWarningDetails.getHeaderHeight());
        parent.layout(true);
    }

    @Override
    public void itemExpanded(ExpandEvent e) {
        expandBar.setSize(expandBar.getSize().x, 300);
        expandBar.layout(true);
        parent.layout(true);
    }

});
4

1 に答える 1

2

この例のように使用すると、ExpandBarが最適に機能すると思います...

http://git.eclipse.org/c/platform/eclipse.platform.swt.git/tree/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet343.java

...いくつかのエキスパンドバーが互いに積み重ねられており、他には何も混合されていません。

あなたが探している機能は、ExpandableCompositeオブジェクトで実現できると思います。これは、ViewPartで他に何が起こっているかによって異なります。

ExpandableCompositeの簡単な例を次に示します。

package com.amx.designsuite.rcp;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.widgets.ExpandableComposite;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.forms.widgets.TableWrapLayout;

public class ExpandableCompositeExample extends Composite {

/**
 * Create the composite.
 * @param parent
 * @param style
 */
public ExpandableCompositeExample(final Composite parent, int style) {
    super(parent, style);
    FormToolkit toolkit;

    toolkit = new FormToolkit(parent.getDisplay());
    final ScrolledForm form = toolkit.createScrolledForm(parent);
    form.setText("Title for Form holding Expandable Composite (optional)");
    TableWrapLayout layout = new TableWrapLayout();
    form.getBody().setLayout(layout);

    ExpandableComposite expandableCompsite = toolkit.createExpandableComposite(form.getBody(), ExpandableComposite.TREE_NODE | ExpandableComposite.SHORT_TITLE_BAR);
    toolkit.paintBordersFor(expandableCompsite);
    expandableCompsite.setText("Expandable Composite Title (Optional)");
    expandableCompsite.setExpanded(true);

    Text txtMyNewText = toolkit.createText(expandableCompsite, "Text to show when composite is expanded", SWT.NONE);
    expandableCompsite.setClient(txtMyNewText);
}

@Override
protected void checkSubclass() {
    // Disable the check that prevents subclassing of SWT components
}
}
于 2012-08-31T15:46:19.520 に答える