Feature #269

Updated by Sebastien Jacquot over 5 years ago

The specifications are now defined in the Wiki : [[https://groupes.renater.fr/wiki/txm-info/public/specs_graphics_rendering_and_display]]

Here are the lists of features we need to implement in the Graphics rendering module. Most of the lists need to be expanded and/or clarified. Please feel free to complete them by adding your own notes.

h1. Common features

h2. Major structure changes

- elements and sub-elements of the plots need to have semantic data (other than graphical data). It means we need to get, in the RCP, some extra data for the plots elements from the R objects (eg. labels or frequencies for rows or columns points in CA)
- elements and sub-elements of the plots need to interact with the RCP system (listeners, components [menus, etc.], etc.). It means we need a way to link plots graphical elements with SWT extra data components of RCP editors

h2. End-user common features

- scaling and not only zooming: scaling the plots without scaling the texts and/or the elements (points, shapes, etc., TBD: depends of the target plots)
(TBD: asynchronous system for some specific modules, eg. change R query and plot output during a CA, scaling in a cartographic way)
- create a toolbar for the SWT graphical component with buttons for features (TBD: buttons/commands list )
* zoom in
* zoom out
* pan arrows
- bind controls to "standard" OS portable controls

- define OS portable shortcuts for the features (mouse and keyboard), first proposals:
* camera translation
** middle mouse button
** arrow keys
* scaling
** mouse wheel
** CTRL +, CTRL -

- be able to navigate between Graphics module plots elements and SWT components such as tables, etc. in both directions
- export plot in files (TBD; file formats)
* SVG (surely needed for having interactive plots in TXM Web Portal)
* at least one raster format (PNG ?)

h2. Common preferences

- TBD: define the level of each preference (Toolbox or RCP)
- create user preferences page for selecting background colors, elements and texts foreground colors, texts font and size and others data
TBD: others data:
* zoom/scale speed factor
* pan speed factor
* user shortcuts ? (maybe useless)

p>. right

Here are the lists of specific features by module:

h1. Implementing the RCP Graphics module in way to keep the TXM Toolbox compatible with the TXM WEB Portal project

I'm still doing research on a way to do that and I'll post conclusions/questions here asap.
For now, I think the system will contain 3 groups:
- Graphics module selection
- Extern library for create charts in Java2D
- SWT component for draw the Java2D components and interact with them

First proposals:
- create a Graphics module selection system in the Toolbox (redefine the current RDevice selection system and mix it with the new selection system)
1) override this selection system in RCP and propose a SWT component-oriented module (JFreeChart usage is retained for now, still need some research about it)
2) ???

h1. Getting interactive plots in TXM WEB Portal

The SVG solution could have been a good way to do that, if we could inject semantic in the files. Both RSVGDevice don't write semantic data in the SVG files (other than graphical semantic data, so useless for us).

First proposals:
1) use the RCP SWT Graphics component as Applet (should be relatively easy to implement but that would screw up the portal flexibility by introducing Java plugin need)
2) use SVG as central format and inject semantic data in the file, then:
a) inject Javascript and DOM events directly in the SVG DOM (cons: that means we need to create links between the SVG DOM and GWT JS components)
b) develop/convert the RCP SWT component to GWT in way it can act with SVG files

- about the SVG files we could:
1) move JFreeChart to the Toolbox level and find a way to use it through command line for exporting SVG files
2) keep using RSVGDevice and let JFreeChart at the RCP level