Legal Terms and Copyright Notice
/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
*
* Copyright © 2010, Oracle and/or its affiliates. All rights reserved.
* Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
* Oracle and Java are registered trademarks of Oracle and/or its affiliates.
* Other names may be trademarks of their respective owners.
*
* This file is available and licensed under the following license:
*
* 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,
trademark notice, this list of conditions, and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice,
trademark notice, this list of conditions, and the following disclaimer in
the documentation and/or other materials provided with the distribution.
* * Neither the name of Oracle 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 COPYRIGHT OWNER OR 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 smartcontrols;
import javafx.scene.CustomNode;
import javafx.scene.Node;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Hyperlink;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.ProgressBar;
import javafx.scene.control.ProgressIndicator;
import javafx.scene.control.RadioButton;
import javafx.scene.control.Slider;
import javafx.scene.control.TextBox;
import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.paint.LinearGradient;
import javafx.scene.paint.Stop;
class MyControl extends CustomNode {
var text: String;
var content: Node[];
override function create() {
HBox {
spacing: 5
content: bind [
Label {
text: text
}
content
]
}
}
}
def slider = Slider {
max: 100
}
Application {
title: "JavaFX Controls"
header: ImageView {
image: Image {
url: "{__DIR__}logo.png"
}
}
background: LinearGradient {
endY: 0
stops: [
Stop { offset: 0 color: Color.rgb(0, 63, 0, 0.8) }
Stop { offset: 1 color: Color.rgb(0, 255, 0, 0.8) }
//Stop { offset: 0 color: Color.rgb(0, 0, 63, 0.8) }
//Stop { offset: 1 color: Color.rgb(0, 0, 255, 0.8) }
]
}
content: ScrollPane {
background: Color.WHITE
border: 10
content: VBox {
spacing: 10
content: [
MyControl {
text: "TextBox:"
content: TextBox { }
}
MyControl {
text: "Button:"
content: [
Button { text: "OK" strong: true }
Button { text: "Cancel" }
]
}
MyControl {
def group = ToggleGroup { }
text: "ToggleButton:"
content: [
ToggleButton { toggleGroup: group text: "First" selected: true }
ToggleButton { toggleGroup: group text: "Second" }
ToggleButton { toggleGroup: group text: "Third" }
]
}
MyControl {
def group = ToggleGroup { }
text: "RadioButton:"
content: [
RadioButton { toggleGroup: group text: "First" selected: true }
RadioButton { toggleGroup: group text: "Second" }
RadioButton { toggleGroup: group text: "Third" }
]
}
MyControl {
text: "CheckBox:"
content: [
CheckBox { text: "Normal" }
CheckBox { text: "Checked" selected: true }
]
}
MyControl {
text: "CheckBox 3:"
content: [
CheckBox { allowTriState: true text: "TriState" }
CheckBox { allowTriState: true text: "Undefined" defined: false }
]
}
MyControl {
text: "Hyperlink:"
content: Hyperlink { text: "clickable text" }
}
MyControl {
text: "Slider:"
content: slider
}
MyControl {
text: "ProgressBar:"
content: VBox {
content: [
ProgressBar { progress: bind slider.value / slider.max }
ProgressBar { progress: -1 }
]
}
}
MyControl {
text: "ProgressIndicator:"
content: [
ProgressIndicator { progress: bind slider.value / slider.max }
ProgressIndicator { progress: -1 }
]
}
MyControl {
text: "ListView:"
content: ListView {
width: bind 200
height: bind 100
items: [
"Button",
"CheckBox",
"Hyperlink",
"Label",
"ListView",
"ProgressBar",
"ProgressIndicator",
"RadioButton",
"ScrollBar",
"Slider",
"TextBox",
"ToggleButton",
"ToggleGroup",
]
}
}
]
}
}
}