Контейнер калитки, который скрыт, когда скрыты все его дочерние компоненты

У меня есть элемент уровня блока, контейнер, который должен быть скрыт, когда все его дочерние элементы Wicket (кнопки )скрыты. Другими словами, если любая дочерняя кнопка видна, контейнер должен быть видимым.

Ранее одна из кнопок была всегда видна, если были какие-либо кнопки, поэтому я использовал эту кнопку для управления видимостью <wicket:enclosure>, обрабатывая все это исключительно на стороне HTML.

Теперь спецификации изменились, так что кнопки могут быть скрыты/отображены независимо друг от друга, поэтому простой корпус больше не будет работать (Я думаю ).

У меня получилось что-то вроде этого:

HTML:

<wicket:container wicket:id="downloadButtons">
     <wicket:message key="download.foo.bar"/>:
     <input type="button" wicket:id="excelDownloadButton" wicket:message="value:download.excel"/>
     <input type="button" wicket:id="textDownloadButton" wicket:message="value:download.text"/>
     <!-- etc... -->
</wicket:container>

Ява:

WebMarkupContainer container = new WebMarkupContainer("downloadButtons");

//... add buttons to container...

boolean showContainer = false;
Iterator<? extends Component> it = container.iterator();
while (it.hasNext()) {
    if (it.next().isVisible()) {
        showContainer = true;
        break;
    }
}
addOrReplace(container.setVisible(showContainer));

Но сторона Java теперь несколько многословна и уродлива, и я подумал , что, возможно, есть более чистый способ сделать то же самое . Есть? Можно ли как-то «автоматически» скрыть контейнер (со всей его дополнительной разметкой ), когда ни один из его дочерних компонентов не виден?

(Калитка 1.4, если это имеет значение.)

5
задан Jonik 1 August 2012 в 11:05
поделиться