19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package test.javafx.scene.control;
27
28 import static test.com.sun.javafx.scene.control.infrastructure.ControlTestUtils.assertStyleClassContains;
29 import static javafx.scene.control.TableColumn.SortType.ASCENDING;
30 import static javafx.scene.control.TableColumn.SortType.DESCENDING;
31 import static org.junit.Assert.*;
32
33 import java.util.*;
34 import java.util.concurrent.atomic.AtomicLong;
35 import java.util.function.Supplier;
36
37 import com.sun.javafx.scene.control.ReadOnlyUnbackedObservableList;
38 import com.sun.javafx.scene.control.SelectedCellsMap;
39 import com.sun.javafx.scene.control.behavior.TableCellBehavior;
40 import javafx.beans.InvalidationListener;
41 import test.com.sun.javafx.scene.control.infrastructure.ControlTestUtils;
42 import test.com.sun.javafx.scene.control.infrastructure.KeyEventFirer;
43 import test.com.sun.javafx.scene.control.infrastructure.KeyModifier;
44 import test.com.sun.javafx.scene.control.infrastructure.MouseEventFirer;
45 import test.com.sun.javafx.scene.control.infrastructure.StageLoader;
46 import javafx.application.Platform;
47 import javafx.beans.binding.Bindings;
48 import javafx.beans.binding.ObjectBinding;
49 import javafx.beans.property.*;
50 import javafx.collections.FXCollections;
51 import javafx.collections.ListChangeListener;
52 import javafx.collections.ObservableList;
53 import javafx.collections.transformation.SortedList;
54 import javafx.event.EventHandler;
55 import javafx.geometry.Orientation;
56 import javafx.scene.Group;
57 import javafx.scene.Scene;
58 import javafx.scene.control.cell.*;
1938
1939 // @Ignore("Test started intermittently failing, most probably due to RT-36855 changeset")
1940 @Test public void test_rt_34493() {
1941 TableView<Person> table = new TableView<>();
1942 table.setItems(FXCollections.observableArrayList(
1943 new Person("John", "Smith", "jacob.smith@example.com")
1944 ));
1945
1946 TableColumn<Person,String> first = new TableColumn<Person,String>("first");
1947 first.setCellValueFactory(new PropertyValueFactory("firstName"));
1948 TableColumn<Person,String> last = new TableColumn<Person,String>("last");
1949 first.setCellValueFactory(new PropertyValueFactory("lastName"));
1950 TableColumn<Person,String> email = new TableColumn<Person,String>("email");
1951 first.setCellValueFactory(new PropertyValueFactory("email"));
1952 table.getColumns().addAll(first, last, email);
1953
1954 // load the table
1955 StageLoader sl = new StageLoader(table);
1956
1957 // resize the last column
1958 last.impl_setWidth(400);
1959 assertEquals(400, last.getWidth(), 0.0);
1960
1961 // hide the first column
1962 table.getColumns().remove(first);
1963 Toolkit.getToolkit().firePulse();
1964
1965 // the last column should still be 400px, not the default width or any
1966 // other value (based on the width of the content in that column)
1967 assertEquals(400, last.getWidth(), 0.0);
1968
1969 sl.dispose();
1970 }
1971
1972 @Test public void test_rt_34685_directEditCall_cellSelectionMode() {
1973 test_rt_34685_commitCount = 0;
1974 test_rt_34685(false, true);
1975 }
1976
1977 @Test public void test_rt_34685_directEditCall_rowSelectionMode() {
1978 test_rt_34685_commitCount = 0;
3327 // Drag column 1 to slot 1 again. What? Why did they swap positions this time?
3328 TableColumnHeaderUtil.moveColumn(column1, 0);
3329 assertEquals(column1, table.getVisibleLeafColumn(0));
3330 assertEquals(column2, table.getVisibleLeafColumn(1));
3331 assertEquals(0, TableColumnHeaderShim.getColumnIndex(header1));
3332 assertEquals(1, TableColumnHeaderShim.getColumnIndex(header2));
3333
3334 sl.dispose();
3335 }
3336
3337 @Test public void test_rt_37057_test1_MouseEvents() {
3338 // create table with a bunch of column and no rows...
3339 TableView<Integer> table = new TableView<>();
3340 for ( int i = 1; i <= 10; i++ ) {
3341 TableColumn<Integer, Integer> column = new TableColumn<>("" + i);
3342 table.getColumns().add( column );
3343
3344 // sneak some hidden columns in there
3345 column = new TableColumn<>("h" + i);
3346 column.setVisible( false );
3347 column.impl_setWidth(50);
3348 column.setResizable(false);
3349 table.getColumns().add( column );
3350 }
3351
3352 StageLoader sl = new StageLoader(table);
3353
3354 TableColumn column1 = table.getVisibleLeafColumn(0);
3355 TableColumn column2 = table.getVisibleLeafColumn(1);
3356
3357 // get the headers of a few columns
3358 TableColumnHeader header1 = VirtualFlowTestUtils.getTableColumnHeader(table, column1);
3359 TableColumnHeader header2 = VirtualFlowTestUtils.getTableColumnHeader(table, column2);
3360
3361 assertEquals(0, TableColumnHeaderShim.getColumnIndex(header1));
3362 assertEquals(1, TableColumnHeaderShim.getColumnIndex(header2));
3363
3364 // move as per first instructions in RT-37057. The dragOffset and sceneX
3365 // values passed into moveColumn have been derived from a manual run of
3366 // the test application attached to RT-37057 with debug output printed
3367 // in TableColumnHeader
3448 assertEquals(column1, table.getVisibleLeafColumn(0));
3449 assertEquals(column4, table.getVisibleLeafColumn(1));
3450 assertEquals(column2, table.getVisibleLeafColumn(2));
3451 assertEquals(0, TableColumnHeaderShim.getColumnIndex(header1));
3452 assertEquals(1, TableColumnHeaderShim.getColumnIndex(header4));
3453 assertEquals(2, TableColumnHeaderShim.getColumnIndex(header2));
3454
3455 sl.dispose();
3456 }
3457
3458 @Test public void test_rt_37057_test2_MouseEvents() {
3459 // create table with a bunch of column and no rows...
3460 TableView<Integer> table = new TableView<>();
3461 for ( int i = 1; i <= 10; i++ ) {
3462 TableColumn<Integer, Integer> column = new TableColumn<>("" + i);
3463 table.getColumns().add( column );
3464
3465 // sneak some hidden columns in there
3466 column = new TableColumn<>("h" + i);
3467 column.setVisible( false );
3468 column.impl_setWidth(50);
3469 column.setResizable(false);
3470 table.getColumns().add( column );
3471 }
3472
3473 StageLoader sl = new StageLoader(table);
3474
3475 TableColumn column1 = table.getVisibleLeafColumn(0);
3476 TableColumn column2 = table.getVisibleLeafColumn(1);
3477 TableColumn column4 = table.getVisibleLeafColumn(3);
3478
3479 // get the headers of a few columns
3480 TableColumnHeader header1 = VirtualFlowTestUtils.getTableColumnHeader(table, column1);
3481 TableColumnHeader header2 = VirtualFlowTestUtils.getTableColumnHeader(table, column2);
3482 TableColumnHeader header4 = VirtualFlowTestUtils.getTableColumnHeader(table, column4);
3483
3484 assertEquals(0, TableColumnHeaderShim.getColumnIndex(header1));
3485 assertEquals(1, TableColumnHeaderShim.getColumnIndex(header2));
3486
3487 // move as per second instructions in RT-37057. The dragOffset and sceneX
3488 // values passed into moveColumn have been derived from a manual run of
|
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package test.javafx.scene.control;
27
28 import static test.com.sun.javafx.scene.control.infrastructure.ControlTestUtils.assertStyleClassContains;
29 import static javafx.scene.control.TableColumn.SortType.ASCENDING;
30 import static javafx.scene.control.TableColumn.SortType.DESCENDING;
31 import static org.junit.Assert.*;
32
33 import java.util.*;
34 import java.util.concurrent.atomic.AtomicLong;
35 import java.util.function.Supplier;
36
37 import com.sun.javafx.scene.control.ReadOnlyUnbackedObservableList;
38 import com.sun.javafx.scene.control.SelectedCellsMap;
39 import com.sun.javafx.scene.control.TableColumnBaseHelper;
40 import com.sun.javafx.scene.control.behavior.TableCellBehavior;
41 import javafx.beans.InvalidationListener;
42 import test.com.sun.javafx.scene.control.infrastructure.ControlTestUtils;
43 import test.com.sun.javafx.scene.control.infrastructure.KeyEventFirer;
44 import test.com.sun.javafx.scene.control.infrastructure.KeyModifier;
45 import test.com.sun.javafx.scene.control.infrastructure.MouseEventFirer;
46 import test.com.sun.javafx.scene.control.infrastructure.StageLoader;
47 import javafx.application.Platform;
48 import javafx.beans.binding.Bindings;
49 import javafx.beans.binding.ObjectBinding;
50 import javafx.beans.property.*;
51 import javafx.collections.FXCollections;
52 import javafx.collections.ListChangeListener;
53 import javafx.collections.ObservableList;
54 import javafx.collections.transformation.SortedList;
55 import javafx.event.EventHandler;
56 import javafx.geometry.Orientation;
57 import javafx.scene.Group;
58 import javafx.scene.Scene;
59 import javafx.scene.control.cell.*;
1939
1940 // @Ignore("Test started intermittently failing, most probably due to RT-36855 changeset")
1941 @Test public void test_rt_34493() {
1942 TableView<Person> table = new TableView<>();
1943 table.setItems(FXCollections.observableArrayList(
1944 new Person("John", "Smith", "jacob.smith@example.com")
1945 ));
1946
1947 TableColumn<Person,String> first = new TableColumn<Person,String>("first");
1948 first.setCellValueFactory(new PropertyValueFactory("firstName"));
1949 TableColumn<Person,String> last = new TableColumn<Person,String>("last");
1950 first.setCellValueFactory(new PropertyValueFactory("lastName"));
1951 TableColumn<Person,String> email = new TableColumn<Person,String>("email");
1952 first.setCellValueFactory(new PropertyValueFactory("email"));
1953 table.getColumns().addAll(first, last, email);
1954
1955 // load the table
1956 StageLoader sl = new StageLoader(table);
1957
1958 // resize the last column
1959 TableColumnBaseHelper.setWidth(last, 400);
1960 assertEquals(400, last.getWidth(), 0.0);
1961
1962 // hide the first column
1963 table.getColumns().remove(first);
1964 Toolkit.getToolkit().firePulse();
1965
1966 // the last column should still be 400px, not the default width or any
1967 // other value (based on the width of the content in that column)
1968 assertEquals(400, last.getWidth(), 0.0);
1969
1970 sl.dispose();
1971 }
1972
1973 @Test public void test_rt_34685_directEditCall_cellSelectionMode() {
1974 test_rt_34685_commitCount = 0;
1975 test_rt_34685(false, true);
1976 }
1977
1978 @Test public void test_rt_34685_directEditCall_rowSelectionMode() {
1979 test_rt_34685_commitCount = 0;
3328 // Drag column 1 to slot 1 again. What? Why did they swap positions this time?
3329 TableColumnHeaderUtil.moveColumn(column1, 0);
3330 assertEquals(column1, table.getVisibleLeafColumn(0));
3331 assertEquals(column2, table.getVisibleLeafColumn(1));
3332 assertEquals(0, TableColumnHeaderShim.getColumnIndex(header1));
3333 assertEquals(1, TableColumnHeaderShim.getColumnIndex(header2));
3334
3335 sl.dispose();
3336 }
3337
3338 @Test public void test_rt_37057_test1_MouseEvents() {
3339 // create table with a bunch of column and no rows...
3340 TableView<Integer> table = new TableView<>();
3341 for ( int i = 1; i <= 10; i++ ) {
3342 TableColumn<Integer, Integer> column = new TableColumn<>("" + i);
3343 table.getColumns().add( column );
3344
3345 // sneak some hidden columns in there
3346 column = new TableColumn<>("h" + i);
3347 column.setVisible( false );
3348 TableColumnBaseHelper.setWidth(column, 50);
3349 column.setResizable(false);
3350 table.getColumns().add( column );
3351 }
3352
3353 StageLoader sl = new StageLoader(table);
3354
3355 TableColumn column1 = table.getVisibleLeafColumn(0);
3356 TableColumn column2 = table.getVisibleLeafColumn(1);
3357
3358 // get the headers of a few columns
3359 TableColumnHeader header1 = VirtualFlowTestUtils.getTableColumnHeader(table, column1);
3360 TableColumnHeader header2 = VirtualFlowTestUtils.getTableColumnHeader(table, column2);
3361
3362 assertEquals(0, TableColumnHeaderShim.getColumnIndex(header1));
3363 assertEquals(1, TableColumnHeaderShim.getColumnIndex(header2));
3364
3365 // move as per first instructions in RT-37057. The dragOffset and sceneX
3366 // values passed into moveColumn have been derived from a manual run of
3367 // the test application attached to RT-37057 with debug output printed
3368 // in TableColumnHeader
3449 assertEquals(column1, table.getVisibleLeafColumn(0));
3450 assertEquals(column4, table.getVisibleLeafColumn(1));
3451 assertEquals(column2, table.getVisibleLeafColumn(2));
3452 assertEquals(0, TableColumnHeaderShim.getColumnIndex(header1));
3453 assertEquals(1, TableColumnHeaderShim.getColumnIndex(header4));
3454 assertEquals(2, TableColumnHeaderShim.getColumnIndex(header2));
3455
3456 sl.dispose();
3457 }
3458
3459 @Test public void test_rt_37057_test2_MouseEvents() {
3460 // create table with a bunch of column and no rows...
3461 TableView<Integer> table = new TableView<>();
3462 for ( int i = 1; i <= 10; i++ ) {
3463 TableColumn<Integer, Integer> column = new TableColumn<>("" + i);
3464 table.getColumns().add( column );
3465
3466 // sneak some hidden columns in there
3467 column = new TableColumn<>("h" + i);
3468 column.setVisible( false );
3469 TableColumnBaseHelper.setWidth(column, 50);
3470 column.setResizable(false);
3471 table.getColumns().add( column );
3472 }
3473
3474 StageLoader sl = new StageLoader(table);
3475
3476 TableColumn column1 = table.getVisibleLeafColumn(0);
3477 TableColumn column2 = table.getVisibleLeafColumn(1);
3478 TableColumn column4 = table.getVisibleLeafColumn(3);
3479
3480 // get the headers of a few columns
3481 TableColumnHeader header1 = VirtualFlowTestUtils.getTableColumnHeader(table, column1);
3482 TableColumnHeader header2 = VirtualFlowTestUtils.getTableColumnHeader(table, column2);
3483 TableColumnHeader header4 = VirtualFlowTestUtils.getTableColumnHeader(table, column4);
3484
3485 assertEquals(0, TableColumnHeaderShim.getColumnIndex(header1));
3486 assertEquals(1, TableColumnHeaderShim.getColumnIndex(header2));
3487
3488 // move as per second instructions in RT-37057. The dragOffset and sceneX
3489 // values passed into moveColumn have been derived from a manual run of
|