public void pump(BaseTableContainer base, boolean up) {
            HashMap<String, BaseTableContainer> prims = chart.getPrims();
            double othercount = -1;
            for(BaseTableContainer btc : prims.values()) {
                if (btc.rollUpRatio > 0) {
                    othercount = othercount + 1;
                }
            }
            double pump = 0.01;
            if (!up) {
                pump = -pump;
            }
            for(BaseTableContainer b : prims.values()) {
                //int bsize = b.getHeight(); //height of primitive at start			
                if (b == base) {
                    b.setRollUpRatio(b.rollUpRatio + pump);
                } else {
                    if (b.rollUpRatio < (pump / othercount)) {
                        double d = b.getRollUpRatio();
                        if (b.rollUpRatio != 0) {
                            base.setRollUpRatio(base.rollUpRatio + (pump / othercount - d));
                        }
                        b.setRollUpRatio(0);
                    } else {
                        b.setRollUpRatio(b.rollUpRatio - pump / othercount);
                    }
                }
            }
            for(BaseTableContainer b : prims.values()) {
                b.setExactSize(b.getWidth(), (int) Math.round(b.rollUpRatio * chart.mainPane.getHeight()));
            }
            for(BaseTableContainer b : prims.values()) {
                upSize(b);
            }
            realignAll(chart.mainPane);
        }