modules/controls/src/main/java/com/sun/javafx/scene/control/behavior/PaginationBehavior.java

Print this page
rev 9240 : 8076423: JEP 253: Prepare JavaFX UI Controls & CSS APIs for Modularization

*** 1,7 **** /* ! * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 23,98 **** * questions. */ package com.sun.javafx.scene.control.behavior; - import javafx.geometry.NodeOrientation; import javafx.scene.control.Pagination; ! import javafx.scene.input.KeyCode; ! import javafx.scene.input.KeyEvent; import javafx.scene.input.MouseEvent; ! import java.util.ArrayList; ! import java.util.List; ! import com.sun.javafx.scene.control.skin.PaginationSkin; public class PaginationBehavior extends BehaviorBase<Pagination> { ! /************************************************************************** ! * Setup KeyBindings * ! *************************************************************************/ ! private static final String LEFT = "Left"; ! private static final String RIGHT = "Right"; ! protected static final List<KeyBinding> PAGINATION_BINDINGS = new ArrayList<KeyBinding>(); ! static { ! PAGINATION_BINDINGS.add(new KeyBinding(KeyCode.LEFT, LEFT)); ! PAGINATION_BINDINGS.add(new KeyBinding(KeyCode.RIGHT, RIGHT)); ! } ! protected String matchActionForEvent(KeyEvent e) { ! String action = super.matchActionForEvent(e); ! if (action != null) { ! if (e.getCode() == KeyCode.LEFT) { ! if (getControl().getEffectiveNodeOrientation() == NodeOrientation.RIGHT_TO_LEFT) { ! action = RIGHT; ! } ! } else if (e.getCode() == KeyCode.RIGHT) { ! if (getControl().getEffectiveNodeOrientation() == NodeOrientation.RIGHT_TO_LEFT) { ! action = LEFT; ! } ! } ! } ! return action; ! } ! @Override protected void callAction(String name) { ! if (LEFT.equals(name)) { ! PaginationSkin ps = (PaginationSkin)getControl().getSkin(); ! ps.selectPrevious(); ! } else if (RIGHT.equals(name)) { ! PaginationSkin ps = (PaginationSkin)getControl().getSkin(); ! ps.selectNext(); ! } else { ! super.callAction(name); } } ! /*************************************************************************** ! * * ! * Mouse event handling * ! * * ! **************************************************************************/ ! @Override public void mousePressed(MouseEvent e) { ! super.mousePressed(e); ! Pagination p = getControl(); ! p.requestFocus(); } ! /************************************************************************** ! * State and Functions * ! *************************************************************************/ ! public PaginationBehavior(Pagination pagination) { ! super(pagination, PAGINATION_BINDINGS); } } --- 23,76 ---- * questions. */ package com.sun.javafx.scene.control.behavior; import javafx.scene.control.Pagination; ! import com.sun.javafx.scene.control.inputmap.InputMap; import javafx.scene.input.MouseEvent; ! ! import static javafx.scene.input.KeyCode.*; ! import static com.sun.javafx.scene.control.inputmap.InputMap.KeyMapping; ! import static com.sun.javafx.scene.control.inputmap.InputMap.MouseMapping; public class PaginationBehavior extends BehaviorBase<Pagination> { ! private final InputMap<Pagination> paginationInputMap; ! public PaginationBehavior(Pagination pagination) { ! super(pagination); ! // create a map for paginiation-specific mappings (this reuses the default ! // InputMap installed on the control, if it is non-null, allowing us to pick up any user-specified mappings) ! paginationInputMap = createInputMap(); ! // then button-specific mappings for key and mouse input ! addDefaultMapping(paginationInputMap, ! new KeyMapping(LEFT, e -> rtl(pagination, this::right, this::left)), ! new KeyMapping(RIGHT, e -> rtl(pagination, this::left, this::right)), ! new MouseMapping(MouseEvent.MOUSE_PRESSED, this::mousePressed) ! ); } + + @Override public InputMap<Pagination> getInputMap() { + return paginationInputMap; } ! public void mousePressed(MouseEvent e) { ! getNode().requestFocus(); ! } ! private void left() { ! movePage(-1); } ! private void right() { ! movePage(1); ! } ! private void movePage(int delta) { ! final Pagination pagination = getNode(); ! final int currentPageIndex = pagination.getCurrentPageIndex(); ! pagination.setCurrentPageIndex(currentPageIndex + delta); } }