/** * Recursively tries to estimate the locations of all {@link DockLayoutInfo}s that can * be found in <code>map</code>.<br> * <b>Note:</b> this method does <i>not</i> call {@link DefaultLocationEstimationMap#finish()}. * @param map the root of the tree for which locations need to be estimated */ @SuppressWarnings("unchecked") protected void estimateLocations( DefaultLocationEstimationMap map ){ DockLayoutComposition composition = map.getRoot(); List<DockLayoutComposition> children = composition.getChildren(); if( children == null || children.size() == 0 ){ return; } DockLayout<Object> layout = (DockLayout<Object>)composition.getLayout().getDataLayout(); if( layout == null ){ return; } DockFactory<DockElement,?,Object> factory = (DockFactory<DockElement,?,Object>)getFactory( layout.getFactoryID() ); if( factory == null ){ return; } for( int i = 0, n = map.getChildCount(); i<n; i++ ){ estimateLocations( map.subMap( i ) ); } map.prepare(); factory.estimateLocations( layout.getData(), map ); map.finish(); }