package fr.lteconsulting.hexa.client.ui.containers; import com.google.gwt.user.client.ui.AbsolutePanel; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Widget; import fr.lteconsulting.hexa.client.interfaces.IStackPanel; import fr.lteconsulting.hexa.client.interfaces.IStackPanelRow; public class AbsoluteStackPanel extends Composite implements IStackPanel { FlowPanel m_stack = new FlowPanel(); public AbsoluteStackPanel() { m_stack.setWidth( "100%" ); initWidget( m_stack ); } private class RowItem implements IStackPanelRow { AbsolutePanel row; RowItem() { row = new AbsolutePanel(); row.setWidth( "100%" ); } @Override public void setHeight( int height ) { row.setHeight( height + "px" ); } @Override public void addItem( Widget w, int x, int y, int sx, int sy ) { row.add( w, x, y ); w.setPixelSize( sx, sy ); } @Override public void repositionWidget( Widget w, int x, int y, int sx, int sy ) { row.setWidgetPosition( w, x, y ); w.setPixelSize( sx, sy ); } @Override public void removeItem( Widget w ) { row.remove( w ); } @Override public void clearAll() { row.clear(); } @Override public void setVisible( boolean visible ) { row.setVisible( visible ); } @Override public IStackPanelRow createSubRow() { RowItem item = new RowItem(); m_stack.insert( item.row, m_stack.getWidgetIndex( row ) + 1 ); return item; } } @Override public IStackPanelRow addRow() { RowItem item = new RowItem(); m_stack.add( item.row ); return item; } @Override public void clear() { m_stack.clear(); } }