Hi Hervé, Many thanks for your advice. Can I ask, did you manage to achieve "Rubber-banding" type XOR Mode Graphics as a way to indicate feedback to mouse movement, or was it not relevant to your app? Does JavaFX have a different philosophy?
Kind regards, Chris On 24 Jul 2013, at 12:07, Hervé Girod wrote: > We switched a vector editor which used swing to JavaFX (using a standard > called ARINC 661), and we have no problems of performance in the Editor even > for thousands of nodes. But I agree that you should not use the obvious > Swing-converted way to do the same thing in JavaFX. > > Hervé > > Sent from my iPhone > > On 24 juil. 2013, at 09:19, Daniel Zwolenski <zon...@gmail.com> wrote: > >> I think the below comment makes it sound more straight forward than it is. >> In building a diagramming tool there is much more to it than just the >> rendering frame rate. >> >> This topic about CAD-like apps and 'performant' highly visual jfx apps in >> general has been raised here and in the forums before, without any clear >> resolution. Chris, the closest we've come to an answer is that it certainly >> isn't straight forward to do and there are many areas where the intuitive >> solution (especially for us ex-swing devs) gives results that are horribly >> unusable. >> >> There *might* be a way to get jfx to do this but there's no clear guidelines >> on how to achieve a 'performant' result. This is why I +1'd your question >> and added areas I feel need clarification from the jfx team. Unfortunately >> I'm not entirely sure they know the answers themselves and it generally >> comes back as a 'you try it and let us know how it goes'. >> >> The last time we raised a similar topic it led to an attempt to build a >> Tower Defender game (led by Richard) in order to 'see how it goes', which >> revealed some pretty significant problems and the game quickly stalled as a >> result. >> >> Having built a prototype floor plan tool in JFX2 before I can say it did not >> go smoothly. The things I've listed as wanting best practices for are all >> areas where I struggled to make jfx achieve decent results in terms of >> responsiveness, animation speed/smoothness, rendering quality and simplicity >> and cleanliness of code. >> >> The one area where I'd say it did hold up well (as far as I could tell) was >> frame rate but that didn't help me at all and I doubt would be much >> consolation for you after you make the massive effort needed to convert your >> app. >> >> >> >> On 24/07/2013, at 4:29 PM, Joseph Andresen <joseph.andre...@oracle.com> >> wrote: >> >>> I believe JavaFx could do cad, first step would be to provide a simple data >>> set and boil it down to the best render paths in JavaFX. >>> >>> As far as I know it shouldn't be any worse than swing with the slowest >>> render paths. >>> >>> -Joe >>> >>> On Jul 23, 2013, at 8: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 >>>>