That's a demo I'd love to see.


On Jul 23, 2013, at 4:21 PM, Daniel Zwolenski <zon...@gmail.com> wrote:

> +1
> 
> More specifically I would like to know the official recommended best 
> practices for implementing a CAD style app in JFX.
> 
> - How best to represent large numbers of complex shapes efficiently, and when 
> to add shapes to the scene (add all and let jfx clip, or manually work out 
> what should be showing, etc)
> - How best to handle font scaling and image scaling when rendered in a zoomed 
> in/out viewport
> - How best to do panning and zooming with dynamic level of detail
> - How best to do the top level display in terms of panes vs regions vs 
> canvas, vs whatever, how to manage overlays and layers (sharing same 
> coordinate space, etc)
> - How best to do picking, mouse overs, dragging across the 'display'
> - How best to do infinite or dynamic  bounds so you can add and move shapes 
> and the scrolling adjusts accordingly. 
> 
> A JFX diagramming app would make a very powerful demo app in my mind. 
> 
> 
> 
> 
> 
> On 24/07/2013, at 1:47 AM, Chris Gay <chris.gay5...@gmail.com> wrote:
> 
>> Hello all.
>> 
>> Please could someone advise if it is even feasible for me to consider 
>> re-factoring the following Swing application, so that it becomes a JavaFX 
>> one. From trying to read about JavaFX, I get the feeling that Oracle never 
>> intended Java FX for the purpose I need.
>> 
>> I have a large Java Swing desktop CAD application which makes heavy use of 
>> the Java 2D API, and concurrency. It is a Menu Bar driven application, with 
>> a Toolbar for Tools, and a few buttons, but 99% of the user activity 
>> concerns selecting and manipulating vector graphical objects in a 
>> traditional manner using one Tool at a time (think Inkscape or LibreOffice 
>> Drawing apps). The application has multiple drawings open at the same time 
>> (but only one is visible), and each Drawing contains it's own Drawing and 
>> Processing threads (in addition to sharing the Main and Event Threads), 
>> which keeps the Event Thread lively. Each Drawing contains an ArrayList, 
>> acting as a Display List of all graphical objects, and each graphical object 
>> can be a tree structure. In many cases I use simple iteration instead of 
>> Iterators, simply for speed, and to avoid garbage. The graphical objects are 
>> lightweight, in that they do not carry references to events and handlers. 
>> All they carry is their basic geometric data and properties, a bounding box 
>> which they can lend as Read Only, and a boolean flag to indicate selection, 
>> which means there can be millions of the objects, with a minimum memory 
>> footprint. To support them, there are many hundreds of methods, which the 
>> tools interact with. There can be multiple Drawing Windows active on a 
>> single drawing, where each Window is backed up by an offscreen image, which 
>> handles the zoom and sliding buffer behaviour for fast scrolling, to allow 
>> rapid bit-blt's to the actual window. Lastly, the user manipulates the 
>> Drawing (Display List), using one of many Tools, where the active Tool 
>> receives events from the event queue, and then manipulates selected and/or 
>> unselected graphical objects, by using XOR Mode graphics onto the offscreen 
>> buffer, generally using callbacks.
>> 
>> The system is fast and very responsive on large data sets, but what I do not 
>> know is whether JavaFX will help me make a better implementation, or whether 
>> it will fight me all the way. With JavaFX claiming hardware acceleration, I 
>> do not understand whether it depends on transferring the very large data 
>> sets into graphics hardware to render, and what happens if the hardware 
>> cannot cope. So far, I have found little in the way of discussions that help 
>> me get a mental picture of how JavaFX is intended to work. Should I stick 
>> with Swing?
>> 
>> Regards,
>> 
>> Chris
>> 

Reply via email to