package com.scrivenvar.dialogs;
import static com.scrivenvar.Messages.get;
import com.scrivenvar.controls.BrowseFileButton;
import com.scrivenvar.controls.EscapeTextField;
import java.nio.file.Path;
import javafx.application.Platform;
import javafx.beans.binding.Bindings;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.scene.control.ButtonBar.ButtonData;
import static javafx.scene.control.ButtonType.OK;
import javafx.scene.control.DialogPane;
import javafx.scene.control.Label;
import javafx.stage.FileChooser.ExtensionFilter;
import javafx.stage.Window;
import org.tbee.javafx.scene.layout.fxml.MigPane;
public class ImageDialog extends AbstractDialog<String> {
private final StringProperty image = new SimpleStringProperty();
public ImageDialog( final Window owner, final Path basePath ) {
super(owner, "Dialog.image.title" );
final DialogPane dialogPane = getDialogPane();
dialogPane.setContent( pane );
linkBrowseFileButton.setBasePath( basePath );
linkBrowseFileButton.addExtensionFilter( new ExtensionFilter( get( "Dialog.image.chooser.imagesFilter" ), "*.png", "*.gif", "*.jpg" ) );
linkBrowseFileButton.urlProperty().bindBidirectional( urlField.escapedTextProperty() );
dialogPane.lookupButton( OK ).disableProperty().bind(
urlField.escapedTextProperty().isEmpty()
.or( textField.escapedTextProperty().isEmpty() ) );
image.bind( Bindings.when( titleField.escapedTextProperty().isNotEmpty() )
.then( Bindings.format( "", textField.escapedTextProperty(), urlField.escapedTextProperty(), titleField.escapedTextProperty() ) )
.otherwise( Bindings.format( "", textField.escapedTextProperty(), urlField.escapedTextProperty() ) ) );
previewField.textProperty().bind( image );
setResultConverter( dialogButton -> {
ButtonData data = (dialogButton != null) ? dialogButton.getButtonData() : null;
return (data == ButtonData.OK_DONE) ? image.get() : null;
} );
Platform.runLater( () -> {
urlField.requestFocus();
if( urlField.getText().startsWith( "http://" ) ) {
urlField.selectRange( "http://".length(), urlField.getLength() );
}
} );
}
@Override
protected void initComponents() {
pane = new MigPane();
Label urlLabel = new Label();
urlField = new EscapeTextField();
linkBrowseFileButton = new BrowseFileButton();
Label textLabel = new Label();
textField = new EscapeTextField();
Label titleLabel = new Label();
titleField = new EscapeTextField();
Label previewLabel = new Label();
previewField = new Label();
{
pane.setCols( "[shrink 0,fill][300,grow,fill][fill]" );
pane.setRows( "[][][][]" );
urlLabel.setText( get( "Dialog.image.urlLabel.text" ) );
pane.add( urlLabel, "cell 0 0" );
urlField.setEscapeCharacters( "()" );
urlField.setText( "http://yourlink.com" );
urlField.setPromptText( "http://yourlink.com" );
pane.add( urlField, "cell 1 0" );
pane.add( linkBrowseFileButton, "cell 2 0" );
textLabel.setText( get( "Dialog.image.textLabel.text" ) );
pane.add( textLabel, "cell 0 1" );
textField.setEscapeCharacters( "[]" );
pane.add( textField, "cell 1 1 2 1" );
titleLabel.setText( get( "Dialog.image.titleLabel.text" ) );
pane.add( titleLabel, "cell 0 2" );
pane.add( titleField, "cell 1 2 2 1" );
previewLabel.setText( get( "Dialog.image.previewLabel.text" ) );
pane.add( previewLabel, "cell 0 3" );
pane.add( previewField, "cell 1 3 2 1" );
}
}
private MigPane pane;
private EscapeTextField urlField;
private BrowseFileButton linkBrowseFileButton;
private EscapeTextField textField;
private EscapeTextField titleField;
private Label previewField;
}