This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 40992
Collapse All | Expand All

(-)file_not_specified_in_diff (-43 / +75 lines)
Line 27 Link Here
27
import java.util.Collection;
Line 70 Link Here
71
    /** Delete behaviour customizer */
72
    private static DeleteHandler deleteHandler = null;
Line 463 Link Here
466
    /**
467
     * Gets a delete handler.
468
     */
469
    private static DeleteHandler getDeleteHandler() {
470
        if (deleteHandler == null) {
471
            org.openide.util.Lookup.Template template = new org.openide.util.Lookup.Template(DeleteHandler.class);
472
            Collection deletes = org.openide.util.Lookup.getDefault().lookup(template).allInstances();
473
            if (deletes.size() == 1) {
474
                deleteHandler = (DeleteHandler)deletes.iterator().next();
475
            } else {
476
                deleteHandler = new StandardDelete();                
477
            }
478
        }
479
        return deleteHandler;
480
    }
481
    
Lines 585-587 Link Here
585
604
    
586
    /** Class which performs delete action */
605
    // Basic delete handler that provides a confirmation dialog and that
587
    private class DeleteActionPerformer extends AbstractAction implements ActionPerformer {
606
    // uses Node.destroy() to perform deletes.
588
--
607
    private static class StandardDelete implements DeleteHandler {
Lines 589-624 Link Here
589
        DeleteActionPerformer() {}
609
        public boolean confirmDelete(Node[] sel) {
590
        
591
        public boolean isEnabled() {
592
            updateActionsState();
593
            return super.isEnabled();
594
        }
595
        
596
        /** Perform delete action. */
597
        public void performAction(org.openide.util.actions.SystemAction action) {
598
            final Node[] sel = manager.getSelectedNodes ();
599
            if ((sel == null) || (sel.length == 0))
600
                return;
601
602
            // perform action if confirmed
603
            if (!confirmDelete || doConfirm(sel)) {
604
605
                // clear selected nodes
606
                try {
607
                    if (manager != null) {
608
                        manager.setSelectedNodes(new Node[] {});
609
                    }
610
                } catch (java.beans.PropertyVetoException e) {
611
                    // never thrown, setting empty selected nodes cannot be vetoed
612
                }
613
                
614
                doDestroy(sel);
615
                
616
                if (attachPerformers) {
617
                    delete.setActionPerformer (null); // fixes bug #673
618
                } else {
619
                    setEnabled (false);
620
                }
621
            }
622
        }
623
        
624
        private boolean doConfirm(Node[] sel) {
625
--
Line 655 Link Here
640
        
Line 668 Link Here
668
        private void doDestroy(final Node[] sel) {
654
        public void performDelete(final Node[] sel) {
669
--
Line 688 Link Here
674
    }
675
676
    /** Class which performs delete action */
677
    private class DeleteActionPerformer extends AbstractAction implements ActionPerformer {
678
        
679
        DeleteActionPerformer() {}
680
        
681
        public boolean isEnabled() {
682
            updateActionsState();
683
            return super.isEnabled();
684
        }
685
        
686
        /** Perform delete action. */
687
        public void performAction(org.openide.util.actions.SystemAction action) {
688
            final Node[] sel = manager.getSelectedNodes ();
689
            if ((sel == null) || (sel.length == 0))
690
                return;
691
692
            // perform action if confirmed
693
            if (!confirmDelete || doConfirm(sel)) {
694
695
                // clear selected nodes
696
                try {
697
                    if (manager != null) {
698
                        manager.setSelectedNodes(new Node[] {});
699
                    }
700
                } catch (java.beans.PropertyVetoException e) {
701
                    // never thrown, setting empty selected nodes cannot be vetoed
702
                }
703
                
704
                doDestroy(sel);
705
                
706
                if (attachPerformers) {
707
                    delete.setActionPerformer (null); // fixes bug #673
708
                } else {
709
                    setEnabled (false);
710
                }
711
            }
712
        }
713
        
714
        
715
        private boolean doConfirm(Node[] sel) {
716
            return getDeleteHandler().confirmDelete(sel);
717
        }
718
        
719
        private void doDestroy(final Node[] sel) {
720
            getDeleteHandler().performDelete(sel);
721
        }
722
        

Return to bug 40992