void setFloating(final TabbedDockableContainer tdc, Point screenPosition) {
		/*
		 * package protected, used by OldDragControler to detach a
		 * tabbedcontainer
		 */

		Dockable firstDockable = tdc.getDockableAt(0);
		// all dockables have the same state, as they are in the same tabpane

		DockableState currentState = getDockableState(firstDockable);

		if (!currentState.isDocked()) {
			throw new IllegalArgumentException("not docked");
		} else {
			if (checkDockableStateWillChange(tdc,
					DockableState.Location.FLOATING)) {
				RelativeDockablePosition position = new RelativeDockablePosition(
						dockingPanel, firstDockable);
				// no veto has been raised by the compound dockables
				Dimension previousSize = ((Component) tdc).getSize();

				remove(tdc);
				storePreviousFloatingStates(tdc);
				FloatingDockableContainer fdc = createFloatingDockableContainer(tdc);
				// JDialog dialog = (JDialog) fdc;
				// dialog.setSize(previousSize);
				// dialog.validate();
				DockingUtilities.setSize(fdc, previousSize);
				DockingUtilities.validate(fdc);
				if (screenPosition == null) {
					DockingUtilities.setLocationRelativeTo(fdc, this);
					// dialog.setLocationRelativeTo(this);
				} else {
					DockingUtilities.setLocation(fdc, screenPosition);
					// dialog.setLocation(screenPosition);
				}
				DockingUtilities.setVisible(fdc, true);
				// dialog.setVisible(true);
				fireStateChanged(tdc, DockableState.Location.FLOATING, position);
				DockingUtilities.updateResizeWeights(dockingPanel);
				revalidate();
			}
		}
	}