/* * NotifyOptionsDialog.java - Copyright(c) 2014 Joe Pasqua * Provided under the MIT License. See the LICENSE file for details. * Created: Mar 02, 2014 */ package org.noroomattheinn.visibletesla.dialogs; import org.noroomattheinn.fxextensions.VTDialog; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.CheckBox; import javafx.scene.control.TextField; import javafx.scene.control.TextArea; import javafx.stage.Stage; /** * NotifyOptionsDialog * * @author Joe Pasqua <joe at NoRoomAtTheInn dot org> */ public class NotifyOptionsDialog extends VTDialog.Controller { /*------------------------------------------------------------------------------ * * Internal State * *----------------------------------------------------------------------------*/ private String email; private String subject; private String message; private boolean cancelled; /*------------------------------------------------------------------------------ * * Internal State - UI Components * *----------------------------------------------------------------------------*/ @FXML private Button okButton; @FXML private Button cancelButton; @FXML private TextField emailField; @FXML private TextField subjectField; @FXML private TextArea messageField; @FXML private CheckBox useDefault; /*------------------------------------------------------------------------------ * * UI Initialization and Action Handlers * *----------------------------------------------------------------------------*/ @FXML private void initialize() { cancelled = true; email = subject = message = null; useDefault.selectedProperty().addListener(new ChangeListener<Boolean>() { @Override public void changed(ObservableValue<? extends Boolean> ov, Boolean t, Boolean t1) { emailField.setDisable(t1); subjectField.setDisable(t1); messageField.setDisable(t1); } }); } @FXML private void buttonHandler(ActionEvent event) { Button b = (Button)event.getSource(); if (b == okButton) { cancelled = false; if (useDefault.isSelected()) { email = subject = message = null; } else { email = emailField.getText().trim(); subject = subjectField.getText().trim(); message = messageField.getText(); } } else if (b == cancelButton) { cancelled = true; email = subject = message = null; } dialogStage.close(); } /*============================================================================== * ------- ------- * ------- Public Interface To This Class ------- * ------- ------- *============================================================================*/ public static NotifyOptionsDialog show( String title, Stage stage, String initEmail, String initSubject, String initMsg) { NotifyOptionsDialog nod = VTDialog.<NotifyOptionsDialog>load( NotifyOptionsDialog.class.getResource("NotifyOptionsDialog.fxml"), title, stage); nod.setInitialValues(initEmail, initSubject, initMsg); nod.show(); return nod; } public String getEmail() { return item(email); } public String getSubject() { return item(subject); } public String getMessage() { return item(message); } public boolean cancelled() { return cancelled; } public boolean useDefault() { return useDefault.isSelected(); } /*------------------------------------------------------------------------------ * * Private initialization methods * *----------------------------------------------------------------------------*/ private void setInitialValues(String initEmail, String initSubject, String initMsg) { if (initEmail != null) { email = initEmail.trim(); emailField.setText(email); } if (initSubject != null) { subject = initSubject.trim(); subjectField.setText(subject); } if (initMsg != null) { message = initMsg; messageField.setText(message); } if (initEmail == null && initSubject == null && initMsg == null) { useDefault.setSelected(true); } } /*------------------------------------------------------------------------------ * * PRIVATE - Utility Methods * *----------------------------------------------------------------------------*/ private String item(String item) { if (item == null || item.isEmpty()) return null; return item; } }