Thursday, July 12, 2012

Java: Safe javafx code in swing application



Example

        media.statusProperty().addListener(new javafx.beans.value.ChangeListener<PlayState>(){

            @Override
            public void changed(ObservableValue<? extends PlayState> ov, PlayState oldValue, final PlayState newValue) {
                SwingUtilities.invokeLater(new Runnable() {
                    public void run() {
                        if(newValue == PlayState.STOPPED)
                            cameraConfig.setEnableControls(true);
                        else
                            cameraConfig.setEnableControls(false);

                        switch(newValue) {
                            case PLAYING:
                                playButton.setIcon(iconPause);
                                stopButton.setEnabled(true);
                                playButton.setEnabled(true);
                                recordButton.setEnabled(false);
                                slider.setEnabled(true);
                                previewCheckBox.setEnabled(false);
                                previewCheckBox.setSelected(false);
                                break;
                            case RECORDING:
                                playButton.setIcon(iconPlay);
                                stopButton.setEnabled(true);
                                playButton.setEnabled(false);
                                recordButton.setEnabled(false);
                                slider.setEnabled(false);
                                previewCheckBox.setEnabled(false);
                                break;
                            case PAUSED:
                                playButton.setIcon(iconPlay);
                                stopButton.setEnabled(true);
                                playButton.setEnabled(true);
                                recordButton.setEnabled(false);
                                slider.setEnabled(true);
                                break;
                            case STOPPED:
                                resetControls();
                                break;
                            default:    // should never happened
                                break;
                        }
                    }
                });
            }
           
        });



No comments:

Post a Comment