Example usage for javafx.stage Stage onCloseRequestProperty

List of usage examples for javafx.stage Stage onCloseRequestProperty

Introduction

In this page you can find the example usage for javafx.stage Stage onCloseRequestProperty.

Prototype

public final ObjectProperty<EventHandler<WindowEvent>> onCloseRequestProperty() 

Source Link

Usage

From source file:io.uploader.drive.DriveUploader.java

@Override
public void start(final Stage stage) throws Exception {

    Preconditions.checkNotNull(stage);//from  ww  w.j  a  v  a 2s .  com

    try {
        stage.onCloseRequestProperty().set(new EventHandler<WindowEvent>() {
            public void handle(WindowEvent e) {
                logger.info("Close request");

                if (Response.NO == MessageDialogs.showConfirmDialog(stage,
                        "Are you sure you want to close the application?", "Confirmation")) {
                    e.consume();
                    return;
                }
                appEvent.exit();
                Platform.exit();

                // TODO: 
                // Investigate why when we shutdown the authentication service
                // before the end of the process, the app hangs after closing the main window...
                // http://stackoverflow.com/questions/4425350/how-to-terminate-a-thread-blocking-on-socket-io-operation-instantly
                //if (client == null) {
                System.exit(0);
                //}
            }
        });

        final List<Integer> logoSizeList = Arrays.asList(16, 32, 64, 128, 256, 512);
        final String logoNameBase = "DriveUploader";
        final String logoNameExt = ".png";
        for (Integer size : logoSizeList) {
            StringBuilder logoName = new StringBuilder();
            logoName.append(logoNameBase);
            logoName.append(size);
            logoName.append(logoNameExt);
            Image logo = new Image(getClass().getResourceAsStream("/images/" + logoName));
            stage.getIcons().add(logo);
        }

        //final Browser browser = new SimpleBrowser (new Stage (), null) ;
        final Browser browser = new SimpleBrowserImpl(stage, null);
        authorize(browser, new Callback<Credential>() {

            @Override
            public void onSuccess(Credential result) {
                logger.info("Received credential");

                client = new Drive.Builder(httpTransport, JSON_FACTORY, result)
                        .setApplicationName(APPLICATION_NAME).build();

                Configuration.INSTANCE.setCredential(result);

                //browser.close () ;
                try {
                    MainWindow mainWindow = new MainWindow(client, stage, appEvent, Configuration.INSTANCE);
                    mainWindow.show();
                } catch (IOException e) {
                    logger.error("Error occurred while creating the main window", e);
                    Platform.exit();
                }
            }

            @Override
            public void onFailure(Throwable cause) {
                logger.error("Error occurred while authenticating", cause);
                Platform.exit();
            }
        });
    } catch (Exception e) {
        Platform.exit();
        throw e;
    }
}

From source file:org.jevis.jeconfig.JEConfig.java

/**
 * Build an new JEConfig Login and main frame/stage
 *
 * @param primaryStage/*from w ww.  j  a  v  a 2s.  com*/
 */
