Cómo actualizar un TreeView en JavaFX con datos de usuarios

Estoy rogando con JavaFx, y me di cuenta de que necesito ayuda para actualizar un TreeView con algunos TreeItems en tiempo de ejecución, y debería actualizarse en la ventana principal.

Aquí puede ver una captura de pantalla de las dos ventanas:

La más grande es la ventana principal y llama (haciendo clic en Archivo >> Nuevo proyecto), nueva más pequeña. En la ventana más pequeña, podría obtener la cadena que se escribe y luego se hace clic en el botón Intro.

El problema es: ¿Cómo puedo mostrar los nuevos elementos creados por la "nueva ventana del proyecto" (la ventana más pequeña en la imagen) en TreeView en la ventana principal (la más grande)? La vista de árbol está en el lado izquierdo de la ventana principal.

Espero haber sido claro. Aquí está el código de los controladores de estas ventanas:

package application;

import java.net.URL;

import java.util.ResourceBundle;

import javafx.beans.value.ChangeListener;
import javafx.event.ActionEvent;
import javafx.event.Event;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.MenuItem;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeItem.TreeModificationEvent;
import javafx.scene.control.TreeView;
import javafx.stage.Modality;
import javafx.stage.Stage;

/**
 * this class handles with the main window of our LDF Tool
 * @author Vinicius
 * @version 1.0
 */
public class MainController implements Initializable{
    @FXML
    TreeView<String> treeView;
    @FXML
    MenuItem newProject;

    private boolean flag = false;
    private NewProjectWindowController npwc;

    @Override
    public void initialize(URL location, ResourceBundle resources) {

    }


    @FXML
    public void newProjectClicked(ActionEvent event){
        try{
            flag = true;
            FXMLLoader fxml = new FXMLLoader(getClass().getResource("newProjectWindow.fxml"));
            Parent root = (Parent) fxml.load();         
            Stage newWindow = new Stage();
            newWindow.setTitle("New Project");
            newWindow.initModality(Modality.APPLICATION_MODAL);
            newWindow.setScene(new Scene(root));
            newWindow.show();


        } catch (Exception e) {
            System.out.println("caiu na exceção");
        }
    }

    /**
     * to this method, choose the project's name as argument, and it will be put on the
     * tree with the archives that should be created together
     * @param projectName
     */
    public void doTree(String projectName){     
        TreeItem<String> root = new TreeItem<>("projectName");
        root.setExpanded(true);     
        //TreeItem<String> folha1 = new TreeItem<String>(projectName + " arquivo 1");
        //root.getChildren().add(folha1);
        treeView.setRoot(root);     

    }

La otra clase de controlador:

package application;

import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.stage.Stage;

public class NewProjectWindowController implements Initializable{

    @Override
    public void initialize(URL location, ResourceBundle resources) {

    }

    @FXML
    Button cancelButton;
    @FXML
    Button enterButton;
    @FXML
    TextField textInput;
    private String input;

    public String getInput(){
        return this.input;
    }

    @FXML
    public void cancelButtonClicked(ActionEvent event) {
        Stage window = (Stage) this.cancelButton.getParent().getScene().getWindow();
        window.close();
    }

    @FXML
    public void enterButtonClicked(ActionEvent event) {
        input = hasString();
        Stage window = (Stage) this.enterButton.getParent().getScene().getWindow();
        window.close();
    }

    private String hasString(){
        if (this.textInput.getText().isEmpty())
            return null;
        return this.textInput.getText();
    }

}

Por favor, suponga que mapeé todo bien en el archivo FXML. Gracias

Respuestas a la pregunta(1)

Su respuesta a la pregunta