import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.*;
import javafx.scene.control.*;
import javafx.scene.text.*;                             //for Text class
import javafx.collections.*;                            //for ObservableList 
import javafx.geometry.*;                               //for Insets

public class Awindow3 extends Application  
{
    @Override
    public void start(Stage win) throws Exception 
    {
        win.setTitle("Window using GridPane layout");

        Text title = new Text("My Application");
        title.setFont(Font.font("Verdana", FontWeight.BOLD, 20));
        
        MenuBar  menus = new MenuBar();                             //create a menu bar
        Menu     menu1 = new Menu("File");                          //create a menu
        MenuItem open  = new MenuItem("Open");                      //create a menu item
        MenuItem save  = new MenuItem("Save");
        MenuItem print = new MenuItem("Print");
        MenuItem exit  = new MenuItem("Exit");
        Menu     menu2 = new Menu("Edit");
        MenuItem find  = new MenuItem("Find");
        MenuItem rplc  = new MenuItem("Replace");
        MenuItem copy  = new MenuItem("Copy");
        MenuItem paste = new MenuItem("Paste");
                
        menu1.getItems().addAll(open,save,print,exit);              //add menu items in menu
        menu2.getItems().addAll(find,rplc,copy,paste);
        menus.getMenus().addAll(menu1,menu2);                       //add menus in menu bar

        Label     label1 = new Label("Enter Name    ");             //create a label
        TextField field1 = new TextField("Sam Sultan");             //create a textfield with initial value                
        Label     label2 = new Label("Comment");
        TextArea  field2 = new TextArea("line1 \n line2");          //create a textarea with initial values            

        RadioButton radio1 = new RadioButton("Male");               //create a radio button
        RadioButton radio2 = new RadioButton("Female");
        radio1.setSelected(true);                                   //turn on first radio button
        ToggleGroup radioGroup = new ToggleGroup();                 //create a radio group
        radio1.setToggleGroup(radioGroup);                          //add radio button to radio group
        radio2.setToggleGroup(radioGroup);
        
        CheckBox check1 = new CheckBox("Red");                      //create a checkbox
        CheckBox check2 = new CheckBox("Blue");
        check1.setSelected(true);

        ChoiceBox<String> select = new ChoiceBox<String>();                 //single dropdown select list
        select.getItems().add("High School");
        select.getItems().add("Bachelor");
        select.getItems().add("Master");
        select.getItems().add("PHD");
        select.getSelectionModel().select(0);
 
        ListView<String> mSelect = new ListView<String>();                  //multiple scrollable select list
        String[] animals = {"Dogs","Cats","Birds","Fish","Turtles","Other"};
        ObservableList<String> list = FXCollections.observableArrayList(animals);
        mSelect.setItems(list);
        mSelect.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
        mSelect.setMaxWidth(85);
        mSelect.setPrefHeight(25);

        Button submit = new Button(" Submit ");
        Button cancel = new Button(" Cancel ");

        Region space1 = new Region();                   //create a region for spacing                   
        space1.setPrefSize(15, 0);                      //width, height
        Region space2 = new Region();
        space2.setPrefSize(15, 0);
        Region space3 = new Region();
        space3.setPrefSize(15, 0);
 
        GridPane pane = new GridPane();                 //create a grid layout manager
        pane.setPadding(new Insets(10,0,0,5));          //padding around top,right,bottom,left
        pane.setHgap(5);                                //padding between components
        pane.setVgap(10);

        pane.add(menus,  0,0);                          //add components to layout manager
        pane.add(title,  2,0,4,1);                      //component,col,row,colspan,colspan
        pane.add(label1, 0,1);                           
        pane.add(field1, 1,1,9,1);                       
        pane.add(label2, 0,2);                     
        pane.add(field2, 1,2,9,1);
        pane.add(radio1, 1,3);
        pane.add(radio2, 2,3);
        pane.add(space1, 3,3);
        pane.add(check1, 4,3);
        pane.add(check2, 5,3);
        pane.add(space2, 6,3);
        pane.add(select, 7,3);
        pane.add(space3, 8,3);
        pane.add(mSelect,9,3);
        pane.add(submit, 1,4);
        pane.add(cancel, 2,4);
           
        Scene scene = new Scene(pane, 600, 350);        
        
        win.setScene(scene);
        win.setResizable(false);
        win.show();
    }

    public static void main(String[] args) 
    {
        Application.launch(args);
    }
}