*            the dockable when leaving its auto-hide border.
	 * */
	public void addHiddenDockable(Dockable dockable,
			RelativeDockablePosition dockedPosition) {
		/* not used from inside the API : only for user applications */

		DockableState currentState = getDockableState(dockable); // should be
																	// null
		if (currentState == null || currentState.isClosed()) { // 2007/03/19
																// reformulate
																// tests
			// ok, that's the normal use case
		} else if (currentState.isHidden()) {
			// already hidden... avoid !
			return; // should I throw an exception ?
		} else if (currentState.isDocked()) {
			// if (currentState != null && !currentState.isHidden()){
			// delegate autohide to the appropriate method
			setAutoHide(dockable, true);
			return;
		}
		registerDockable(dockable);
		currentState = getDockableState(dockable); // now should be CLOSED

		DockableState.Location currentLocation = getLocation(currentState);

		DockableState newState = new DockableState(this, dockable,
				DockableState.Location.HIDDEN, dockedPosition);
		DockableStateWillChangeEvent dswe = new DockableStateWillChangeEvent(
				currentState, newState);
		DockingActionEvent dae = new DockingActionSimpleStateChangeEvent(this,
				dockable, currentLocation, DockableState.Location.HIDDEN);
		DockKey k = dockable.getDockKey();

		if (currentLocation != DockableState.Location.HIDDEN
				&& isDockingActionAccepted(dae, dswe)) {
			AutoHideButton btn = autoHideButtons.get(k);
			if (btn == null) {
				btn = new AutoHideButton();
				autoHideButtons.put(k, btn);

				int zone;
				if (k.getAutoHideBorder() == null) {
					zone = AutoHidePolicy.getPolicy().getDefaultHideBorder()
							.value();
				} else {
					zone = k.getAutoHideBorder().value();
				}
				btn.init(dockable, zone);

				borderPanes[zone].setVisible(true); // border may not be visible
				borderPanes[zone].add(btn);
				borderPanes[zone].revalidate();
			} else { // btn already existing, show it again
				int zone = btn.getZone();
				borderPanes[zone].setVisible(true); // may not be visible
				btn.setVisible(true);
				borderPanes[zone].revalidate();
			}
			context.setDockableState(dockable, newState);
			dockable.getDockKey().setLocation(DockableState.Location.HIDDEN);
			fireDockingAction(dae, new DockableStateChangeEvent(currentState,
					newState));
			revalidate();
		}