private void show(Dockable dockable, DockingActionEvent action) {
		if (dockable == null)
			throw new NullPointerException("dockable must not be null");

		DockableState state = context.getDockableState(dockable);
		RelativeDockablePosition position = state.getPosition();

		if (position == null) {
			// not shown before, ask best position to the preferences
			// TODO
			throw new NullPointerException(
					"trying to show a view that was not hidden");
		}

		LinkedList group = tabbedGroups.get(dockable); // 2005/07/13...
		boolean tabbed = false;
		if (group != null) {
			// look for a still visible dockable in the group
			Iterator it = group.iterator();
			while (it.hasNext() && !tabbed) {
				Dockable d = (Dockable) it.next();
				if (d != dockable && getDockableState(d).isDocked()) {
					createTab(d, dockable, Integer.MAX_VALUE, true, false);
					tabbed = true;
				}
			}
		}

		if (!tabbed) { // ...2005/07/13
			SingleDockableContainer sdc = RelativeDockingUtilities
					.applyDockingAction(dockable, action);
			// SingleDockableContainer sdc =
			// RelativeDockingUtilities.insertDockable(
			// position.getRelativeAncestorContainer(), dockable, position);
			sdc.installDocking(this);
		}

	}