private void selectionChanged(boolean _addedPath) { TreeSelectionModel selectionModel = myTree.getSelectionModel(); IContainerTreeNode parentTreeNode; IContainerTreeNode selectedTreeNode; int childIndex; if (_addedPath) { TreePath selectionPath = selectionModel.getSelectionPath(); if (selectionPath == null) { selectedTreeNode = null; parentTreeNode = null; childIndex = -1; } else { selectedTreeNode = (IContainerTreeNode) selectionPath.getLastPathComponent(); parentTreeNode = (IContainerTreeNode) selectedTreeNode.getParent(); if (parentTreeNode != null) { childIndex = parentTreeNode.getIndex(selectedTreeNode); } else { childIndex = -1; } } } else { selectedTreeNode = null; parentTreeNode = null; childIndex = -1; } myContext.setSelectedContainer(selectedTreeNode); if (parentTreeNode == null) { // MODIFIED myContext.setSelection(myTree, null); } else { if (parentTreeNode instanceof IFIDPlaylistWrapper) { FIDPlaylist playlist = ((IFIDPlaylistWrapper) parentTreeNode).getPlaylist(); childIndex = ((FIDPlaylistTreeNode) selectedTreeNode).getPlaylistIndex(); // MODIFIED myContext.setSelection( myTree, new ContainerSelection(myContext, playlist, new int[] {childIndex})); } else { // MODIFIED myContext.setSelection( myTree, new ContainerSelection(myContext, parentTreeNode, new int[] {childIndex})); } } }