| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -5,10 +5,14 @@ import com.fasterxml.jackson.core.JsonProcessingException;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import com.fasterxml.jackson.dataformat.xml.XmlMapper;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import java.io.File;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import java.io.IOException;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import java.util.Optional;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import java.time.format.DateTimeFormatter;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import java.time.LocalDate;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import java.time.LocalTime;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import java.util.Optional;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import javafx.beans.property.BooleanProperty;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import javafx.beans.property.IntegerProperty;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import javafx.beans.property.ObjectProperty;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import javafx.beans.property.SimpleBooleanProperty;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import javafx.beans.property.SimpleIntegerProperty;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import javafx.beans.property.SimpleObjectProperty;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import javafx.beans.property.SimpleStringProperty;
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -17,6 +21,7 @@ import javafx.collections.FXCollections;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import javafx.collections.ObservableList;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import javafx.event.Event;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import javafx.fxml.FXML;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import javafx.scene.control.CheckBox;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import javafx.scene.control.DatePicker;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import javafx.scene.control.ListView;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import javafx.scene.control.RadioButton;
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -25,12 +30,15 @@ import javafx.scene.control.SpinnerValueFactory;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import javafx.scene.control.TextField;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import javafx.scene.control.TextInputDialog;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import javafx.scene.control.ToggleGroup;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import javafx.scene.input.KeyEvent;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import javafx.scene.input.KeyCode;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import javafx.scene.Node;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				import javafx.stage.Stage;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				public class MainSettingsController {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    private IntegerProperty digitsPerGroup = new SimpleIntegerProperty();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    private StringProperty externalProgramCommand = new SimpleStringProperty();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    private BooleanProperty manageScheduleExternally = new SimpleBooleanProperty();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    private IntegerProperty messageLength = new SimpleIntegerProperty();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    private ObjectProperty<StationSettings.MessageMethod> messageMethod = new SimpleObjectProperty<>();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    private ObjectProperty<StationSettings.MessagePeriod> messagePeriod = new SimpleObjectProperty<>();
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -39,6 +47,7 @@ public class MainSettingsController {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    private StringProperty stationAddress = new SimpleStringProperty();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    private StringProperty stationName = new SimpleStringProperty();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    private ObjectProperty<LocalDate> scheduleStartDate = new SimpleObjectProperty<>();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    private StringProperty scheduleStartTime = new SimpleStringProperty();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    private StringProperty username = new SimpleStringProperty();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    @FXML
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -56,6 +65,9 @@ public class MainSettingsController {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    @FXML
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    private TextField externalProgramCommandField;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    @FXML
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    private CheckBox manageScheduleExternallyCheckBox;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    @FXML
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    private Spinner<Integer> messageLengthSpinner;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -77,6 +89,9 @@ public class MainSettingsController {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    @FXML
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    private RadioButton scpRadioButton;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    @FXML
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    private TextField scheduleStartTimeField;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    @FXML
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    private RadioButton externalProgramRadioButton;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -100,10 +115,12 @@ public class MainSettingsController {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    @FXML
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    private void initialize() {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        externalProgramCommandField.textProperty().bindBidirectional(externalProgramCommand);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        manageScheduleExternallyCheckBox.selectedProperty().bindBidirectional(manageScheduleExternally);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        stationNameField.textProperty().bindBidirectional(stationName);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        stationAddressField.textProperty().bindBidirectional(stationAddress);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        passwordField.textProperty().bindBidirectional(password);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        scheduleStartDatePicker.valueProperty().bindBidirectional(scheduleStartDate);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        scheduleStartTimeField.textProperty().bindBidirectional(scheduleStartTime);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        usernameField.textProperty().bindBidirectional(username);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        digitsPerGroupSpinner.setValueFactory(new SpinnerValueFactory.IntegerSpinnerValueFactory(1, 100, 1));
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -112,6 +129,63 @@ public class MainSettingsController {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        digitsPerGroupSpinner.getValueFactory().valueProperty().bindBidirectional(digitsPerGroup.asObject());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        messageLengthSpinner.getValueFactory().valueProperty().bindBidirectional(messageLength.asObject());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        scheduleStartTimeField.addEventFilter(KeyEvent.ANY, event -> {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            int cursorPosition = scheduleStartTimeField.getCaretPosition();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            String character = event.getCharacter();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            KeyCode code = event.getCode();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            String str = event.getText();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            // Consume the event to block the default behavior
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if (!(code == KeyCode.LEFT ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                  code == KeyCode.RIGHT ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                  code == KeyCode.UP ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                  code == KeyCode.DOWN ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                  code == KeyCode.HOME ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                  code == KeyCode.END ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                  code == KeyCode.PAGE_UP ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                  code == KeyCode.PAGE_DOWN)) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                event.consume();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if (event.getEventType() == KeyEvent.KEY_PRESSED &&
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                (code == KeyCode.DIGIT0 ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                 code == KeyCode.DIGIT1 ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                 code == KeyCode.DIGIT2 ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                 code == KeyCode.DIGIT3 ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                 code == KeyCode.DIGIT4 ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                 code == KeyCode.DIGIT5 ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                 code == KeyCode.DIGIT6 ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                 code == KeyCode.DIGIT7 ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                 code == KeyCode.DIGIT8 ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                 code == KeyCode.DIGIT9)) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                 String editedTime = scheduleStartTimeField.getText();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                if (cursorPosition < scheduleStartTimeField.getLength()) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    char currentChar = scheduleStartTimeField.getText().charAt(cursorPosition);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    if (currentChar == ':') {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        cursorPosition++;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    editedTime = editedTime.substring(0, cursorPosition) + str + editedTime.substring(cursorPosition + 1);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                // Validate the time format
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                String[] timeParts = editedTime.split(":");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                if (timeParts.length == 3) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    int hours = Integer.parseInt(timeParts[0]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    int minutes = Integer.parseInt(timeParts[1]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    int seconds = Integer.parseInt(timeParts[2]);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    if (!(hours < 0 || hours > 23 || minutes < 0 || minutes > 59 || seconds < 0 || seconds > 59)) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        scheduleStartTimeField.setText(editedTime);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        scheduleStartTimeField.positionCaret(cursorPosition + 1);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        });
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        messageMethodGroup.selectedToggleProperty().addListener((observable, oldValue, newValue) -> {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if (newValue == ftpRadioButton) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                messageMethod.set(StationSettings.MessageMethod.FTP);
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -198,6 +272,7 @@ public class MainSettingsController {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        settings.setAddress(stationAddress.get());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        settings.setDigitsPerGroup(digitsPerGroup.get());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        settings.setExternalProgramCommand(externalProgramCommand.get());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        settings.setManageScheduleExternally(manageScheduleExternally.get());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        settings.setMessageLength(messageLength.get());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        settings.setMessageMethod(messageMethod.get());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        settings.setMessagePeriod(messagePeriod.get());
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -208,6 +283,14 @@ public class MainSettingsController {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        settings.setScheduleStartDate(scheduleStartDatePicker.getValue());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        settings.setUsername(username.get());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        try {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            LocalTime startTime = LocalTime.parse(scheduleStartTimeField.getText(), formatter);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            settings.setScheduleStartTime(startTime);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        } catch (Exception ex) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            ex.printStackTrace();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        Node node = (Node) e.getSource();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        Stage stage = (Stage) node.getScene().getWindow();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        stage.setUserData(true);
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -230,6 +313,7 @@ public class MainSettingsController {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        stationName.set(settings.getName());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        digitsPerGroup.set(settings.getDigitsPerGroup());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        externalProgramCommand.set(settings.getExternalProgramCommand());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        manageScheduleExternally.set(settings.getManageScheduleExternally());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        messageLength.set(settings.getMessageLength());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        messageMethod.set(settings.getMessageMethod());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        messagePeriod.set(settings.getMessagePeriod());
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -238,5 +322,11 @@ public class MainSettingsController {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        System.out.println(settings.getPrefixes());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        prefixListView.getItems().addAll(settings.getPrefixes());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        scheduleStartDate.set(settings.getScheduleStartDate());
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        LocalTime startTime = settings.getScheduleStartTime();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if (startTime == null) {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            startTime = LocalTime.now();
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        scheduleStartTime.set(startTime.format(formatter));
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
	
		
			
				
					
					| 
						 
							
							
							
						 
					 | 
				
			
			 | 
			 | 
			
				 
 |