Advertisement
kaliy

Untitled

Dec 5th, 2012
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.23 KB | None | 0 0
  1. package ru.unitorg.bpm.common.gwt.container;
  2.  
  3. import com.sencha.gxt.core.client.Style;
  4. import com.sencha.gxt.widget.core.client.Component;
  5. import com.sencha.gxt.widget.core.client.SplitBar;
  6. import com.sencha.gxt.widget.core.client.container.NorthSouthContainer;
  7. import com.sencha.gxt.widget.core.client.event.SplitBarDragEvent;
  8.  
  9. /**
  10.  * Контейнер представляет собой NorthSouthContainer, но при этом добавляет сплиттер между widget и southWidget.
  11.  * Если виджет не нужет, можно использовать NorthSouthContainer
  12.  * BorderLayoutContainer не умеет автоматически подбирать высоту контейнера (как верхнего, так и нижнего),
  13.  * а NorthSouthContainer не имеет сплиттера.
  14.  * @see com.sencha.gxt.widget.core.client.container.NorthSouthContainer
  15.  * @see com.sencha.gxt.widget.core.client.container.BorderLayoutContainer
  16.  */
  17. public class SplittableNorthSouthContainer extends NorthSouthContainer {
  18.  
  19.     SplitBar splitBar;
  20.  
  21.     @Override
  22.     protected void doLayout() {
  23.         if (splitBar == null && getSouthWidget() != null && getSouthWidget() instanceof Component) {
  24.             splitBar = new SplitBar(Style.LayoutRegion.NORTH, (Component) getSouthWidget());
  25.             splitBar.addSplitBarDragHandler(new SplitBarDragEvent.SplitBarDragHandler() {
  26.                 @Override
  27.                 public void onDragEvent(SplitBarDragEvent event) {
  28.                     if (event.isStart()) {
  29.                         splitBar.setData("top", event.getSource().getAbsoluteTop());
  30.                     } else {
  31.                         Integer heightDiff = ((Integer)splitBar.getData("top")) - event.getSource().getAbsoluteTop();
  32.                         applyLayout(getSouthWidget(), ((Component) getSouthWidget()).getOffsetWidth(),
  33.                                 getSouthWidget().getOffsetHeight() + heightDiff);
  34.                         ((Component) getSouthWidget()).setPosition(0,0);
  35.                         doLayout();
  36.                     }
  37.                 }
  38.             });
  39.             getSouthWidget().setStyleName("x-south-widget");
  40.         }
  41.         super.doLayout();
  42.     }
  43.  
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement