|
From: <de...@us...> - 2010-03-14 19:43:05
|
Revision: 5714
http://fudaa.svn.sourceforge.net/fudaa/?rev=5714&view=rev
Author: deniger
Date: 2010-03-14 19:42:58 +0000 (Sun, 14 Mar 2010)
Log Message:
-----------
Modified Paths:
--------------
trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGAxeVerticalPersist.java
trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGCourbe.java
trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGCourbePersist.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/EGGraphe.java
trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGGraphePersist.java
trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGGroupPersist.java
Added Paths:
-----------
trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGMergeAxisPersist.java
Modified: trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGAxeVerticalPersist.java
===================================================================
--- trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGAxeVerticalPersist.java 2010-03-14 19:39:14 UTC (rev 5713)
+++ trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGAxeVerticalPersist.java 2010-03-14 19:42:58 UTC (rev 5714)
@@ -3,6 +3,7 @@
import java.awt.Color;
import java.awt.Font;
+import org.fudaa.ctulu.CtuluRange;
import org.fudaa.ebli.trace.TraceLigne;
import org.fudaa.ebli.trace.TraceLigneModel;
@@ -25,6 +26,7 @@
TraceLigne grille;
boolean isIteratorUptodate;
Color lineColor;
+ CtuluRange range;
/**
* Booleen qui indique si l'on trace ou non la graduation
@@ -82,6 +84,7 @@
longueurPas_=axeY.longueurPas_;
modeGraduations_=axeY.modeGraduations_;
nbSousGraduations_=axeY.nbSousGraduations_;
+ range=axeY.range_;
}
@@ -110,6 +113,8 @@
axeY.longueurPas_=longueurPas_;
axeY.modeGraduations_=modeGraduations_;
axeY.nbSousGraduations_=nbSousGraduations_;
+ if(range!=null)
+ axeY.range_.initWith(range);
return axeY;
}
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 2010-03-14 19:39:14 UTC (rev 5713)
+++ trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGCourbe.java 2010-03-14 19:42:58 UTC (rev 5714)
@@ -990,7 +990,7 @@
return getTitle();
}
- public TraceBox getTbox_() {
+ public TraceBox getTbox() {
return tbox_;
}
Modified: trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGCourbePersist.java
===================================================================
--- trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGCourbePersist.java 2010-03-14 19:39:14 UTC (rev 5713)
+++ trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGCourbePersist.java 2010-03-14 19:42:58 UTC (rev 5714)
@@ -5,6 +5,7 @@
import org.fudaa.ctulu.CtuluCommandManager;
import org.fudaa.ebli.trace.TraceBox;
+import org.fudaa.ebli.trace.TraceIconModel;
import org.fudaa.ebli.trace.TraceLigneModel;
/**
@@ -30,6 +31,7 @@
TraceBox tracebox;
TraceLigneModel lineModel_;
TraceLigneModel tLigneMarqueur_;
+ TraceIconModel iconeModel;
//-- data specifiques --//
Object dataSpecifiques;
@@ -61,12 +63,13 @@
}
//graphiques
- if(courbe.getTbox_()!=null)
- tracebox=courbe.getTbox_();
+ if(courbe.getTbox()!=null)
+ tracebox=courbe.getTbox();
if(courbe.getLigneModel()!=null)
lineModel_=courbe.getLigneModel();
if(courbe.getMarkLigneModel()!=null)
tLigneMarqueur_=courbe.getMarkLigneModel();
+ iconeModel=courbe.getIconModel();
listeMarqueurs_=courbe.getMarqueurs();
@@ -128,6 +131,9 @@
courbe.setLigneType(lineModel_);
if(tLigneMarqueur_!=null)
courbe.setLigneMark(tLigneMarqueur_);
+ if(iconeModel!=null){
+ courbe.setIconeModel(iconeModel);
+ }
courbe.setNuagePoints(this.nuagePoints);
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 2010-03-14 19:39:14 UTC (rev 5713)
+++ trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGFillePanel.java 2010-03-14 19:42:58 UTC (rev 5714)
@@ -387,6 +387,10 @@
public Dimension getDefaultImageDimension() {
return vue_.getDefaultImageDimension();
}
+
+ public EGVue getView(){
+ return vue_;
+ }
public EbliActionInterface[] getSpecificActions() {
if (specificTools_ == null) {
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 2010-03-14 19:39:14 UTC (rev 5713)
+++ trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGGraphe.java 2010-03-14 19:42:58 UTC (rev 5714)
@@ -14,14 +14,29 @@
import gnu.trove.TObjectIntHashMap;
import gnu.trove.TObjectIntIterator;
-import java.awt.*;
+import java.awt.Color;
+import java.awt.Cursor;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Image;
+import java.awt.Point;
+import java.awt.Shape;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.beans.PropertyChangeListener;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
import javax.swing.JComponent;
@@ -793,7 +808,7 @@
*/
public void useOneAxeVertical(final EGAxeVertical[] _axes, final String _s, final CtuluRange _r) {
if (_axes == null || _axes.length < 2) { return; }
- final EGAxeVertical newAxe = new EGAxeVertical(_axes[0]);
+ final EGAxeVertical newAxe = _axes[0].duplicate();
String t = _s;
if (CtuluLibString.isEmpty(_s)) {
t = EbliLib.getS("Axe");
@@ -815,6 +830,10 @@
* if (_pas > 0) { newAxe.pas = _pas; } else newAxe.pas = newAxe.getEcart() / 5;
*/
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);
if (o.getAxeY() != null && CtuluLibArray.findObject(_axes, o.getAxeY()) >= 0) {
@@ -850,6 +869,46 @@
return false;
}
+ /**
+ * @param o l'objedt
+ * @return si axe vertical de l'objet o a ete fusionne, renvoie l'axe initiale
+ */
+ public EGAxeVertical getInitVerticalAxis(EGObject o) {
+ if (objectInitAxe_ != null) { return objectInitAxe_.get(o); }
+ return null;
+ }
+
+ /**
+ * @return the merge axis-> the objects using the merges axis.
+ */
+ public Map<EGAxeVertical, List<EGObject>> getMergeAxis() {
+ Map<EGAxeVertical, List<EGObject>> res = new HashMap<EGAxeVertical, List<EGObject>>();
+ int nbEgObjects = getModel().getNbEGObject();
+ for (int i = 0; i < nbEgObjects; i++) {
+ EGObject egObject = getModel().getEGObject(i);
+ //l'objet utilise un axe merge
+ if (isVerticalAxisMerged(egObject)) {
+ //si oui, on enregistre l'axe
+ EGAxeVertical mergeAxis = egObject.getAxeY();
+ List<EGObject> objects = res.get(mergeAxis);
+ if (objects == null) {
+ objects = new ArrayList<EGObject>();
+ res.put(mergeAxis, objects);
+ }
+ objects.add(egObject);
+ }
+ }
+ return res;
+ }
+
+ /**
+ * @param o l'objedt
+ * @return si axe vertical de l'objet o a ete fusionne, renvoie l'axe initiale
+ */
+ 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);
Modified: trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGGraphePersist.java
===================================================================
--- trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGGraphePersist.java 2010-03-14 19:39:14 UTC (rev 5713)
+++ trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGGraphePersist.java 2010-03-14 19:42:58 UTC (rev 5714)
@@ -1,5 +1,7 @@
package org.fudaa.ebli.courbe;
+import gnu.trove.TIntArrayList;
+
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
@@ -8,6 +10,8 @@
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -139,11 +143,16 @@
List<EGGroupPersist> listeGroupePersistance = new ArrayList<EGGroupPersist>(grapheTopersist.getModel()
.getNbEGObject());
int nbEgObjects = grapheTopersist.getModel().getNbEGObject();
+ int idxGroup = 1;
+ Map<EGGroup, Integer> groupIdx = new HashMap<EGGroup, Integer>();
for (int i = 0; i < nbEgObjects; i++) {
EGObject objet = grapheTopersist.getModel().getEGObject(i);
if (objet instanceof EGGroup) {
EGGroup groupe = (EGGroup) objet;
- listeGroupePersistance.add(new EGGroupPersist(groupe));
+
+ groupIdx.put(groupe, idxGroup);
+ // WARN les groupes enregistre l'axe initial.
+ listeGroupePersistance.add(new EGGroupPersist(groupe, grapheTopersist, idxGroup++));
for (int k = 0; k < groupe.getEGChilds().length; k++) {
if (groupe.getEGChilds()[k] instanceof EGCourbeChild) {
// -- ajout de la courbe persitante dans un fichier avec pour groupee le i eme
@@ -177,9 +186,22 @@
for (EGGroupPersist gp : listeGroupePersistance) {
out.writeObject(gp);
}
+ Map<EGAxeVertical, List<EGObject>> mergeAxis = grapheTopersist.getMergeAxis();
+ List<EGMergeAxisPersist> merges = new ArrayList<EGMergeAxisPersist>();
+ if (mergeAxis.size() > 0) {
+ for (Map.Entry<EGAxeVertical, List<EGObject>> entry : mergeAxis.entrySet()) {
+ List<EGObject> list = entry.getValue();
+ final TIntArrayList groupIdxInMap = getGroupIdxInMap(groupIdx, list);
+ if (groupIdxInMap.size() > 0) {
+ merges.add(new EGMergeAxisPersist(groupIdxInMap.toNativeArray(), entry.getKey()));
+ }
+ }
+ }
+ if (merges.size() > 0) {
+ out.writeObject(merges);
+ }
}
} catch (IOException e) {
- // TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
@@ -210,6 +232,16 @@
}
+ private static TIntArrayList getGroupIdxInMap(Map<EGGroup, Integer> groupIdx, List<EGObject> list) {
+ TIntArrayList idx = new TIntArrayList(list.size());
+ for (EGObject o : list) {
+ if (groupIdx.containsKey(o)) {
+ idx.add(groupIdx.get(o).intValue());
+ }
+ }
+ return idx;
+ }
+
/**
* Genere une instance de model par rapport au model serializ\xE9. Renvoie forc\xE9ment une class implements
* EGGrapheTreeModel sinon null
@@ -262,12 +294,22 @@
// -- Etape 3: on ajoute tous nos amis les groupes --//
int nbGroups = in.readInt();
+ Map<Integer, EGGroup> groupIdx = new HashMap<Integer, EGGroup>();
for (int i = 0; i < nbGroups; i++) {
// -- lecture du groupe --//
- EGGroup newGroup = ((EGGroupPersist) in.readObject()).generateGroupe();
+ EGGroupPersist groupPersist = (EGGroupPersist) in.readObject();
+ EGGroup newGroup = groupPersist.generateGroupe();
+ groupIdx.put(groupPersist.getIdx(), newGroup);
// ajout du groupe
model.add(newGroup);
}
+ List<EGMergeAxisPersist> mergeAxis=Collections.emptyList();
+
+ //on essaie de lire si dispo: bizarre isAvailable n'est pas supporte.
+ try {
+ mergeAxis = (List<EGMergeAxisPersist>) in.readObject();
+ } catch (Exception e) {}
+
// -- Etape 4: lecture des courbes --//
// get the persitant list of curves:
List<EGCourbePersist> listeCourbesPersistantes = getPersitantCurvesList(false);
@@ -284,7 +326,7 @@
model.finalizePersistance();
} catch (Exception e) {
((List<String>) parameters.get("errorMsg"))
- .add("Erreur, la tentative de finalisation des donn\xE9es du graphe a \xE9chou\xE9 ");
+ .add("Erreur, la tentative de finalisation des donn\xE9es du graphe a \xE9chou\xE9 ");
((List<String>) parameters.get("errorMsg"))
.add("Cette erreur est peut \xEAtre due \xE0 une incompatibilit\xE9 des variables pour un rejoue de donn\xE9es.");
@@ -296,7 +338,17 @@
for (int t = 0; t < nbGroups; t++) {
EGGroup group = model.getGroup(t);
if (group != null) graphe.setZoomAdaptedFor(group);
+ }
+ if (mergeAxis != null && mergeAxis.size() > 0) {
+ for (EGMergeAxisPersist merge : mergeAxis) {
+ int[] idxs = merge.getGroupeUsingTheAxis();
+ List<EGAxeVertical> axeToMerge = new ArrayList<EGAxeVertical>();
+ for (int i = 0; i < idxs.length; i++) {
+ axeToMerge.add(groupIdx.get(Integer.valueOf(idxs[i])).getAxeY());
+ }
+ graphe.mergeAxis(axeToMerge.toArray(new EGAxeVertical[axeToMerge.size()]), merge.getPersist().generateAxe());
+ }
}
// mise a jour des b\xE9b\xE9s
model.fireStructureChanged();
Modified: trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGGroupPersist.java
===================================================================
--- trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGGroupPersist.java 2010-03-14 19:39:14 UTC (rev 5713)
+++ trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGGroupPersist.java 2010-03-14 19:42:58 UTC (rev 5714)
@@ -9,20 +9,28 @@
public class EGGroupPersist {
String title;
+ int idx;
- EGAxeVerticalPersist axeY;
+ public int getIdx() {
+ return idx;
+ }
+
+ EGAxeVerticalPersist axeY;
boolean isVisible;
-public EGGroupPersist(EGGroup group) {
+public EGGroupPersist(EGGroup group,EGGraphe graphe,int idx) {
super();
- fillInfoWith(group);
+ this.idx=idx;
+ fillInfoWith(group,graphe);
}
-private void fillInfoWith(EGGroup groupe){
+private void fillInfoWith(EGGroup groupe,EGGraphe graphe){
title=groupe.getTitle();
-
- axeY=new EGAxeVerticalPersist(groupe.getAxeY());
+ EGAxeVertical axeVertical = graphe.getInitVerticalAxis(groupe);
+ //axe non fusionne
+ if(axeVertical==null) axeVertical=groupe.getAxeY();
+ axeY=new EGAxeVerticalPersist(axeVertical);
isVisible=groupe.isVisible_;
}
Added: trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGMergeAxisPersist.java
===================================================================
--- trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGMergeAxisPersist.java (rev 0)
+++ trunk/framework/ebli-1d/src/main/java/org/fudaa/ebli/courbe/EGMergeAxisPersist.java 2010-03-14 19:42:58 UTC (rev 5714)
@@ -0,0 +1,29 @@
+package org.fudaa.ebli.courbe;
+
+public class EGMergeAxisPersist {
+
+ private int[] groupeUsingTheAxis;
+ private EGAxeVerticalPersist persist;
+ /**
+ * @param groupeUsingTheAxis
+ * @param persist
+ */
+ public EGMergeAxisPersist(int[] groupeUsingTheAxis, EGAxeVertical persist) {
+ super();
+ this.groupeUsingTheAxis = groupeUsingTheAxis;
+ this.persist = new EGAxeVerticalPersist(persist);
+ }
+ public int[] getGroupeUsingTheAxis() {
+ return groupeUsingTheAxis;
+ }
+ public void setGroupeUsingTheAxis(int[] groupeUsingTheAxis) {
+ this.groupeUsingTheAxis = groupeUsingTheAxis;
+ }
+ public EGAxeVerticalPersist getPersist() {
+ return persist;
+ }
+ public void setPersist(EGAxeVerticalPersist persist) {
+ this.persist = persist;
+ }
+
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|