Dockable maximum problem in StackDockable layout

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;
			}
		}
	}
}