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}));
      }
    }
  }