All Classes Namespaces Files Functions Variables
KerhonNimiController.java
Go to the documentation of this file.
1 package modalDialog;
2 
3 import java.io.IOException;
4 import java.net.URL;
5 import java.util.ResourceBundle;
6 
7 import javafx.fxml.FXML;
8 import javafx.fxml.FXMLLoader;
9 import javafx.fxml.Initializable;
10 import javafx.scene.Parent;
11 import javafx.scene.Scene;
12 import javafx.scene.control.TextField;
13 import javafx.stage.Modality;
14 import javafx.stage.Stage;
15 
16 /**
17  * Kystään kerhon nimi ja luodaan tätä varten dialogi.
18  *
19  * @author vesal
20  * @version 2.1.2016
21  */
22 public class KerhonNimiController implements Initializable {
23 
24  @FXML private TextField textVastaus;
25  private String vastaus = null;
26 
27 
28  private String getResult() {
29  return vastaus;
30  }
31 
32 
33  private void setDefault(String oletus) {
34  textVastaus.setText(oletus);
35  }
36 
37 
38  private void close() {
39  ((Stage)textVastaus.getScene().getWindow()).close();
40  }
41 
42 
43  @FXML private void handleOK() {
44  vastaus = textVastaus.getText();
45  close();
46  }
47 
48 
49  @FXML private void handleCancel() {
50  close();
51  }
52 
53 
54  /**
55  * Mitä tehdään kun dialogi on näytetty
56  */
57  public void handleShown() {
58  textVastaus.requestFocus();
59 
60  }
61 
62  @Override
63  public void initialize(URL url, ResourceBundle bundle) {
64  //
65  }
66 
67 
68  /**
69  * Luodaan nimenkysymisdialogi ja palautetaan siihen kirjoitettu nimi tai null
70  * @param modalityStage mille ollaan modaalisia, null = sovellukselle
71  * @param oletus mitä nimeä näytetään oletuksena
72  * @return null jos painetaan Cancel, muuten kirjoitettu nimi
73  */
74  public static String kysyNimi(Stage modalityStage, String oletus) {
75  try {
76  // Selvitetään tiedoston osoite
77  URL url = KerhonNimiController.class.getResource("KerhonNimiView.fxml");
78  // Luodaan olio joka lataa tiedoston
79  FXMLLoader ldr = new FXMLLoader(url);
80  // Ja ladataan tiedoston kuvaama ulkoasu
81  Parent root = ldr.load();
82  // selvitetään luotu kontrolleriolio
83  final KerhonNimiController dialogCtrl = (KerhonNimiController)ldr.getController();
84  // luodaan uusi ikkuna
85  Stage stage = new Stage();
86  // ja sen sisällä näkymä, joka näyttää suunnitellun ulkoasun
87  stage.setScene(new Scene(root));
88  // Vaihdetaan ikkunan otsikkkoa
89  stage.setTitle("Kerho");
90  // Jos on annettu ikkuna jolle ollaa modaaleja, asetetaan modaalisuus suhteessa
91  if ( modalityStage != null ) {
92  stage.initModality(Modality.WINDOW_MODAL);
93  stage.initOwner(modalityStage);
94  } else // Muutan ollaan modaalisia sovellukseööe
95  stage.initModality(Modality.APPLICATION_MODAL);
96  // Pyydetään dialogia laittamaan oletustiedot näkyville
97  dialogCtrl.setDefault(oletus);
98  // laitetaan ikkunalle käsittelijä siitä kun se näytetään
99  stage.setOnShown((e)-> {
100  // ja annetaan käyttö liittymän päättää mikä komponentti oletukseksi
101  dialogCtrl.handleShown();
102  });
103  // Pistetään dialogi näkyville ja odotetaan kunnes se suljetaan
104  stage.showAndWait();
105  // Kysytään käyttöliittymältä tulos ja palautetaan se
106  return dialogCtrl.getResult();
107  } catch (IOException e) {
108  System.err.println(e.toString());
109  return null;
110  }
111  }
112 }