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

scalafx.scene.chart.XYChart.scala Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2011-2020, 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.chart

import javafx.scene.{chart => jfxsc}
import javafx.{collections => jfxc, scene => jfxs}
import scalafx.Includes._
import scalafx.beans.property.{BooleanProperty, ObjectProperty, ReadOnlyObjectProperty, StringProperty}
import scalafx.collections.ObservableBuffer
import scalafx.delegate.SFXDelegate
import scalafx.scene.Node

import scala.language.implicitConversions

object XYChart {
  implicit def sfxXYChart2jfx[X, Y](v: XYChart[X, Y]): jfxsc.XYChart[X, Y] = if (v != null) v.delegate else null

  object Data {
    implicit def sfxXYChartData2jfx[X, Y](v: XYChart.Data[X, Y]): jfxsc.XYChart.Data[X, Y] = if (v != null) v.delegate else null

    def apply[X, Y](x: X, y: Y) = new jfxsc.XYChart.Data[X, Y](x, y)

    def apply[X, Y](x: X, y: Y, extraValue: Any) = new jfxsc.XYChart.Data[X, Y](x, y, extraValue)
  }

  class Data[X, Y](override val delegate: jfxsc.XYChart.Data[X, Y] =
                   new jfxsc.XYChart.Data[X, Y]()) extends SFXDelegate[jfxsc.XYChart.Data[X, Y]] {

    def extraValue: ObjectProperty[AnyRef] = delegate.extraValueProperty

    def extraValue_=(v: AnyRef): Unit = {
      extraValue() = v
    }

    def node: ObjectProperty[jfxs.Node] = delegate.nodeProperty

    def node_=(v: Node): Unit = {
      node() = v
    }

    def XValue: ObjectProperty[X] = delegate.XValueProperty

    def XValue_=(v: X): Unit = {
      delegate.setXValue(v)
    }

    def YValue: ObjectProperty[Y] = delegate.YValueProperty

    def YValue_=(v: Y): Unit = {
      delegate.setYValue(v)
    }
  }

  object Series {
    implicit def sfxXYChartSeries2jfx[X, Y](v: XYChart.Series[X, Y]): jfxsc.XYChart.Series[X, Y] = if (v != null) v.delegate else null

    def apply[X, Y](data: ObservableBuffer[jfxsc.XYChart.Data[X, Y]]) =
      new jfxsc.XYChart.Series[X, Y](data)

    def apply[X, Y](name: String, data: ObservableBuffer[jfxsc.XYChart.Data[X, Y]]) =
      new jfxsc.XYChart.Series[X, Y](name, data)
  }

  class Series[X, Y](override val delegate: jfxsc.XYChart.Series[X, Y] = new jfxsc.XYChart.Series[X, Y]())
    extends SFXDelegate[jfxsc.XYChart.Series[X, Y]] {

    def chart: ReadOnlyObjectProperty[jfxsc.XYChart[X, Y]] = delegate.chartProperty

    def data: ObjectProperty[jfxc.ObservableList[jfxsc.XYChart.Data[X, Y]]] = delegate.dataProperty

    def data_=(v: ObservableBuffer[jfxsc.XYChart.Data[X, Y]]): Unit = {
      data() = v
    }

    def data_=(v: Seq[jfxsc.XYChart.Data[X, Y]]): Unit = {
      data() = ObservableBuffer(v)
    }

    def name: StringProperty = delegate.nameProperty

    def name_=(v: String): Unit = {
      name() = v
    }

    def node: ObjectProperty[jfxs.Node] = delegate.nodeProperty

    def node_=(v: Node): Unit = {
      node() = v
    }
  }

}

abstract class XYChart[X, Y](override val delegate: jfxsc.XYChart[X, Y])
  extends Chart(delegate)
  with SFXDelegate[jfxsc.XYChart[X, Y]] {

  def alternativeColumnFillVisible: BooleanProperty = delegate.alternativeColumnFillVisibleProperty

  def alternativeColumnFillVisible_=(v: Boolean): Unit = {
    alternativeColumnFillVisible() = v
  }

  def alternativeRowFillVisible: BooleanProperty = delegate.alternativeRowFillVisibleProperty

  def alternativeRowFillVisible_=(v: Boolean): Unit = {
    alternativeRowFillVisible() = v
  }

  def data: ObjectProperty[jfxc.ObservableList[jfxsc.XYChart.Series[X, Y]]] = delegate.dataProperty

  def data_=(v: ObservableBuffer[jfxsc.XYChart.Series[X, Y]]): Unit = {
    data() = v
  }

  def data_=(v: Seq[jfxsc.XYChart.Series[X, Y]]): Unit = {
    data() = ObservableBuffer(v)
  }

  def data_=(v: XYChart.Series[X, Y]): Unit = {
    data() = ObservableBuffer[jfxsc.XYChart.Series[X, Y]](v)
  }

  def horizontalGridLinesVisible: BooleanProperty = delegate.horizontalGridLinesVisibleProperty

  def horizontalGridLinesVisible_=(v: Boolean): Unit = {
    horizontalGridLinesVisible() = v
  }

  def horizontalZeroLineVisible: BooleanProperty = delegate.horizontalZeroLineVisibleProperty

  def horizontalZeroLineVisible_=(v: Boolean): Unit = {
    horizontalZeroLineVisible() = v
  }

  def verticalGridLinesVisible: BooleanProperty = delegate.verticalGridLinesVisibleProperty

  def verticalGridLinesVisible_=(v: Boolean): Unit = {
    verticalGridLinesVisible() = v
  }

  def verticalZeroLineVisible: BooleanProperty = delegate.verticalZeroLineVisibleProperty

  def verticalZeroLineVisible_=(v: Boolean): Unit = {
    verticalZeroLineVisible() = v
  }

  def XAxis: Axis[X] = delegate.getXAxis

  def YAxis: Axis[Y] = delegate.getYAxis
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy