|
From: <bma...@us...> - 2013-07-26 15:48:07
|
Revision: 8449
http://sourceforge.net/p/fudaa/svn/8449
Author: bmarchan
Date: 2013-07-26 15:48:04 +0000 (Fri, 26 Jul 2013)
Log Message:
-----------
Mascaret : Ajout des pas de temps + biefs panneau de visu profils en travers
Modified Paths:
--------------
trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/editor/Hydraulique1dGraphesResultatsEditor.java
trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/editor/profil/Hydraulique1dProfilEditor.java
trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/editor/profil/Hydraulique1dProfilPane.java
trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/graphe/Hydraulique1dGrapheProfil.java
trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/ihmhelper/Hydraulique1dIHM_ProfilResultats.java
Added Paths:
-----------
trunk/soft/fudaa-mascaret/ui/src/main/resources/org/fudaa/fudaa/hydraulique1d/icvoirminmax.gif
Modified: trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/editor/Hydraulique1dGraphesResultatsEditor.java
===================================================================
--- trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/editor/Hydraulique1dGraphesResultatsEditor.java 2013-07-25 12:34:32 UTC (rev 8448)
+++ trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/editor/Hydraulique1dGraphesResultatsEditor.java 2013-07-26 15:48:04 UTC (rev 8449)
@@ -22,7 +22,6 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
-import java.util.StringTokenizer;
import java.util.Vector;
import javax.swing.JButton;
@@ -341,54 +340,11 @@
}
private void profils() {
- if ((getSelectedPanel().isSelectedModeBief()) && (getSelectedPanel().rbSpatial_.isSelected())) {
- Hydraulique1dIHM_ProfilResultats ihm = Hydraulique1dIHMRepository.
- getInstance().PROFIL_RESULTATS();
+ Hydraulique1dIHM_ProfilResultats ihm = Hydraulique1dIHMRepository.getInstance().PROFIL_RESULTATS();
- ihm.setIndicesPasTemps(getListePasTpsSection().getSelectedIndices());
- ihm.setIndicesBiefs(getIndexElementsSelectionnes());
- ihm.editer();
- }
- if ((getSelectedPanel().isSelectedModeBief()) && (getSelectedPanel().rbTemporel_.isSelected())) {
- Hydraulique1dIHM_ProfilResultats ihm = Hydraulique1dIHMRepository.
- getInstance().PROFIL_RESULTATS();
-
- ihm.setIndicesPasTemps(null);
- ihm.setIndicesBiefs(getIndexElementsSelectionnes());
- ihm.editer();
- }
+ ihm.editer();
}
- private int[] getIndexElementsSelectionnes() {
- String item = (String) getListeBiefCasierLiaison().getSelectedValue();
- if (item == null) {
- return new int[0];
- }
- String debutChaine = "";
- if (item.startsWith(getS("Bief"))) {
- debutChaine = getS("Bief");
- } else if (item.startsWith(getS("Casier"))) {
- debutChaine = getS("Casier");
- } else if (item.startsWith(getS("Liaison"))) {
- debutChaine = getS("Liaison");
- }
- Object[] values = getListeBiefCasierLiaison().getSelectedValues();
-
- ArrayList<Integer> listeIndexes = new ArrayList<Integer>(values.length);
- for (int i = 0; i < values.length; i++) {
- StringTokenizer st = new StringTokenizer(values[i].toString());
- if (debutChaine.equals(st.nextToken())) {
- listeIndexes.add(new Integer(Integer.parseInt(st.nextToken()) - 1));
- }
- }
- int[] res = new int[listeIndexes.size()];
- for (int i = 0; i < res.length; i++) {
- res[i] = listeIndexes.get(i).intValue();
- }
-
- return res;
- }
-
protected void personnaliser() {
BuCommonInterface app =
(BuCommonInterface) Hydraulique1dBaseApplication.FRAME;
Modified: trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/editor/profil/Hydraulique1dProfilEditor.java
===================================================================
--- trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/editor/profil/Hydraulique1dProfilEditor.java 2013-07-25 12:34:32 UTC (rev 8448)
+++ trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/editor/profil/Hydraulique1dProfilEditor.java 2013-07-26 15:48:04 UTC (rev 8449)
@@ -15,8 +15,8 @@
import java.awt.print.PageFormat;
import java.util.Map;
+import org.fudaa.dodico.hydraulique1d.metier.MetierEtude1d;
import org.fudaa.dodico.hydraulique1d.metier.MetierHydraulique1d;
-import org.fudaa.dodico.hydraulique1d.metier.MetierReseau;
import org.fudaa.ebli.dialog.BPanneauNavigation;
import org.fudaa.fudaa.hydraulique1d.Hydraulique1dPreferences;
import org.fudaa.fudaa.hydraulique1d.Hydraulique1dProfilModel;
@@ -87,8 +87,8 @@
return pnProfs_;
}
- public void setReseau(MetierReseau _res) {
- pnProfs_.setReseau(_res);
+ public void setEtude(MetierEtude1d _res) {
+ pnProfs_.setEtude(_res);
}
/**
Modified: trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/editor/profil/Hydraulique1dProfilPane.java
===================================================================
--- trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/editor/profil/Hydraulique1dProfilPane.java 2013-07-25 12:34:32 UTC (rev 8448)
+++ trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/editor/profil/Hydraulique1dProfilPane.java 2013-07-26 15:48:04 UTC (rev 8449)
@@ -8,6 +8,8 @@
*/
package org.fudaa.fudaa.hydraulique1d.editor.profil;
+import gnu.trove.TDoubleArrayList;
+
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
@@ -15,9 +17,13 @@
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
import java.awt.image.BufferedImage;
import java.awt.print.PageFormat;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.HashSet;
import java.util.Map;
import java.util.Vector;
@@ -25,16 +31,26 @@
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.ButtonGroup;
+import javax.swing.ComboBoxModel;
import javax.swing.JButton;
+import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import javax.swing.JToggleButton;
import javax.swing.ListModel;
import javax.swing.ListSelectionModel;
+import javax.swing.event.ListDataEvent;
+import javax.swing.event.ListDataListener;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
import org.fudaa.ctulu.gui.CtuluDialog;
+import org.fudaa.dodico.hydraulique1d.metier.MetierBief;
+import org.fudaa.dodico.hydraulique1d.metier.MetierEtude1d;
import org.fudaa.dodico.hydraulique1d.metier.MetierReseau;
+import org.fudaa.dodico.hydraulique1d.metier.MetierResultatsTemporelSpatial;
+import org.fudaa.dodico.hydraulique1d.metier.MetierResultatsTemporelSpatialBief;
import org.fudaa.ebli.impression.EbliPrinter;
import org.fudaa.fudaa.hydraulique1d.CGlobal;
import org.fudaa.fudaa.hydraulique1d.Hydraulique1dBaseApplication;
@@ -70,6 +86,55 @@
*/
public class Hydraulique1dProfilPane extends JPanel implements CurveOptionTargetI, ActionListener, Hydraulique1dProfilSelectionListener, Hydraulique1dProfilDataListener, BuCutCopyPasteInterface, BuUndoRedoInterface {
+ class TpsComboboxModel implements ComboBoxModel {
+ HashSet<ListDataListener> hlisteners=new HashSet<ListDataListener>();
+ Object selected;
+
+ @Override
+ public int getSize() {
+ double[] valPas=etude_.resultatsGeneraux().resultatsTemporelSpatial().valPas();
+ return valPas==null ? 0:valPas.length;
+ }
+
+ @Override
+ public Object getElementAt(int index) {
+ return Double.toString(etude_.resultatsGeneraux().resultatsTemporelSpatial().valPas()[index]);
+ }
+
+ @Override
+ public void addListDataListener(ListDataListener l) {
+ hlisteners.add(l);
+ }
+
+ @Override
+ public void removeListDataListener(ListDataListener l) {
+ hlisteners.remove(l);
+ }
+
+ @Override
+ public void setSelectedItem(Object anItem) {
+ if (selected==null && anItem!=null || selected!=null && !selected.equals(anItem)) {
+ selected=anItem;
+ fireSelectionChanged();
+ }
+ }
+
+ @Override
+ public Object getSelectedItem() {
+ return selected;
+ }
+
+ private void fireSelectionChanged() {
+ ListDataEvent e = null;
+ for (ListDataListener l : hlisteners) {
+ if (e == null) {
+ e = new ListDataEvent(this, ListDataEvent.CONTENTS_CHANGED, -1, -1);
+ }
+ l.contentsChanged(e);
+ }
+ }
+ }
+
/** Mode d'affichage */
public static final int EDITER=0x01;
public static final int VOIR=0x02;
@@ -119,6 +184,9 @@
private JToggleButton btVoirRives_=new JToggleButton();
private JButton btFixerBornes_=new JButton();
private JToggleButton btAjusterBornes_=new JToggleButton();
+ private JButton btAnimation_=new JButton();
+ private JComboBox coTemps_=new JComboBox();
+ private JToggleButton btCoteMinMax_=new JToggleButton();
/** Fenetre de lissage */
private Hydraulique1dLissageProfilEditor fnLissage_=null;
@@ -133,8 +201,8 @@
/** Fenetre d'alignmenet des profils */
private CtuluDialog fnAlignOption_=null;
+ private MetierEtude1d etude_;
private ListModel mdlBief_;
- private MetierReseau reseau_;
private BuList lsBief_;
/**
@@ -180,14 +248,21 @@
pnTableau_=new Hydraulique1dProfilTableauPanel();
pnTableau_.setEditable(modeEdition_==EDITER);
+ pnTableau_.setBorder(BorderFactory.createTitledBorder(Hydraulique1dResource.getS("Points du profil")));
pn.add(pnTableau_,BorderLayout.CENTER);
if (modeEdition_==VOIR) {
lsBief_ = new BuList();
lsBief_.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
+ lsBief_.addListSelectionListener(new ListSelectionListener() {
+ @Override
+ public void valueChanged(ListSelectionEvent e) {
+ changeBiefsSelection();
+ }
+ });
BuScrollPane spBiefs_= new BuScrollPane(lsBief_);
- spBiefs_.setBorder(BorderFactory.createTitledBorder("Biefs"));
- spBiefs_.setPreferredHeight(100);
+ spBiefs_.setBorder(BorderFactory.createTitledBorder(Hydraulique1dResource.getS("Biefs")));
+ spBiefs_.setPreferredHeight(70);
pn.add(spBiefs_,BorderLayout.NORTH);
}
@@ -195,26 +270,151 @@
return pn;
}
- public void setReseau(MetierReseau _res) {
- reseau_=_res;
+ public void setEtude(MetierEtude1d _etude) {
+ etude_=_etude;
mdlBief_=new AbstractListModel() {
@Override
public int getSize() {
- return reseau_.biefs().length;
+ return etude_.reseau().biefs().length;
}
@Override
public Object getElementAt(int index) {
- return reseau_.biefs()[index];
+ return etude_.reseau().biefs()[index];
}
};
lsBief_.setModel(mdlBief_);
+ coTemps_.setModel(new TpsComboboxModel());
+
+ lsBief_.setSelectedIndex(0);
+ coTemps_.setSelectedIndex(0);
}
+
+ private void changeTempsSelection() {
+ int itps=coTemps_.getSelectedIndex();
+ if (itps==-1) return;
+
+ int[] ibiefs=lsBief_.getSelectedIndices();
+
+ MetierReseau res = etude_.reseau();
+ int icpt=0;
+ for (int i = 0; i < ibiefs.length; i++) {
+ MetierBief b = res.biefs()[ibiefs[i]];
+ int nbProfil = b.profils().length;
+ for (int iprof = 0; iprof < nbProfil; iprof++) {
+ Hydraulique1dProfilModel pModel= profilsBief_[icpt++];
+ double z=calculeCoteZProfil(ibiefs[i], iprof,itps);
+ pModel.setNiveauEau(z);
+ }
+ }
+
+ graphe_.updateGraphe();
+
+ }
+ private void changeBiefsSelection() {
+ int[] ibiefs=lsBief_.getSelectedIndices();
+ if (ibiefs.length==0) return;
+
+ // initialisation les modeles de profils
+ ArrayList<Hydraulique1dProfilModel> listeProfils_ = new ArrayList<Hydraulique1dProfilModel>();
+
+ MetierReseau res = etude_.reseau();
+ for (int i = 0; i < ibiefs.length; i++) {
+ MetierBief b = res.biefs()[ibiefs[i]];
+ int nbProfil = b.profils().length;
+ for (int iprof = 0; iprof < nbProfil; iprof++) {
+ Hydraulique1dProfilModel pModel= new Hydraulique1dProfilModel(b.profils()[iprof]);
+ initCoteMinMaxProfil(pModel, b, ibiefs[i], iprof);
+ listeProfils_.add(pModel);
+ }
+ }
+
+ setProfilsModeleBief(listeProfils_.toArray(new Hydraulique1dProfilModel[listeProfils_.size()]));
+ setProfilCourant(0);
+
+ changeTempsSelection();
+ }
+
/**
+ * Initialise sur les modeles de profil la cote min/max pour tous les pas de temps.
+ * @param _prof Le model de profil
+ * @param _bief Le bief
+ * @param _ibief L'indice de bief dans le reseau.
+ * @param _iprofil L'indice de profil dans le bief.
+ */
+ private void initCoteMinMaxProfil(Hydraulique1dProfilModel _prof, MetierBief _bief, int _ibief, int _iprofil) {
+ try {
+ MetierResultatsTemporelSpatial resTempo=etude_.resultatsGeneraux().resultatsTemporelSpatial();
+
+ TDoubleArrayList listeCotes=new TDoubleArrayList(resTempo.valPas().length);
+ for (int itps=0; itps<resTempo.valPas().length; itps++) {
+ listeCotes.add(calculeCoteZProfil(_ibief, _iprofil, itps));
+ }
+
+ _prof.setNiveauEauMin(listeCotes.min());
+ _prof.setNiveauEauMax(listeCotes.max());
+ }
+ catch (Exception ex) {
+ ex.printStackTrace();
+ _prof.setNiveauEauMin(Double.NaN);
+ _prof.setNiveauEauMax(Double.NaN);
+ }
+ }
+
+ /**
+ * Calcul de la cote Z pour le profil donn\xE9. Peut \xEAtre interpol\xE9 entre 2 sections.
+ * @param _ibief L'indice du bief dans le reseau.
+ * @param _iprofil L'indice du profil dans le bief.
+ * @param _itps L'indice du pas de temps dans les r\xE9sultats.
+ * @return Le Z pour le profil.
+ */
+ private double calculeCoteZProfil(int _ibief, int _iprofil, int _itps) {
+ MetierBief bief=etude_.reseau().biefs()[_ibief];
+ MetierResultatsTemporelSpatial res=etude_.resultatsGeneraux().resultatsTemporelSpatial();
+ MetierResultatsTemporelSpatialBief resBief=res.resultatsBiefs()[_ibief];
+ int indiceVarCoteEau = res.getIndiceVariable("Z");
+
+ // extraction de l'abscisse de d\xE9but du r\xE9sultat du bief
+ double[] sectionRes = resBief.abscissesSections();
+ double xDebutRes = sectionRes[0];
+ // calcul du d\xE9calage \xE9ventuelle des abscisses entre r\xE9sultat et
+ // g\xE9om\xE9trie.
+ double diffAbscisse = xDebutRes - bief.extrAmont().profilRattache().abscisse();
+ double abscProfilCorrige = bief.profils()[_iprofil].abscisse() + diffAbscisse;
+ int ifound = Arrays.binarySearch(sectionRes, abscProfilCorrige);
+ if (ifound >= 0) {
+ double[] cotes = resBief.valeursVariables()[indiceVarCoteEau][_itps];
+ return cotes[ifound];
+ }
+ else {
+ int iResSup = -ifound - 1;
+ if (iResSup >= sectionRes.length) {
+ iResSup = sectionRes.length - 1;
+ }
+ int iResInf = iResSup - 1;
+ double x2 = sectionRes[iResSup];
+ double x1 = sectionRes[iResInf];
+
+ double[] cotes = resBief.valeursVariables()[indiceVarCoteEau][_itps];
+ double y1 = cotes[iResInf];
+ double y2 = cotes[iResSup];
+
+ if (x1==abscProfilCorrige)
+ return y1;
+ else if (x2==abscProfilCorrige)
+ return y2;
+ else if (x1==x2)
+ throw new IllegalArgumentException("interpolation impossible");
+ else
+ return ((y1-y2)*(abscProfilCorrige-x2)/(x1-x2))+y2;
+ }
+ }
+
+ /**
* Met a jour la fenetre en fonction de sont etat courant.
*/
public void updateState() {
@@ -412,6 +612,35 @@
btAjusterBornes_.addActionListener(this);
btAjusterBornes_.setSelected(!graphe_.isRatioXY1());
pn.add(btAjusterBornes_);
+
+ if (modeEdition_==VOIR) {
+ btCoteMinMax_.setIcon(Hydraulique1dResource.HYDRAULIQUE1D.getIcon("icvoirminmax.gif"));
+ btCoteMinMax_.setToolTipText(Hydraulique1dResource.getS("Voir les cotes min/max"));
+ btCoteMinMax_.setMargin(new Insets(1,1,1,1));
+ btCoteMinMax_.addActionListener(this);
+ pn.add(btCoteMinMax_);
+
+ pn.add(Box.createHorizontalStrut(5));
+ coTemps_.setToolTipText(Hydraulique1dResource.getS("Temps courant"));
+ coTemps_.setPreferredSize(new Dimension(120,coTemps_.getPreferredSize().height));
+ coTemps_.addItemListener(new ItemListener() {
+
+ @Override
+ public void itemStateChanged(ItemEvent e) {
+ if (e.getStateChange()==ItemEvent.DESELECTED) return;
+
+ changeTempsSelection();
+
+ }
+ });
+ pn.add(coTemps_);
+
+ btAnimation_.setIcon(Hydraulique1dResource.HYDRAULIQUE1D.getIcon("video"));
+ btAnimation_.setToolTipText(Hydraulique1dResource.getS("Animation du temps courant"));
+ btAnimation_.setMargin(new Insets(1,1,1,1));
+ pn.add(btAnimation_);
+
+ }
return pn;
}
@@ -868,6 +1097,9 @@
else if (src==btVoirSuivantPrecedent_) {
graphe_.setPreviousNextVisible(btVoirSuivantPrecedent_.isSelected());
}
+ else if (src==btCoteMinMax_) {
+ graphe_.setMinMaxVisible(btCoteMinMax_.isSelected());
+ }
}
/**
Modified: trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/graphe/Hydraulique1dGrapheProfil.java
===================================================================
--- trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/graphe/Hydraulique1dGrapheProfil.java 2013-07-25 12:34:32 UTC (rev 8448)
+++ trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/graphe/Hydraulique1dGrapheProfil.java 2013-07-26 15:48:04 UTC (rev 8449)
@@ -66,6 +66,8 @@
private JFreeChart graphe_;
/** Les rives sont visible/invisibles */
private boolean brivesVisibles_;
+ /** Les rives sont visible/invisibles */
+ private boolean bminmaxVisibles_;
/** Le mode interactif */
private int modeInteractif_=MODE_INTERACTIF_ZOOM;
/** Ratio X/Y forc\xE9 \xE0 1 ? */
@@ -387,6 +389,12 @@
public void setZAlignment(Alignment _align) {
dataset_.setZAlignment(_align);
}
+
+ public void setMinMaxVisible(boolean _b) {
+ if (bminmaxVisibles_==_b) return;
+ bminmaxVisibles_=_b;
+ updateGraphe();
+ }
/**
* Les rives sont elles visibles
@@ -507,39 +515,37 @@
mkNivEau.setLabelPaint(Color.blue);
mkNivEau.setPaint(Color.blue);
mkNivEau.setStroke(new BasicStroke(1));
- mkNivEau.setLabelAnchor(RectangleAnchor.TOP_RIGHT);
- mkNivEau.setLabelTextAnchor(TextAnchor.BOTTOM_RIGHT);
+ mkNivEau.setLabelAnchor(RectangleAnchor.TOP_LEFT);
+ mkNivEau.setLabelTextAnchor(TextAnchor.BOTTOM_LEFT);
graphe_.getXYPlot().addRangeMarker(mkNivEau,Layer.BACKGROUND);
}
- else {
- // Niveaux d'eau mini en resultats.
- if (!Double.isNaN(prf.getNiveauEauMin())) {
- ValueMarker mkNivEauMin=new ValueMarker(prf.getNiveauEauMin());
+ // Niveaux d'eau mini en resultats.
+ if (bminmaxVisibles_ && !Double.isNaN(prf.getNiveauEauMin())) {
+ ValueMarker mkNivEauMin = new ValueMarker(prf.getNiveauEauMin());
- mkNivEauMin.setLabel("Zmin="+nf_.format(prf.getNiveauEauMin()));
- mkNivEauMin.setLabelPaint(new Color(0xAA, 0x00, 0xFF));
- mkNivEauMin.setPaint(new Color(0xAA, 0x00, 0xFF));
- mkNivEauMin.setStroke(new BasicStroke(1));
- mkNivEauMin.setLabelAnchor(RectangleAnchor.BOTTOM_RIGHT);
- mkNivEauMin.setLabelTextAnchor(TextAnchor.TOP_RIGHT);
+ mkNivEauMin.setLabel("Zmin=" + nf_.format(prf.getNiveauEauMin()));
+ mkNivEauMin.setLabelPaint(new Color(0xAA, 0x00, 0xFF));
+ mkNivEauMin.setPaint(new Color(0xAA, 0x00, 0xFF));
+ mkNivEauMin.setStroke(new BasicStroke(1));
+ mkNivEauMin.setLabelAnchor(RectangleAnchor.BOTTOM_RIGHT);
+ mkNivEauMin.setLabelTextAnchor(TextAnchor.TOP_RIGHT);
- graphe_.getXYPlot().addRangeMarker(mkNivEauMin, Layer.BACKGROUND);
- }
- // Niveaux d'eau maxi en resultats.
- if (!Double.isNaN(prf.getNiveauEauMax())) {
- ValueMarker mkNivEauMax=new ValueMarker(prf.getNiveauEauMax());
+ graphe_.getXYPlot().addRangeMarker(mkNivEauMin, Layer.BACKGROUND);
+ }
+ // Niveaux d'eau maxi en resultats.
+ if (bminmaxVisibles_ && !Double.isNaN(prf.getNiveauEauMax())) {
+ ValueMarker mkNivEauMax = new ValueMarker(prf.getNiveauEauMax());
- mkNivEauMax.setLabel("Zmax="+nf_.format(prf.getNiveauEauMax()));
- mkNivEauMax.setLabelPaint(new Color(0xAA, 0x00, 0xFF));
- mkNivEauMax.setPaint(new Color(0xAA, 0x00, 0xFF));
- mkNivEauMax.setStroke(new BasicStroke(1));
- mkNivEauMax.setLabelAnchor(RectangleAnchor.TOP_RIGHT);
- mkNivEauMax.setLabelTextAnchor(TextAnchor.BOTTOM_RIGHT);
+ mkNivEauMax.setLabel("Zmax=" + nf_.format(prf.getNiveauEauMax()));
+ mkNivEauMax.setLabelPaint(new Color(0xAA, 0x00, 0xFF));
+ mkNivEauMax.setPaint(new Color(0xAA, 0x00, 0xFF));
+ mkNivEauMax.setStroke(new BasicStroke(1));
+ mkNivEauMax.setLabelAnchor(RectangleAnchor.TOP_RIGHT);
+ mkNivEauMax.setLabelTextAnchor(TextAnchor.BOTTOM_RIGHT);
- graphe_.getXYPlot().addRangeMarker(mkNivEauMax, Layer.BACKGROUND);
- }
+ graphe_.getXYPlot().addRangeMarker(mkNivEauMax, Layer.BACKGROUND);
}
}
}
Modified: trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/ihmhelper/Hydraulique1dIHM_ProfilResultats.java
===================================================================
--- trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/ihmhelper/Hydraulique1dIHM_ProfilResultats.java 2013-07-25 12:34:32 UTC (rev 8448)
+++ trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/ihmhelper/Hydraulique1dIHM_ProfilResultats.java 2013-07-26 15:48:04 UTC (rev 8449)
@@ -7,22 +7,11 @@
* @mail de...@fu...
*/
package org.fudaa.fudaa.hydraulique1d.ihmhelper;
-import gnu.trove.TDoubleArrayList;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-
import javax.swing.JComponent;
import org.fudaa.dodico.hydraulique1d.metier.EnumMetierRegime;
-import org.fudaa.dodico.hydraulique1d.metier.MetierBief;
-import org.fudaa.dodico.hydraulique1d.metier.MetierDescriptionVariable;
import org.fudaa.dodico.hydraulique1d.metier.MetierEtude1d;
-import org.fudaa.dodico.hydraulique1d.metier.MetierReseau;
-import org.fudaa.dodico.hydraulique1d.metier.MetierResultatsTemporelSpatialBief;
-import org.fudaa.fudaa.hydraulique1d.CGlobal;
import org.fudaa.fudaa.hydraulique1d.Hydraulique1dBaseApplication;
-import org.fudaa.fudaa.hydraulique1d.Hydraulique1dProfilModel;
import org.fudaa.fudaa.hydraulique1d.Hydraulique1dResource;
import org.fudaa.fudaa.hydraulique1d.editor.profil.Hydraulique1dProfilEditor;
@@ -36,21 +25,10 @@
*/
public class Hydraulique1dIHM_ProfilResultats extends Hydraulique1dIHM_Base {
private Hydraulique1dProfilEditor edit_;
- int[] indicesBiefs_;
- int[] indicesPasTemps_;
- private Hydraulique1dProfilModel[] profilsModeleBief_;
- private Hydraulique1dProfilModel profilModeleCourant_;
public Hydraulique1dIHM_ProfilResultats(MetierEtude1d e) {
super(e);
}
- public void setIndicesBiefs(int[] indicesBiefs) {
- indicesBiefs_ = indicesBiefs;
- }
- public void setIndicesPasTemps(int[] indicesPasTemps) {
- indicesPasTemps_ = indicesPasTemps;
- }
-
@Override
public void editer() {
if (etude_.reseau() == null) return;
@@ -60,20 +38,15 @@
edit_= new Hydraulique1dProfilEditor(
Hydraulique1dProfilEditor.VOIR,
Hydraulique1dProfilEditor.PROFILS);
- edit_.setReseau(etude_.reseau());
installContextHelp(edit_);
listenToEditor(edit_);
BuAssistant ass= Hydraulique1dResource.getAssistant();
if (ass != null)
ass.addEmitters(edit_);
}
- initModeles();
- if (etude_.paramGeneraux().regime().value() == EnumMetierRegime._TRANSCRITIQUE)
- edit_.setIsTranscritique(true);
- else edit_.setIsTranscritique(false);
-
- edit_.setProfilsModeleBief(profilsModeleBief_);
- edit_.setProfilModel(profilModeleCourant_);
+
+ edit_.setEtude(etude_);
+ edit_.setIsTranscritique(etude_.paramGeneraux().regime().value() == EnumMetierRegime._TRANSCRITIQUE);
edit_.show();
}
@Override
@@ -84,137 +57,4 @@
.getImplementation()
.installContextHelp(e.getRootPane(), "mascaret/graphes_resultats.html");
}
-
- private void initModeles() {
-
- // initialisation les modeles de profils
- ArrayList listeProfils_ = new ArrayList();
- MetierReseau res = etude_.reseau();
- for (int i = 0; i < indicesBiefs_.length; i++) {
- MetierBief b = res.biefs()[indicesBiefs_[i]];
- int nbProfil = b.profils().length;
- for (int j = 0; j < nbProfil; j++) {
- Hydraulique1dProfilModel pModel= new Hydraulique1dProfilModel(b.profils()[j]);
- if ( (indicesPasTemps_ == null)||(indicesPasTemps_.length ==0) ) {
- int[] indicePasTps = initIndicePasTps();
- calculNiveauMinMaxProfil(pModel, b, indicesBiefs_[i], j, indicePasTps);
- }
- else if (indicesPasTemps_.length >= 1) {
- calculNiveauMinMaxProfil(pModel, b, indicesBiefs_[i], j, indicesPasTemps_);
- }
- listeProfils_.add(pModel);
- }
- }
- profilsModeleBief_ = (Hydraulique1dProfilModel[])listeProfils_.toArray(new Hydraulique1dProfilModel[listeProfils_.size()]);
- if (profilsModeleBief_.length > 0) {
- profilModeleCourant_=profilsModeleBief_[0];
- }
-
-
- }
-
- private int[] initIndicePasTps() {
- try {
- int nbPasTemps = etude_.resultatsGeneraux().
- resultatsTemporelSpatial().pasTemps().length;
- int[] indicePasTps = new int[nbPasTemps];
- for (int k = 0; k < nbPasTemps; k++) {
- indicePasTps[k] = k;
- }
- return indicePasTps;
- }
- catch (Exception ex) {
- return new int[0];
- }
- }
- private void calculNiveauMinMaxProfil(Hydraulique1dProfilModel pModel, MetierBief b,
- int ibief, int iprofil, int[] indicesPasTemps) {
- try {
- // extraction du resultat du bief d'indice ibief.
- MetierResultatsTemporelSpatialBief[] resBiefs = etude_.resultatsGeneraux().
- resultatsTemporelSpatial().resultatsBiefs();
- MetierResultatsTemporelSpatialBief resBief = resBiefs[ibief];
-
- int indiceVarCoteEau = rechercheIndiceVarCoteEau();
-
-
- // extraction de l'abscisse de d\xE9but du r\xE9sultat du bief
- double[] sectionRes = resBief.abscissesSections();
- double xDebutRes = sectionRes[0];
-
- // calcul du d\xE9calage \xE9ventuelle des abscisses entre r\xE9sultat et g\xE9om\xE9trie.
- double diffAbscisse = xDebutRes - b.extrAmont().profilRattache().abscisse();
-
- double abscProfilCorrige = b.profils()[iprofil].abscisse() + diffAbscisse;
- int iRes = Arrays.binarySearch(sectionRes, abscProfilCorrige);
- TDoubleArrayList listeCotes = new TDoubleArrayList(indicesPasTemps.length);
- if (iRes >= 0) {
- for (int i = 0; i < indicesPasTemps.length; i++) {
- double[] cotes = resBief.valeursVariables()[indiceVarCoteEau][indicesPasTemps[i]];
- listeCotes.add(cotes[iRes]);
- }
- } else {
- int iResSup = -iRes -1;
- if (iResSup >= sectionRes.length) {
- iResSup = sectionRes.length -1;
- }
- int iResInf = iResSup-1;
- double x2 = sectionRes[iResSup];
- double x1 = sectionRes[iResInf];
-
- for (int i = 0; i < indicesPasTemps.length; i++) {
- double[] cotes = resBief.valeursVariables()[indiceVarCoteEau][indicesPasTemps[i]];
- double y1 = cotes[iResInf];
- double y2 = cotes[iResSup];
- double z = interpolation(x1,x2,y1,y2,abscProfilCorrige);
- listeCotes.add(z);
- }
- }
- double min = listeCotes.min();
- double max = listeCotes.max();
- if (CGlobal.egale(min,max)) {
- pModel.setNiveauEau(min);
- pModel.setNiveauEauMin(Double.NaN);
- pModel.setNiveauEauMax(Double.NaN);
- } else {
- pModel.setNiveauEau(Double.NaN);
- pModel.setNiveauEauMin(listeCotes.min());
- pModel.setNiveauEauMax(listeCotes.max());
- }
- }
- catch (Exception ex) {
- ex.printStackTrace();
- pModel.setNiveauEau(Double.NaN);
- pModel.setNiveauEauMin(Double.NaN);
- pModel.setNiveauEauMax(Double.NaN);
- }
- }
- private int rechercheIndiceVarCoteEau() {
- MetierDescriptionVariable[] desc= etude_.resultatsGeneraux().resultatsTemporelSpatial().descriptionVariables();
- for (int i = 0; i < desc.length; i++) {
- MetierDescriptionVariable descVar = desc[i];
- if ("Z".equals(descVar.nom())) return i;
- }
- return -1;
- }
-
- private double interpolation(double x1, double x2, double y1, double y2, double x) {
- if (x1 == x) return y1;
- if (x2 == x) return y2;
- if (x1 == x2) throw new IllegalArgumentException("interpolation impossible x1="+x1+" == x2");
- /*
- if (x1 > x2) {
- if (x > x1) throw new IllegalArgumentException("extrapolation x="+x+" > x1="+x1+" > x2="+x2);
- if (x2 > x) throw new IllegalArgumentException("extrapolation x1="+x1+" > x2="+x2+" > x="+x);
- }
- if (x2 > x1) {
- if (x > x2) throw new IllegalArgumentException("extrapolation x="+x+" > x2="+x2+" > x1="+x1);
- if (x1 > x) throw new IllegalArgumentException("extrapolation x2="+x2+" > x1="+x1+" > x="+x);
- }*/
- if (CGlobal.egale(y1,y2)) return y1;
-
- double y = ( (y1-y2)*(x-x2)/(x1-x2) ) + y2;
-
- return y;
- }
}
Added: trunk/soft/fudaa-mascaret/ui/src/main/resources/org/fudaa/fudaa/hydraulique1d/icvoirminmax.gif...
[truncated message content] |
|
From: <de...@us...> - 2014-11-06 21:47:25
|
Revision: 8910
http://sourceforge.net/p/fudaa/svn/8910
Author: deniger
Date: 2014-11-06 21:47:20 +0000 (Thu, 06 Nov 2014)
Log Message:
-----------
correction probleme icone
Modified Paths:
--------------
trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/reseau/Hydraulique1dReseauFrame.java
trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/reseau/Hydraulique1dReseauPalette.java
Added Paths:
-----------
trunk/soft/fudaa-mascaret/ui/src/main/resources/org/fudaa/fudaa/hydraulique1d/reseau/reseau_pertecharge.png
Removed Paths:
-------------
trunk/soft/fudaa-mascaret/ui/src/main/resources/org/fudaa/fudaa/hydraulique1d/reseau/reseau_pertecharges.png
Modified: trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/reseau/Hydraulique1dReseauFrame.java
===================================================================
--- trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/reseau/Hydraulique1dReseauFrame.java 2014-11-06 21:46:51 UTC (rev 8909)
+++ trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/reseau/Hydraulique1dReseauFrame.java 2014-11-06 21:47:20 UTC (rev 8910)
@@ -155,20 +155,11 @@
etude_ = _etude;
reseau_ = _etude.reseau();
ihmP_ = _ihmP;
- // \xE9couteur des \xE9v\xE8nements hydraulique1d
-/* evtSupport_ = DObjetEventListenerSupport.createEventSupport();
- evtSupport_.clientListener(this);
- UsineLib.findUsine().addObjetEventListener(
- (DHydraulique1dEventListenerSupport) evtSupport_.tie());*/
+
Notifieur.getNotifieur().addObjetEventListener(this);
_grid.setParentFrame(this);
//
srcReseau_ = new Hydraulique1dReseauPalette(this);
-// pbReseau_ = new BuToggleButton(Hydraulique1dResource.HYDRAULIQUE1D.getString("Reseau hydraulique"));
-// pbReseau_.setToolTipText(Hydraulique1dResource.HYDRAULIQUE1D.getString("Palette de reseau hydraulique"));
-// pbReseau_.setIcon(
-// Hydraulique1dResource.HYDRAULIQUE1D.getIcon("hydraulique1dreseau"));
-// pbReseau_.setEnabled(grid_ instanceof DjaGridInteractive);
grid_.addPropertyChangeListener("interactive", new PropertyChangeListener() {
@@ -177,13 +168,7 @@
displayHidePaletteNetwork();
}
});
-// pbReseau_.addActionListener(new ActionListener() {
-//
-// @Override
-// public void actionPerformed(ActionEvent e) {
-// displayHidePaletteNetwork();
-// }
-// });
+//
displayHidePaletteNetwork();
//-- aha - 2.3.3 move position of frame--//
// pbReseau_.setPaletteLocation(getLocation().x+150,getLocation().y+20);
Modified: trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/reseau/Hydraulique1dReseauPalette.java
===================================================================
--- trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/reseau/Hydraulique1dReseauPalette.java 2014-11-06 21:46:51 UTC (rev 8909)
+++ trunk/soft/fudaa-mascaret/ui/src/main/java/org/fudaa/fudaa/hydraulique1d/reseau/Hydraulique1dReseauPalette.java 2014-11-06 21:47:20 UTC (rev 8910)
@@ -72,7 +72,7 @@
"bief",
"confluent",
"apport",
- "perteCharge",
+ "pertecharge",
"seuil",
"deversoir",
"-casier",
@@ -84,7 +84,7 @@
"bief",
"confluent",
"apport",
- "perteCharge",
+ "pertecharge",
"seuil",
"deversoir",
"-casier",
Copied: trunk/soft/fudaa-mascaret/ui/src/main/resources/org/fudaa/fudaa/hydraulique1d/reseau/reseau_pertecharge.png (from rev 8909, trunk/soft/fudaa-mascaret/ui/src/main/resources/org/fudaa/fudaa/hydraulique1d/reseau/reseau_pertecharges.png)
===================================================================
(Binary files differ)
Deleted: trunk/soft/fudaa-mascaret/ui/src/main/resources/org/fudaa/fudaa/hydraulique1d/reseau/reseau_pertecharges.png
===================================================================
(Binary files differ)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|