/** * Sencha GXT 3.0.0b - Sencha for GWT * Copyright(c) 2007-2012, Sencha, Inc. * licensing@sencha.com * * http://www.sencha.com/products/gxt/license/ */ package com.sencha.gxt.desktop.client.layout; import com.google.gwt.user.client.Element; import com.sencha.gxt.widget.core.client.Window; public class CascadeDesktopLayout extends LimitedDesktopLayout implements DesktopLayout { protected int left; protected int top; protected int offsetIndex; @Override public DesktopLayoutType getDesktopLayoutType() { return DesktopLayoutType.CASCADE; } @Override public void layoutDesktop(Window requestWindow, RequestType requestType, Element element, Iterable<Window> windows, int containerWidth, int containerHeight) { if (requestType == RequestType.LAYOUT || requestType == RequestType.RESIZE) { left = 0; top = 0; offsetIndex = 0; } super.layoutDesktop(requestWindow, requestType, element, windows, containerWidth, containerHeight); } @Override protected void layoutWindow(Window window, int containerWidth, int containerHeight, int width, int height) { int offset = window.getHeader().getOffsetHeight(); window.setPixelSize(width, height); if (top + height > containerHeight) { left = ++offsetIndex * offset; top = 0; } if (left + width > containerWidth) { left = 0; top = 0; offsetIndex = 0; } window.setPosition(left, top); left += offset; top += offset; } }