modules/controls/src/main/java/javafx/scene/control/skin/SplitMenuButtonSkin.java
Print this page
rev 9240 : 8076423: JEP 253: Prepare JavaFX UI Controls & CSS APIs for Modularization
*** 21,73 ****
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
! package com.sun.javafx.scene.control.skin;
import javafx.scene.control.SplitMenuButton;
import javafx.scene.input.MouseEvent;
import com.sun.javafx.scene.control.behavior.SplitMenuButtonBehavior;
/**
! * Skin for SplitMenuButton Control.
*/
! public class SplitMenuButtonSkin extends MenuButtonSkinBase<SplitMenuButton, SplitMenuButtonBehavior> {
/***************************************************************************
* *
* Constructors *
* *
**************************************************************************/
/**
! * Creates a new SplitMenuButtonSkin for the given SplitMenu.
*
! * @param splitMenuButton the SplitMenuButton
*/
! public SplitMenuButtonSkin(final SplitMenuButton splitMenuButton) {
! super(splitMenuButton, new SplitMenuButtonBehavior(splitMenuButton));
/*
* The arrow button is the only thing that acts like a MenuButton on
* this control.
*/
behaveLikeButton = true;
// TODO: do we need to consume all mouse events?
// they only bubble to the skin which consumes them by default
! arrowButton.addEventHandler(MouseEvent.ANY, event -> {
! event.consume();
! });
arrowButton.setOnMousePressed(e -> {
getBehavior().mousePressed(e, false);
e.consume();
});
arrowButton.setOnMouseReleased(e -> {
getBehavior().mouseReleased(e, false);
e.consume();
});
! label.setLabelFor(splitMenuButton);
}
}
--- 21,125 ----
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
! package javafx.scene.control.skin;
+ import com.sun.javafx.scene.control.behavior.BehaviorBase;
+ import com.sun.javafx.scene.control.behavior.MenuButtonBehavior;
+ import javafx.scene.Node;
+ import javafx.scene.control.Accordion;
+ import javafx.scene.control.Button;
+ import javafx.scene.control.Control;
import javafx.scene.control.SplitMenuButton;
import javafx.scene.input.MouseEvent;
import com.sun.javafx.scene.control.behavior.SplitMenuButtonBehavior;
/**
! * Default skin implementation for the {@link SplitMenuButton} control.
! *
! * @see SplitMenuButton
! * @since 9
*/
! public class SplitMenuButtonSkin extends MenuButtonSkinBase<SplitMenuButton> {
!
! /***************************************************************************
! * *
! * Private fields *
! * *
! **************************************************************************/
!
! private final SplitMenuButtonBehavior behavior;
!
!
/***************************************************************************
* *
* Constructors *
* *
**************************************************************************/
/**
! * Creates a new SplitMenuButtonSkin instance, installing the necessary child
! * nodes into the Control {@link Control#getChildren() children} list, as
! * well as the necessary input mappings for handling key, mouse, etc events.
*
! * @param control The control that this skin should be installed onto.
*/
! public SplitMenuButtonSkin(final SplitMenuButton control) {
! super(control);
!
! // install default input map for the MenuButton-like controls
! this.behavior = new SplitMenuButtonBehavior(control);
! // setInputMap(control, behavior.getInputMap());
/*
* The arrow button is the only thing that acts like a MenuButton on
* this control.
*/
behaveLikeButton = true;
// TODO: do we need to consume all mouse events?
// they only bubble to the skin which consumes them by default
! arrowButton.addEventHandler(MouseEvent.ANY, event -> event.consume());
arrowButton.setOnMousePressed(e -> {
getBehavior().mousePressed(e, false);
e.consume();
});
arrowButton.setOnMouseReleased(e -> {
getBehavior().mouseReleased(e, false);
e.consume();
});
! label.setLabelFor(control);
! }
!
!
!
! /***************************************************************************
! * *
! * Public API *
! * *
! **************************************************************************/
!
! /** {@inheritDoc} */
! @Override public void dispose() {
! super.dispose();
!
! if (behavior != null) {
! behavior.dispose();
! }
! }
!
!
!
! /***************************************************************************
! * *
! * Private implementation *
! * *
! **************************************************************************/
!
! @Override SplitMenuButtonBehavior getBehavior() {
! return behavior;
}
}