if (lastKeyPressed == KeyEvent.VK_CONTROL && (currentPath.getLastPathComponent() instanceof ExpandingNode)) { if (getCueModeParentIds() == null) { setCueModeParentIds(sourcePaths); } return; }
		protected void handleMultipleSources(Point initPoint) {			TreePath parentPath = null;			// -1 indicates that the the parent wasn't expanded. It is up to			// the CueGestureListener to determine where in the tree the node is to			// be added/moved			int index = -1;			int oldIndex = 0;			if (!lastPathWasParent) {				// if the last path wasn't the new parent and the current path				// was expanded, then the new position is the first child of				// current path				if (isExpanded(currentPath)) {					parentPath = currentPath;					index = 0;				} else {					// if we are on the same branch...					if (currentPath.getParentPath() == sourcePaths[0].getParentPath()) {						int newIndex = getModel().getIndexOfChild(							currentPath.getParentPath().getLastPathComponent(),							currentPath.getLastPathComponent()						);						oldIndex = getModel().getIndexOfChild(							sourcePaths[0].getParentPath().getLastPathComponent(),							sourcePaths[0].getLastPathComponent()						);						// if the old index is the same as the new index						// and we are still on the same branch, then						// do nothing and stop cue mode						if (oldIndex == newIndex) {							stopCueMode();							return;						}						// if the node is moving down in the branch,						// then we need to compensate by 1 because we						// need to remove the node first, so the index						// will be 1 less						if (oldIndex < newIndex)							index = 0;						else						if (!aboveTopPath)							index = 1;					} else {						index = 1;						if (sourcePaths[0].getParentPath() != null) {							oldIndex = getModel().getIndexOfChild(								sourcePaths[0].getParentPath().getLastPathComponent(),								sourcePaths[0].getLastPathComponent()							);						}					}					index += getModel().getIndexOfChild(							currentPath.getParentPath().getLastPathComponent(),							currentPath.getLastPathComponent()						);						if (index > oldIndex) {							index--;						}					parentPath = currentPath.getParentPath();				}			} else {				parentPath = currentPath;			}			if (requestMode != ADD_REQUEST_MODE) {				sourcePaths = filterMultipleNodes(sourcePaths);				fireMoveGestureCompleted(sourcePaths, parentPath, index, oldIndex, initPoint);			} else {				fireAddGestureCompleted(sourcePaths, parentPath, index, initPoint);			}			stopCueMode();		}