|
From: <bma...@us...> - 2011-12-19 21:09:21
|
Revision: 6867
http://fudaa.svn.sourceforge.net/fudaa/?rev=6867&view=rev
Author: bmarchan
Date: 2011-12-19 21:09:14 +0000 (Mon, 19 Dec 2011)
Log Message:
-----------
Fix : Divers probl?\195?\168mes sur le modeleur 1D
Modified Paths:
--------------
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlCompareProfilePanel.java
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/controller/Controller1d.java
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/model/BiefContainerAdapter.java
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/model/ProfilContainerAdapter.java
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/view/PnAbscisseProfil.java
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/view/PnGestionProfil.java
trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/view/VueTableau.java
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlCompareProfilePanel.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlCompareProfilePanel.java 2011-12-19 16:16:25 UTC (rev 6866)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/MdlCompareProfilePanel.java 2011-12-19 21:09:14 UTC (rev 6867)
@@ -134,7 +134,7 @@
pnProfiles_=new PnGestionProfil(ctrl_,false);
// Le panneau des coordonn\xE9es du profil courant.
- viewTable_=new VueTableau(this, null, true);
+ viewTable_=new VueTableau(this, true);
viewTable_.addSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
if (listenEventSelection_) {
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/controller/Controller1d.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/controller/Controller1d.java 2011-12-19 16:16:25 UTC (rev 6866)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/controller/Controller1d.java 2011-12-19 21:09:14 UTC (rev 6867)
@@ -171,7 +171,7 @@
}
});
// Vue tableau
- vueTableau_=new VueTableau(this, controllerProfil_.getProfilSet().getProfil(0),true);
+ vueTableau_=new VueTableau(this, true);
vueTableau_.addSelectionListener(this);
// Vue courbe
vueCourbe_=new VueCourbe(this, controllerProfil_.getBiefContainer());
@@ -180,7 +180,7 @@
vueError_.setForeground(Color.RED);
vueError_.setHorizontalAlignment(JLabel.CENTER);
// Vue abscisse curv profil
- vueAbsProf_=new PnAbscisseProfil(this, controllerProfil_.getProfilSet().getProfil(0), formater_);
+ vueAbsProf_=new PnAbscisseProfil(this, formater_);
clearError();
}
@@ -220,7 +220,7 @@
controllerBief_.getSelectedBief().disableSynchroniser();
cmd_.redo();
if (newIdx_ != oldIdx_) {
- controllerBief_.biefContainerAdapter_.clearCacheProfils();
+ controllerBief_.biefContainerAdapter_.rebuildProfiles();
}
controllerBief_.getSelectedBief().enableSynchroniser();
controllerProfil_.getProfilSelectionModel().setSelectedProfil(newIdx_);
@@ -230,7 +230,7 @@
controllerBief_.getSelectedBief().disableSynchroniser();
cmd_.undo();
if (newIdx_ != oldIdx_) {
- controllerBief_.biefContainerAdapter_.clearCacheProfils();
+ controllerBief_.biefContainerAdapter_.rebuildProfiles();
}
controllerBief_.getSelectedBief().enableSynchroniser();
controllerProfil_.getProfilSelectionModel().setSelectedProfil(oldIdx_);
@@ -245,7 +245,7 @@
controllerBief_.getSelectedBief().disableSynchroniser();
int newIdxProfil=controllerBief_.orderProfils(oldIdxProfil, cmd);
if (newIdxProfil!=oldIdxProfil) {
- controllerBief_.biefContainerAdapter_.clearCacheProfils();
+ controllerBief_.biefContainerAdapter_.rebuildProfiles();
}
controllerBief_.getSelectedBief().enableSynchroniser();
controllerProfil_.getProfilSelectionModel().setSelectedProfil(newIdxProfil);
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/model/BiefContainerAdapter.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/model/BiefContainerAdapter.java 2011-12-19 16:16:25 UTC (rev 6866)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/model/BiefContainerAdapter.java 2011-12-19 21:09:14 UTC (rev 6867)
@@ -7,11 +7,11 @@
*/
package org.fudaa.fudaa.modeleur.modeleur1d.model;
-import java.util.HashMap;
-
+import java.util.ArrayList;
import java.util.HashSet;
-
+import java.util.List;
import java.util.Set;
+
import org.fudaa.ctulu.CtuluCommand;
import org.fudaa.ctulu.CtuluCommandComposite;
import org.fudaa.ctulu.CtuluCommandContainer;
@@ -39,8 +39,8 @@
private Set<BiefContainerListener> biefListeners_=new HashSet<BiefContainerListener>();
/** Listeners profilSet */
private Set<ProfileSetListener> profSetListeners_=new HashSet<ProfileSetListener>();
- /** Le profil selectionn\xE9 du bief. */
- private int idxSelectedProfil_=-1;
+ /** Les profils reconstruits a chaque changement de bief. */
+ private List<ProfilContainerAdapter> profiles=new ArrayList<ProfilContainerAdapter>();
public BiefContainerAdapter(BiefSet _biefSet) {
biefSet_=_biefSet;
@@ -73,7 +73,7 @@
throw new IllegalArgumentException("Bief : "+_nomBief+" inconnu.");
if(_nomBief == null ? nomBiefSelected_ != null : !_nomBief.equals(nomBiefSelected_)) {
nomBiefSelected_=_nomBief;
- clearCacheProfils();
+ rebuildProfiles();
fireBiefSelectedChanged(_nomBief);
}
}
@@ -86,12 +86,19 @@
return biefSet_.getBief(_name);
}
-
- public void clearCacheProfils() {
- for (ProfilContainerAdapter pf : idx2Profil_.values()) {
- this.removeBiefContainerListener(pf);
+ /**
+ * Reconstruit les profils du bief.
+ */
+ public void rebuildProfiles() {
+ profiles.clear();
+ for (int i=0; i<getNbProfil(); i++) {
+ ProfilContainerAdapter pf=new ProfilContainerAdapter(this);
+ try {
+ pf.setSelectedProfil(i);
+ }
+ catch (Exception ex) {}
+ profiles.add(pf);
}
- idx2Profil_.clear();
}
public GISZoneCollectionLigneBrisee getZoneAxeHydraulique() {
@@ -171,17 +178,21 @@
public String getName() {return MdlResource.getS("Supprimer profil");}
}
CtuluCommandComposite cmdComp=new CtuluCommandComposite();
+ getBief(getSelectedBief()).disableSynchroniser();
getZoneProfils().removeGeometries(new int[]{_idxProfil}, cmdComp);
+ getBief(getSelectedBief()).enableSynchroniser();
+ rebuildProfiles();
if(_cmd!=null)
_cmd.addCmd(new RemoveProfilCtuluCommand(_idxProfil, cmdComp));
fireProfilRemoved(_idxProfil);
}
public void renameProfil(int _idxProfil, String _newName, CtuluCommandContainer _cmd) {
+ if(_newName==null) return;
+
if(_idxProfil<0||_idxProfil>=getZoneProfils().getNbGeometries())
throw new IllegalArgumentException("Erreur prog : Le profil "+_idxProfil+" n'existe pas");
- if(_newName==null||_newName.length()==0)
- throw new IllegalArgumentException(MdlResource.getS("Un nom doit \xEAtre donn\xE9"));
+
class RenameProfilCtuluCommand implements CtuluCommand, CtuluNamedCommand {
private int idxProfil_;
private String oldName_;
@@ -225,8 +236,6 @@
}
public void removeListener(ProfileSetListener _listener) {
-// if (!(_listener instanceof BiefContainerListener))
-// throw new UnsupportedOperationException("Parameter must be a BiefContainerListener");
profSetListeners_.remove(_listener);
}
@@ -266,31 +275,14 @@
for(BiefContainerListener listener: biefListeners_)
listener.profilRenamed(_idxProfil, _oldName, _newName);
}
-//
-// public int getSelectedIndex() {
-// return idxSelectedProfil_;
-// }
-//
-// /**
-// * Renseign\xE9 par le container.
-// * @param _idx
-// */
-// public void setSelectedIndex(int _idx) {
-// idxSelectedProfil_=_idx;
-// }
-
- HashMap<Integer, ProfilContainerAdapter> idx2Profil_=new HashMap<Integer, ProfilContainerAdapter>();
+ @Override
public ProfilContainerI getProfil(int _idxProfil) {
- if (idx2Profil_.get(_idxProfil)==null) {
- ProfilContainerAdapter pf=new ProfilContainerAdapter(this);
- try {
- pf.setSelectedProfil(_idxProfil);
- }
- catch (Exception ex) {}
- idx2Profil_.put(_idxProfil, pf);
- }
- return idx2Profil_.get(_idxProfil);
+ if (_idxProfil<0 || _idxProfil>=profiles.size())
+ return null;
+
+ ProfilContainerAdapter pf=profiles.get(_idxProfil);
+ return pf;
}
@Override
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/model/ProfilContainerAdapter.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/model/ProfilContainerAdapter.java 2011-12-19 16:16:25 UTC (rev 6866)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/model/ProfilContainerAdapter.java 2011-12-19 21:09:14 UTC (rev 6867)
@@ -40,10 +40,13 @@
* simplement. Cette simplification se fait en cachant toutes les informations
* inutils et en ajoutant une information d'abcisse curviligne.
*
+ * Chaque instance est associ\xE9e \xE0 un index de profil sur la zone des profils
+ * et cet index n'est plus modifi\xE9 par la suite.
+ *
* @author Emmanuel MARTIN
* @version $Id$
*/
-public class ProfilContainerAdapter implements ProfilContainerI, BiefContainerListener {
+public class ProfilContainerAdapter implements ProfilContainerI {
/**
* Un command container pour le undo/redo.
@@ -165,7 +168,7 @@
public ProfilContainerAdapter(BiefContainerAdapter _biefContainer) {
biefContainer_=_biefContainer;
- biefContainer_.addBiefContainerListener(this);
+// biefContainer_.addBiefContainerListener(this);
}
public boolean isRupturePoint(int _idx) {
@@ -184,46 +187,11 @@
if(_idxProfil!=-1&&!biefContainer_.hasProfil(_idxProfil))
throw new IllegalArgumentException("Erreur prog : Profil : "+_idxProfil+" inconnu.");
if(_idxProfil!=idxProfilSelected_) {
- int oldProfilSelected=idxProfilSelected_;
idxProfilSelected_=_idxProfil;
updateData();
-// biefContainer_.setSelectedIndex(idxProfilSelected_);
-// fireProfilContainerSelectedChanged(oldProfilSelected, idxProfilSelected_);
}
}
- public void biefSelectedChanged(String _newName) {
- int oldSelectedProfil=idxProfilSelected_;
- idxProfilSelected_=-1;
- curv_=null;
- fireProfilContainerSelectedChanged(oldSelectedProfil, idxProfilSelected_);
- }
-
- public void biefSelectedRenamed(String name, String name2) {}
-
- public void profilAdded(int profil) {}
-
- public void profilRemoved(int _idxProfil) {
- if(_idxProfil==idxProfilSelected_) {
- int oldSelectedProfil=idxProfilSelected_;
- idxProfilSelected_=-1;
- curv_=null;
- fireProfilContainerSelectedChanged(oldSelectedProfil, idxProfilSelected_);
- }
- }
-
- public void profilRenamed(int profil, String name, String name2) {}
-
-// @Override
-// public void profilSelectionChanged(int _oldProfil, int _idxProfil) {
-// try {
-// setSelectedProfil(_idxProfil);
-// }
-// catch (ProfilContainerException ex) {
-// }
-// }
-
-
/**
* Met \xE0 jour les valeurs zMin et zMax.
* Si z est null, zMin et zMax sont mises \xE0 -1.
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/view/PnAbscisseProfil.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/view/PnAbscisseProfil.java 2011-12-19 16:16:25 UTC (rev 6866)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/view/PnAbscisseProfil.java 2011-12-19 21:09:14 UTC (rev 6867)
@@ -36,12 +36,12 @@
protected ProfilContainerI data_;
protected EbliFormatterInterface formater_;
- public PnAbscisseProfil(Controller1d _controller1d, ProfilContainerI _data, EbliFormatterInterface _formatter){
+ public PnAbscisseProfil(Controller1d _controller1d, EbliFormatterInterface _formatter){
super(BoxLayout.X_AXIS);
controller_=_controller1d;
formater_=_formatter;
- setProfile(_data);
+ setProfile(null);
// Abscisse curviligne du profil sur l'axe hydraulique
tfAxeHydraulique_.addActionListener(new ActionListener(){
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/view/PnGestionProfil.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/view/PnGestionProfil.java 2011-12-19 16:16:25 UTC (rev 6866)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/view/PnGestionProfil.java 2011-12-19 21:09:14 UTC (rev 6867)
@@ -12,27 +12,26 @@
import java.awt.event.ActionListener;
import javax.swing.JButton;
+import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
+import javax.swing.SwingUtilities;
import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
+import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
-
-import com.memoire.bu.BuBorderLayout;
-import com.memoire.bu.BuButton;
-import com.memoire.bu.BuGridLayout;
-import com.memoire.bu.BuLabel;
-import javax.swing.JLabel;
-import javax.swing.SwingUtilities;
-import javax.swing.table.DefaultTableCellRenderer;
import org.fudaa.ctulu.table.CtuluTable;
import org.fudaa.fudaa.modeleur.modeleur1d.controller.ProfileSetControllerI;
import org.fudaa.fudaa.modeleur.modeleur1d.model.ProfileSetI;
import org.fudaa.fudaa.modeleur.modeleur1d.model.ProfileSetListener;
import org.fudaa.fudaa.modeleur.resource.MdlResource;
+import com.memoire.bu.BuBorderLayout;
+import com.memoire.bu.BuButton;
+import com.memoire.bu.BuGridLayout;
+import com.memoire.bu.BuLabel;
+
/**
* Un panneau permettant de g\xE9rer les profils.
* @author Emmanuel MARTIN
@@ -46,8 +45,6 @@
protected JTable tableProfils_;
private TableProfilModel tbModel_;
private boolean isNameEditable_=false;
- /** Pour eviter la propagation sans fin des evenements */
- private boolean propagateEvent_=true;
public PnGestionProfil(ProfileSetControllerI _controllerProfil) {
this(_controllerProfil,true);
@@ -74,16 +71,7 @@
scrollRectToVisible(getCellRect(getSelectionModel().getMinSelectionIndex(), 0, false));
}
};
- tableProfils_.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
- @Override
- public void valueChanged(ListSelectionEvent e) {
- if (e.getValueIsAdjusting()) return;
-
- if (propagateEvent_)
- controllerProfil_.getProfilSelectionModel().setSelectedProfil(tableProfils_.getSelectedRow());
- }
- });
-// tableProfils_.setSelectionModel(controllerProfil_.getProfilSelectionModel());
+ tableProfils_.setSelectionModel(controllerProfil_.getProfilSelectionModel());
tableProfils_.getColumnModel().getColumn(0).setCellRenderer(new DefaultTableCellRenderer(){
@Override
public JLabel getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row,
@@ -144,33 +132,24 @@
public TableProfilModel() {
super(new String[]{MdlResource.getS("Index"),MdlResource.getS("Nom")}, 0);
-// profilSet_=controllerProfil_.getProfilSet();
-// profilSet_.addListener(this);
-// setProfilSet(controllerProfil_.getProfilSet());
}
public void setProfilSet(ProfileSetI _profSet) {
if (profilSet_ == _profSet) {
return;
}
-
- propagateEvent_=false;
- try {
- tableProfils_.clearSelection();
- if (profilSet_ != null) {
- profilSet_.removeListener(this);
- }
- profilSet_ = _profSet;
- if (profilSet_ != null) {
- profilSet_.addListener(this);
- }
+ tableProfils_.clearSelection();
- fireTableDataChanged();
+ if (profilSet_ != null) {
+ profilSet_.removeListener(this);
}
- finally {
- propagateEvent_ = true;
+ profilSet_ = _profSet;
+ if (profilSet_ != null) {
+ profilSet_.addListener(this);
}
+
+ fireTableDataChanged();
}
public Class<?> getColumnClass(int columnIndex) {
@@ -202,30 +181,13 @@
if(!getValueAt(rowIndex, columnIndex).equals(value))
controllerProfil_.renameProfil(rowIndex, (String) value);
}
-//
-// public void biefSelectedChanged(String name) {
-// fireTableDataChanged();
-// }
-//
-// public void biefSelectedRenamed(String name, String name2) {
-// fireTableDataChanged();
-// }
public void profilRemoved(int profil) {
fireTableDataChanged();
}
-//
-// public void profilRenamed(int profil, String name, String name2) {
-// fireTableDataChanged();
-// }
public void profilAdded(int profil) {
fireTableDataChanged();
}
-
-// @Override
-// public void profilSelectionChanged(int _oldProfil, int _idxProfil) {
-//// fireTableDataChanged();
-// }
}
}
Modified: trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/view/VueTableau.java
===================================================================
--- trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/view/VueTableau.java 2011-12-19 16:16:25 UTC (rev 6866)
+++ trunk/soft/fudaa-modeleur/src/main/java/org/fudaa/fudaa/modeleur/modeleur1d/view/VueTableau.java 2011-12-19 21:09:14 UTC (rev 6867)
@@ -63,7 +63,7 @@
protected ProfilContainerI data_;
protected EbliFormatterInterface formater_;
- public TableGeomModel(ProfilContainerI _data, EbliFormatterInterface _formater){
+ public TableGeomModel(EbliFormatterInterface _formater){
super(new String[]{MdlResource.getS("Index"), MdlResource.getS("Abs travers"), "Z"}, 0);
formater_=_formater;
// if(_data==null)
@@ -186,11 +186,11 @@
BuToolButton btRemove_;
- public VueTableau(VueProfilI _controller, ProfilContainerI _data, boolean _showButtons){
+ public VueTableau(VueProfilI _controller, boolean _showButtons){
controller_=_controller;
setLayout(new BuBorderLayout(2, 2));
// Tableau
- modelTable_=new TableGeomModel(_data, controller_.getFormater());
+ modelTable_=new TableGeomModel(controller_.getFormater());
table_=new CtuluTable(modelTable_) {
/* (non-Javadoc)
* @see javax.swing.JTable#valueChanged(javax.swing.event.ListSelectionEvent)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|