Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ru.unitorg.bpm.common.gwt.container;
- import com.sencha.gxt.core.client.Style;
- import com.sencha.gxt.widget.core.client.Component;
- import com.sencha.gxt.widget.core.client.SplitBar;
- import com.sencha.gxt.widget.core.client.container.NorthSouthContainer;
- import com.sencha.gxt.widget.core.client.event.SplitBarDragEvent;
- /**
- * Контейнер представляет собой NorthSouthContainer, но при этом добавляет сплиттер между widget и southWidget.
- * Если виджет не нужет, можно использовать NorthSouthContainer
- * BorderLayoutContainer не умеет автоматически подбирать высоту контейнера (как верхнего, так и нижнего),
- * а NorthSouthContainer не имеет сплиттера.
- * @see com.sencha.gxt.widget.core.client.container.NorthSouthContainer
- * @see com.sencha.gxt.widget.core.client.container.BorderLayoutContainer
- */
- public class SplittableNorthSouthContainer extends NorthSouthContainer {
- SplitBar splitBar;
- @Override
- protected void doLayout() {
- if (splitBar == null && getSouthWidget() != null && getSouthWidget() instanceof Component) {
- splitBar = new SplitBar(Style.LayoutRegion.NORTH, (Component) getSouthWidget());
- splitBar.addSplitBarDragHandler(new SplitBarDragEvent.SplitBarDragHandler() {
- @Override
- public void onDragEvent(SplitBarDragEvent event) {
- if (event.isStart()) {
- splitBar.setData("top", event.getSource().getAbsoluteTop());
- } else {
- Integer heightDiff = ((Integer)splitBar.getData("top")) - event.getSource().getAbsoluteTop();
- applyLayout(getSouthWidget(), ((Component) getSouthWidget()).getOffsetWidth(),
- getSouthWidget().getOffsetHeight() + heightDiff);
- ((Component) getSouthWidget()).setPosition(0,0);
- doLayout();
- }
- }
- });
- getSouthWidget().setStyleName("x-south-widget");
- }
- super.doLayout();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement