Are you using the code from this thread: screenDockable - #2 von Beni ?
If so the CGroupBehavior
prevents stacks from being maximed. This can be solved by providing a more customized CGroupBehavior
.
Try out the example below. Stacks can be maximized, but the user is prevented from making an entire stack floating.
package test;
import javax.swing.JFrame;
import bibliothek.gui.DockStation;
import bibliothek.gui.Dockable;
import bibliothek.gui.dock.common.CControl;
import bibliothek.gui.dock.common.CLocation;
import bibliothek.gui.dock.common.DefaultSingleCDockable;
import bibliothek.gui.dock.common.group.CGroupBehavior;
import bibliothek.gui.dock.common.group.CGroupMovement;
import bibliothek.gui.dock.common.mode.ExtendedMode;
import bibliothek.gui.dock.facile.mode.LocationMode;
import bibliothek.gui.dock.facile.mode.LocationModeManager;
public class AdvancedGroupingTest {
public static void main( String[] args ) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
CControl control = new CControl( frame );
frame.add( control.getContentArea() );
// custom grouping behavior is set here
control.setGroupBehavior( new MyGroupBehavior() );
for( int i = 0; i < 4; i++ ) {
DefaultSingleCDockable dockable = new DefaultSingleCDockable( "id" + i );
dockable.setTitleText( "Title " + i );
control.addDockable( dockable );
dockable.setLocation( CLocation.base().normal().stack() );
dockable.setVisible( true );
}
frame.setBounds( 50, 50, 1000, 1000 );
frame.setVisible( true );
}
private static class MyGroupBehavior implements CGroupBehavior {
@Override
public CGroupMovement prepare( LocationModeManager<? extends LocationMode> manager, Dockable dockable, ExtendedMode target ) {
return getBehaviorForTarget( target ).prepare( manager, dockable, target );
}
@Override
public Dockable getGroupElement( LocationModeManager<? extends LocationMode> manager, Dockable dockable, ExtendedMode mode ) {
return getBehaviorForTarget( mode ).getGroupElement( manager, dockable, mode );
}
@Override
public Dockable getReplaceElement( LocationModeManager<? extends LocationMode> manager, Dockable old, Dockable dockable, ExtendedMode mode ) {
return getBehaviorForTarget( mode ).getReplaceElement( manager, old, dockable, mode );
}
@Override
public boolean shouldForwardActions( LocationModeManager<? extends LocationMode> manager, DockStation station, Dockable dockable, ExtendedMode mode ) {
return getBehaviorForTarget( mode ).shouldForwardActions( manager, station, dockable, mode );
}
private CGroupBehavior getBehaviorForTarget( ExtendedMode target ) {
if( target == ExtendedMode.EXTERNALIZED ) {
return CGroupBehavior.TOPMOST;
} else {
return CGroupBehavior.STACKED;
}
}
}
}