Как оформить панель горизонтального разделителя в GWT 1.5
У меня есть это требование, чтобы стилизовать правую сторону горизонтальной разделительной панели. Насколько я знаю, GWT 1.7 поддерживает отдельные стили панели (слева и справа), но здесь мы используем GWT 1.5.
код gwt:
HTML div1 = new HTML("Div 1");
div1.setWidth("200px");
div1.setHeight("200px");
HTML div2 = new HTML("Div 2");
div2.setWidth("400px");
div2.setHeight("500px");
HorizontalSplitPanel horizontalSPanel = new HorizontalSplitPanel();
horizontalSPanel.setLeftWidget(div1);
horizontalSPanel.setRightWidget(div2);
RootPanel.get().add(horizontalSPanel);
соответствующий вывод:
<div class="gwt-HorizontalSplitPanel" style="position: relative; height: 100%;">
<div style="border: medium none ; margin: 0pt; padding: 0pt; position: absolute; left: 0px; right: 0px; top: 0px; bottom: 0px;">
<div style="border: medium none ; margin: 0pt; padding: 0pt; overflow: auto; position: absolute; top: 0px; bottom: 0px; width: 511px;">
<div class="gwt-HTML" style="width: 200px; height: 200px;">Div 1</div>
</div>
<div style="position: absolute; top: 0px; bottom: 0px; left: 511px;">
<table height="100%" cellspacing="0" cellpadding="0" class="hsplitter">
<tbody>
<tr><td valign="middle" align="center">
<img border="0" style="background: transparent url(http://localhost:8888/com.xyzpackage.MyEntryPoint/4BF90CCB5E6B04D22EF1776E8EBF09F8.cache.png) no-repeat scroll 0px 0px; width: 7px; height: 7px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" src="http://localhost:8888/com.xyzpackage.MyEntryPoint/clear.cache.gif"/>
</td></tr>
</tbody>
</table>
</div>
<div style="border: medium none ; margin: 0pt; padding: 0pt; overflow: auto; position: absolute; top: 0px; bottom: 0px; right: 0px; left: 518px;">
<div class="gwt-HTML" style="width: 400px; height: 500px;">Div 2</div>
</div>
</div>
</div>
Есть ли способ, которым я могу применить стиль только к RHS div?
в основном, я получил требование, которое не позволяет моему приложению иметь вертикальную полосу прокрутки в представлении RHS.
2 ответа
Пришлось прибегнуть к DOM:
Node node = horizontalSPanel.getElement().getFirstChildElement().getChildNodes().getItem(2);
// set the overflow y to hidden, this is in point of view of GWT current version
// does not allow user to set style to right or left containers.
DOM.setStyleAttribute((Element) node, "overflowY", "hidden");
Это очень хромая и использует жесткое кодирование
Любой, имеющий лучшее решение??
Вы всегда можете заключить Div 2 в другой Div и присвоить ему атрибут overflowY:hidden, поэтому вам не нужно проходить через дерево DOM.
Этот же подход используется в ScrollPanel только по противоположной причине.