@Override
 public ARankColumnModel setWidth(float width) {
   if (isCompressed) {
     this.propertySupport.firePropertyChange(
         PROP_WIDTH, compressedWidth, this.compressedWidth = width);
     return this;
   }
   float shift = getSpaces();
   float factor = (width - shift) / (this.width - shift); // new / old
   for (ARankColumnModel col : this) {
     float wi = ((float) col.getParentData()) * factor;
     col.setParentData(wi);
     col.removePropertyChangeListener(PROP_WIDTH, listener);
     col.setWidth(wi);
     col.addPropertyChangeListener(PROP_WIDTH, listener);
   }
   return super.setWidth(width);
 }