modules/controls/src/main/java/com/sun/javafx/scene/control/behavior/TreeCellBehavior.java
Print this page
*** 23,47 ****
* questions.
*/
package com.sun.javafx.scene.control.behavior;
import javafx.scene.Node;
import javafx.scene.control.FocusModel;
import javafx.scene.control.MultipleSelectionModel;
import javafx.scene.control.SelectionMode;
import javafx.scene.control.TreeCell;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.input.MouseButton;
import javafx.scene.input.MouseEvent;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
- import com.sun.javafx.scene.control.Logging;
- import sun.util.logging.PlatformLogger;
- import sun.util.logging.PlatformLogger.Level;
/**
*/
public class TreeCellBehavior<T> extends CellBehaviorBase<TreeCell<T>> {
--- 23,48 ----
* questions.
*/
package com.sun.javafx.scene.control.behavior;
+ import com.sun.javafx.scene.control.Logging;
import javafx.scene.Node;
import javafx.scene.control.FocusModel;
import javafx.scene.control.MultipleSelectionModel;
import javafx.scene.control.SelectionMode;
import javafx.scene.control.TreeCell;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.input.MouseButton;
import javafx.scene.input.MouseEvent;
+ import sun.util.logging.PlatformLogger;
+ import sun.util.logging.PlatformLogger.Level;
+
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
*/
public class TreeCellBehavior<T> extends CellBehaviorBase<TreeCell<T>> {
*** 84,104 ****
* *
* Private fields *
* *
**************************************************************************/
- // For RT-17456: have selection occur as fast as possible with mouse input.
- // The idea is (consistently with some native applications we've tested) to
- // do the action as soon as you can. It takes a bit more coding but provides
- // the best feel:
- // - when you click on a not-selected item, you can select immediately on press
- // - when you click on a selected item, you need to wait whether DragDetected or Release comes first
// To support touch devices, we have to slightly modify this behavior, such
// that selection only happens on mouse release, if only minimal dragging
// has occurred.
private boolean latePress = false;
- private boolean wasSelected = false;
/***************************************************************************
* *
--- 85,98 ----
*** 117,161 ****
* Public API *
* *
**************************************************************************/
@Override public void mousePressed(MouseEvent event) {
- boolean selectedBefore = getControl().isSelected();
! if (getControl().isSelected()) {
latePress = true;
! return;
! }
!
doSelect(event);
!
! if (IS_TOUCH_SUPPORTED && selectedBefore) {
! wasSelected = getControl().isSelected();
}
}
@Override public void mouseReleased(MouseEvent event) {
if (latePress) {
latePress = false;
doSelect(event);
}
-
- wasSelected = false;
}
@Override public void mouseDragged(MouseEvent event) {
latePress = false;
-
- TreeView<T> treeView = getControl().getTreeView();
- if (treeView == null || treeView.getSelectionModel() == null) return;
-
- // the mouse has now been dragged on a touch device, we should
- // remove the selection if we just added it in the last mouse press
- // event
- if (IS_TOUCH_SUPPORTED && ! wasSelected && getControl().isSelected()) {
- treeView.getSelectionModel().clearSelection(getControl().getIndex());
- }
}
/***************************************************************************
--- 111,140 ----
* Public API *
* *
**************************************************************************/
@Override public void mousePressed(MouseEvent event) {
! if (event.isSynthesized()) {
latePress = true;
! } else {
! latePress = getControl().isSelected();
! if (!latePress) {
doSelect(event);
! }
}
}
@Override public void mouseReleased(MouseEvent event) {
if (latePress) {
latePress = false;
doSelect(event);
}
}
@Override public void mouseDragged(MouseEvent event) {
latePress = false;
}
/***************************************************************************