package com.scrivenvar.service.events.impl;
import com.scrivenvar.service.events.Notification;
import com.scrivenvar.service.events.Notifier;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.stage.Window;
import java.io.File;
import java.nio.file.Paths;
import java.util.Observable;
import static com.scrivenvar.Constants.APP_TITLE;
import static com.scrivenvar.Constants.STATUS_BAR_OK;
import static com.scrivenvar.Messages.get;
import static javafx.scene.control.Alert.AlertType.CONFIRMATION;
import static javafx.scene.control.Alert.AlertType.ERROR;
public final class DefaultNotifier extends Observable implements Notifier {
private final static String OK = get( STATUS_BAR_OK, "OK" );
@Override
public void notify( final String message ) {
if( message != null && !message.isBlank() ) {
setChanged();
notifyObservers( message );
}
}
@Override
public void clear() {
notify( OK );
}
@Override
public Notification createNotification(
final String title,
final String message,
final Object... args ) {
return new DefaultNotification( title, message, args );
}
private Alert createAlertDialog(
final Window parent,
final AlertType alertType,
final Notification message ) {
final Alert alert = new Alert( alertType );
alert.setDialogPane( new ButtonOrderPane() );
alert.setTitle( message.getTitle() );
alert.setHeaderText( null );
alert.setContentText( message.getContent() );
alert.initOwner( parent );
return alert;
}
@Override
public Alert createConfirmation( final Window parent,
final Notification message ) {
final Alert alert = createAlertDialog( parent, CONFIRMATION, message );
alert.getButtonTypes().setAll( YES, NO, CANCEL );
return alert;
}
@Override
public Alert createError( final Window parent, final Notification message ) {
return createAlertDialog( parent, ERROR, message );
}
@Override
public File getLogPath() {
return Paths.get(
System.getProperty( "java.io.tmpdir" ), APP_TITLE + ".log" ).toFile();
}
}