class ConnectionUrlPropertyEditor<T extends DbmsProperty> implements PropertyEditor<T> {

    public @Inject Injector injector;
    
    @Override
    public Stream<Item> fieldsFor(T document) {
        final DbmsHandlerComponent dbmsHandler = injector.getOrThrow(DbmsHandlerComponent.class);
        
        return Stream.of(
            new DefaultTextAreaItem(
                "Connection URL", 
                defaultConnectionUrlProperty(document, dbmsHandler), 
                document.connectionUrlProperty(), 
                "The connection URL that should be used when establishing " +
                "connection with the database. If this is set to Auto, the " +
                "DbmsType will generate one."
            )
        );
    }
    
    protected StringBinding defaultConnectionUrlProperty(T document, DbmsHandlerComponent dbmsHandlerComponent) {<FILL_FUNCTION_BODY>}
}

        return Bindings.createStringBinding(() -> 
            DatabaseUtil.findDbmsType(dbmsHandlerComponent, document).getConnectionUrlGenerator().from(document), 
                document.typeNameProperty(),
                document.ipAddressProperty(),
                document.portProperty(),
                document.usernameProperty()
        );
    
<no_super_class>