From: Bertrand M. <bma...@us...> - 2004-04-15 07:48:06
|
Update of /cvsroot/fudaa/fudaa_devel/fudaa/src/org/fudaa/fudaa/refonde In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15191 Modified Files: RefondeFillePost.java Log Message: Intégration du calcul des seiches dans Fudaa-Refonde : Prise en compte des résultats transitoires. Index: RefondeFillePost.java =================================================================== RCS file: /cvsroot/fudaa/fudaa_devel/fudaa/src/org/fudaa/fudaa/refonde/RefondeFillePost.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** RefondeFillePost.java 12 Mar 2004 10:17:05 -0000 1.6 --- RefondeFillePost.java 15 Apr 2004 07:47:56 -0000 1.7 *************** *** 8,25 **** */ package org.fudaa.fudaa.refonde; ! import org.fudaa.fudaa.commun.*; import org.fudaa.ebli.calque.*; import org.fudaa.ebli.geometrie.*; import com.memoire.bu.*; - import org.fudaa.ebli.trace.*; import org.fudaa.ebli.ressource.*; - import org.fudaa.ebli.palette.*; import java.util.*; import java.awt.*; - import java.awt.geom.*; - import java.awt.event.*; import java.beans.*; import javax.swing.*; import javax.swing.event.*; /** * Une fenetre interne affichant les calques de post traitement sans intéraction --- 8,23 ---- */ package org.fudaa.fudaa.refonde; ! import org.fudaa.ebli.calque.*; import org.fudaa.ebli.geometrie.*; import com.memoire.bu.*; import org.fudaa.ebli.ressource.*; import java.util.*; import java.awt.*; import java.beans.*; import javax.swing.*; import javax.swing.event.*; + import org.fudaa.fudaa.refonde.commun.*; + /** * Une fenetre interne affichant les calques de post traitement sans intéraction *************** *** 30,68 **** */ public class RefondeFillePost ! extends EbliFilleCalques ! implements PropertyChangeListener { ! /** ! * Numéro de fenètre, incrémenté à chaque création. Ce numéro ne sert que ! * dans la liste de fenètres, pour les différentier. ! */ private static int numero_= 0; ! /** ! * Table des calques résultats ! */ private Vector cqsResultats_= new Vector(); ! /** ! * Calque des légendes ! */ private BCalqueLegende cqLeg_; ! /** ! * Tools spécifiques de la fenêtre. ! */ private JComponent[] btTools_; ! /** ! * panneau de palette de couleur. ! */ ! private RefondePnPalette pnPal_; ! /** ! * Panneau d'options de tracé iso. ! */ ! private RefondePnOptionsIso pnIso_; ! /** ! * Le super maillage permet de visualiser les résultats. ! */ private GrMaillage superMail_= null; ! /** ! * Le calque actif (sélectionné dans l'arbre des calques). ! */ private BCalque cqActif_= null; /** * Création d'une fenètre de gestion des calques sans préoccupation de --- 28,57 ---- */ public class RefondeFillePost ! extends EbliFilleCalques { ! ! /** Numéro de fenètre, incrémenté à chaque création. Ce numéro ne sert que ! dans la liste de fenètres, pour les différentier. */ private static int numero_= 0; ! /** Table des calques résultats. */ private Vector cqsResultats_= new Vector(); ! /** Calque des légendes */ private BCalqueLegende cqLeg_; ! /** Tools spécifiques de la fenêtre. */ private JComponent[] btTools_; ! /** panneau de palette de couleur. */ ! private BPanneauPaletteCouleurPlage pnPal_; ! /** Panneau d'options de tracé iso. */ ! private BPanneauOptionsIso pnIso_; ! /** Panneau de selection du temps courant */ ! private BPanneauSelectedStep pnStep_; ! /** Bouton d'accès aux modes propres. Actif que si modèle seiche. */ ! private BuPopupButton btStep_=null; ! /** Le super maillage permet de visualiser les résultats. */ private GrMaillage superMail_= null; ! /** Le calque actif (sélectionné dans l'arbre des calques). */ private BCalque cqActif_= null; + /** Projet */ + private RefondeProjet prj_= null; + /** * Création d'une fenètre de gestion des calques sans préoccupation de *************** *** 72,75 **** --- 61,65 ---- // this(new BVueCalque(), _ac); // } + /** * Création d'une fenetre en précisant la vue associée. *************** *** 111,114 **** --- 101,105 ---- setClosable(true); } + /** * Pour donner un nom à la vue calque, nom utilisé dans la fenetre de mise en *************** *** 123,130 **** --- 114,124 ---- */ public void initialise(RefondeProjet _prj) { + prj_=_prj; + // Création du super maillage. Le maillage est censé être optimisé à ce // niveau et donc compatible avec des résultats de calcul. // Les noeuds sont rangés dans l'ordre de leur numérotation, les éléments // dans n'importe quel ordre. + superMail_= new GrMaillage(); GrMaillageElement mail= RefondeMaillage.creeSuperMaillage(_prj); *************** *** 133,142 **** Hashtable hInd2Nd= new Hashtable(); for (int i= 0; i < nds.length; i++) ! hInd2Nd.put( ! new Integer(((RefondeNoeudData)nds[i].data()).numero - 1), ! nds[i]); // Noeuds dans l'ordre de leur numérotation for (int i= 0; i < nds.length; i++) superMail_.noeuds.ajoute(((GrNoeud)hInd2Nd.get(new Integer(i))).point); // Connectivités for (int i= 0; i < els.length; i++) { --- 127,136 ---- Hashtable hInd2Nd= new Hashtable(); for (int i= 0; i < nds.length; i++) ! hInd2Nd.put(new Integer(((RefondeNoeudData)nds[i].data()).numero-1),nds[i]); ! // Noeuds dans l'ordre de leur numérotation for (int i= 0; i < nds.length; i++) superMail_.noeuds.ajoute(((GrNoeud)hInd2Nd.get(new Integer(i))).point); + // Connectivités for (int i= 0; i < els.length; i++) { *************** *** 147,168 **** superMail_.connectivites.add(conn); } ! // Création des calques clearResultats(); - // Calque de bathymetrie - double[] z= new double[nds.length]; - for (int i= 0; i < z.length; i++) - z[i]= superMail_.noeuds.renvoie(i).z; - ajouteResultat( - RefondeResultats.nomResultats[RefondeResultats.BATHYMETRIE], - z); - // Calques résultats if (_prj.hasResultats()) { ! RefondeResultats res= _prj.getResultats(); ! String[] nmRes= res.getNomsResultats(); ! for (int i= 0; i < nmRes.length; i++) { ! ajouteResultat(nmRes[i], res.getResultat(nmRes[i])); } } } /** * Suppression des calques de résultats --- 141,169 ---- superMail_.connectivites.add(conn); } ! ! // Création des calques résultats clearResultats(); if (_prj.hasResultats()) { ! RefondeResultats res=_prj.getResultats(); ! ! // Pas dans le panneau des pas. ! pnStep_.clearSteps(); ! for (int i=0; i<res.getNbEtapes(); i++) ! pnStep_.addStep(new Double(res.getInstantEtape(i))); ! ! // Résultats ! for (int i= 0; i < res.getNbColonnes(); i++) { ! ajouteResultat(res.getNomColonne(i)); } } + + // Création du calque Bathy. + ajouteBathy(); + + // Activation ou non des modes de valeurs propres. + btStep_.setEnabled(prj_.hasResultats() && + prj_.getModeleCalcul().typeModele()==RefondeModeleCalcul.MODELE_SEICHE); } + /** * Suppression des calques de résultats *************** *** 173,184 **** cqsResultats_.clear(); } /** * Ajout d'un résultat. Le résultat n'est ajouté que s'il n'existe pas déjà un * calque de même nom. */ ! public void ajouteResultat(String _nom, double[] _valeurs) { BCalque cqRoot= getVueCalque().getCalque(); ! if (cqRoot.getCalqueParTitre(_nom) != null) ! return; RefondeCalqueCarte cq= new RefondeCalqueCarte(); // cq.setPaletteCouleur(new BPaletteCouleurSimple()); --- 174,242 ---- cqsResultats_.clear(); } + + /** + * Ajout de la bathymetrie comme calque de résultat. + */ + public void ajouteBathy() { + BCalque cqRoot= getVueCalque().getCalque(); + + // Modèle de bathymetrie + class ModeleValeurBathy implements ZModeleValeur { + double[] vals_= null; + public ModeleValeurBathy(double[] _vals) { + vals_= _vals; + } + public int nbValeurs() { + return vals_.length; + } + public double valeur(int i) { + return vals_[i]; + } + public double getMin() { + double r= Double.POSITIVE_INFINITY; + for (int i= 0; i < vals_.length; i++) + r= Math.min(r, vals_[i]); + return r; + } + public double getMax() { + double r= Double.NEGATIVE_INFINITY; + for (int i= 0; i < vals_.length; i++) + r= Math.max(r, vals_[i]); + return r; + } + public void addModelChangeListener(ZModeleChangeListener _list) {} // Model doesn't change + public void removeModelChangeListener(ZModeleChangeListener _list) {} // Model doesn't change + } + + double[] z= new double[superMail_.noeuds.nombre()]; + for (int i= 0; i < z.length; i++) + z[i]= superMail_.noeuds.renvoie(i).z; + // BCalque cqRoot=getVueCalque().getCalque(); + RefondeCalqueCarte cq= new RefondeCalqueCarte(); + // cq.setPaletteCouleur(new BPaletteCouleurSimple()); + cq.setMaillage(superMail_); + cq.setName("cq" + "Bathy initiale"); + cq.setTitle("Bathy initiale"); + cq.setModeleValeurs(new ModeleValeurBathy(z)); + cq.setContour(false); + cq.setIsolignes(false); + cq.setSurface(false); + cq.setVisible(false); + cq.setLegende(cqLeg_); + cqRoot.add(cq); + } + /** * Ajout d'un résultat. Le résultat n'est ajouté que s'il n'existe pas déjà un * calque de même nom. */ ! public void ajouteResultat(String _nom) { BCalque cqRoot= getVueCalque().getCalque(); ! if (cqRoot.getCalqueParTitre(_nom)!=null) return; ! ! RefondeModeleVisuResultats mdRes= ! new RefondeModeleVisuResultats(prj_.getResultats(),_nom); ! mdRes.setSelectedStep(pnStep_.getSelectedStep()); ! RefondeCalqueCarte cq= new RefondeCalqueCarte(); // cq.setPaletteCouleur(new BPaletteCouleurSimple()); *************** *** 186,190 **** cq.setName("cq" + _nom); cq.setTitle(_nom); ! cq.setValeurs(_valeurs); cq.setContour(false); cq.setIsolignes(false); --- 244,249 ---- cq.setName("cq" + _nom); cq.setTitle(_nom); ! cq.setModeleValeurs(mdRes); ! mdRes.addModelChangeListener(cq); cq.setContour(false); cq.setIsolignes(false); *************** *** 195,207 **** --- 254,270 ---- cqRoot.add(cq); } + public String[] getEnabledActions() { return super.getEnabledActions(); } + public String[] getDisabledActions() { return super.getDisabledActions(); } + public JMenu[] getSpecificMenus() { return super.getSpecificMenus(); } + /** * Retourne les outils spécifiques *************** *** 224,227 **** --- 287,291 ---- return cps; } + /** * Evènement sur l'arbre (changement d'activation de calque). *************** *** 234,264 **** // if (btTools_.length>0 ) btTools_[0].doLayout(); // Mise a jour du panneau de palette. ! if (cqActif_ instanceof RefondeCalqueCarte) ! if(pnPal_!=null) pnPal_.setPalette(((RefondeCalqueCarte)cqActif_).getPalette()); ! else ! if(pnPal_!=null) pnPal_.setPalette(new RefondePaletteCouleurPlage()); } catch (NullPointerException e) {} } /** ! * Modification de la palette de couleurs ou des options de tracé. */ ! public void propertyChange(PropertyChangeEvent _evt) { if (RefondeResource.DEBUG) System.out.println("Event : " + _evt.getPropertyName()); // Mise a jour du calque de tracé. if (cqActif_ instanceof RefondeCalqueCarte) { if (_evt.getPropertyName().equals("palette")) { ((RefondeCalqueCarte)cqActif_).setPalette(pnPal_.getPalette()); ! } else if (_evt.getPropertyName().equals("optionsIso")) { ! ((RefondeCalqueCarte)cqActif_).setIsolignes( ! pnIso_.isIsolignesSelected()); ! ((RefondeCalqueCarte)cqActif_).setIsosurfaces( ! pnIso_.isIsosurfacesSelected()); ((RefondeCalqueCarte)cqActif_).setContour(pnIso_.isMaillageSelected()); ! } else ! return; cqActif_.repaint(); } } /** * Création de la barre d'outils avec les outils de tous les calques. --- 298,360 ---- // if (btTools_.length>0 ) btTools_[0].doLayout(); // Mise a jour du panneau de palette. ! if (cqActif_ instanceof RefondeCalqueCarte) { ! pnPal_.setPalette(((RefondeCalqueCarte)cqActif_).getPalette()); ! pnPal_.setBorneMin(((RefondeCalqueCarte)cqActif_).getModeleValeur().getMin()); ! pnPal_.setBorneMax(((RefondeCalqueCarte)cqActif_).getModeleValeur().getMax()); ! } ! else { ! pnPal_.setPalette(new BPaletteCouleurPlage()); ! pnPal_.setBorneMin(pnPal_.getPalette().getMinPalette()); ! pnPal_.setBorneMax(pnPal_.getPalette().getMaxPalette()); ! } } catch (NullPointerException e) {} } + /** ! * Modification des propriétés de calque courant. */ ! public void layerPropertyChange(PropertyChangeEvent _evt) { if (RefondeResource.DEBUG) System.out.println("Event : " + _evt.getPropertyName()); + // Mise a jour du calque de tracé. if (cqActif_ instanceof RefondeCalqueCarte) { if (_evt.getPropertyName().equals("palette")) { ((RefondeCalqueCarte)cqActif_).setPalette(pnPal_.getPalette()); ! } ! else if (_evt.getPropertyName().equals("optionsIso")) { ! ((RefondeCalqueCarte)cqActif_).setIsolignes(pnIso_.isIsolignesSelected()); ! ((RefondeCalqueCarte)cqActif_).setIsosurfaces(pnIso_.isIsosurfacesSelected()); ((RefondeCalqueCarte)cqActif_).setContour(pnIso_.isMaillageSelected()); ! } ! else return; ! cqActif_.repaint(); } } + + /** + * Modification des propriétés de fenetre. + */ + public void windowPropertyChange(PropertyChangeEvent _evt) { + if (_evt.getPropertyName().equals("selectedStep")) { + for (int i= 0; i < cqsResultats_.size(); i++) { + if (cqsResultats_.get(i) instanceof RefondeCalqueCarte) { + RefondeCalqueCarte cq=(RefondeCalqueCarte)cqsResultats_.get(i); + RefondeModeleVisuResultats mdRes= + (RefondeModeleVisuResultats)cq.getModeleValeur(); + mdRes.setSelectedStep(pnStep_.getSelectedStep()); + + if (cq==cqActif_) { + pnPal_.setPalette(cq.getPalette()); + pnPal_.setBorneMin(cq.getModeleValeur().getMin()); + pnPal_.setBorneMax(cq.getModeleValeur().getMax()); + } + } + } + getVueCalque().repaint(); + } + } + /** * Création de la barre d'outils avec les outils de tous les calques. *************** *** 274,280 **** } } ! // Palette de couleurs ! pnPal_= new RefondePnPalette(); ! pnPal_.addPropertyChangeListener(this); BuPopupButton btPal= new BuPopupButton(EbliResource.EBLI.getString("palette"), pnPal_); --- 370,386 ---- } } ! ! // Separator ! vcps.add(null); ! ! // Panneau de palette de couleurs ! pnPal_= new BPanneauPaletteCouleurPlage(); ! pnPal_.addPropertyChangeListener(new PropertyChangeListener() { ! public void propertyChange(PropertyChangeEvent _evt) { ! layerPropertyChange(_evt); ! } ! }); ! pnPal_.setPanneauTailleEnabled(false); ! BuPopupButton btPal= new BuPopupButton(EbliResource.EBLI.getString("palette"), pnPal_); *************** *** 283,289 **** btPal.setIcon(EbliResource.EBLI.getIcon("palettecouleur")); vcps.add(btPal); ! // Options de tracé d'isocouleurs ! pnIso_= new RefondePnOptionsIso(); ! pnIso_.addPropertyChangeListener(this); BuPopupButton btIso= new BuPopupButton(EbliResource.EBLI.getString("tracé iso"), pnIso_); --- 389,401 ---- btPal.setIcon(EbliResource.EBLI.getIcon("palettecouleur")); vcps.add(btPal); ! ! // Panneau d'options de tracé d'isocouleurs ! pnIso_= new BPanneauOptionsIso(); ! pnIso_.addPropertyChangeListener(new PropertyChangeListener() { ! public void propertyChange(PropertyChangeEvent _evt) { ! layerPropertyChange(_evt); ! } ! }); ! BuPopupButton btIso= new BuPopupButton(EbliResource.EBLI.getString("tracé iso"), pnIso_); *************** *** 292,298 **** btIso.setIcon(EbliResource.EBLI.getIcon("surface")); vcps.add(btIso); btTools_= (JComponent[])vcps.toArray(new JComponent[0]); for (int i= 0; i < btTools_.length; i++) ! btTools_[i].setEnabled(true); } /** --- 404,427 ---- btIso.setIcon(EbliResource.EBLI.getIcon("surface")); vcps.add(btIso); + + // Panneau de selection de pas + pnStep_= new BPanneauSelectedStep(); + pnStep_.addPropertyChangeListener(new PropertyChangeListener() { + public void propertyChange(PropertyChangeEvent _evt) { + windowPropertyChange(_evt); + } + }); + + btStep_= new BuPopupButton("Pas", pnStep_); + btStep_.setMargin(new Insets(0, 0, 0, 0)); + btStep_.setActionCommand("SELECTIONNERPAS"); + btStep_.setToolTipText("Selection de la période de résonnance"); + btStep_.setIcon(RefondeResource.REFONDE.getIcon("temps")); + vcps.add(btStep_); + btTools_= (JComponent[])vcps.toArray(new JComponent[0]); for (int i= 0; i < btTools_.length; i++) ! if (btTools_[i] != null) ! btTools_[i].setEnabled(true); } /** |