@Override protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { if (nodeSelections.contains(source)) { MultipleSelectionElement nodeSelection = (MultipleSelectionElement) source; if (nodeSelection.isMultiselect()) { selectRec(nodeSelection, nodeSelection.isSelected(0)); } } else if (source == selectAll) { for (MultipleSelectionElement nodeSelection : nodeSelections) { if (nodeSelection.isMultiselect() && !nodeSelection.isSelected(0)) { SelectNodeObject treeNode = (SelectNodeObject) nodeSelection.getUserObject(); String id = treeNode.getId(); nodeSelection.select(id, true); } } } else if (source == deselectAll) { for (MultipleSelectionElement nodeSelection : nodeSelections) { if (nodeSelection.isMultiselect() && nodeSelection.isSelected(0)) { SelectNodeObject treeNode = (SelectNodeObject) nodeSelection.getUserObject(); String id = treeNode.getId(); nodeSelection.select(id, false); } } } else if (source == asChild) { position = -1; ICourse course = CourseFactory.getCourseEditSession(ores.getResourceableId()); create(rootSelection, course, selectedNode.getCourseNode()); fireEvent(ureq, Event.CHANGED_EVENT); } else if (source == sameLevel) { ICourse course = CourseFactory.getCourseEditSession(ores.getResourceableId()); CourseEditorTreeNode parentNode = (CourseEditorTreeNode) selectedNode.getParent(); position = 0; for (position = parentNode.getChildCount(); position-- > 0; ) { if (selectedNode.getIdent().equals(parentNode.getChildAt(position).getIdent())) { position++; break; } } create(rootSelection, course, parentNode.getCourseNode()); fireEvent(ureq, Event.CHANGED_EVENT); } else { super.formInnerEvent(ureq, source, event); } }
private void recursiveCopy( CourseEditorTreeNode copyFrom2, CourseEditorTreeNode insertParent, int pos, boolean firstIteration, ICourse course) { // create copy of course node CourseNode copyOfNode = copyFrom2.getCourseNode().createInstanceForCopy(firstIteration, course, getIdentity()); copyNodeId = copyOfNode.getIdent(); // Insert at desired position course.getEditorTreeModel().insertCourseNodeAt(copyOfNode, insertParent.getCourseNode(), pos); CourseEditorTreeNode insertedEditorTreeNode = course.getEditorTreeModel().getCourseEditorNodeById(copyOfNode.getIdent()); for (int i = 0; i < copyFrom2.getChildCount(); i++) { recursiveCopy( course.getEditorTreeModel().getCourseEditorNodeById(copyFrom2.getChildAt(i).getIdent()), insertedEditorTreeNode, i, false, course); } }