From: <de...@us...> - 2012-11-02 07:13:39
|
Revision: 7845 http://fudaa.svn.sourceforge.net/fudaa/?rev=7845&view=rev Author: deniger Date: 2012-11-02 07:13:31 +0000 (Fri, 02 Nov 2012) Log Message: ----------- Modified Paths: -------------- trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGCourbe.java trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGFillePanel.java trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGInteractionSuivi.java trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZCalqueAffichageDonneesAbstract.java trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliUIProperties.java trunk/framework/ebli-common/src/main/resources/org/fudaa/ebli/ressource/ebli_en.fr_txt Added Paths: ----------- trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGInteractionInfoOnCourbe.java trunk/framework/ebli-common/src/main/resources/org/fudaa/ebli/ressource/tooltip.png Modified: trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGCourbe.java =================================================================== --- trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGCourbe.java 2012-11-02 06:58:05 UTC (rev 7844) +++ trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGCourbe.java 2012-11-02 07:13:31 UTC (rev 7845) @@ -52,6 +52,7 @@ import org.fudaa.ebli.trace.TraceLigneModel; import com.vividsolutions.jts.geom.Envelope; +import gnu.trove.TDoubleArrayList; import java.awt.Point; import java.awt.Rectangle; import java.util.HashMap; @@ -790,6 +791,12 @@ } } + /** + * Attention, cela suppose que les x sont strictement croissants: + * + * @param _x + * @return + */ public int getNearestIdx(final double _x) { int low = 0; int high = model_.getNbValues() - 1; @@ -805,7 +812,23 @@ } } return -(low + 1); // value not found. + } + public TIntArrayList getSegmentIdxContaining(final double x) { + TIntArrayList res = new TIntArrayList(); + for (int i = 0; i < model_.getNbValues() - 1; i++) { + double min = getModel().getX(i); + double max = getModel().getX(i + 1); + if (min > max) { + double tmp = max; + max = min; + min = tmp; + } + if (x >= min && x <= max) { + res.add(i); + } + } + return res; } public BConfigurableInterface getSingleConfigureInterface() { @@ -870,6 +893,58 @@ return yup - (xup - _x) / (xup - xlow) * (yup - ylow); } + public TDoubleArrayList interpolPointsOnEcran(final double _x, final EGRepere _rep) { + TDoubleArrayList res = new TDoubleArrayList(); + if (model_.getNbValues() == 0) { + return res; + } + final EGAxeVertical vert = getAxeY(); + final TIntArrayList idxs = getSegmentIdxContaining(_x); + if (idxs.isEmpty()) { + return res; + } + int nb = idxs.size(); + for (int i = 0; i < nb; i++) { + int seg = idxs.get(i); + double xmin = model_.getX(seg); + double ymin = model_.getY(seg); + double xmax = model_.getX(seg + 1); + double ymax = model_.getY(seg + 1); + double y = ymax - (xmax - _x) / (xmax - xmin) * (ymax - ymin); + y = _rep.getYEcran(y, vert); + res.add(y); + } + return res; + } + public TDoubleArrayList interpolPoints(final double _x, final EGRepere _rep) { + TDoubleArrayList res = new TDoubleArrayList(); + if (model_.getNbValues() == 0) { + return res; + } + final EGAxeVertical vert = getAxeY(); + final TIntArrayList idxs = getSegmentIdxContaining(_x); + if (idxs.isEmpty()) { + return res; + } + int nb = idxs.size(); + for (int i = 0; i < nb; i++) { + int seg = idxs.get(i); + double xmin = model_.getX(seg); + double ymin = model_.getY(seg); + double xmax = model_.getX(seg + 1); + double ymax = model_.getY(seg + 1); + double y = ymax - (xmax - _x) / (xmax - xmin) * (ymax - ymin); + res.add(y); + } + return res; + } + + /** + * + * @param _x + * @param _rep + * @return attention, cela suppose que les x sont strictement croissants. + */ public double interpolOnEcran(final double _x, final EGRepere _rep) { if (model_.getNbValues() == 0) { return 0d; Modified: trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGFillePanel.java =================================================================== --- trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGFillePanel.java 2012-11-02 06:58:05 UTC (rev 7844) +++ trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGFillePanel.java 2012-11-02 07:13:31 UTC (rev 7845) @@ -179,6 +179,13 @@ r.add(a); actionForGroup.add(a); + final EGInteractionInfoOnCourbe infoOnCourbe = new EGInteractionInfoOnCourbe(vue_.graphe_); + vue_.addInteractiveCmp(infoOnCourbe); + a = new EGActionInteraction(EbliLib.getS("Afficher le nom de la courbe sous la souris"), EbliResource.EBLI.getIcon("tooltip"), "INFO", infoOnCourbe); + a.putValue(Action.SHORT_DESCRIPTION, EbliLib.getS("Afficher le nom de la courbe sous la souris")); + a.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke('n')); + r.add(a); + final EGInteractionSuivi suivi = new EGInteractionSuivi(vue_.getGraphe()); vue_.addInteractiveCmp(suivi); a = new EGActionInteraction(EbliLib.getS("suivi"), EbliResource.EBLI.getIcon("pointeur"), "SUIVI", suivi); Copied: trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGInteractionInfoOnCourbe.java (from rev 7771, trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGInteractionSuiviAllOrdonnees.java) =================================================================== --- trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGInteractionInfoOnCourbe.java (rev 0) +++ trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGInteractionInfoOnCourbe.java 2012-11-02 07:13:31 UTC (rev 7845) @@ -0,0 +1,162 @@ +/* + * @creation 23 juin 2004 + * @modification $Date: 2006-09-19 14:55:53 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.ebli.courbe; + +import gnu.trove.TDoubleArrayList; +import java.awt.Color; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.MouseInfo; +import java.awt.Point; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionListener; + +import javax.swing.SwingConstants; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import org.apache.commons.lang.StringUtils; + +import org.fudaa.ebli.trace.TraceBox; + +/** + * @author Fred Deniger + * @version $Id: EGInteractionSuivi.java,v 1.13 2006-09-19 14:55:53 deniger Exp $ + */ +public class EGInteractionInfoOnCourbe extends EGInteractiveComponent implements MouseListener, + MouseMotionListener { + + EGGraphe target_; + TraceBox tb_; + String info; + + @Override + public String getDescription() { + return ""; + } +// int selectedPtIdx_; + + /** + * @param _a la cible pour le suivi. + */ + public EGInteractionInfoOnCourbe(final EGGraphe _a) { + target_ = _a; + target_.addMouseListener(this); + target_.addMouseMotionListener(this); + } + int deltaInPixel = 5; + + private String updateWithMouse(final int _x, final int _y) { + if (!isActive()) { + return null; + } + StringBuilder names = new StringBuilder(); + double xreel = target_.getTransformer().getXReel(_x); + if (target_.getTransformer().getXAxe().isDiscret()) { + xreel = (int) xreel; + } + + for (int i = 0; i < target_.getModel().getCourbes().length; i++) { + final EGCourbe ci = target_.getModel().getCourbes()[i]; + if (ci.getAxeY() == null) { + continue; + } + TDoubleArrayList yPressed = ci.interpolPointsOnEcran(xreel, target_.getTransformer()); + int nb = yPressed.size(); + for (int j = 0; j < nb; j++) { + if (Math.abs(yPressed.get(j) - _y) <= deltaInPixel) { + if (names.length() > 0) { + names.append('\n'); + } + names.append(ci.getTitle()); + + } + } + } + return names.toString(); + } + + @Override + protected void paintComponent(final Graphics _g) { + if (isActive() && StringUtils.isNotBlank(info)) { + if (tb_ == null) { + tb_ = new TraceBox(); + tb_.setVPosition(SwingConstants.BOTTOM); + tb_.setHPosition(SwingConstants.CENTER); + tb_.setColorFond(UIManager.getColor("ToolTip.background")); + tb_.setColorText(UIManager.getColor("ToolTip.foreground")); + } + Point location = MouseInfo.getPointerInfo().getLocation(); + SwingUtilities.convertPointFromScreen(location, this); + tb_.paintBox((Graphics2D) _g, location.x, location.y, info); + } + } + + @Override + public void mouseDragged(final MouseEvent e) { + updateWhenMouseMoved(e); + } + + @Override + public void mouseEntered(final MouseEvent e) { + updateWhenMouseMoved(e); + } + + @Override + public void mouseClicked(MouseEvent e) { + updateWhenMouseMoved(e); + } + + @Override + public void mouseExited(final MouseEvent e) { + info = null; + repaint(); + } + + @Override + public void mouseMoved(final MouseEvent e) { + updateWhenMouseMoved(e); + } + + @Override + public void mousePressed(final MouseEvent e) { + } + + @Override + public void mouseReleased(final MouseEvent e) { + } + + /** + * Methode appelee a chque activation + */ + @Override + public void setActive(final boolean _b) { + super.setActive(_b); + if (!_b) { + if (target_ != null) { + target_.repaint(); + + + + + } + + } + } + + private void updateWhenMouseMoved(final MouseEvent e) { + if (!isActive()) { + return; + } + if (e.isConsumed()) { + return; + } + info = updateWithMouse(e.getX(), e.getY()); + repaint(); + } +} Modified: trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGInteractionSuivi.java =================================================================== --- trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGInteractionSuivi.java 2012-11-02 06:58:05 UTC (rev 7844) +++ trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGInteractionSuivi.java 2012-11-02 07:13:31 UTC (rev 7845) @@ -7,6 +7,7 @@ */ package org.fudaa.ebli.courbe; +import gnu.trove.TDoubleArrayList; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; @@ -28,28 +29,19 @@ public class EGInteractionSuivi extends EGInteractiveComponent implements MouseListener, MouseMotionListener { boolean dessine_; - TraceIcon selected_; - TraceIcon normal_; - EGGraphe target_; - TraceBox tb_; - Color traceColor_; - EGAxeVertical v_; - double xreel_; @Override public String getDescription() { return EbliLib.getS("suivi"); } - - double yreel_; - + double[] yreel_; int selectedPtIdx_; /** @@ -60,9 +52,8 @@ target_.addMouseListener(this); target_.addMouseMotionListener(this); } + TDoubleArrayList yPressed_; - int yPressed_; - private void updateWithMouse(final int _x, final int _y) { if (!isActive()) { return; @@ -83,11 +74,12 @@ v_ = ci.getAxeY(); if (selectedPtIdx_ >= 0) { xreel_ = ci.getModel().getX(selectedPtIdx_); - yreel_ = ci.getModel().getY(selectedPtIdx_); + yreel_ = new double[]{ci.getModel().getY(selectedPtIdx_)}; } else { - yreel_ = ci.interpol(xreel_); + TDoubleArrayList interpol = ci.interpolPoints(xreel_, target_.getTransformer()); + yreel_ = interpol.toNativeArray(); if (target_.getTransformer().getXAxe().isLogarithmique()) { - yPressed_ = (int) ci.interpolOnEcran(xreel_, target_.getTransformer()); + yPressed_ = ci.interpolPointsOnEcran(xreel_, target_.getTransformer()); } } @@ -105,6 +97,7 @@ @Override protected void paintComponent(final Graphics _g) { if (isActive() && dessine_ && (v_ != null)) { + final Color old = _g.getColor(); if (tb_ == null) { tb_ = new TraceBox(); } @@ -115,47 +108,45 @@ return; } final int x = r.getXEcran(xreel_); - final int y = r.getYEcran(yreel_, v_); - if (isExactPtSelect()) { - getSelectedIcone().paintIconCentre(_g, x, y); - } else { - getNormalIcone().paintIconCentre(_g, x, y); - } - boolean logAndEcart = false; - if (r.getXAxe().isLogarithmique() && Math.abs(yPressed_ - y) > 3) { - logAndEcart = true; - getNormalIcone().paintIconCentre(_g, x, yPressed_); - } - final Color old = _g.getColor(); - _g.setColor(getTraceColor()); - final int mx = r.getMaxEcranY() + 2; - _g.drawLine(x, r.getMinEcranY(), x, mx); + for (int i = 0; i < yreel_.length; i++) { + final int y = r.getYEcran(yreel_[i], v_); + if (isExactPtSelect()) { + getSelectedIcone().paintIconCentre(_g, x, y); + } else { + getNormalIcone().paintIconCentre(_g, x, y); + } + boolean logAndEcart = false; + if (r.getXAxe().isLogarithmique() && Math.abs(yPressed_.get(i) - y) > 3) { + logAndEcart = true; + getNormalIcone().paintIconCentre(_g, x, yPressed_.get(i)); + } + _g.setColor(getTraceColor()); + final int mx = r.getMaxEcranY() + 2; + _g.drawLine(x, r.getMinEcranY(), x, mx); - final int xmin = v_.isDroite() ? r.getMinEcranX() : r.getMinEcranX() - target_.getOffSet(v_) - 3; - final int xmax = v_.isDroite() ? r.getMaxEcranX() + target_.getOffSet(v_) + 3 : r.getMaxEcranX(); - _g.drawLine(xmin, y, xmax, y); - if (logAndEcart) { - _g.drawLine(xmin, yPressed_, xmax, yPressed_); + final int xmin = v_.isDroite() ? r.getMinEcranX() : r.getMinEcranX() - target_.getOffSet(v_) - 3; + final int xmax = v_.isDroite() ? r.getMaxEcranX() + target_.getOffSet(v_) + 3 : r.getMaxEcranX(); + _g.drawLine(xmin, y, xmax, y); + if (logAndEcart) { + _g.drawLine(xmin, (int) yPressed_.get(i), xmax, (int) yPressed_.get(i)); + } + tb_.setColorText(r.getXAxe().getLineColor()); + tb_.getTraceLigne().setCouleur(r.getXAxe().getLineColor()); + tb_.setHPosition(SwingConstants.CENTER); + tb_.setVPosition(SwingConstants.TOP); + final String s = r.getXAxe().getStringInterpolatedAffiche(xreel_); + tb_.paintBox((Graphics2D) _g, x, mx, s); + tb_.setColorText(v_.getLineColor()); + tb_.getTraceLigne().setCouleur(v_.getLineColor()); + tb_.setHPosition(v_.isDroite() ? SwingConstants.LEFT : SwingConstants.RIGHT); + tb_.setVPosition(SwingConstants.CENTER); + tb_.paintBox((Graphics2D) _g, xmax, y, v_.getStringInterpolatedAffiche(yreel_[i])); + if (logAndEcart) { + tb_.paintBox((Graphics2D) _g, x + 5, (int) yPressed_.get(i), v_.getStringInterpolatedAffiche(r.getYReel( + (int) yPressed_.get(i), v_))); + } } - tb_.setColorText(r.getXAxe().getLineColor()); - tb_.getTraceLigne().setCouleur(r.getXAxe().getLineColor()); - tb_.setHPosition(SwingConstants.CENTER); - tb_.setVPosition(SwingConstants.TOP); - final String s = r.getXAxe().getStringInterpolatedAffiche(xreel_); - tb_.paintBox((Graphics2D) _g, x, mx, s); - tb_.setColorText(v_.getLineColor()); - tb_.getTraceLigne().setCouleur(v_.getLineColor()); - tb_.setHPosition(v_.isDroite() ? SwingConstants.LEFT : SwingConstants.RIGHT); - tb_.setVPosition(SwingConstants.CENTER); - //tb_.paintBox((Graphics2D) _g, v_.isDroite() ? xmax : xmin, y, v_.getStringInterpolatedAffiche(yreel_)); - tb_.paintBox((Graphics2D) _g,xmax , y, v_.getStringInterpolatedAffiche(yreel_)); - if (logAndEcart) { - tb_.paintBox((Graphics2D) _g, x + 5, yPressed_, v_.getStringInterpolatedAffiche(r.getYReel( - yPressed_, v_))); - } - final Font oldF = _g.getFont(); _g.setColor(old); - _g.setFont(oldF); } } @@ -207,19 +198,24 @@ } @Override - public void mouseEntered(final MouseEvent _e) {} + public void mouseEntered(final MouseEvent _e) { + } @Override - public void mouseExited(final MouseEvent _e) {} + public void mouseExited(final MouseEvent _e) { + } @Override - public void mouseMoved(final MouseEvent _e) {} + public void mouseMoved(final MouseEvent _e) { + } @Override - public void mousePressed(final MouseEvent _e) {} + public void mousePressed(final MouseEvent _e) { + } @Override - public void mouseReleased(final MouseEvent _e) {} + public void mouseReleased(final MouseEvent _e) { + } @Override public void setActive(final boolean _b) { @@ -231,5 +227,4 @@ } } } - } \ No newline at end of file Modified: trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZCalqueAffichageDonneesAbstract.java =================================================================== --- trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZCalqueAffichageDonneesAbstract.java 2012-11-02 06:58:05 UTC (rev 7844) +++ trunk/framework/ebli-2d/src/main/java/org/fudaa/ebli/calque/ZCalqueAffichageDonneesAbstract.java 2012-11-02 07:13:31 UTC (rev 7845) @@ -1,6 +1,8 @@ /** - * @creation 24 oct. 2003 @modification $Date: 2008-05-13 12:10:36 $ @license GNU General Public License 2 @copyright (c)1998-2001 - * CETMEF 2 bd Gambetta F-60231 Compiegne + * @creation 24 oct. 2003 + * @modification $Date: 2008-05-13 12:10:36 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne */ package org.fudaa.ebli.calque; @@ -67,10 +69,9 @@ double hT = _envGeneral.getDeltaY(); if (wT <= 0) { wT = hT; + } else if (hT <= 0) { + hT = wT; } - else if(hT<=0){ - hT=wT; - } final double coef = 0.1; // premier test: le zoom ne doit pas etre inferieur a 10% du domaine total // sinon l'utilisateur ne sait pas ou il est @@ -101,14 +102,14 @@ */ protected TraceLigneModel ligneModel_; /** - * Le modele pour le trac\xE9 des surfaces. Si null, le selecteur de surface n'est pas repr\xE9sent\xE9 dans la configuration du calque, - * le trac\xE9 de surface ne se fait pas. + * Le modele pour le trac\xE9 des surfaces. Si null, le selecteur de surface n'est pas repr\xE9sent\xE9 dans la configuration du calque, le trac\xE9 de surface + * ne se fait pas. */ protected TraceSurfaceModel surfModel_; protected int alpha_ = 255; /** - * Permet de savoir si la palette de couleur doit etre utilisee ou non. Jusqu'a maintenant on testait paletteCouleur_: si null - * pas de palette et sinon palette. Or cette methode ne permet pas de sauvegarder l'etat de la palette. + * Permet de savoir si la palette de couleur doit etre utilisee ou non. Jusqu'a maintenant on testait paletteCouleur_: si null pas de palette et + * sinon palette. Or cette methode ne permet pas de sauvegarder l'etat de la palette. */ protected boolean isPaletteCouleurUsed_; protected boolean painted_ = true; @@ -152,7 +153,7 @@ } public void paintAllInImage(final Graphics2D _g, final GrMorphisme _versEcran, final GrMorphisme _versReel, - final GrBoite _clipReel) { + final GrBoite _clipReel) { if (isVisible()) { paintDonnees(_g, _versEcran, _versReel, _clipReel); } @@ -229,8 +230,8 @@ } /** - * Permet d'ajuster le zoom (la boite _r) en fonction du modele: la boite est au moins egale a 10% du domaine total et elle est - * ensuite agrandie de 10% pour tout voir. + * Permet d'ajuster le zoom (la boite _r) en fonction du modele: la boite est au moins egale a 10% du domaine total et elle est ensuite agrandie de + * 10% pour tout voir. * * @param _r la boite de zoom a modifier */ @@ -309,7 +310,7 @@ } public void paintTransient(final Graphics2D _g, final GrMorphisme _versEcran, final GrMorphisme _versReel, - final GrBoite _clipReel) { + final GrBoite _clipReel) { } public CtuluListSelectionInterface getLayerSelection() { @@ -607,8 +608,8 @@ } /** - * @return true si la l\xE9gende ne contient que des donn\xE9es concerant la palette de couleur. dans ce cas, la legende est enlevee - * si aucune palette n'est utilis\xE9e. + * @return true si la l\xE9gende ne contient que des donn\xE9es concerant la palette de couleur. dans ce cas, la legende est enlevee si aucune palette + * n'est utilis\xE9e. */ public boolean legendContainsOnlyPalette() { return true; @@ -623,17 +624,22 @@ painted_ = _b; } + @Override public void setPaletteCouleurPlages(final BPalettePlageInterface _newPlage) { - if (paletteCouleur_ == null) { - if (isDiscrete()) { - paletteCouleur_ = new BPalettePlageDiscret(new Object[0]); - paletteCouleur_.setPlages(_newPlage.getPlages()); + if (_newPlage == null) { + paletteCouleur_=null; + } else { + if (paletteCouleur_ == null) { + if (isDiscrete()) { + paletteCouleur_ = new BPalettePlageDiscret(new Object[0]); + paletteCouleur_.setPlages(_newPlage.getPlages()); + } else { + paletteCouleur_ = new BPalettePlage(); + paletteCouleur_.initFrom(_newPlage); + } } else { - paletteCouleur_ = new BPalettePlage(); paletteCouleur_.initFrom(_newPlage); } - } else { - paletteCouleur_.initFrom(_newPlage); } isPaletteCouleurUsed_ = (paletteCouleur_ != null) && paletteCouleur_.getNbPlages() > 0; construitLegende(); Modified: trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliUIProperties.java =================================================================== --- trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliUIProperties.java 2012-11-02 06:58:05 UTC (rev 7844) +++ trunk/framework/ebli-common/src/main/java/org/fudaa/ebli/commun/EbliUIProperties.java 2012-11-02 07:13:31 UTC (rev 7845) @@ -11,6 +11,7 @@ */ package org.fudaa.ebli.commun; +import com.thoughtworks.xstream.annotations.XStreamAlias; import java.util.HashMap; import java.util.Map; @@ -26,7 +27,9 @@ */ public final class EbliUIProperties { + @XStreamAlias("Name") private String name_; + @XStreamAlias("Values") private final Map values_; public EbliUIProperties() { Modified: trunk/framework/ebli-common/src/main/resources/org/fudaa/ebli/ressource/ebli_en.fr_txt =================================================================== --- trunk/framework/ebli-common/src/main/resources/org/fudaa/ebli/ressource/ebli_en.fr_txt 2012-11-02 06:58:05 UTC (rev 7844) +++ trunk/framework/ebli-common/src/main/resources/org/fudaa/ebli/ressource/ebli_en.fr_txt 2012-11-02 07:13:31 UTC (rev 7845) @@ -852,4 +852,5 @@ Configurer les courbes=Configure curves Ajouter des points=Add points Afficher les labels des points=Display points label -Labels verticaux=Vertical labels \ No newline at end of file +Labels verticaux=Vertical labels +Afficher le nom de la courbe sous la souris=Display the name of the curve pointed by the mouse \ No newline at end of file Added: trunk/framework/ebli-common/src/main/resources/org/fudaa/ebli/ressource/tooltip.png =================================================================== (Binary files differ) Property changes on: trunk/framework/ebli-common/src/main/resources/org/fudaa/ebli/ressource/tooltip.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |