public static SingleDockableContainer applyDockingAction(Dockable dockable, DockingActionEvent action) {
		SingleDockableContainer dockableContainer;
		switch(action.getActionType()) {
			case DockingActionEvent.ACTION_ADD_DOCKABLE:
				DockingActionAddDockableEvent addAction = (DockingActionAddDockableEvent) action;
				dockableContainer = DockableContainerFactory.getFactory().createDockableContainer(dockable, DockableContainerFactory.ParentType.PARENT_DESKTOP);
				Container relativeAncestorContainer = addAction.getParentContainer();
				// default central insertion
				relativeAncestorContainer.add((Component) dockableContainer, BorderLayout.CENTER);
				relativeAncestorContainer.invalidate(); // 2005/05/04
				relativeAncestorContainer.validate();
				relativeAncestorContainer.repaint();
				return dockableContainer;
			case DockingActionEvent.ACTION_SPLIT_COMPONENT:
				dockableContainer = DockableContainerFactory.getFactory().createDockableContainer(dockable, DockableContainerFactory.ParentType.PARENT_SPLIT_CONTAINER);
				DockingActionSplitComponentEvent splitAction = (DockingActionSplitComponentEvent) action;
				Component base = splitAction.getBase();
				float div = splitAction.getDividorLocation();
				DockingConstants.Split splitPosition = splitAction.getSplitPosition();
				float parentDiv = splitAction.getParentDividorLocation();
				switch(splitPosition.value()) {
					case DockingConstants.INT_SPLIT_TOP:
						vSplitAndResize(base, (Container) dockableContainer, base, div);
						break;
					case DockingConstants.INT_SPLIT_LEFT:
						hSplitAndResize(base, (Container) dockableContainer, base, div);
						break;
					case DockingConstants.INT_SPLIT_BOTTOM:
						vSplitAndResize(base, base, (Container) dockableContainer, div);
						break;
					case DockingConstants.INT_SPLIT_RIGHT:
						hSplitAndResize(base, base, (Container) dockableContainer, div);
						break;
				}
				if(parentDiv != - 1 && base.getParent() instanceof SplitContainer) {
					SplitContainer parent = (SplitContainer) base.getParent();
					new SplitResizer(parent, parentDiv);
				}
				return dockableContainer;
			default:
				throw new IllegalArgumentException("Action type not managed : " + action.getActionType());
		}

	}