tornadofx EventBus expande la fila de la tabla usando el object tableview

Fondo:
Supongamos que tengo múltiples fragments de una sola tabla en una vista , cada uno con un rowExpander.

Comportamiento esperado:
Si en un fragment de tabla amplío una fila, otros fragments de la misma fila indexada deberían expandirse. Lo mismo para el queuepso

Mi progreso:
Fragmento de muestra:

tableview(dataset) { column("First Name", Person::firstNameProperty) column("Last Name", Person::lastNameProperty) rowExpander(true) { selectedData.item?.apply { fire(ExpandDataEvent(dataset.indexOf(this))) } column("Mobile Nos.", Person::mobileNumProperty) column("Email Ids", Person::emailIdProperty) } bindSelected(selectedData) subscribe<ExpandDataEvent> { event -> selectionModel.select(event.index) } } 

Clase de evento:

 class ExpandDataEvent(val index: Int) : FXEvent() 

Lo que entiendo por "suscribirme" es que se llama cuando se dispara un evento (actualmente estoy activando el evento cada vez que el usuario expande la fila haciendo doble clic / haciendo clic en el signo más); y dado que la suscripción se coloca dentro de la tabla vista, se llama para todos los fragments de tabla presentes (que es lo que quiero). Pero en el método de suscripción estoy haciendo una selectionModel.select (event.index) que solo selecciona la fila de índice correspondiente. Quiero expandir la fila (preferentemente usando el selectionModel)

Pregunta 2:
¿Es posible eliminar la columna del signo más? Para rowExpand, si he configurado expandOnDoubleClick en true, no quiero la columna del signo más en mi tabla vista.

El constructor rowExpander devuelve la ExpanderColumn real que es básicamente una TableColumn normal. Guarde una reference al expansor para que pueda operarlo más adelante:

 val expander = rowExpander(true) { ... } 

Directamente debajo, ahora puede ocultar la columna de expansión:

 expander.isVisible = false 

Ahora es fácil alternar también el estado expandido de una fila específica del suscriptor del evento:

 subscribe<ExpandDataEvent> { event -> expander.toggleExpanded(event.index) selectionModel.select(event.index) } 

Es posible que desee comprobar que no active el expansor para la vista de tabla que activó el evento, así que considere include el origen del evento en su evento y discriminarlo en el suscriptor.

Investigaré si podemos agregar un parámetro boolean visible a la function del constructor rowExpander para que no tenga que llamar a isVisible manualmente 🙂

  • Tornadofx tableview sincroniza dos tablas
  • ¿Hay alguna manera de vincular una propiedad a appConfig en tornadofx?
  • El text de la label no se actualiza aunque el hilo de la interfaz de usuario parece responder
  • Forma de configurar las properties de PrimaryStage o Scene en TornadoFX
  • Cómo cambiar la vista en TornadoFx
  • TornadoFX - eliminar elemento con ContextMenu hacer clic derecho
  • TornadoFX: el text de la label no se actualiza
  • Cómo mostrar datos usando la vista de tree de TornadoFX
  • TornadoFX envuelve las classs de dominio en ItemViewModel
  • Dibujando líneas desde ViewModel TornadoFX
  • Columnas de tabla dinámica