//AITBilal - Login  
private void initGUI(Stage primaryStage) {
    Scene scene;
    LoginGlass login = new LoginGlass(primaryStage);

    AnchorPane jeconfigRoot = new AnchorPane();
    AnchorPane.setTopAnchor(jeconfigRoot, 0.0);
    AnchorPane.setRightAnchor(jeconfigRoot, 0.0);
    AnchorPane.setLeftAnchor(jeconfigRoot, 0.0);
    AnchorPane.setBottomAnchor(jeconfigRoot, 0.0);
    //        jeconfigRoot.setStyle("-fx-background-color: white;");
    //        jeconfigRoot.getChildren().setAll(new Label("sodfhsdhdsofhdshdsfdshfjf"));

    Screen screen = Screen.getPrimary();
    Rectangle2D bounds = screen.getVisualBounds();

    // @AITBilal - Main frame elemente wird aufgerufen nachdem man sich eingeloggt hat.
    login.getLoginStatus().addListener(new ChangeListener<Boolean>() {

        @Override
        public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
            if (newValue) {
                System.out.println("after request");
                _mainDS = login.getDataSource();
                ds = _mainDS;

                Platform.runLater(new Runnable() {
                    @Override
                    public void run() {
                        FadeTransition ft = new FadeTransition(Duration.millis(1500), login);
                        ft.setFromValue(1.0);
                        ft.setToValue(0);
                        ft.setCycleCount(1);
                        ft.play();
                    }
                });

                JEConfig.PROGRAMM_INFO.setJEVisAPI(ds.getInfo());
                JEConfig.PROGRAMM_INFO.addLibrary(org.jevis.commons.application.Info.INFO);
                JEConfig.PROGRAMM_INFO.addLibrary(org.jevis.application.Info.INFO);

                preLodedClasses = login.getAllClasses();
                preLodedRootObjects = login.getRootObjects();

                PluginManager pMan = new PluginManager(ds);
                //@AITBilal - Toolbar fr save, newB, delete, sep1, form
                GlobalToolBar toolbar = new GlobalToolBar(pMan);
                pMan.addPluginsByUserSetting(null);

                //                    StackPane root = new StackPane();
                //                    root.setId("mainpane");
                BorderPane border = new BorderPane();
                VBox vbox = new VBox();
                vbox.getChildren().addAll(new TopMenu(), toolbar.ToolBarFactory());
                border.setTop(vbox);
                //@AITBilal - Alle Plugins Inhalt fr JEConfig (Resources... | System | Attribute)
                border.setCenter(pMan.getView());

                Statusbar statusBar = new Statusbar(ds);

                border.setBottom(statusBar);

                System.out.println("show welcome");

                //Disable GUI is StatusBar note an disconnect
                border.disableProperty().bind(statusBar.connectedProperty.not());

                Platform.runLater(new Runnable() {
                    @Override
                    public void run() {
                        AnchorPane.setTopAnchor(border, 0.0);
                        AnchorPane.setRightAnchor(border, 0.0);
                        AnchorPane.setLeftAnchor(border, 0.0);
                        AnchorPane.setBottomAnchor(border, 0.0);

                        jeconfigRoot.getChildren().setAll(border);
                        //                            try {
                        //            WelcomePage welcome = new WelcomePage(primaryStage, new URI("http://coffee-project.eu/"));
                        //            WelcomePage welcome = new WelcomePage(primaryStage, new URI("http://openjevis.org/projects/openjevis/wiki/JEConfig3#JEConfig-Version-3"));

                        //                            Task<Void> showWelcome = new Task<Void>() {
                        //                                @Override
                        //                                protected Void call() throws Exception {
                        try {
                            WelcomePage welcome = new WelcomePage(primaryStage, _config.getWelcomeURL());
                        } catch (URISyntaxException ex) {
                            Logger.getLogger(JEConfig.class.getName()).log(Level.SEVERE, null, ex);
                        } catch (MalformedURLException ex) {
                            Logger.getLogger(JEConfig.class.getName()).log(Level.SEVERE, null, ex);
                        }
                        //                                    return null;
                        //                                }
                        //                            };
                        //                            new Thread(showWelcome).start();

                        //                                WelcomePage welcome = new WelcomePage(primaryStage, _config.getWelcomeURL());
                        //                            } catch (URISyntaxException ex) {
                        //                                Logger.getLogger(JEConfig.class.getName()).log(Level.SEVERE, null, ex);
                        //                            } catch (MalformedURLException ex) {
                        //                                Logger.getLogger(JEConfig.class.getName()).log(Level.SEVERE, null, ex);
                        //                            }
                    }
                });
            }

        }
    });

    AnchorPane.setTopAnchor(login, 0.0);
    AnchorPane.setRightAnchor(login, 0.0);
    AnchorPane.setLeftAnchor(login, 0.0);
    AnchorPane.setBottomAnchor(login, 0.0);
    //@AITBilal - Login Dialog
    scene = new Scene(jeconfigRoot, bounds.getWidth(), bounds.getHeight());
    scene.getStylesheets().add("/styles/Styles.css");
    primaryStage.getIcons().add(getImage("1393354629_Config-Tools.png"));
    primaryStage.setTitle("JEConfig");
    primaryStage.setScene(scene);
    maximize(primaryStage);
    primaryStage.show();

    //        Platform.runLater(new Runnable() {
    //            @Override
    //            public void run() {
    //@AITBilal - Inhalt bzw. die Elemente von LoginDialog
    jeconfigRoot.getChildren().setAll(login);
    //            }
    //        });

    primaryStage.onCloseRequestProperty().addListener(new ChangeListener<EventHandler<WindowEvent>>() {

        @Override
        public void changed(ObservableValue<? extends EventHandler<WindowEvent>> ov,
                EventHandler<WindowEvent> t, EventHandler<WindowEvent> t1) {
            try {
                System.out.println("Disconnect");
                ds.disconnect();
            } catch (JEVisException ex) {
                Logger.getLogger(JEConfig.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    });
}

From source file:org.jevis.jeconfig.JEConfig.java

/**
 * Build an new JEConfig Login and main frame/stage
 *
 * @param primaryStage//w w  w .j a  va2s  .c om
 */
//@AITBilal - Dieses Method wird nirgendwo aufgerufen!
private void buildGUI(Stage primaryStage) {

    try {

        LoginDialog loginD = new LoginDialog();
        //            ds = loginD.showSQL(primaryStage, _config.get<LoginIcon());

        ds = loginD.showSQL(primaryStage);//Default
        //            ds = loginD.showSQL(primaryStage, _config.getLoginIcon(), _config.getEnabledSSL(), _config.getShowServer(), _config.getDefaultServer());//KAUST
        //            ds = loginD.showSQL(primaryStage, _config.getLoginIcon(), _config.getEnabledSSL(), _config.getShowServer(), _config.getDefaultServer());//Coffee

        //            while (ds == null) {
        //                Thread.sleep(100);
        //            }
        //            if (ds == null) {
        //                System.exit(0);
        //            }
        //            System.exit(1);
        //            ds = new JEVisDataSourceSQL("192.168.2.55", "3306", "jevis", "jevis", "jevistest", "Sys Admin", "jevis");
        //            ds.connect("Sys Admin", "jevis");
    } catch (Exception ex) {
        Logger.getLogger(JEConfig.class.getName()).log(Level.SEVERE, null, ex);
        ExceptionDialog dia = new ExceptionDialog();
        dia.show(primaryStage, "Error", "Could not connect to Server", ex, PROGRAMM_INFO);
    }

    _mainDS = ds;

    JEConfig.PROGRAMM_INFO.setJEVisAPI(ds.getInfo());
    JEConfig.PROGRAMM_INFO.addLibrary(org.jevis.commons.application.Info.INFO);
    JEConfig.PROGRAMM_INFO.addLibrary(org.jevis.application.Info.INFO);

    PluginManager pMan = new PluginManager(ds);
    GlobalToolBar toolbar = new GlobalToolBar(pMan);
    pMan.addPluginsByUserSetting(null);

    StackPane root = new StackPane();
    root.setId("mainpane");

    BorderPane border = new BorderPane();
    VBox vbox = new VBox();
    vbox.getChildren().addAll(new TopMenu(), toolbar.ToolBarFactory());
    border.setTop(vbox);
    border.setCenter(pMan.getView());

    Statusbar statusBar = new Statusbar(ds);

    border.setBottom(statusBar);

    root.getChildren().addAll(border);

    Scene scene = new Scene(root, 300, 250);
    scene.getStylesheets().add("/styles/Styles.css");
    primaryStage.getIcons().add(getImage("1393354629_Config-Tools.png"));
    primaryStage.setTitle("JEConfig");
    primaryStage.setScene(scene);
    maximize(primaryStage);
    primaryStage.show();

    try {
        //            WelcomePage welcome = new WelcomePage(primaryStage, new URI("http://coffee-project.eu/"));
        //            WelcomePage welcome = new WelcomePage(primaryStage, new URI("http://openjevis.org/projects/openjevis/wiki/JEConfig3#JEConfig-Version-3"));
        WelcomePage welcome = new WelcomePage(primaryStage, _config.getWelcomeURL());

    } catch (URISyntaxException ex) {
        Logger.getLogger(JEConfig.class.getName()).log(Level.SEVERE, null, ex);
    } catch (MalformedURLException ex) {
        Logger.getLogger(JEConfig.class.getName()).log(Level.SEVERE, null, ex);
    }

    //Disable GUI is StatusBar note an disconnect
    root.disableProperty().bind(statusBar.connectedProperty.not());

    primaryStage.onCloseRequestProperty().addListener(new ChangeListener<EventHandler<WindowEvent>>() {

        @Override
        public void changed(ObservableValue<? extends EventHandler<WindowEvent>> ov,
                EventHandler<WindowEvent> t, EventHandler<WindowEvent> t1) {
            try {
                System.out.println("Disconnect");
                ds.disconnect();
            } catch (JEVisException ex) {
                Logger.getLogger(JEConfig.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    });

}