All Downloads are FREE. Search and download functionalities are using the official Maven repository.

scalafx.scene.input.KeyCombination.scala Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2011-2014, ScalaFX Project
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     * Neither the name of the ScalaFX Project nor the
 *       names of its contributors may be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE SCALAFX PROJECT OR ITS CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

package scalafx.scene.input

import javafx.scene.{input => jfxsi}
import javafx.{event => jfxe}

import scala.language.implicitConversions
import scalafx.delegate.{SFXDelegate, SFXEnumDelegate, SFXEnumDelegateCompanion}

object KeyCombination {

  object ModifierValue
    extends SFXEnumDelegateCompanion[jfxsi.KeyCombination.ModifierValue, ModifierValue] {

    /**
     * Constant which indicates that the modifier key can be either up or down.
     */
    val Any = new ModifierValue(jfxsi.KeyCombination.ModifierValue.ANY)
    @deprecated ("Use Any; ANY will be removed in a future release", "8.0.60-R10")
    val ANY = Any

    /**
     * Constant which indicates that the modifier key must be down.
     */
    val Down = new ModifierValue(jfxsi.KeyCombination.ModifierValue.DOWN)
    @deprecated ("Use Down; DOWN will be removed in a future release", "8.0.60-R10")
    val DOWN = Down

    /**
     * Constant which indicates that the modifier key must be up.
     */
    val Up = new ModifierValue(jfxsi.KeyCombination.ModifierValue.UP)
    @deprecated ("Use Up; UP will be removed in a future release", "8.0.60-R10")
    val UP = Up

    protected override def unsortedValues: Array[ModifierValue] = Array(Any, Down, Up)

  }

  /**
   * Wraps [[http://docs.oracle.com/javase/8/javafx/api/javafx/scene/input/KeyCombination.ModifierValue.html]]
   */
  sealed case class ModifierValue(override val delegate: jfxsi.KeyCombination.ModifierValue)
    extends SFXEnumDelegate[jfxsi.KeyCombination.ModifierValue]

  object Modifier {
    implicit def sfxModifier2jfx(m: Modifier): jfxsi.KeyCombination.Modifier = if (m != null) m.delegate else null
  }

  class Modifier(override val delegate: jfxsi.KeyCombination.Modifier) extends SFXDelegate[jfxsi.KeyCombination.Modifier] {

    /**
     * Gets the modifier key of this Modifier.
     */
    def key: KeyCode = new KeyCode(delegate.getKey)

    /**
     * Gets the modifier value of this Modifier.
     */
    def value: ModifierValue = ModifierValue.jfxEnum2sfx(delegate.getValue)

  }

  implicit def sfxKeyCombination2jfx(kc: KeyCombination): jfxsi.KeyCombination = if (kc != null) kc.delegate else null

  /**
   * Modifier which specifies that the alt key can be either up or down.
   */
  val AltAny: Modifier = new Modifier(jfxsi.KeyCombination.ALT_ANY)

  /**
   * Modifier which specifies that the alt key must be down.
   */
  val AltDown: Modifier = new Modifier(jfxsi.KeyCombination.ALT_DOWN)

  /**
   * Modifier which specifies that the control key can be either up or down.
   */
  val ControlAny: Modifier = new Modifier(jfxsi.KeyCombination.CONTROL_ANY)

  /**
   * Modifier which specifies that the control key must be down.
   */
  val ControlDown: Modifier = new Modifier(jfxsi.KeyCombination.CONTROL_DOWN)

  /**
   * Modifier which specifies that the meta key can be either up or down.
   */
  val MetaAny: Modifier = new Modifier(jfxsi.KeyCombination.META_ANY)

  /**
   * Modifier which specifies that the meta key must be down.
   */
  val MetaDown: Modifier = new Modifier(jfxsi.KeyCombination.META_DOWN)

  /**
   * Modifier which specifies that the shift key can be either up or down.
   */
  val ShiftAny: Modifier = new Modifier(jfxsi.KeyCombination.SHIFT_ANY)

  /**
   * Modifier which specifies that the shift key must be down.
   */
  val ShiftDown: Modifier = new Modifier(jfxsi.KeyCombination.SHIFT_DOWN)

  /**
   * Modifier which specifies that the shortcut key can be either up or down.
   */
  val ShortcutAny: Modifier = new Modifier(jfxsi.KeyCombination.SHORTCUT_ANY)

  /**
   * Modifier which specifies that the shortcut key must be down.
   */
  val ShortcutDown: Modifier = new Modifier(jfxsi.KeyCombination.SHORTCUT_DOWN)

  /**
   * Constructs a new KeyCombination from the specified string.
   */
  def keyCombination(name: String): KeyCombination = new KeyCombination(jfxsi.KeyCombination.keyCombination(name)) {}

  /**
   * Constructs a new KeyCombination from the specified string.
   */
  @deprecated("Use apply instead", "1.0")
  def valueOf(value: String) = jfxsi.KeyCombination.valueOf(value)

  /**
   * Constructs a new KeyCombination from the specified string.
   */
  def apply(value: String): KeyCombination = new KeyCombination(jfxsi.KeyCombination.valueOf(value)) {}

}

abstract class KeyCombination protected(override val delegate: jfxsi.KeyCombination) extends SFXDelegate[jfxsi.KeyCombination] {

  /**
   * The state of the alt key in this key combination.
   */
  def alt: KeyCombination.ModifierValue = KeyCombination.ModifierValue.jfxEnum2sfx(delegate.getAlt)

  /**
   * The state of the control key in this key combination.
   */
  def control: KeyCombination.ModifierValue = KeyCombination.ModifierValue.jfxEnum2sfx(delegate.getControl)

  /**
   * Returns a string representation of this KeyCombination that is suitable for display in a user interface
   * (for example, beside a menu item).
   *
   * @return A string representation of this KeyCombination, suitable for display in a user interface.
   */
  def displayText: String = delegate.getDisplayText

  /**
   * The state of the meta key in this key combination.
   */
  def meta: KeyCombination.ModifierValue = KeyCombination.ModifierValue.jfxEnum2sfx(delegate.getMeta)

  /**
   * Returns a string representation of this KeyCombination.
   */
  def name = delegate.getName

  /**
   * The state of the shift key in this key combination.
   */
  def shift: KeyCombination.ModifierValue = KeyCombination.ModifierValue.jfxEnum2sfx(delegate.getShift)

  /**
   * The state of the shortcut key in this key combination.
   */
  def shortcut: KeyCombination.ModifierValue = KeyCombination.ModifierValue.jfxEnum2sfx(delegate.getShortcut)

  /**
   * Tests whether this key combination matches the combination in the given KeyEvent.
   */
  def `match`(event: KeyEvent) = delegate.`match`(event)

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy