@Override
  public void changeContainerLayout(RadContainer container) throws IncorrectOperationException {
    if (container.getLayoutManager().isGrid()) {
      RadAbstractGridLayoutManager grid = container.getGridLayoutManager();
      List<Boolean> canRowsGrow = collectCanCellsGrow(grid, container, true);
      List<Boolean> canColumnsGrow = collectCanCellsGrow(grid, container, false);
      List<RadComponent> contents = collectComponents(container);

      changeLayoutFromGrid(container, contents, canRowsGrow, canColumnsGrow);

      int oldGapMultiplier = grid.getGapCellCount()+1;
      int gapMultiplier = getGapCellCount()+1;
      for(RadComponent c: contents) {
        GridConstraints gc = c.getConstraints();
        gc.setRow(gc.getRow() * gapMultiplier / oldGapMultiplier);
        gc.setColumn(gc.getColumn() * gapMultiplier / oldGapMultiplier);
        container.addComponent(c);
      }
    }
    else if (container.getLayoutManager().isIndexed()) {
      List<RadComponent> components = collectComponents(container);
      changeLayoutFromIndexed(container, components);

      int gapMultiplier = getGapCellCount()+1;
      for(int i=0; i<components.size(); i++) {
        GridConstraints gc = components.get(i).getConstraints();
        gc.setRow(0);
        gc.setColumn(i*gapMultiplier);
        gc.setRowSpan(1);
        gc.setColSpan(1);
        container.addComponent(components.get(i));
      }
    }
    else if (container.getComponentCount() == 0) {
      container.setLayoutManager(this);
    }
    else {
      throw new IncorrectOperationException("Cannot change from " + container.getLayout() + " to grid layout");
    }
  }
@Override
  public void changeContainerLayout(RadContainer container)