package com.eas.widgets.containers;
import com.eas.core.XElement;
import com.eas.ui.CommonResources;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.Style;
import com.google.gwt.user.client.ui.LayoutPanel;
import com.google.gwt.user.client.ui.RequiresResize;
import com.google.gwt.user.client.ui.Widget;
/**
*
* @author mg
*/
public class AnchorsPanel extends LayoutPanel {
public AnchorsPanel() {
super();
getElement().<XElement> cast().addResizingTransitionEnd(this);
}
public void ajustDisplay(Widget child) {
if (child.getParent() == this) {
Element el = getWidgetContainerElement(child);
boolean visible = !child.getElement().hasAttribute("aria-hidden");
if (visible){
el.getStyle().clearDisplay();
if(child instanceof RequiresResize){
((RequiresResize)child).onResize();
}
} else {
el.getStyle().setDisplay(Style.Display.NONE);
}
}
}
@Override
public void insert(Widget aChild, int beforeIndex) {
super.insert(aChild, beforeIndex);
Element wce = getWidgetContainerElement(aChild);
wce.getStyle().clearOverflow();
aChild.getElement().getStyle().clearRight();
aChild.getElement().getStyle().clearBottom();
aChild.getElement().getStyle().setWidth(100, Style.Unit.PCT);
aChild.getElement().getStyle().setHeight(100, Style.Unit.PCT);
CommonResources.INSTANCE.commons().ensureInjected();
aChild.getElement().addClassName(CommonResources.INSTANCE.commons().borderSized());
ajustDisplay(aChild);
}
@Override
public void onResize() {
// Crazy GWT layout system clears display property of childrens' styles.
for (int i = 0; i < getWidgetCount(); i++) {
Widget child = getWidget(i);
ajustDisplay(child);
}
super.onResize();
}
@Override
protected void onAttach() {
super.onAttach();
forceLayout();
}
}