public boolean startDragComponent(Point p) {
			// disable DnD for some cases :
			// - child of a compound dockable, in hidden state
			// - child of a maximized compund dockable
			// - maximized dockable
			Dockable target = getDockable();
			DockableState.Location targetState = target.getDockKey().getLocation();
			if(targetState == DockableState.Location.HIDDEN) {
				if(DockingUtilities.isChildOfCompoundDockable(target)) {
					// nested hidden dockables cannot be drag and dropped
					return false;
				}
			} else if(targetState == DockableState.Location.DOCKED) {
				boolean isChildOfMaximizedContainer = false;
				if(desktop != null) {
					Dockable max = desktop.getMaximizedDockable();
					if(max != null && max.getComponent().getParent().isAncestorOf(this)) {
						isChildOfMaximizedContainer = true;
					}
				}
				if(isChildOfMaximizedContainer) {
					return false;
				}
			} else if(targetState == DockableState.Location.MAXIMIZED) {
				return false;
			}

			return true;

		}