2013-03-15 4 views
0

Eclipse RCP의 대화 상자에 몇 가지 문제가 있습니다. 세부 부분에 표시된 해당 DetailPages를 사용하여 마스터 파트의 테이블에 표시된 임의의 양의 엔터티를 관리하는 MasterDetailBlock을 보여주는 대화 상자가 필요합니다. 지금은보기를 사용하여이 작업을 수행하지만 모달이 아닌 대화 상자가보기에 적합합니다.Eclipse RCP : 컨트롤이 대화 상자에 표시되지 않습니다.

처음에는보기에서 코드를 가져 와서 대화 상자에 넣었습니다.보기와 대화 상자 작성의 차이로 인해 몇 가지 수정이있었습니다. 그러나 대부분의 컨트롤이 누락되었습니다. 구글, 이클립스 포럼 및 여기 Stackoverflow에서의 검색은이를위한 해결책을 제시하지 못했다. 이러한 사이트에서 솔루션을 확인한 후 디버거를 사용하여 코드를 단계별로 실행하여 어떤 일이 발생했는지 이해하려고했지만 그만큼 도움이되지 않았습니다.

다음 코드는 버튼이 표시되어야하는 섹션이 포함 된 대화 상자를 표시해야합니다. 그러나, 그것은하지 않습니다, 그러나

Result of above Code, the button "test" is missing

MasterDetailBlock 양식을 필요로, 나는이이 코드를 제공합니다 :

protected Control createDialogArea(Composite parent) { 

    parent.setLayout(new GridLayout(1, true)); 

    Section section = toolkit.createSection(parent, ExpandableComposite.EXPANDED | ExpandableComposite.TITLE_BAR); 
    section.setLayout(new GridLayout()); 
    section.setText("Section"); 
    section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 

    Button test = toolkit.createButton(section, "test", SWT.PUSH); 
    test.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 
    test.setVisible(true); 

    section.computeSize(SWT.DEFAULT, SWT.DEFAULT); 
    return parent; 
} 

이것의 결과는

protected Control createDialogArea(Composite parent) { 

    parent.setLayout(new GridLayout(1, true)); 

    form = new ScrolledForm(parent); 
    form.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 
    form.getBody().setLayout(new FillLayout()); 
    Composite formComposite = toolkit.createComposite(form.getBody()); 
    formComposite.setLayout(new GridLayout(1,true)); 

    Section section = toolkit.createSection(formComposite, ExpandableComposite.EXPANDED | ExpandableComposite.TITLE_BAR); 
    section.setLayout(new GridLayout()); 
    section.setText("Section"); 
    section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 

    Button test = toolkit.createButton(section, "test", SWT.PUSH); 
    test.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 
    test.setVisible(true); 



    section.computeSize(SWT.DEFAULT, SWT.DEFAULT); 
    return parent; 
} 

양식을 대화 상자에 추가하면 약간의 수정 만되고 모든 것이 양식에 적용됩니다. 그러나, 결과는 다음과 같습니다

enter image description here

내가 내가 여기에 뭔가를 분명 누락 두려워. 내가 말했듯이, 검색은 어떤 enlightment도 가져 오지 않았고 코드를 밟아도 도움이되지 못했습니다. 나의 최후의 수단 인 "일들을 보려고 노력하고 그것을 이해하려고 노력한다"는 결과는 이미 게시 된 것에서 변하지 않았기 때문에 많은 도움이되지 못했습니다.

그럼, 놓친 것이 있습니까? (내가 생각하는) 당신이 나에게 무엇이 잘못되었는지 (또는 너의 경험에서 나온 것)를 보여주기위한 링크를 제공 할 수 있다면, 나는 그것을 사과 할 것이다.

도움 주셔서 감사합니다.

답변

0

이 누락

section.setClient(test); 

있습니다. 또한, 양식을 사용하는 경우이 있어야하고 섹션 expandible입니다 대신 버튼을 포함하는 Composite를 추가해야 test 버튼의

protected final IExpansionListener expansionListener= new ExpansionAdapter() 
{ 
    /** 
    * {@inheritDoc} 
    */ 
    @Override 
    public void expansionStateChanged(ExpansionEvent e) 
    { 
    ScrolledForm form = ...; //your scrolled form goes here 
    form.layout(new Control[] {(ExpandableComposite) e.getSource()}, SWT.ALL | SWT.CHANGED); 
    form.reflow(true); 
    } 
}; 

... 

section.addExpansionListener(expansionListener); 

합니다. 각 섹션에는 하나의 클라이언트 만있을 수 있습니다.

+0

답변 해 주셔서 감사합니다. 나는 늦은 대답에 대해 유감스럽게 생각한다. 보통 나는 더 빠르다. – Shelling

관련 문제