@Override
 protected void init(ARankColumnModel model) {
   super.init(model);
   model.addPropertyChangeListener(PROP_WIDTH, listener);
   model.addPropertyChangeListener(IFilterColumnMixin.PROP_FILTER, listener);
   model.addPropertyChangeListener(IMappedColumnMixin.PROP_MAPPING, listener);
   // addDirectWeight(model.getWeight());
   cacheMulti.clear();
   float oldWidth = size() == 1 ? (getSpaces() - RenderStyle.COLUMN_SPACE) : width;
   super.setWidth(oldWidth + model.getWidth() + RenderStyle.COLUMN_SPACE);
   model.setParentData(model.getWidth());
 }
 @Override
 protected void takeDown(ARankColumnModel model) {
   super.takeDown(model);
   model.removePropertyChangeListener(PROP_WIDTH, listener);
   model.removePropertyChangeListener(IFilterColumnMixin.PROP_FILTER, listener);
   model.removePropertyChangeListener(IMappedColumnMixin.PROP_MAPPING, listener);
   // addDirectWeight(-model.getWeight());
   if (alignmentDetails > size() - 2) {
     setAlignment(alignmentDetails - 1);
   }
   super.setWidth(width - model.getWidth() - RenderStyle.COLUMN_SPACE);
   model.setParentData(null);
   cacheMulti.clear();
 }
 protected void onWeightChanged(ARankColumnModel child, float oldValue, float newValue) {
   child.setParentData(newValue);
   super.setWidth(width + (newValue - oldValue));
 }
 @Override
 protected void moved(int from, int to) {
   cacheMulti.clear();
   super.moved(from, to);
 }