@Override
  public void reshape(int x, int y, int w, int h) {
    int total = myVerticalSplit ? h : w;
    if (w > 0 && h > 0 && myDividerPositionStrategy != DividerPositionStrategy.KEEP_PROPORTION
        && isComponentVisible(myFirstComponent) && isComponentVisible(mySecondComponent)
        && total > 2 * getDividerWidth() && total != getDimension(getSize())) {
      if (myDividerPositionStrategy == DividerPositionStrategy.KEEP_FIRST_SIZE) {
        myProportion = getProportionForFirstSize((int)getDimension(myFirstComponent.getSize()), total);
      }
      else if (myDividerPositionStrategy == DividerPositionStrategy.KEEP_SECOND_SIZE) {
        myProportion = getProportionForSecondSize((int)getDimension(mySecondComponent.getSize()), total);
      }
      else if (myDividerPositionStrategy == DividerPositionStrategy.DISTRIBUTE) {
        if (myLagProportion == null) myLagProportion = myProportion;
        Component first = unwrap(myFirstComponent);
        Component second = unwrap(mySecondComponent);
        myProportion = getDistributeSizeChange(
          (int)getDimension(myFirstComponent.getSize()),
          (int)getDimension(first.getMinimumSize()),
          (int)getDimension(first.getPreferredSize()),
          (int)getDimension(first.getMaximumSize()),
          (int)getDimension(mySecondComponent.getSize()),
          (int)getDimension(second.getMinimumSize()),
          (int)getDimension(second.getPreferredSize()),
          (int)getDimension(second.getMaximumSize()),
          total - getDividerWidth(),
          myLagProportion,
          myLackOfSpaceStrategy == LackOfSpaceStrategy.SIMPLE_RATIO ? null :
          myLackOfSpaceStrategy == LackOfSpaceStrategy.HONOR_THE_SECOND_MIN_SIZE);
      }
    }
    super.reshape(x, y, w, h);
  }
@Override
  public void reshape(int x, int y, int w, int h)