Lines 69-74
Link Here
|
69 |
import org.openide.nodes.AbstractNode; |
69 |
import org.openide.nodes.AbstractNode; |
70 |
import org.openide.nodes.Children; |
70 |
import org.openide.nodes.Children; |
71 |
import org.openide.nodes.Node; |
71 |
import org.openide.nodes.Node; |
|
|
72 |
import java.awt.EventQueue; |
73 |
import java.awt.event.HierarchyEvent; |
74 |
import java.awt.event.HierarchyListener; |
75 |
import java.awt.event.WindowAdapter; |
76 |
import java.awt.event.WindowEvent; |
77 |
import java.util.concurrent.CountDownLatch; |
78 |
import javax.swing.JTextField; |
79 |
import org.openide.explorer.view.TreeViewCellEditor.Ed; |
72 |
|
80 |
|
73 |
/** |
81 |
/** |
74 |
* Tests for class BeanTreeViewTest |
82 |
* Tests for class BeanTreeViewTest |
Lines 539-542
Link Here
|
539 |
return em; |
547 |
return em; |
540 |
} |
548 |
} |
541 |
} |
549 |
} |
|
|
550 |
|
551 |
public void testEditNode() throws Exception { |
552 |
Children.Array kids = new Children.Array(); |
553 |
Node[] n = new Node[20]; |
554 |
Node node = null; |
555 |
for (int i=0; i < n.length; i++) { |
556 |
n[i] = new RenamableNode ("" + i); |
557 |
if (i == 5) { |
558 |
node = n[i]; //pick one to edit |
559 |
} |
560 |
} |
561 |
kids.add(n); |
562 |
final Node root = new AbstractNode (kids); |
563 |
root.setDisplayName("Root"); |
564 |
final WL wl = new WL(); |
565 |
final F[] ff = new F[1]; |
566 |
EventQueue.invokeLater(new Runnable() { |
567 |
|
568 |
@Override |
569 |
public void run() { |
570 |
ff[0] = new F(root); |
571 |
ff[0].addWindowListener(wl); |
572 |
ff[0].pack(); |
573 |
ff[0].setVisible(true); |
574 |
} |
575 |
|
576 |
}); |
577 |
wl.latch.await(); |
578 |
F f = ff[0]; |
579 |
//sanity check |
580 |
assertTrue (f.isDisplayable()); |
581 |
assertTrue (f.isShowing()); |
582 |
assertTrue (f.view.isShowing()); |
583 |
JTree tree = f.view.tree; |
584 |
TreeViewCellEditor ce = (TreeViewCellEditor) tree.getCellEditor(); |
585 |
Ed ed = ce.ed(); |
586 |
final JTextField comp = ed.comp(); |
587 |
final CountDownLatch latch = new CountDownLatch(1); |
588 |
comp.addHierarchyListener(new HierarchyListener() { |
589 |
|
590 |
@Override |
591 |
public void hierarchyChanged(HierarchyEvent e) { |
592 |
if (comp.isDisplayable()) { |
593 |
latch.countDown(); |
594 |
} |
595 |
} |
596 |
|
597 |
}); |
598 |
f.view.editNode(node); |
599 |
latch.await(); |
600 |
assertTrue (tree.isEditing()); |
601 |
assertTrue (comp.isDisplayable()); |
602 |
f.setVisible(false); |
603 |
f.dispose(); |
604 |
} |
605 |
|
606 |
private static final class RenamableNode extends AbstractNode { |
607 |
RenamableNode (String name) { |
608 |
super (Children.LEAF); |
609 |
setDisplayName(name); |
610 |
setName (name); |
611 |
} |
612 |
|
613 |
@Override |
614 |
public boolean canRename() { |
615 |
return true; |
616 |
} |
617 |
} |
618 |
|
619 |
private static final class F extends JFrame implements ExplorerManager.Provider { |
620 |
private final ExplorerManager mgr = new ExplorerManager(); |
621 |
private final BeanTreeView view = new BeanTreeView(); |
622 |
F(Node root) { |
623 |
setContentPane(view); |
624 |
mgr.setRootContext(root); |
625 |
} |
626 |
|
627 |
@Override |
628 |
public ExplorerManager getExplorerManager() { |
629 |
return mgr; |
630 |
} |
631 |
|
632 |
} |
633 |
|
634 |
private static final class WL extends WindowAdapter { |
635 |
CountDownLatch latch = new CountDownLatch(1); |
636 |
|
637 |
@Override |
638 |
public void windowOpened(WindowEvent e) { |
639 |
super.windowOpened(e); |
640 |
latch.countDown(); |
641 |
} |
642 |
} |
542 |
} |
643 |
} |