/** Removes the current selected group. */
  final void removeSelectedGroup() {
    TreePath[] selectionPaths = this.tree.getSelectionPaths();
    if (selectionPaths == null) {
      return;
    }

    DefaultTreeModel model = (DefaultTreeModel) this.tree.getModel();
    ElementTreeNode rootNode = (ElementTreeNode) model.getRoot();

    for (TreePath selectionPath : selectionPaths) {
      ElementTreeNode treeNode = (ElementTreeNode) selectionPath.getLastPathComponent();
      if (treeNode.getUserObject() instanceof ElementGroup) {
        ElementGroup elementGroup = (ElementGroup) treeNode.getUserObject();

        this.model.removeGroup(elementGroup);

        model.nodesWereRemoved(
            rootNode, new int[] {rootNode.getIndex(treeNode)}, new Object[] {treeNode});
      }
    }
  }
 /** Creates a new {@link ElementTreeNode} instance as copy of the given node. */
 public ElementTreeNode(final ElementTreeNode aNode) {
   super(aNode.getUserObject());
   setAllowsChildren(aNode.allowsChildren);
 }