// {{{ removeSelectedNode() method private void removeSelectedNode() { TreePath path = resultTree.getSelectionPath(); if (path == null) return; MutableTreeNode value = (MutableTreeNode) path.getLastPathComponent(); if (path.getPathCount() > 1) { // Adjust selection so that repeating some removals // behave naturally. TreePath parentPath = path.getParentPath(); MutableTreeNode parent = (MutableTreeNode) parentPath.getLastPathComponent(); int removingIndex = parent.getIndex(value); int nextIndex = removingIndex + 1; if (nextIndex < parent.getChildCount()) { TreeNode next = parent.getChildAt(nextIndex); resultTree.setSelectionPath(parentPath.pathByAddingChild(next)); } else { resultTree.setSelectionPath(parentPath); } resultTreeModel.removeNodeFromParent(value); } HyperSearchOperationNode.removeNodeFromCache(value); if (resultTreeRoot.getChildCount() == 0) { hideDockable(); } } // }}}
/** Removes the given node from its parent. */ public void removeNodeFromParent(MutableTreeNode node) { MutableTreeNode parent = (MutableTreeNode) node.getParent(); // Ensure that the given node has a parent if (parent == null) { throw new IllegalArgumentException("node does not have a parent"); } // Remove the node from the parent int idx = parent.getIndex(node); parent.remove(idx); // Notify listeners that the node has been removed fireTreeNodesRemoved(this, getPathToRoot(parent), new int[] {idx}, new Object[] {node}); }
/* (non-Javadoc) * @see es.enxenio.util.controller.Action#doExecute(es.enxenio.util.controller.Request) */ public ActionForward doExecute(Request request) { /*Recuperamos las instancias del FrontController y de la Session*/ FrontController frontController = FrontControllerImpl.getInstance(); Session session = SessionImpl.getInstance(); MutableTreeNode oldNode = (MutableTreeNode) request.getAttribute("OldNode"); session.setAttribute("OldNode", oldNode); MutableTreeNode parentNode = (MutableTreeNode) oldNode.getParent(); session.setAttribute("ParentNode", parentNode); if (parentNode != null) { int index = parentNode.getIndex(oldNode); session.setAttribute("Index", new Integer(index)); } int operatorID = ((Integer) request.getAttribute("OperatorID")).intValue(); FilterFacade filterFacade = null; session.removeAttribute("GMLBox"); BBOXOp bboxOp = null; try { filterFacade = FilterFacadeFactory.getDelegate(); bboxOp = filterFacade.addBBOXOp(operatorID); } catch (InternalErrorException e) { System.err.println(e); } catch (IncorrectIdentifierException e) { System.err.println(e); } /*Añadimos el operador creado en la Session*/ session.setAttribute("BBOXOperator", bboxOp); session.setAttribute("InsertOperator", new Integer(1)); /*Redirigimos a otro panel*/ String pagesVisitedName = (String) session.getAttribute("PagesVisitedListName"); List pagesVisited = (List) session.getAttribute(pagesVisitedName); pagesVisited.add("InsertUpdateFilter"); session.setAttribute(pagesVisitedName, pagesVisited); /*Redirección a una nueva interfaz*/ ActionForward forward = frontController.getForward("InsertUpdateBBOXOp"); return forward; }
public void drop(final DropTargetDropEvent e) { _timerHover.stop(); // Prevent hover timer from doing an unwanted expandPath or collapsePath if (!isDropAcceptable(e)) { e.rejectDrop(); return; } e.acceptDrop(e.getDropAction()); final Transferable transferable = e.getTransferable(); final DataFlavor[] flavors = transferable.getTransferDataFlavors(); for (int i = 0; i < flavors.length; i++) { final DataFlavor flavor = flavors[i]; if (flavor.isMimeTypeEqual(DataFlavor.javaJVMLocalObjectMimeType)) { try { final Point pt = e.getLocation(); final TreePath pathTarget = getClosestPathForLocation(pt.x, pt.y); final TreePath pathSource = (TreePath) transferable.getTransferData(flavor); if ((pathTarget == null) || (pathSource == null)) { e.dropComplete(false); return; } final MutableTreeNode sourceNode = (MutableTreeNode) pathSource.getLastPathComponent(); final MutableTreeNode oldParent = (MutableTreeNode) sourceNode.getParent(); final MutableTreeNode targetNode = (MutableTreeNode) pathTarget.getLastPathComponent(); final MutableTreeNode newParent = (MutableTreeNode) targetNode.getParent(); if (!sourceNode.isLeaf() && (targetNode.getParent() == sourceNode)) { // trying to drag a folder into its own childs e.dropComplete(false); return; } final DefaultTreeModel model = (DefaultTreeModel) getModel(); final TreePath pathNewChild = null; if (targetNode.isLeaf() || JDragTree.this.isCollapsed(pathTarget)) { // collapsed tree node or leaf // dropped on a leaf, insert into leaf's parent AFTER leaf int idx = newParent.getIndex(targetNode); if (idx < 0) { JDragTree.logger.warning("child not found in parent!!!"); e.dropComplete(false); return; } else { idx++; // insert AFTER targetNode // remove node from oldParent ... final Object[] removedChilds = {sourceNode}; final int[] childIndices = {oldParent.getIndex(sourceNode)}; sourceNode.removeFromParent(); model.nodesWereRemoved(oldParent, childIndices, removedChilds); // ... and insert into newParent if (idx >= newParent.getChildCount()) { // newParent.add( sourceNode ); newParent.insert(sourceNode, newParent.getChildCount()); final int insertedIndex[] = {newParent.getChildCount() - 1}; model.nodesWereInserted(newParent, insertedIndex); } else { newParent.insert(sourceNode, idx); final int insertedIndex[] = {idx}; model.nodesWereInserted(newParent, insertedIndex); } } } else { // expanded node, insert UNDER the node (before first child) // remove node from oldParent ... final Object[] removedChilds = {sourceNode}; final int[] childIndices = {oldParent.getIndex(sourceNode)}; sourceNode.removeFromParent(); model.nodesWereRemoved(oldParent, childIndices, removedChilds); // ... and add to newParent targetNode.insert(sourceNode, 0); final int insertedIndex[] = {0}; model.nodesWereInserted(targetNode, insertedIndex); } if (pathNewChild != null) setSelectionPath(pathNewChild); // Mark this as the selected path in the tree break; // No need to check remaining flavors } catch (final UnsupportedFlavorException ufe) { JDragTree.logger.log( Level.SEVERE, "Exception thrown in drop(DropTargetDropEvent e)", ufe); e.dropComplete(false); return; } catch (final IOException ioe) { JDragTree.logger.log( Level.SEVERE, "Exception thrown in drop(DropTargetDropEvent e)", ioe); e.dropComplete(false); return; } } } e.dropComplete(true); }