В SectionStackSection, как вы можете изменить положение элементов управления, используемых в setControls (Canvas ...)? - PullRequest
0 голосов
/ 08 марта 2012

В SectionStackSection, Как вы можете изменить положение элементов управления, используемых в setControls(Canvas ...)

В настоящее время он всегда справа, как вы можете установить его влево или по центру?

Ответы [ 2 ]

1 голос
/ 09 марта 2012

Вы можете использовать HLayout в качестве элемента управления Canvas.HLayout может иметь в качестве своих членов элементы управления, которые вы хотели установить в первую очередь, но теперь вы можете управлять их выравниванием в HLayout и, следовательно, в SectionStackSection.Ниже вы можете увидеть простой пример:

    SectionStack sectionStack = new SectionStack();
    sectionStack.setWidth(500);
    sectionStack.setHeight(200);

    SectionStackSection sectionStackSection = new SectionStackSection("Test");
    HLayout controls = new HLayout();
    controls.setWidth(sectionStack.getWidth()*8/10);
    controls.setHeight(5);

    controls.setLayoutAlign(Alignment.LEFT);
    controls.setLayoutAlign(VerticalAlignment.CENTER);

    IButton iButton = new IButton("C");
    iButton.setAutoFit(Boolean.TRUE);
    iButton.setLayoutAlign(Alignment.LEFT);

    controls.addMember(iButton);

    sectionStackSection.setControls(controls);
    sectionStack.addSection(sectionStackSection);

Используйте ширину HLayout для микроуправления тем, где именно будут отображаться ваши элементы управления, внутри заголовка SectionStackSection.Это не идеальное решение, но оно будет работать в простых случаях.

0 голосов
/ 09 марта 2012

Единственный способ, которым это будет работать, - правильно обрабатывать рисование и изменение размера. Итак, вот мое рабочее решение:

private void generateDetailsListGridHeader() {
    createControls();
    section = new SectionStackSection();
    section.setCanCollapse(false);
    section.setExpanded(true);
    section.setControls(controls);
    section.setItems(detailsListGrid);

    sectionStack = new SectionStack();
    sectionStack.setSections(section);
    sectionStack.addResizedHandler(new ResizedHandler() {

        @Override
        public void onResized(ResizedEvent event) {
            htmlFlow.setWidth(sectionStack.getWidth() >> 1);
            controls.setWidth(sectionStack.getWidth() - 10);
        }
    });
    sectionStack.addDrawHandler(new DrawHandler() {

        @Override
        public void onDraw(DrawEvent event) {
            htmlFlow.setWidth(sectionStack.getWidth() >> 1);
            controls.setWidth(sectionStack.getWidth() - 10);
        }
    });
}

private void createControls() {
    String title = "<table> <tr> <td style=\"vertical-align:middle; color:blue; font-size:15px\"> <b>Please double click a class from the left to display its instances</b> </td> </tr> </table>";
    controls = new HLayout(10);
    htmlFlow = new HTMLFlow(title);
    htmlFlow.setOverflow(Overflow.AUTO);
    DynamicForm form = new DynamicForm();
    TextItem versionSearchItem = new TextItem("version", "Version");
    form.setItems(versionSearchItem);
    controls.addMember(htmlFlow);
    controls.addMember(form);
}

Изменяя ширину внутри onResized и onDraw, вы можете поместить каждый элемент управления в любое место!

...