|
From: <de...@us...> - 2012-10-05 16:00:57
|
Revision: 7715
http://fudaa.svn.sourceforge.net/fudaa/?rev=7715&view=rev
Author: deniger
Date: 2012-10-05 16:00:50 +0000 (Fri, 05 Oct 2012)
Log Message:
-----------
am?\195?\169lioration des courbes: labels verticaux, banni?\195?\168res...
Modified Paths:
--------------
trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGGraphe.java
Modified: trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGGraphe.java
===================================================================
--- trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGGraphe.java 2012-10-05 15:13:11 UTC (rev 7714)
+++ trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGGraphe.java 2012-10-05 16:00:50 UTC (rev 7715)
@@ -44,6 +44,7 @@
import com.memoire.fu.FuLog;
import java.awt.MouseInfo;
import java.awt.PointerInfo;
+import java.util.Collections;
import javax.swing.SwingUtilities;
import org.fudaa.ctulu.CtuluCommandManager;
@@ -64,20 +65,20 @@
*/
public class EGGraphe extends JComponent implements ComponentListener, EGGrapheModelListener, RepereMouseKeyTarget,
CtuluImageProducer {
-
+
public static final Font DEFAULT_FONT = new Font("SansSerif", Font.PLAIN, 10);
/**
* Liste qui contient les parametres d'origines des titres, doit etre relanc\xE9 dans le cas ou l'on ajoute de nouveau une legende.
*/
HashMap<EGCourbe, String> listeTitlesOrigins_ = new HashMap<EGCourbe, String>();
-
+
private static void zoomIn(final EGAxe _axe, final double _sCenter, final double _zoomFactor) {
final double newEcart = _axe.getEcart() * _zoomFactor / 2;
final double newMax = _sCenter + newEcart;
final double newMin = _sCenter - newEcart;
_axe.setBounds(newMin, newMax);
}
-
+
public static final String getAutorRestorePref() {
return "ebli.courbe.auto.restore";
}
@@ -94,7 +95,7 @@
protected EGRepere transformer_;
protected CtuluRange xRange_;
EGHorizontalBanner horizontalBanner;
-
+
public EGGraphe(final EGGrapheModel _m) {
addComponentListener(this);
setOpaque(true);
@@ -107,10 +108,10 @@
cmd_ = new CtuluCommandManager();
repereController_ = new RepereMouseKeyController(this);
setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
-
+
initTitlesOrigins();
}
-
+
private void ajusteXAxe() {
final EGAxeHorizontal hAxe = getTransformer().getXAxe();
final double xmin = getXMin();
@@ -128,7 +129,7 @@
}
maxXRangeCompute();
}
-
+
private void computeXRange() {
if (xRange_ != null) {
return;
@@ -159,21 +160,21 @@
xRange_.max_ = 0;
}
}
-
+
private double getZoomCoef() {
return 0.8;
}
-
+
public EGHorizontalBanner getHorizontalBanner() {
return horizontalBanner;
}
-
+
public void setHorizontalBanner(EGHorizontalBanner horizontalBanner) {
this.horizontalBanner = horizontalBanner;
}
-
+
private void maxXRangeCompute() {
-
+
if (this.xRangeSpecByUser_ != null) {
final EGAxeHorizontal h = transformer_.getXAxe();
double min = h.getMinimum();
@@ -188,7 +189,7 @@
h.setBounds(min, max);
}
}
-
+
}
/**
@@ -199,19 +200,19 @@
axe.setBounds(getXMin(), getXMax());
maxXRangeCompute();
}
-
+
private void restoreAxeY(final EGAxeVertical _axe, final CtuluRange _r) {
_axe.setBounds(_r.min_, _r.max_);
}
-
+
private void translateX(final double _factor) {
translation((int) (transformer_.getWSansMarges() * _factor), 0);
}
-
+
private void translateY(final double _factor) {
translation(0, (int) (transformer_.getHSansMarges() * _factor));
}
-
+
protected void setZoomAdaptedFor(final EGObject _g) {
if (_g == null) {
return;
@@ -221,66 +222,66 @@
h.setBounds(x.min_, x.max_);
setYZoomAdaptedFor(_g);
axeUpdated();
-
+
}
-
+
protected void setYZoomAdaptedFor(final EGObject _g) {
CtuluRange x;
final EGAxeVertical v = _g.getAxeY();
x = _g.getYRange();
v.setBounds(x.min_, x.max_);
}
-
+
protected void updateRepere() {
transformer_.setXAxe(getModel().getAxeX());
}
-
+
public void addModelListener(final EGGrapheModelListener _l) {
getModel().addModelListener(_l);
}
-
+
@Override
public synchronized void addPropertyChangeListener(final String _propertyName, final PropertyChangeListener _listener) {
super.addPropertyChangeListener(_propertyName, _listener);
}
-
+
@Override
public void axeAspectChanged(final EGAxe _c) {
fullRepaint();
}
-
+
@Override
public void axeContentChanged(final EGAxe _c) {
fullRepaint();
}
-
+
public void axeUpdated() {
maxXRangeCompute();
fullRepaint();
fireAxeRepereChanged(null);
}
-
+
@Override
public void componentHidden(final ComponentEvent _e) {
}
-
+
@Override
public void componentMoved(final ComponentEvent _e) {
}
-
+
@Override
public void componentResized(final ComponentEvent _e) {
fullRepaint();
}
-
+
@Override
public void componentShown(final ComponentEvent _e) {
}
-
+
public EGMarges computeMarges() {
return computeMarges((Graphics2D) getGraphics());
}
-
+
public EGMarges computeMarges(Graphics2D _gr) {
final EGMarges m = new EGMarges();
final EGAxeHorizontal xaxe = transformer_.getXAxe();
@@ -309,7 +310,7 @@
}
if (axe.isVisible() && !axeSet.contains(axe)) {
axeSet.add(axe);
-
+
if (axe.isDroite()) {
m.ajouteMargesDroite(axe.getWidthNeeded(_gr));
// on recupere le dernier pour enlever la partie qui sera dessin\xE9 dans le graphe
@@ -349,7 +350,7 @@
}
return m;
}
-
+
@Override
public void courbeAspectChanged(final EGObject _c, final boolean _visibil) {
if (_visibil) {
@@ -362,18 +363,18 @@
if (!vert.isRangeInit()) {
vert.ajusteFor(_c);
}
-
+
}
}
fullRepaint();
}
-
+
@Override
public void courbeContentChanged(final EGObject _c, final boolean _mustRestore) {
// pour l'instant les deux methodes sont identiques
structureChanged(_mustRestore);
}
-
+
public void dessine(final Graphics _g, final int _w, final int _h, final boolean _fill) {
if (!isVisible()) {
return;
@@ -387,7 +388,7 @@
}
Font f;
final Font oldF = _g.getFont();
-
+
f = getFont();
g2d.setFont(f);
g2d.setColor(Color.black);
@@ -448,12 +449,12 @@
if (horizontalBanner != null) {
horizontalBanner.dessine(g2d, transformer_);
}
-
+
g2d.setColor(old);
g2d.setClip(oldClip);
g2d.setFont(oldF);
}
-
+
public void fillWithAxeXInfo(final BPaletteInfo.InfoData _d) {
final EGAxeHorizontal axe = getTransformer().getXAxe();
if (_d != null) {
@@ -462,83 +463,86 @@
_d.put(pre + EbliLib.getS("Borne max"), axe.getStringAffiche(axe.getMaximum()));
}
}
-
+
public void fireAxeRepereChanged(final EGAxe _a) {
getModel().fireAxeContentChanged(_a);
}
-
+
public void fireColorChanged(final EGObject _i) {
getModel().fireCourbeAspectChanged(_i, false);
}
-
+
public void fireVisibilityChanged(final EGObject _o) {
xRange_ = null;
getModel().fireCourbeAspectChanged(_o, false);
}
-
+
public void fullRepaint() {
cache_ = null;
if (isVisible()) {
repaint();
}
}
-
+
public List<EGAxeVertical> getAllAxeVertical() {
+ if (axeOffset_ == null) {
+ return Collections.emptyList();
+ }
return Arrays.<EGAxeVertical>asList(axeOffset_.keys(new EGAxeVertical[axeOffset_.size()]));
}
-
+
public final CtuluCommandManager getCmd() {
return cmd_;
}
-
+
public EGGrapheModel getModel() {
return model_;
}
-
+
public void setModel(EGGrapheModel model) {
model_ = model;
}
-
+
public EGObject getObject(final int _i) {
return getModel().getEGObject(_i);
}
-
+
public int getObjectNb() {
return getModel().getNbEGObject();
}
-
+
public int getOffSet(final EGAxeVertical _axe) {
if (axeOffset_ != null) {
return axeOffset_.get(_axe);
}
return 0;
}
-
+
public RepereMouseKeyController getRepereController() {
return repereController_;
}
-
+
public final EGCourbe getSelectedComponent() {
return getModel().getSelectedComponent();
}
-
+
public EGRepere getTransformer() {
return transformer_;
}
-
+
public double getTranslateFactor(final boolean _rapide) {
return (_rapide) ? 0.25 : 0.125;
}
-
+
public final CtuluRange getUserXRange() {
return xRangeSpecByUser_;
}
-
+
public double getXMax() {
computeXRange();
return xRange_.max_;
}
-
+
public double getXMin() {
computeXRange();
return xRange_.min_;
@@ -550,7 +554,7 @@
public boolean isAutoRestore() {
return autoRestore_;
}
-
+
public final boolean isUserXRangeSet() {
return xRangeSpecByUser_ != null;
}
@@ -569,7 +573,7 @@
}
return false;
}
-
+
@Override
public void paintComponent(final Graphics _g) {
// Rectangle clipPrec_ = g.getClipBounds();
@@ -591,23 +595,23 @@
_g.drawImage(cache_, 0, 0, this);
}
}
-
+
@Override
public void print(final Graphics _g) {
dessine(_g, getWidth(), getHeight(), false);
}
-
+
public void removeModelListener(final EGGrapheModelListener _l) {
getModel().removeModelListener(_l);
}
-
+
public void restore() {
updateRepere();
if (transformer_.getXAxe() == null) {
return;
}
restoreAxeX();
-
+
restoreAllYAxe();
axeUpdated();
requestFocus();
@@ -665,12 +669,12 @@
r.max_ += distanceYReel;
}
restoreAxeY(axeY, r);
-
+
}
return axeYRange;
-
+
}
-
+
public void setAutoRestore(final boolean _autoRestore) {
if (_autoRestore != autoRestore_) {
autoRestore_ = _autoRestore;
@@ -680,36 +684,36 @@
EbliPreferences.EBLI.putBooleanProperty(getAutorRestorePref(), autoRestore_);
}
}
-
+
public final void setCmd(final CtuluCommandManager _cmd) {
cmd_ = _cmd;
}
-
+
@Override
public void setRapide(final boolean _b) {
// on ne fait rien
}
-
+
public final void setUserXRange(final CtuluRange _rangeSpecByUser) {
xRangeSpecByUser_ = _rangeSpecByUser;
}
-
+
public void setVisible(final EGObject _g, final boolean _b) {
if (_g.setVisible(_b)) {
-
+
fireVisibilityChanged(_g);
}
}
-
+
public void setXAxe(final EGAxeHorizontal _axe) {
transformer_.setXAxe(_axe);
getModel().setAxeX(_axe);
}
-
+
public void setXRangeIsModified() {
xRange_ = null;
}
-
+
public void setZoomOn(final Point _no, final Point _se) {
final EGRepere repere = getTransformer();
final EGAxeHorizontal hAxe = repere.getXAxe();
@@ -736,9 +740,9 @@
}
axeUpdated();
requestFocus();
-
+
}
-
+
public void setZoomOnPoint(final int _xEcran, final int _yecran, final boolean _out, final double _zoomFactor) {
final EGRepere repere = getTransformer();
final EGAxeHorizontal hAxe = repere.getXAxe();
@@ -758,13 +762,13 @@
}
axeUpdated();
}
-
+
@Override
public void structureChanged() {
structureChanged(false);
}
boolean restoring;
-
+
public void structureChanged(final boolean _restore) {
setXRangeIsModified();
if (autoRestore_ || _restore) {
@@ -778,34 +782,34 @@
fullRepaint();
}
}
-
+
@Override
public void translateXLeft(final boolean _largeTranslate, final boolean _rapide) {
translateX(-getTranslateFactor(_rapide));
-
+
}
-
+
@Override
public void translateXRight(final boolean _large, final boolean _rapide) {
translateX(getTranslateFactor(_rapide));
-
+
}
-
+
@Override
public void translateYDown(final boolean _largeTranslate, final boolean _rapide) {
translateY(getTranslateFactor(_rapide));
-
+
}
-
+
@Override
public void translateYUp(final boolean _largeTranslate, final boolean _rapide) {
translateY(-getTranslateFactor(_rapide));
-
+
}
-
+
public void translation(final double _realDx, final double _realDy, final boolean _rapide) {
}
-
+
public void translation(final int _dx, final int _dy) {
final EGRepere repere = getTransformer();
if (_dx != 0) {
@@ -869,7 +873,7 @@
newAxe.unite_ = unite;
mergeAxis(_axes, newAxe);
}
-
+
public void mergeAxis(final EGAxeVertical[] _axes, final EGAxeVertical newAxe) {
for (int i = getObjectNb() - 1; i >= 0; i--) {
final EGObject o = getObject(i);
@@ -947,9 +951,9 @@
public boolean isVerticalAxisMerged(EGObject o) {
return getInitVerticalAxis(o) != null;
}
-
+
public void zoom(final boolean _out) {
-
+
final double factor = _out ? 1 / getZoomCoef() : getZoomCoef();
final int width = (int) (factor * transformer_.getWSansMarges() / 2);
final int height = (int) (factor * transformer_.getHSansMarges() / 2);
@@ -961,20 +965,20 @@
// final int x = (int) (0.5 * transformer_.getMaxEcranX() + transformer_.getMinEcranX());
// final int y = (int) (0.5 * transformer_.getMaxEcranY() + transformer_.getMinEcranY());
setZoomOn(new Point(x + width, y + height), new Point(x - width, y - height));
-
+
}
-
+
@Override
public void zoomIn() {
zoom(false);
-
+
}
-
+
@Override
public Dimension getDefaultImageDimension() {
return getSize();
}
-
+
@Override
public BufferedImage produceImage(final int _w, final int _h, final Map _params) {
final BufferedImage i = CtuluLibImage.createImage(_w, _h, _params);
@@ -984,23 +988,23 @@
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, _w, _h);
}
-
+
if (getWidth() != _w || getHeight() != _h) {
g2d.scale(CtuluLibImage.getRatio(_w, getWidth()), CtuluLibImage.getRatio(_h, getHeight()));
}
-
+
print(g2d);
g2d.dispose();
i.flush();
return i;
}
-
+
@Override
public BufferedImage produceImage(final Map _params) {
return produceImage(getWidth(), getHeight(), _params);
-
+
}
-
+
@Override
public void zoomOnMouse(final MouseEvent _evt, final boolean _isOut) {
final int x = _evt.getX();
@@ -1011,23 +1015,23 @@
/*
* int width = (int) (factor getWidth() / 2); int height = (int) (factor getHeight() / 2);
*/ setZoomOn(new Point(x + width, y + height), new Point(x - width, y - height));
-
+
}
-
+
@Override
public void zoomOut() {
zoom(true);
-
+
}
-
+
public void initTitlesOrigins() {
EGCourbe[] listeCourbes = getModel().getCourbes();
for (int i = 0; i < listeCourbes.length; i++) {
listeTitlesOrigins_.put(listeCourbes[i], listeCourbes[i].getTitle());
}
-
+
}
-
+
public void reinitTitlesOrigins() {
EGCourbe[] listeCourbes = getModel().getCourbes();
for (int i = 0; i < listeCourbes.length; i++) {
@@ -1035,9 +1039,9 @@
listeCourbes[i].initTitle(listeTitlesOrigins_.get(listeCourbes[i]));
}
}
-
+
}
-
+
public EGGraphe duplicate() {
EGGrapheDuplicator duplicator = new EGGrapheDuplicator();
EGGraphe duplic = new EGGraphe(this.getModel().duplicate(duplicator));
@@ -1059,10 +1063,10 @@
}
}
duplic.coeffLarger_ = this.coeffLarger_;
-
+
if (this.objectInitAxe_ != null) {
duplic.objectInitAxe_ = new HashMap<EGObject, EGAxeVertical>();
-
+
Set<EGObject> set = this.objectInitAxe_.keySet();
Collection<EGAxeVertical> values = this.objectInitAxe_.values();
EGAxeVertical[] vals = values.toArray(new EGAxeVertical[values.size()]);
@@ -1089,7 +1093,7 @@
}
return duplic;
}
-
+
void moveViewFromMouseDeltas(int dx, int dy) {
translation(-dx, -dy);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|