61 import javafx.event.EventHandler;
62 import javafx.geometry.Orientation;
63 import javafx.scene.Group;
64 import javafx.scene.Scene;
65 import javafx.scene.control.cell.*;
66 import javafx.scene.image.ImageView;
67 import javafx.scene.input.KeyCode;
68 import javafx.scene.input.KeyEvent;
69 import javafx.scene.layout.StackPane;
70 import javafx.scene.layout.VBox;
71 import javafx.scene.paint.Color;
72 import javafx.scene.shape.Rectangle;
73 import javafx.util.Callback;
74
75 import com.sun.javafx.tk.Toolkit;
76 import org.junit.Before;
77 import org.junit.Ignore;
78 import org.junit.Test;
79
80 import com.sun.javafx.scene.control.TableColumnComparatorBase.TableColumnComparator;
81 import com.sun.javafx.scene.control.infrastructure.VirtualFlowTestUtils;
82 import com.sun.javafx.scene.control.test.Person;
83 import com.sun.javafx.scene.control.test.RT_22463_Person;
84
85 import static com.sun.javafx.scene.control.skin.TableColumnHeaderRetriever.*;
86 import static org.junit.Assert.assertEquals;
87
88 public class TableViewTest {
89 private TableView<String> table;
90 private TableView.TableViewSelectionModel sm;
91 private TableView.TableViewFocusModel<String> fm;
92
93 private ObservableList<Person> personTestData;
94
95 @Before public void setup() {
96 table = new TableView<>();
97 sm = table.getSelectionModel();
98 fm = table.getFocusModel();
99
100 personTestData = FXCollections.observableArrayList(
3532 if (scroll) {
3533 // we scroll to force the table cells to update the objects they observe
3534 table.scrollTo(index);
3535 Toolkit.getToolkit().firePulse();
3536 }
3537
3538 TableCell cell = (TableCell) VirtualFlowTestUtils.getCell(table, index + 3, 0);
3539 final int initialValue = (Integer) cell.getItem();
3540
3541 // increment the offset value
3542 offset.setValue(offset.get() + 1);
3543 Toolkit.getToolkit().firePulse();
3544
3545 final int incrementedValue = (Integer) cell.getItem();
3546 assertEquals(initialValue + 1, incrementedValue);
3547
3548 sl.dispose();
3549 }
3550
3551 @Test public void test_rt_37429() {
3552 // get the current exception handler before replacing with our own,
3553 // as ListListenerHelp intercepts the exception otherwise
3554 final Thread.UncaughtExceptionHandler exceptionHandler = Thread.currentThread().getUncaughtExceptionHandler();
3555 Thread.currentThread().setUncaughtExceptionHandler((t, e) -> fail("We don't expect any exceptions in this test!"));
3556
3557 // table columns - 1 column; name
3558 TableColumn<String, String> nameColumn = new TableColumn<>("name");
3559 nameColumn.setCellValueFactory(param -> new ReadOnlyObjectWrapper(param.getValue()));
3560 nameColumn.setPrefWidth(200);
3561
3562 // table
3563 TableView<String> table = new TableView<>();
3564 table.setItems(FXCollections.observableArrayList("one", "two", "three", "four", "five"));
3565 table.getColumns().addAll(nameColumn);
3566
3567 table.getSelectionModel().getSelectedItems().addListener((ListChangeListener<String>) c -> {
3568 while (c.next()) {
3569 if(c.wasRemoved()) {
3570 // The removed list of items must be iterated or the AIOOBE will
3571 // not be thrown when getAddedSubList is called.
3572 c.getRemoved().forEach(item -> {});
3573 }
3574
3575 if (c.wasAdded()) {
3576 c.getAddedSubList();
3577 }
3578 }
3579 });
3580
3581 StageLoader sl = new StageLoader(table);
3582
3583 table.getSelectionModel().select(0);
3584 table.getSortOrder().add(nameColumn);
3585
3586 sl.dispose();
3587
3588 // reset the exception handler
3589 Thread.currentThread().setUncaughtExceptionHandler(exceptionHandler);
3590 }
3591
3592 private int rt_37429_items_change_count = 0;
3593 private int rt_37429_cells_change_count = 0;
3594 @Test public void test_rt_37429_sortEventsShouldNotFireExtraChangeEvents() {
3595 // table columns - 1 column; name
3596 TableColumn<String, String> nameColumn = new TableColumn<>("name");
3597 nameColumn.setCellValueFactory(param -> new ReadOnlyObjectWrapper(param.getValue()));
3598 nameColumn.setPrefWidth(200);
3599
3600 // table
3601 TableView<String> table = new TableView<>();
3602 table.setItems(FXCollections.observableArrayList("a", "c", "b"));
3603 table.getColumns().addAll(nameColumn);
3604
3605 table.getSelectionModel().getSelectedItems().addListener((ListChangeListener<String>) c -> {
3606 while (c.next()) {
3607 rt_37429_items_change_count++;
3608 }
3609 });
|
61 import javafx.event.EventHandler;
62 import javafx.geometry.Orientation;
63 import javafx.scene.Group;
64 import javafx.scene.Scene;
65 import javafx.scene.control.cell.*;
66 import javafx.scene.image.ImageView;
67 import javafx.scene.input.KeyCode;
68 import javafx.scene.input.KeyEvent;
69 import javafx.scene.layout.StackPane;
70 import javafx.scene.layout.VBox;
71 import javafx.scene.paint.Color;
72 import javafx.scene.shape.Rectangle;
73 import javafx.util.Callback;
74
75 import com.sun.javafx.tk.Toolkit;
76 import org.junit.Before;
77 import org.junit.Ignore;
78 import org.junit.Test;
79
80 import com.sun.javafx.scene.control.TableColumnComparatorBase.TableColumnComparator;
81 import com.sun.javafx.scene.control.infrastructure.ControlTestUtils;
82 import com.sun.javafx.scene.control.infrastructure.VirtualFlowTestUtils;
83 import com.sun.javafx.scene.control.test.Person;
84 import com.sun.javafx.scene.control.test.RT_22463_Person;
85
86 import static com.sun.javafx.scene.control.skin.TableColumnHeaderRetriever.*;
87 import static org.junit.Assert.assertEquals;
88
89 public class TableViewTest {
90 private TableView<String> table;
91 private TableView.TableViewSelectionModel sm;
92 private TableView.TableViewFocusModel<String> fm;
93
94 private ObservableList<Person> personTestData;
95
96 @Before public void setup() {
97 table = new TableView<>();
98 sm = table.getSelectionModel();
99 fm = table.getFocusModel();
100
101 personTestData = FXCollections.observableArrayList(
3533 if (scroll) {
3534 // we scroll to force the table cells to update the objects they observe
3535 table.scrollTo(index);
3536 Toolkit.getToolkit().firePulse();
3537 }
3538
3539 TableCell cell = (TableCell) VirtualFlowTestUtils.getCell(table, index + 3, 0);
3540 final int initialValue = (Integer) cell.getItem();
3541
3542 // increment the offset value
3543 offset.setValue(offset.get() + 1);
3544 Toolkit.getToolkit().firePulse();
3545
3546 final int incrementedValue = (Integer) cell.getItem();
3547 assertEquals(initialValue + 1, incrementedValue);
3548
3549 sl.dispose();
3550 }
3551
3552 @Test public void test_rt_37429() {
3553 // table columns - 1 column; name
3554 TableColumn<String, String> nameColumn = new TableColumn<>("name");
3555 nameColumn.setCellValueFactory(param -> new ReadOnlyObjectWrapper(param.getValue()));
3556 nameColumn.setPrefWidth(200);
3557
3558 // table
3559 TableView<String> table = new TableView<>();
3560 table.setItems(FXCollections.observableArrayList("one", "two", "three", "four", "five"));
3561 table.getColumns().addAll(nameColumn);
3562
3563 table.getSelectionModel().getSelectedItems().addListener((ListChangeListener<String>) c -> {
3564 while (c.next()) {
3565 if(c.wasRemoved()) {
3566 // The removed list of items must be iterated or the AIOOBE will
3567 // not be thrown when getAddedSubList is called.
3568 c.getRemoved().forEach(item -> {});
3569 }
3570
3571 if (c.wasAdded()) {
3572 c.getAddedSubList();
3573 }
3574 }
3575 });
3576
3577 final Thread.UncaughtExceptionHandler exceptionHandler = ControlTestUtils.setHandler();
3578 StageLoader sl = new StageLoader(table);
3579 try {
3580 table.getSelectionModel().select(0);
3581 table.getSortOrder().add(nameColumn);
3582 } finally {
3583 sl.dispose();
3584 ControlTestUtils.resetHandler(exceptionHandler);
3585 }
3586 }
3587
3588 private int rt_37429_items_change_count = 0;
3589 private int rt_37429_cells_change_count = 0;
3590 @Test public void test_rt_37429_sortEventsShouldNotFireExtraChangeEvents() {
3591 // table columns - 1 column; name
3592 TableColumn<String, String> nameColumn = new TableColumn<>("name");
3593 nameColumn.setCellValueFactory(param -> new ReadOnlyObjectWrapper(param.getValue()));
3594 nameColumn.setPrefWidth(200);
3595
3596 // table
3597 TableView<String> table = new TableView<>();
3598 table.setItems(FXCollections.observableArrayList("a", "c", "b"));
3599 table.getColumns().addAll(nameColumn);
3600
3601 table.getSelectionModel().getSelectedItems().addListener((ListChangeListener<String>) c -> {
3602 while (c.next()) {
3603 rt_37429_items_change_count++;
3604 }
3605 });
|