Feature #269

Updated by Sebastien Jacquot almost 7 years ago

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 extra-data for the plots elements from the R objects object (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 while a CA, CA scaling like 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 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. FA

h2. Drawing area

- be able to highlight FA results table rows or columns corresponding to FA plane points selection (simple click, rectangle, lasso [or via contextual menu ? see #250 too]) ?])
- be able to define a color for contributive points
- be able to define a color for points linked to other points (TBD: neighbors, correlation ?)
- define a method to see the covered labels: be able to move the labels with the mouse ?
- filtering on cos2
- filtering on contributions as cos2 ?
- drawing confidence ellipses
- be able to modify original data within the FA plot (TBD: does that mean changing the lexical table through the plot ?)
- geodesic view (I think it should be another component/editor sharing some data with the CA editor)

h3. Rollover

- extra data tooltips on mouse over on elements and sub-elements (TBD)
* Row points
** label
** frequency
* Column points
** part name
** number of entities in part

h3. Contextual menus

- TBD: CA-oriented CA oriented features list
- create link to others commands (TBD: commands list)
* Index
* Concordances
* Cooccurrences

h2. SWT components

h3. Tables

- be able to highlight a point or move camera to a FA point in the drawing area by interact with the tables data (TBD: contextual menus, keyboard shortcuts, etc. ?)
- be able to highlight some FA plane points from an algorithm as "all individuals specific to certain variable value beyond a certain threshold"

h2. Preferences

- label position relative to its point (TBD: up, down, left, right ?)
- rows points
* color
* size
* labels size

- columns points
* color
* size
* labels size

- transparency of label or point (should be in toolbar FA editor rather than the preferences page ?)

h2. Misc

TBD Serge:
- pouvoir sélectionner des individus ou variables pour les passer en illustratifs
- la bonne représentation d'un point dans un plan (individu ou variable)
- la contribution d'un point à un axe (individu)
(la contribution peut aussi être intéressante pour les variables)
- la spécificité d'un point par rapport à une variable
- nombre de points total affichés (individu ou variable)

h1. Dimensions

h2. Drawing area

h3. Rollover

- extra-data tooltips on mouse over parts label or plot bars ?

h3. Contextual menus

- TBD: Dimensions oriented features list
- create link to others commands (TBD: commands list)

h1. CAH


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

I'm still doing some research on a way to do that this 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 using the RCP SWT Graphics component module 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