package com.scrivenvar.options;
import com.scrivenvar.Messages;
import com.scrivenvar.Services;
import com.scrivenvar.service.Options;
import com.scrivenvar.service.events.impl.ButtonOrderPane;
import java.util.prefs.Preferences;
import javafx.event.ActionEvent;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Dialog;
import javafx.scene.control.DialogPane;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.stage.Window;
public class OptionsDialog extends Dialog<Void> {
private final Options options = Services.load( Options.class );
public OptionsDialog( Window owner ) {
setTitle( Messages.get( "OptionsDialog.title" ) );
initOwner( owner );
initComponents();
tabPane.getStyleClass().add( TabPane.STYLE_CLASS_FLOATING );
setDialogPane( new ButtonOrderPane() );
final DialogPane dialogPane = getDialogPane();
dialogPane.setContent( tabPane );
dialogPane.getButtonTypes().addAll( ButtonType.OK, ButtonType.CANCEL );
dialogPane.lookupButton( ButtonType.OK ).addEventHandler( ActionEvent.ACTION, e -> {
save();
e.consume();
} );
load();
int tabIndex = getState().getInt( "lastOptionsTab", -1 );
if( tabIndex > 0 ) {
tabPane.getSelectionModel().select( tabIndex );
}
setOnHidden( e -> {
getState().putInt( "lastOptionsTab", tabPane.getSelectionModel().getSelectedIndex() );
} );
}
private Options getOptions() {
return options;
}
private Preferences getState() {
return getOptions().getState();
}
private void load() {
generalOptionsPane.load();
}
private void save() {
generalOptionsPane.save();
Services.load( Options.class ).save();
}
private void initComponents() {
tabPane = new TabPane();
generalTab = new Tab();
generalOptionsPane = new GeneralOptionsPane();
{
tabPane.setTabClosingPolicy( TabPane.TabClosingPolicy.UNAVAILABLE );
{
generalTab.setText( Messages.get( "OptionsDialog.generalTab.text" ) );
generalTab.setContent( generalOptionsPane );
}
tabPane.getTabs().addAll( generalTab );
}
}
private TabPane tabPane;
private Tab generalTab;
private GeneralOptionsPane generalOptionsPane;
}