Hi Martin,

Big thank you for your message, and for sharing your code.  I took a look and 
it could definitely be a great starting point for me.  The content we need to 
display is very simple, every cell just needs to display text, occasionally 
with an expand/collapse button on the left.  So I think the only two features 
we rely on from TableView I'd need to add support for are varying cell widths, 
and nested column headers, both of which I imagine will require a lot of 
patience, but I'm definitely going to spend some time looking into it and will 
let you know how it goes.

Ed




On 25/01/2020, 15:52, "Martin Desruisseaux" <martin.desruisse...@geomatys.com> 
wrote:

    Hello Ed
    
    > At the center of our product is an extension of the TableView control 
that's responsible for displaying all the output from our pivot reporting 
engine.  Depending on how the user configures the layout of their pivot 
reports, sometimes there are a legitimately large number of columns (300+).  
When that happens, while the horizontal scrolling remains perfectly smooth, the 
vertical scrolling degrades to a somewhat juddery state and CPU usage spikes.
    >
    > (…snip…)
    > So, my questions to the list are:
    >
    >    1.  Has anyone seen this issue raised anywhere else?
    >    2.  If yes, has anyone taken a look into it yet, and possibly even 
found a fix?
    >    3.  If no to both of the above, shall I submit it through the correct 
channels then have a crack at fixing myself?  Or is the issue likely to be a 
much deeper and far-reaching one than I?m anticipating?
    
    By coincidence I'm developing right now a GridView for displaying large 
    grids (millions of rows and columns) using JavaFX VirtualFlow. It seems 
    to work smoothly up to now. That GridView is specifically designed for 
    rendering the sample values of large java.awt.image.RenderedImage using 
    its tile management capacity (tiles loaded in background thread when 
    first requested). It is not my goal to create a general purpose GridView 
    at this time. However it should be possible to remove the 
    RenderedImage-specific code and replace it by another model with not too 
    much effort. The code is at [1].
    
    About improving TableView for managing thousands of columns, I believe 
    that one difficulty is that TableView depends extensively on 
    TableColumn, which provides a lot of capability (resizing, sorting, 
    reordering, hiding, etc.) at the cost of more complexity that may be 
    difficult to optimize. By contrast, above-cited GridView has a lot of 
    restrictions (all cells of the same size, no sorting, no reordering, 
    etc.) for easier implementation.
    
         Martin
    
    [1] 
https://github.com/apache/sis/tree/geoapi-4.0/application/sis-javafx/src/main/java/org/apache/sis/gui/coverage
    

Reply via email to