/**
  * returns the weights how much a individual column contributes to the overall scores, i.e. the
  * normalized weights
  *
  * @return
  */
 public float[] getWeights() {
   float[] r = new float[this.size()];
   float base = width - getSpaces();
   int i = 0;
   for (ARankColumnModel col : this) {
     r[i++] = (float) col.getParentData() / base;
   }
   return r;
 }
 @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);
 }