26a27 > import java.util.Collection; 69a71,72 > /** Delete behaviour customizer */ > private static DeleteHandler deleteHandler = null; 462a466,481 > /** > * Gets a delete handler. > */ > private static DeleteHandler getDeleteHandler() { > if (deleteHandler == null) { > org.openide.util.Lookup.Template template = new org.openide.util.Lookup.Template(DeleteHandler.class); > Collection deletes = org.openide.util.Lookup.getDefault().lookup(template).allInstances(); > if (deletes.size() == 1) { > deleteHandler = (DeleteHandler)deletes.iterator().next(); > } else { > deleteHandler = new StandardDelete(); > } > } > return deleteHandler; > } > 585,587c604,607 < < /** Class which performs delete action */ < private class DeleteActionPerformer extends AbstractAction implements ActionPerformer { --- > > // Basic delete handler that provides a confirmation dialog and that > // uses Node.destroy() to perform deletes. > private static class StandardDelete implements DeleteHandler { 589,624c609 < DeleteActionPerformer() {} < < public boolean isEnabled() { < updateActionsState(); < return super.isEnabled(); < } < < /** Perform delete action. */ < public void performAction(org.openide.util.actions.SystemAction action) { < final Node[] sel = manager.getSelectedNodes (); < if ((sel == null) || (sel.length == 0)) < return; < < // perform action if confirmed < if (!confirmDelete || doConfirm(sel)) { < < // clear selected nodes < try { < if (manager != null) { < manager.setSelectedNodes(new Node[] {}); < } < } catch (java.beans.PropertyVetoException e) { < // never thrown, setting empty selected nodes cannot be vetoed < } < < doDestroy(sel); < < if (attachPerformers) { < delete.setActionPerformer (null); // fixes bug #673 < } else { < setEnabled (false); < } < } < } < < private boolean doConfirm(Node[] sel) { --- > public boolean confirmDelete(Node[] sel) { 654a640 > 668c654 < private void doDestroy(final Node[] sel) { --- > public void performDelete(final Node[] sel) { 687a674,722 > } > > /** Class which performs delete action */ > private class DeleteActionPerformer extends AbstractAction implements ActionPerformer { > > DeleteActionPerformer() {} > > public boolean isEnabled() { > updateActionsState(); > return super.isEnabled(); > } > > /** Perform delete action. */ > public void performAction(org.openide.util.actions.SystemAction action) { > final Node[] sel = manager.getSelectedNodes (); > if ((sel == null) || (sel.length == 0)) > return; > > // perform action if confirmed > if (!confirmDelete || doConfirm(sel)) { > > // clear selected nodes > try { > if (manager != null) { > manager.setSelectedNodes(new Node[] {}); > } > } catch (java.beans.PropertyVetoException e) { > // never thrown, setting empty selected nodes cannot be vetoed > } > > doDestroy(sel); > > if (attachPerformers) { > delete.setActionPerformer (null); // fixes bug #673 > } else { > setEnabled (false); > } > } > } > > > private boolean doConfirm(Node[] sel) { > return getDeleteHandler().confirmDelete(sel); > } > > private void doDestroy(final Node[] sel) { > getDeleteHandler().performDelete(sel); > } >