|
51 | 51 | import javafx.scene.control.TreeItem; |
52 | 52 | import javafx.scene.control.TreeView; |
53 | 53 | import javafx.scene.control.TreeView.EditEvent; |
| 54 | +import javafx.scene.control.cell.TextFieldTreeCell; |
54 | 55 | import javafx.scene.control.skin.TreeCellSkin; |
55 | 56 | import test.com.sun.javafx.scene.control.infrastructure.StageLoader; |
56 | 57 | import test.com.sun.javafx.scene.control.infrastructure.VirtualFlowTestUtils; |
@@ -888,6 +889,85 @@ public void testCommitEditMustNotFireCancel() { |
888 | 889 | assertEquals("commit must not have fired editCancel", 0, events.size()); |
889 | 890 | } |
890 | 891 |
|
| 892 | +//------------- JDK-8187309: fix editing mechanics to comply to specification |
| 893 | + |
| 894 | + @Test |
| 895 | + public void testTreeHasDefaultCommitHandler() { |
| 896 | + assertNotNull("treeView must have default commit handler", tree.getOnEditCommit()); |
| 897 | + } |
| 898 | + |
| 899 | + @Test |
| 900 | + public void testDefaultCommitUpdatesData() { |
| 901 | + TreeItem<String> editingItem = setupForEditing(cell); |
| 902 | + tree.edit(editingItem); |
| 903 | + String value = "edited"; |
| 904 | + cell.commitEdit(value); |
| 905 | + assertEquals("value committed", value, editingItem.getValue()); |
| 906 | + } |
| 907 | + |
| 908 | + @Test |
| 909 | + public void testDefaultCommitUpdatesCell() { |
| 910 | + TreeCell<String> cell = TextFieldTreeCell.forTreeView().call(tree); |
| 911 | + TreeItem<String> editingItem = setupForEditing(cell); |
| 912 | + tree.edit(editingItem); |
| 913 | + String value = "edited"; |
| 914 | + cell.commitEdit(value); |
| 915 | + assertEquals("cell text updated to committed value", value, cell.getText()); |
| 916 | + } |
| 917 | + |
| 918 | + @Test |
| 919 | + public void testDoNothingCommitHandlerDoesNotUpdateData() { |
| 920 | + TreeItem<String> editingItem = setupForEditing(cell); |
| 921 | + String oldValue = editingItem.getValue(); |
| 922 | + // do nothing handler |
| 923 | + tree.setOnEditCommit(e -> {}); |
| 924 | + tree.edit(editingItem); |
| 925 | + String value = "edited"; |
| 926 | + cell.commitEdit(value); |
| 927 | + assertEquals("edited value must not be committed", oldValue, editingItem.getValue()); |
| 928 | + } |
| 929 | + |
| 930 | + @Ignore("JDK-8187314") |
| 931 | + @Test |
| 932 | + public void testDoNothingCommitHandlerDoesNotUpdateCell() { |
| 933 | + TreeCell<String> cell = TextFieldTreeCell.forTreeView().call(tree); |
| 934 | + TreeItem<String> editingItem = setupForEditing(cell); |
| 935 | + String oldValue = editingItem.getValue(); |
| 936 | + // do nothing handler |
| 937 | + tree.setOnEditCommit(e -> {}); |
| 938 | + tree.edit(editingItem); |
| 939 | + String value = "edited"; |
| 940 | + cell.commitEdit(value); |
| 941 | + assertEquals("cell text must not have changed", oldValue, cell.getText()); |
| 942 | + } |
| 943 | + |
| 944 | + |
| 945 | + /** |
| 946 | + * Sets tree editable, configures the given cell for editing in tree at index 1 |
| 947 | + * and returns the treeItem at that index. |
| 948 | + */ |
| 949 | + private TreeItem<String> setupForEditing(TreeCell<String> editingCell) { |
| 950 | + tree.setEditable(true); |
| 951 | + editingCell.updateTreeView(tree); |
| 952 | + editingCell.updateIndex(1); |
| 953 | + return editingCell.getTreeItem(); |
| 954 | + } |
| 955 | + |
| 956 | + /** |
| 957 | + * Test test setup. |
| 958 | + */ |
| 959 | + @Test |
| 960 | + public void testSetupForEditing() { |
| 961 | + TreeCell<String> cell = new TreeCell<>(); |
| 962 | + TreeItem<String> cellTreeItem = setupForEditing(cell); |
| 963 | + assertTrue("sanity: tree must be editable", tree.isEditable()); |
| 964 | + assertEquals("sanity: returned treeItem", cellTreeItem, cell.getTreeItem()); |
| 965 | + assertEquals(1, cell.getIndex()); |
| 966 | + assertEquals("sanity: cell configured with tree's treeItem at index", |
| 967 | + tree.getTreeItem(cell.getIndex()), cell.getTreeItem()); |
| 968 | + assertNull("sanity: config doesn't change tree state", tree.getEditingItem()); |
| 969 | + } |
| 970 | + |
891 | 971 |
|
892 | 972 | // When the tree view item's change and affects a cell that is editing, then what? |
893 | 973 | // When the tree cell's index is changed while it is editing, then what? |
|
0 commit comments