From: <emm...@us...> - 2008-12-24 15:09:48
|
Revision: 4315 http://fudaa.svn.sourceforge.net/fudaa/?rev=4315&view=rev Author: emmanuel_martin Date: 2008-12-24 15:09:43 +0000 (Wed, 24 Dec 2008) Log Message: ----------- Ajout de la base de la gestion multi-bief ; ajout de la base d'un module de gestion de profil ; mise ?\195?\160 jour par rapport au 2d chaque fois que la fen?\195?\170tre 1d prendre le focus. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/Controller1d.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueBief.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueCourbe.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueModuleGestionBief.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueModuleGestionProfil.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueTableau.java Added Paths: ----------- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer1dBank.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dStorageLimit.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dBank.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dStorageLimit.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerBief.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerProfil.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/Bief.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/BiefContainer.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/BiefContainerAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/BiefContainerListener.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/BiefSet.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/BiefSetListener.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/ProfilContainer.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/ProfilContainerAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/ProfilContainerException.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/ProfilContainerListener.java Removed Paths: ------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/DataGeometry.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/DataGeometryAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/DataGeometryException.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/DataGeometryListener.java Copied: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer1dBank.java (from rev 4312, branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/DataGeometryListener.java) =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer1dBank.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer1dBank.java 2008-12-24 15:09:43 UTC (rev 4315) @@ -0,0 +1,60 @@ +/* + * @creation 23 d\xE9c. 2008 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.fudaa.modeleur.layer; + +import java.awt.Color; + +import org.fudaa.ebli.calque.BCalquePersistenceInterface; +import org.fudaa.ebli.calque.dessin.DeForme; +import org.fudaa.ebli.calque.edition.ZModeleLigneBriseeEditable; +import org.fudaa.ebli.trace.TraceLigne; +import org.fudaa.ebli.trace.TraceLigneModel; +import org.fudaa.fudaa.modeleur.MdlResource; +import org.fudaa.fudaa.modeleur.persistence.MdlLayer2dDirectionLinePersistence; +import org.fudaa.fudaa.sig.layer.FSigEditor; + +/** + * Un calque pour le stockage et la manipulation des rives. + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class MdlLayer1dBank extends MdlLayer2dLine { + + /** + * Constructeur. Utilise un mod\xE8le de donn\xE9es et un editeur. + * @param _model Modele + * @param _editor Editeur. + */ + private MdlLayer1dBank(ZModeleLigneBriseeEditable _model, final FSigEditor _editor) { + super(_model,_editor); + setLineModel(0, new TraceLigneModel(TraceLigne.LISSE, 1.5f, new Color(102,102,255))); + setLineModelOuvert(getLineModel(0)); + setName(getExtName()); + setTitle(MdlResource.MDL.getString("Rives")); + } + + public MdlLayer1dBank(FSigEditor _editor) { + this(new MdlModel1dBank(_editor,_editor.getMng()),_editor); + } + + public BCalquePersistenceInterface getPersistenceMng() { + return new MdlLayer2dDirectionLinePersistence(); + } + + /** + * Retourne le nom par defaut du calque. + * @return Le nom. + */ + public String getExtName() { + return "rives"; + } + + public boolean canAddForme(int _typeForme) { + return _typeForme==DeForme.LIGNE_BRISEE; + } +} \ No newline at end of file Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer1dBank.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:mergeinfo + /branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/DataGeometryListener.java:3445-3850 /branches/FudaaModeleur_TC1/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/DataGeometryListener.java:3861-3891 Added: svn:eol-style + native Copied: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dStorageLimit.java (from rev 4312, branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/DataGeometryListener.java) =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dStorageLimit.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dStorageLimit.java 2008-12-24 15:09:43 UTC (rev 4315) @@ -0,0 +1,60 @@ +/* + * @creation 23 d\xE9c. 2008 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.fudaa.modeleur.layer; + +import java.awt.Color; + +import org.fudaa.ebli.calque.BCalquePersistenceInterface; +import org.fudaa.ebli.calque.dessin.DeForme; +import org.fudaa.ebli.calque.edition.ZModeleLigneBriseeEditable; +import org.fudaa.ebli.trace.TraceLigne; +import org.fudaa.ebli.trace.TraceLigneModel; +import org.fudaa.fudaa.modeleur.MdlResource; +import org.fudaa.fudaa.modeleur.persistence.MdlLayer2dDirectionLinePersistence; +import org.fudaa.fudaa.sig.layer.FSigEditor; + +/** + * Un calque pour le stockage et la manipulation des limites de stockage. + * @author Emmanuel MARTIN + * @version $Id$ + */ +public class MdlLayer2dStorageLimit extends MdlLayer2dLine { + + /** + * Constructeur. Utilise un mod\xE8le de donn\xE9es et un editeur. + * @param _model Modele + * @param _editor Editeur. + */ + private MdlLayer2dStorageLimit(ZModeleLigneBriseeEditable _model, final FSigEditor _editor) { + super(_model,_editor); + setLineModel(0, new TraceLigneModel(TraceLigne.LISSE, 1.5f, new Color(102,102,255))); + setLineModelOuvert(getLineModel(0)); + setName(getExtName()); + setTitle(MdlResource.MDL.getString("Limites de stockage")); + } + + public MdlLayer2dStorageLimit(FSigEditor _editor) { + this(new MdlModel1dStorageLimit(_editor,_editor.getMng()),_editor); + } + + public BCalquePersistenceInterface getPersistenceMng() { + return new MdlLayer2dDirectionLinePersistence(); + } + + /** + * Retourne le nom par defaut du calque. + * @return Le nom. + */ + public String getExtName() { + return "stockage"; + } + + public boolean canAddForme(int _typeForme) { + return _typeForme==DeForme.LIGNE_BRISEE; + } +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlLayer2dStorageLimit.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:mergeinfo + /branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/DataGeometryListener.java:3445-3850 /branches/FudaaModeleur_TC1/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/DataGeometryListener.java:3861-3891 Added: svn:eol-style + native Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dBank.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dBank.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dBank.java 2008-12-24 15:09:43 UTC (rev 4315) @@ -0,0 +1,40 @@ +/* + * @creation 23 d\xE9c. 2008 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.fudaa.modeleur.layer; + +import org.fudaa.ctulu.CtuluCommandContainer; +import org.fudaa.ctulu.gis.GISAttribute; +import org.fudaa.ctulu.gis.GISAttributeConstants; +import org.fudaa.ebli.calque.ZModelGeometryListener; + +/** + * Un mod\xE8le de gestion de rive. + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class MdlModel1dBank extends MdlModel2dLine { + + /** + * Construction d'un modele de profil avec pile de commandes. + * @param _cmd La pile de commandes pour le undo/redo. + */ + public MdlModel1dBank(final ZModelGeometryListener _listener, final CtuluCommandContainer _cmd) { + super(_listener); + GISAttribute[] attrs=new GISAttribute[]{ + GISAttributeConstants.BATHY, + GISAttributeConstants.ETAT_GEOM, + GISAttributeConstants.TITRE, + GISAttributeConstants.NATURE, + GISAttributeConstants.VISIBILITE + }; + // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. + getGeomData().setAttributes(attrs, null); + getGeomData().setAttributeIsZ(GISAttributeConstants.BATHY); + getGeomData().setFixedAttributeValue(GISAttributeConstants.NATURE, GISAttributeConstants.ATT_NATURE_RV); + } +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dBank.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dStorageLimit.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dStorageLimit.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dStorageLimit.java 2008-12-24 15:09:43 UTC (rev 4315) @@ -0,0 +1,40 @@ +/* + * @creation 23 d\xE9c. 2008 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.fudaa.modeleur.layer; + +import org.fudaa.ctulu.CtuluCommandContainer; +import org.fudaa.ctulu.gis.GISAttribute; +import org.fudaa.ctulu.gis.GISAttributeConstants; +import org.fudaa.ebli.calque.ZModelGeometryListener; + +/** + * Un mod\xE8le de gestion de limite de stockage. + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class MdlModel1dStorageLimit extends MdlModel2dLine { + + /** + * Construction d'un modele de profil avec pile de commandes. + * @param _cmd La pile de commandes pour le undo/redo. + */ + public MdlModel1dStorageLimit(final ZModelGeometryListener _listener, final CtuluCommandContainer _cmd) { + super(_listener); + GISAttribute[] attrs=new GISAttribute[]{ + GISAttributeConstants.BATHY, + GISAttributeConstants.ETAT_GEOM, + GISAttributeConstants.TITRE, + GISAttributeConstants.NATURE, + GISAttributeConstants.VISIBILITE + }; + // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. + getGeomData().setAttributes(attrs, null); + getGeomData().setAttributeIsZ(GISAttributeConstants.BATHY); + getGeomData().setFixedAttributeValue(GISAttributeConstants.NATURE, GISAttributeConstants.ATT_NATURE_LS); + } +} \ No newline at end of file Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dStorageLimit.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/Controller1d.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/Controller1d.java 2008-12-22 15:13:02 UTC (rev 4314) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/Controller1d.java 2008-12-24 15:09:43 UTC (rev 4315) @@ -29,7 +29,6 @@ import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; import org.fudaa.dodico.mascaret.io.MascaretWriter; -import org.fudaa.ebli.calque.BArbreCalqueModel; import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; import org.fudaa.ebli.calque.ZScene; import org.fudaa.ebli.calque.ZSelectionEvent; @@ -42,15 +41,12 @@ import org.fudaa.fudaa.commun.FudaaLib; import org.fudaa.fudaa.modeleur.MdlImplementation; import org.fudaa.fudaa.modeleur.modeleur1d.MdlFille1d; -import org.fudaa.fudaa.modeleur.modeleur1d.model.DataGeometryAdapter; -import org.fudaa.fudaa.modeleur.modeleur1d.model.DataGeometryException; +import org.fudaa.fudaa.modeleur.modeleur1d.model.Bief; import org.fudaa.fudaa.modeleur.modeleur1d.model.UtilsProfil1d; import org.fudaa.fudaa.modeleur.modeleur1d.view.VueBief; import org.fudaa.fudaa.modeleur.modeleur1d.view.VueContainerModules; import org.fudaa.fudaa.modeleur.modeleur1d.view.VueCourbe; import org.fudaa.fudaa.modeleur.modeleur1d.view.VueExport; -import org.fudaa.fudaa.modeleur.modeleur1d.view.VueModuleGestionBief; -import org.fudaa.fudaa.modeleur.modeleur1d.view.VueModuleGestionProfil; import org.fudaa.fudaa.modeleur.modeleur1d.view.VueTableau; import com.memoire.bu.BuDesktop; @@ -65,8 +61,7 @@ */ public class Controller1d extends InternalFrameAdapter implements ZSelectionListener, ListSelectionListener, CtuluListSelectionListener { - /** La vue du bief. */ - private VueBief vueBief_; + // Les vues \\ /** La vue d'un profil par tableau. */ private VueTableau vueTableau_; /** La vue d'un profil via une courbe. */ @@ -75,25 +70,25 @@ private BuLabel vueError_; /** La vue des modules contenu dans la colonne \xE0 droite. */ private VueContainerModules vueContainerModules_; - /** La vue du module de gestion des biefs. */ - private VueModuleGestionBief vueModuleGestionBief_; - /** La vue du module de gestion des Profils. */ - private VueModuleGestionProfil vueModuleGestionProfil_; - - /** Le lien avec le reste de l'application. */ - private MdlImplementation appli_; /** La frame contenant tous les widgets 1d. */ private MdlFille1d frame1d_; + // Donn\xE9es sp\xE9ciales \\ + /** Le lien avec le reste de l'application. */ + private MdlImplementation appli_; /** Indique si on doit \xE9couter les \xE9venements de selection. */ private boolean listenEventSelection_=true; /** Formater */ private EbliFormatterInterface formater_=new EbliFormatter(); - /** Le commande manager pour le undo/redo */ private CtuluCommandManager mng_; - /** L'adapter des donn\xE9es de la geometry en cours de manipulation. */ - private DataGeometryAdapter dataGeomAdapter_; + + // Controllers \\ + /** Le controller des Biefs */ + private ControllerBief controllerBief_; + private ControllerProfil controllerProfil_; + + // Models \\ /** Le container des modules contenus \xE0 droite. */ private DefaultListModel modelContainerModules_; @@ -105,42 +100,34 @@ frame1d_.addInternalFrameListener(this); mng_=new CtuluCommandManager(); // Instanciation des Models \\ - try { - dataGeomAdapter_=new DataGeometryAdapter(null, -1); - } - catch (DataGeometryException _exc) { - _exc.printStackTrace(); - } modelContainerModules_=new DefaultListModel(); + // Instanciation des controllers \\ + controllerBief_=new ControllerBief(this); + controllerProfil_=new ControllerProfil(controllerBief_.getBiefSelectionModel(), controllerBief_.getBiefContainer(), this); // Instanciation des Vues \\ // Modules vueContainerModules_=new VueContainerModules(modelContainerModules_); - vueModuleGestionBief_=new VueModuleGestionBief(); - addVueModule(vueModuleGestionBief_); - vueModuleGestionProfil_=new VueModuleGestionProfil(); - addVueModule(vueModuleGestionProfil_); + addVueModule(controllerBief_.getVueModuleGestionBief()); + addVueModule(controllerProfil_.getVueModuleGestionProfil()); // Vue Bief - vueBief_=new VueBief(appli_, this); - vueBief_.getScene().addSelectionListener(this); + controllerBief_.getVueBief().getScene().addSelectionListener(this); // Vue tableau - vueTableau_=new VueTableau(this, dataGeomAdapter_); + vueTableau_=new VueTableau(this, controllerProfil_.getDataGeometry()); vueTableau_.addSelectionListener(this); // Vue courbe - vueCourbe_=new VueCourbe(this, dataGeomAdapter_); + vueCourbe_=new VueCourbe(this, controllerProfil_.getDataGeometry()); vueCourbe_.addSelectionListener(this); // Vue error vueError_=new BuLabel(); vueError_.setForeground(Color.RED); vueError_.setHorizontalAlignment(JLabel.CENTER); clearError(); - // Autre - treeModel_=vueBief_.getArbreCalqueModel(); } // Getters des vues \\ public VueBief getVueBief(){ - return vueBief_; + return controllerBief_.getVueBief(); } public VueTableau getVueTableau(){ return vueTableau_; @@ -200,27 +187,7 @@ public void removeVueModule(JComponent _vueModule){ modelContainerModules_.removeElement(_vueModule); } - - // Gestion de l'arbre \\ - - /** Le model de l'arbre des calques. */ - @Deprecated - private BArbreCalqueModel treeModel_; - - /** Retourne le model de l'abre des calques. */ - @Deprecated - public BArbreCalqueModel getTreeModel(){ - return treeModel_; - } - /** - * Mise \xE0 jour de l'arbre des calques a chaque activation de la fen\xEAtre 1d. La - * mise \xE0 jour s'effectue en fonction des calques 2d. - */ - public void internalFrameActivated(InternalFrameEvent e) { - vueBief_.updateTree(); - } - // Gestion des actions \\ /** Les action \xE0 la fen\xEAtre 1d. */ @@ -238,7 +205,7 @@ BuDesktop buJ=null; if (j instanceof BuDesktop) buJ=(BuDesktop)j; - List<EbliActionInterface> actionAbs=vueBief_.getController().getActions(); + List<EbliActionInterface> actionAbs=controllerBief_.getVueBief().getController().getActions(); // Selection des actions String[] tmpAction=new String[]{"RECTANGLE_SELECTION", "POLYGON_SELECTION", "RESTORE", "ZOOM", "ZOOM_ON_SELECTED", "LAST_VIEW", "MOVE_VIEW", "CHANGE_REFERENCE", "NAVIGATE"}; @@ -271,12 +238,11 @@ */ public void selectionChanged(ZSelectionEvent _evt) { clearError(); - ZScene scene=vueBief_.getScene(); + ZScene scene=controllerBief_.getVueBief().getScene(); int sceneIdSelected=scene.getSelectionHelper().getUniqueSelectedIdx(); boolean ok=true; // Indique si tout s'est bien pass\xE9. if (sceneIdSelected==-1) - try {dataGeomAdapter_.setData(null, -1);} - catch (DataGeometryException _exc) {_exc.printStackTrace();} + controllerProfil_.getProfilSelectionModel().clearSelection(); else { int idSelected=scene.sceneId2LayerId(sceneIdSelected); // Extraction des diff\xE9rentes informations n\xE9c\xE9ssaires au changement de @@ -286,12 +252,7 @@ GISZoneCollectionLigneBrisee zone=((ZModeleLigneBriseeEditable)calque.modeleDonnees()).getGeomData(); if (zone.getIndiceOf(GISAttributeConstants.NATURE)!=-1) { if (zone.getValue(zone.getIndiceOf(GISAttributeConstants.NATURE), idSelected)==GISAttributeConstants.ATT_NATURE_PF) { - try { - dataGeomAdapter_.setData(zone, idSelected); - } - catch (DataGeometryException _exc) { - showError(_exc.getMessage()); - } + controllerProfil_.getProfilSelectionModel().setSelectionInterval(idSelected, idSelected); } else // On a pas selectionn\xE9 un profil, on annule la selection @@ -308,6 +269,7 @@ if(!ok) { //dataGeomAdapter_.setData(null, -1); scene.clearSelection(); + controllerProfil_.getProfilSelectionModel().clearSelection(); showError(FudaaLib.getS("Seuls les profils sont selectionnables.")); } } @@ -340,13 +302,22 @@ VueExport vueExport=new VueExport(appli_); if(!vueExport.run()) return; + // Configuration du mascaretWriter MascaretWriter mascaretWriter=new MascaretWriter(); mascaretWriter.setFile(vueExport.getFile()); - CtuluIOOperationSynthese result=mascaretWriter.write(new Object[]{"Sans_nom", vueBief_.getZonesForExport(), new MascaretWriter.FunctorSelectProfil(){ + Bief bief=controllerBief_.getSelectedBief(); + Object[] zones=new Object[]{bief.axeHydraulique_.getGeomData(), bief.lignesDirectrices_.getGeomData(), + bief.limitesStockages_.getGeomData(), bief.profils_.getGeomData(), bief.rives_.getGeomData()}; + MascaretWriter.FunctorSelectProfil functorSelectProfil=new MascaretWriter.FunctorSelectProfil() { public boolean exportProfil(GISZoneCollectionLigneBrisee _zone, int _idxProfil) { return UtilsProfil1d.isProfilCorrect(_zone, _idxProfil); } - }, vueExport.isMascaret1d()?"1d":"2d"}); + }; + CtuluIOOperationSynthese result=mascaretWriter.write(new Object[]{ + controllerBief_.getSelectedBiefName(), + zones, + functorSelectProfil, + vueExport.isMascaret1d()?"1d":"2d"}); // Gestion des erreurs String message=""; if (result.containsFatalError()) @@ -368,4 +339,10 @@ else if(result.containsMessages()) appli_.message(message); } + + @Override + public void internalFrameActivated(InternalFrameEvent e) { + mng_.clean(); + controllerBief_.updateFrom2d(); + } } Copied: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerBief.java (from rev 4312, branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/DataGeometryListener.java) =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerBief.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerBief.java 2008-12-24 15:09:43 UTC (rev 4315) @@ -0,0 +1,271 @@ +/* + * @creation 22 d\xE9c. 2008 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.fudaa.modeleur.modeleur1d.controller; + +import java.util.ArrayList; +import java.util.List; + +import javax.swing.DefaultListSelectionModel; +import javax.swing.event.ListSelectionListener; + +import org.fudaa.ebli.calque.BCalque; +import org.fudaa.ebli.calque.ZModeleLigneBrisee; +import org.fudaa.fudaa.modeleur.modeleur1d.model.Bief; +import org.fudaa.fudaa.modeleur.modeleur1d.model.BiefContainer; +import org.fudaa.fudaa.modeleur.modeleur1d.model.BiefContainerAdapter; +import org.fudaa.fudaa.modeleur.modeleur1d.model.BiefSet; +import org.fudaa.fudaa.modeleur.modeleur1d.view.VueBief; +import org.fudaa.fudaa.modeleur.modeleur1d.view.VueModuleGestionBief; +import org.fudaa.fudaa.sig.layer.FSigLayerLineEditable; + +/** + * Controller permettant de g\xE9rer (cr\xE9er, modifier, supprimer, selectionner) les biefs. + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class ControllerBief { + + /** Le controller principal. */ + protected Controller1d controller1d_; + /** Le nom du bief selectionn\xE9. */ + protected String nomSelectedBief_=null; + /** l'ensemble de biefs. */ + protected BiefSet biefSet_=new BiefSet(); + /** Le container de bief. */ + BiefContainerAdapter biefContainerAdapter_; + /** Le model de selection des biefs. */ + protected BiefSelectionModel biefSelectionModel_; + /** La vue du module de gestion des biefs. */ + protected VueModuleGestionBief vueModuleGestionBief_; + /** La vue sur les biefs. */ + protected VueBief vueBief_; + + public ControllerBief(Controller1d _controller1d) { + controller1d_=_controller1d; + biefContainerAdapter_=new BiefContainerAdapter(biefSet_); + biefSelectionModel_=new BiefSelectionModel(); + vueModuleGestionBief_=new VueModuleGestionBief(this); + vueBief_=new VueBief(controller1d_.getImplementation(), this); + } + + /** + * Se r\xE9g\xE9n\xE8re par rapport aux 2d. + */ + public void updateFrom2d(){ + // Suppression des biefs pr\xE9c\xE9dents + String[] names=biefSet_.getBiefNames(); + for(int i=0;i<names.length;i++) + biefSet_.removeBief(names[i], null); + // Ajout des nouveaux + importBiefsFrom2d(controller1d_.getImplementation().get2dFrame().getVisuPanel().getArbreCalqueModel().getRootCalque().getCalqueParNom("gcBiefs")); + } + + /** + * Import les biefs du 2d vers le 1d. + */ + private void importBiefsFrom2d(BCalque _rootCalque) { + if (_rootCalque==null) + return; + BCalque[] calques=_rootCalque.getCalques(); + // It\xE9ration du chaque bief + for (int i=0; i<calques.length; i++) { + BCalque calqueBief=calques[i]; + List<ZModeleLigneBrisee> modelsDuFutureBief=new ArrayList<ZModeleLigneBrisee>(); + // Iteration sur chaque calque + BCalque[] sousCalques=calqueBief.getCalques(); + for (int j=0; j<sousCalques.length; j++) + if (sousCalques[j] instanceof FSigLayerLineEditable) + modelsDuFutureBief.add(((FSigLayerLineEditable)sousCalques[j]).getModele()); + // Ajout du bief + biefSet_.addBief(calqueBief.getTitle(), modelsDuFutureBief.toArray(new ZModeleLigneBrisee[0]), controller1d_.getCommandManager()); + } + // Selection d'office du premier Bief si il y en a un + if(biefSet_.getNbBief()>0) + biefSelectionModel_.addSelectionInterval(0, 0); + } + + /** + * Retourne le bief container. + */ + public BiefContainer getBiefContainer(){ + return biefContainerAdapter_; + } + + /** + * Retourne la vue du module de gestion des biefs. + */ + public VueModuleGestionBief getVueModuleGestionBief(){ + return vueModuleGestionBief_; + } + + /** + * Retourne la vue sur les biefs + */ + public VueBief getVueBief() { + return vueBief_; + } + + /** + * Supprime le bief selectionn\xE9. + */ + public void removeSelectedBief(){ + String name=biefSelectionModel_.getSelectedName(); + if(name!=null) + biefSet_.removeBief(name, controller1d_.getCommandManager()); + } + + /** + * Importation d'un bief. + */ + public void importBief(){ + //TODO + } + + /** + * Fusion de deux biefs. + */ + public void fusionnerBiefs(){ + //TODO + } + + /** + * Duplique le bief selectionn\xE9. + */ + public void dupliquerSelectedBief() { + //TODO + } + + /** + * Renomme un bief. + */ + public void renameBief(String _currentName, String _newName) { + biefSet_.renameBief(_currentName, _newName, controller1d_.getCommandManager()); + } + + // Gestion de la selection de bief \\ + + /** + * Retourne vrai si un bief est selectionn\xE9. + */ + public boolean isBiefSelected() { + return biefSelectionModel_.getSelectedName()!=null; + } + + /** + * Retourne le nom du bief selectionn\xE9. + */ + public String getSelectedBiefName(){ + return biefSelectionModel_.getSelectedName(); + } + + /** + * Retourne une ListSelectionModel permettant de g\xE9rer la selection des biefs. + */ + public BiefSelectionModel getBiefSelectionModel() { + return biefSelectionModel_; + } + + /** + * Retourne le biefContainer, c'est \xE0 dire le conteneur de tout les biefs. + */ + public BiefSet getBiefSet(){ + return biefSet_; + } + + /** + * Retourne le Bief selectionn\xE9. + */ + public Bief getSelectedBief(){ + return biefSet_.getBief(getSelectedBiefName()); + } + + // Le model de selection concernant les biefs \\ + + /** + * Cette classe a pour objectif de g\xE9rer avec le m\xEAme model de selection tous + * les endroits ayant besoin de savoir quel bief est selectionn\xE9. + */ + public class BiefSelectionModel extends DefaultListSelectionModel { + + public BiefSelectionModel(){ + super.setSelectionMode(SINGLE_SELECTION); + } + + /** + * Retourne le nom du bief selectionn\xE9. + */ + public String getSelectedName() { + if(getMinSelectionIndex()==-1) + return null; + return biefSet_.getBiefName(getMinSelectionIndex()); + } + + /** + * Met \xE0 jour dataGeomAdapter_ pour qu'il tienne compte de la nouvelle selection. + */ + private void updateBief() { + if(getMinSelectionIndex()==-1) + biefContainerAdapter_.setSelectedBief(null); + else + biefContainerAdapter_.setSelectedBief(biefSet_.getBiefName(getMinSelectionIndex())); + } + + public void addListSelectionListener(ListSelectionListener x) { + super.addListSelectionListener(x); + updateBief(); + } + + public void addSelectionInterval(int index0, int index1) { + super.addSelectionInterval(index0, index1); + updateBief(); + } + + public void clearSelection() { + super.clearSelection(); + updateBief(); + } + + public void insertIndexInterval(int index, int length, boolean before) { + super.insertIndexInterval(index, length, before); + updateBief(); + } + + public void removeIndexInterval(int index0, int index1) { + super.removeIndexInterval(index0, index1); + updateBief(); + } + + public void removeSelectionInterval(int index0, int index1) { + super.removeSelectionInterval(index0, index1); + updateBief(); + } + + public void setAnchorSelectionIndex(int index) { + super.setAnchorSelectionIndex(index); + updateBief(); + } + + public void setLeadSelectionIndex(int index) { + super.setLeadSelectionIndex(index); + updateBief(); + } + + public void setSelectionInterval(int index0, int index1) { + super.setSelectionInterval(index0, index1); + updateBief(); + } + + /** + * Le mode de selection est bloqu\xE9 \xE0 SINGLE_SELECTION. + */ + public void setSelectionMode(int selectionMode) { + if(selectionMode!=SINGLE_SELECTION) + throw new IllegalArgumentException("Le mode est bloqu\xE9 \xE0 SINGLE_SELECTION"); + } + } +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerBief.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:mergeinfo + /branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/DataGeometryListener.java:3445-3850 /branches/FudaaModeleur_TC1/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/DataGeometryListener.java:3861-3891 Added: svn:eol-style + native Copied: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerProfil.java (from rev 4312, branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/DataGeometryListener.java) =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerProfil.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerProfil.java 2008-12-24 15:09:43 UTC (rev 4315) @@ -0,0 +1,186 @@ +/* + * @creation 22 d\xE9c. 2008 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.fudaa.modeleur.modeleur1d.controller; + +import javax.swing.DefaultListSelectionModel; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; + +import org.fudaa.fudaa.modeleur.modeleur1d.controller.ControllerBief.BiefSelectionModel; +import org.fudaa.fudaa.modeleur.modeleur1d.model.BiefContainer; +import org.fudaa.fudaa.modeleur.modeleur1d.model.ProfilContainer; +import org.fudaa.fudaa.modeleur.modeleur1d.model.ProfilContainerAdapter; +import org.fudaa.fudaa.modeleur.modeleur1d.model.ProfilContainerException; +import org.fudaa.fudaa.modeleur.modeleur1d.view.VueModuleGestionProfil; + +/** + * Controller permettant de g\xE9rer (cr\xE9er, modifier, supprimer, selectionner) les profils. + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class ControllerProfil { + + /** Le controller principal. */ + protected Controller1d controller1d_; + /** Le model commun de selection de profils. */ + private ProfilSelectionModel profilSelectionModel_; + /** L'adapter des donn\xE9es de la geometry en cours de manipulation. */ + private ProfilContainerAdapter profilContainerAdapter_; + /** le conteneur du bief. */ + private BiefContainer biefContainer_; + /** La vue du module de gestion des profils. */ + protected VueModuleGestionProfil vueModuleGestionProfil_; + + public ControllerProfil(BiefSelectionModel _biefSelectionModel, BiefContainer _biefContainer, Controller1d _controller1d){ + controller1d_=_controller1d; + biefContainer_=_biefContainer; + profilSelectionModel_=new ProfilSelectionModel(_biefSelectionModel); + profilContainerAdapter_=new ProfilContainerAdapter(biefContainer_); + vueModuleGestionProfil_=new VueModuleGestionProfil(this); + } + + public ProfilContainer getDataGeometry(){ + return profilContainerAdapter_; + } + + public ProfilSelectionModel getProfilSelectionModel(){ + return profilSelectionModel_; + } + + public BiefContainer getBiefContainer() { + return biefContainer_; + } + + /** + * Retourne la vue du module de gestion des profils. + */ + public VueModuleGestionProfil getVueModuleGestionProfil(){ + return vueModuleGestionProfil_; + } + + /** + * Cr\xE9ation ou ajout d'un nouveau profil. + */ + public void ajoutProfil(){ + //TODO + } + + /** + * Supprime le profil selectionn\xE9. + */ + public void supprimerSelectedProfil(){ + if(profilSelectionModel_.getSelectedProfil()!=-1) + biefContainer_.removeProfil(profilSelectionModel_.getSelectedProfil(), controller1d_.getCommandManager()); + } + + /** + * Fusionne deux profils. + */ + public void fusionnerProfil(){ + + } + + /** + * Renommer un profil. + */ + public void renameProfil(int _idxProfil, String _newName) { + biefContainer_.renameProfil(_idxProfil, _newName, controller1d_.getCommandManager()); + } + + //Le model de selection concernant les biefs \\ + + /** + * Cette classe a pour objectif de g\xE9rer avec le m\xEAme model de selection tous + * les endroits ayant besoin de savoir quels profils sont selectionn\xE9s. + */ + public class ProfilSelectionModel extends DefaultListSelectionModel implements ListSelectionListener { + + /** La liste de selection des biefs. */ + private BiefSelectionModel biefSelectionModel_; + + public ProfilSelectionModel(BiefSelectionModel _biefSelectionModel){ + biefSelectionModel_=_biefSelectionModel; + biefSelectionModel_.addListSelectionListener(this); + super.setSelectionMode(SINGLE_SELECTION); + } + + public int getSelectedProfil(){ + return getMinSelectionIndex(); + } + + public void valueChanged(ListSelectionEvent e) { + // Le bief selectionn\xE9 \xE0 chang\xE9. \\ + clearSelection(); + } + + /** + * Met \xE0 jour dataGeomAdapter_ pour qu'il tienne compte de la nouvelle selection. + */ + private void updateProfil() { + try { + profilContainerAdapter_.setSelectedProfil(getMinSelectionIndex()); + } + catch (ProfilContainerException _exc) { + _exc.printStackTrace(); + } + } + + public void addListSelectionListener(ListSelectionListener x) { + super.addListSelectionListener(x); + updateProfil(); + } + + public void addSelectionInterval(int index0, int index1) { + super.addSelectionInterval(index0, index1); + updateProfil(); + } + + public void clearSelection() { + super.clearSelection(); + updateProfil(); + } + + public void insertIndexInterval(int index, int length, boolean before) { + super.insertIndexInterval(index, length, before); + updateProfil(); + } + + public void removeIndexInterval(int index0, int index1) { + super.removeIndexInterval(index0, index1); + updateProfil(); + } + + public void removeSelectionInterval(int index0, int index1) { + super.removeSelectionInterval(index0, index1); + updateProfil(); + } + + public void setAnchorSelectionIndex(int index) { + super.setAnchorSelectionIndex(index); + updateProfil(); + } + + public void setLeadSelectionIndex(int index) { + super.setLeadSelectionIndex(index); + updateProfil(); + } + + public void setSelectionInterval(int index0, int index1) { + super.setSelectionInterval(index0, index1); + updateProfil(); + } + + /** + * Le mode de selection est bloqu\xE9 \xE0 SINGLE_SELECTION. + */ + public void setSelectionMode(int selectionMode) { + if(selectionMode!=SINGLE_SELECTION) + throw new IllegalArgumentException("Le mode est bloqu\xE9 \xE0 SINGLE_SELECTION"); + } + } +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerProfil.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:mergeinfo + /branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/DataGeometryListener.java:3445-3850 /branches/FudaaModeleur_TC1/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/DataGeometryListener.java:3861-3891 Added: svn:eol-style + native Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/Bief.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/Bief.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/Bief.java 2008-12-24 15:09:43 UTC (rev 4315) @@ -0,0 +1,124 @@ +/* + * @creation 22 d\xE9c. 2008 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.fudaa.modeleur.modeleur1d.model; + +import org.fudaa.ctulu.gis.GISAttributeConstants; +import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; +import org.fudaa.ebli.calque.ZModeleLigneBrisee; +import org.fudaa.fudaa.modeleur.layer.MdlModel1dAxe; +import org.fudaa.fudaa.modeleur.layer.MdlModel1dBank; +import org.fudaa.fudaa.modeleur.layer.MdlModel1dStorageLimit; +import org.fudaa.fudaa.modeleur.layer.MdlModel2dDirectionLine; +import org.fudaa.fudaa.modeleur.layer.MdlModel2dProfile; + +/** + * Contient les informations relatives \xE0 un bief. + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class Bief { + public ZModeleLigneBrisee axeHydraulique_; + public ZModeleLigneBrisee profils_; + public ZModeleLigneBrisee rives_; + public ZModeleLigneBrisee limitesStockages_; + public ZModeleLigneBrisee lignesDirectrices_; + + public Bief(){} + + public Bief(ZModeleLigneBrisee[] _models){ + if(_models==null) + throw new IllegalArgumentException("_models ne peut pas \xEAtre null."); + for(int i=0;i<_models.length;i++) { + if(_models[i]==null) + throw new IllegalArgumentException("_models ne doit pas contenir de valeurs null"); + if(_models[i].getGeomData()==null) + throw new IllegalArgumentException("Certain model n'ont pas de GSIZone."); + if(!(_models[i].getGeomData() instanceof GISZoneCollectionLigneBrisee)) + throw new IllegalArgumentException("Toutes les GISZOne doivent \xEAtre des GISZoneCollectionLigneBrisee."); + String nature=(String) _models[i].getGeomData().getFixedAttributValue(GISAttributeConstants.NATURE); + if(nature==GISAttributeConstants.ATT_NATURE_AH) + if(axeHydraulique_!=null) + throw new IllegalArgumentException("Plusieurs models d'axe hydrauliques sont donn\xE9es."); + else + axeHydraulique_=_models[i]; + else if(nature==GISAttributeConstants.ATT_NATURE_LD) + if(lignesDirectrices_!=null) + throw new IllegalArgumentException("Plusieurs models de lignes directrices sont donn\xE9es."); + else + lignesDirectrices_=_models[i]; + else if(nature==GISAttributeConstants.ATT_NATURE_LS) + if(limitesStockages_!=null) + throw new IllegalArgumentException("Plusieurs models de limites de stockage sont donn\xE9es."); + else + limitesStockages_=_models[i]; + else if(nature==GISAttributeConstants.ATT_NATURE_PF) + if(profils_!=null) + throw new IllegalArgumentException("Plusieurs models de profils sont donn\xE9es."); + else + profils_=_models[i]; + else if(nature==GISAttributeConstants.ATT_NATURE_RV) + if(rives_!=null) + throw new IllegalArgumentException("Plusieurs models de rives sont donn\xE9es."); + else + rives_=_models[i]; + } + // Remplissage des models vides par des ZModeles vides + if (axeHydraulique_==null) + axeHydraulique_=new MdlModel1dAxe(null); + if (profils_==null) + profils_=new MdlModel2dProfile(null, null); + if (rives_==null) + rives_=new MdlModel1dBank(null, null); + if (limitesStockages_==null) + limitesStockages_=new MdlModel1dStorageLimit(null, null); + if (lignesDirectrices_==null) + lignesDirectrices_=new MdlModel2dDirectionLine(null, null); + } + + /** + * Retourne vrai si les donn\xE9es contenues dans les champs sont coh\xE9rentes. + */ + public boolean checkCoherence(){ + if (axeHydraulique_==null||profils_==null||rives_==null||limitesStockages_==null||lignesDirectrices_==null) + return false; + // Axe hydraulique + if (axeHydraulique_.getGeomData()==null||!(axeHydraulique_.getGeomData() instanceof GISZoneCollectionLigneBrisee)) + return false; + if ((String)axeHydraulique_.getGeomData().getFixedAttributValue(GISAttributeConstants.NATURE)!=GISAttributeConstants.ATT_NATURE_AH) + return false; + if(axeHydraulique_.getNbPolyligne()>1) + return false; + // Lignes directrices + if (lignesDirectrices_.getGeomData()==null||!(lignesDirectrices_.getGeomData() instanceof GISZoneCollectionLigneBrisee)) + return false; + if ((String)lignesDirectrices_.getGeomData().getFixedAttributValue(GISAttributeConstants.NATURE)!=GISAttributeConstants.ATT_NATURE_LD) + return false; + // Limite de stockage + if (limitesStockages_.getGeomData()==null||!(limitesStockages_.getGeomData() instanceof GISZoneCollectionLigneBrisee)) + return false; + if ((String)limitesStockages_.getGeomData().getFixedAttributValue(GISAttributeConstants.NATURE)!=GISAttributeConstants.ATT_NATURE_LS) + return false; + if(limitesStockages_.getNbPolyligne()>2) + return false; + // Profil + if (profils_.getGeomData()==null||!(profils_.getGeomData() instanceof GISZoneCollectionLigneBrisee)) + return false; + if ((String)profils_.getGeomData().getFixedAttributValue(GISAttributeConstants.NATURE)!=GISAttributeConstants.ATT_NATURE_PF) + return false; + // rives + if (rives_.getGeomData()==null||!(rives_.getGeomData() instanceof GISZoneCollectionLigneBrisee)) + return false; + if ((String)rives_.getGeomData().getFixedAttributValue(GISAttributeConstants.NATURE)!=GISAttributeConstants.ATT_NATURE_RV) + return false; + if(rives_.getNbPolyligne()>2) + return false; + // Tout est ok + return true; + } + +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/Bief.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/BiefContainer.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/BiefContainer.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/BiefContainer.java 2008-12-24 15:09:43 UTC (rev 4315) @@ -0,0 +1,59 @@ +/* + * @creation 23 d\xE9c. 2008 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.fudaa.modeleur.modeleur1d.model; + +import org.fudaa.ctulu.CtuluCommandContainer; +import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; + +/** + * Une interface permettant d'acc\xE9der aux informations du bief selectionn\xE9. + * + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public interface BiefContainer { + + /** Retourne vrai si l'index pass\xE9 en param\xE8tre correspond \xE0 un profil. */ + public boolean hasProfil(int _idxProfil); + + /** Ajout d'un nouveau listener. */ + public void addBiefContainerListener(BiefContainerListener _listener); + + /** Supprime le listener. */ + public void removeBiefContainerListener(BiefContainerListener _listener); + + /** Retourne les zones contenant les g\xE9om\xE9tries. */ + public GISZoneCollectionLigneBrisee[] getZones(); + + /** Retourne la zone contenant l'axe hydraulique. */ + public GISZoneCollectionLigneBrisee getZoneAxeHydraulique(); + + /** Retourne la zone contenant les profils. */ + public GISZoneCollectionLigneBrisee getZoneProfils(); + + /** Retourne la zone contenant les rives. */ + public GISZoneCollectionLigneBrisee getZoneRives(); + + /** Retourne la zone contenant les limites de stockages. */ + public GISZoneCollectionLigneBrisee getZoneLimitesStockages(); + + /** Retourne la zone contenant les lignes directrices. */ + public GISZoneCollectionLigneBrisee getZoneLignesDirectrices(); + + /** Retourne ne nombre de profils de ce bief. */ + public int getNbProfil(); + + /** Retourne le nom du profil choisi par sont index. */ + public String getNomProfil(int _idxProfil); + + /** Renomme le profil. */ + public void renameProfil(int _idxProfil, String _newName, CtuluCommandContainer _cmd); + + /** Supprime un profil. */ + public void removeProfil(int _idxProfil, CtuluCommandContainer _cmd); +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/BiefContainer.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Copied: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/BiefContainerAdapter.java (from rev 4312, branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/DataGeometryListener.java) =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/BiefContainerAdapter.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/BiefContainerAdapter.java 2008-12-24 15:09:43 UTC (rev 4315) @@ -0,0 +1,217 @@ +/* + * @creation 23 d\xE9c. 2008 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.fudaa.modeleur.modeleur1d.model; + +import java.util.ArrayList; +import java.util.List; + +import org.fudaa.ctulu.CtuluCommand; +import org.fudaa.ctulu.CtuluCommandComposite; +import org.fudaa.ctulu.CtuluCommandContainer; +import org.fudaa.ctulu.CtuluNamedCommand; +import org.fudaa.ctulu.gis.GISAttributeConstants; +import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; +import org.fudaa.fudaa.commun.FudaaLib; + +/** + * Cette classe permet d'adapter une BiefColleciton en un model manipulable + * simplement. Il n'affiche que le bief selectionn\xE9. + * + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class BiefContainerAdapter implements BiefContainer, BiefSetListener { + + /** Le container de tous les biefs. */ + private BiefSet biefSet_; + /** Le nom du bief selectionn\xE9. */ + private String nomBiefSelected_; + /** Liste des listeners de cette instance. */ + private List<BiefContainerListener> listeners_=new ArrayList<BiefContainerListener>(); + + public BiefContainerAdapter(BiefSet _biefSet) { + biefSet_=_biefSet; + biefSet_.addBiefSetListener(this); + } + + public boolean hasProfil(int _idxProfil) { + if(_idxProfil>=0&&getZoneProfils()!=null&&_idxProfil<getZoneProfils().getNumGeometries()) + return true; + return false; + } + + /** + * Selectionner un des biefs. Pour n'en selectionner aucun, _nomBief doit + * valloir null. + */ + public void setSelectedBief(String _nomBief) { + if(_nomBief!=null&&!biefSet_.hasBief(_nomBief)) + throw new IllegalArgumentException("Bief : "+_nomBief+" inconnu."); + if(_nomBief!=nomBiefSelected_) { + nomBiefSelected_=_nomBief; + fireBiefSelectedChanged(_nomBief); + } + } + + public GISZoneCollectionLigneBrisee getZoneAxeHydraulique() { + if(nomBiefSelected_==null) + return null; + return (GISZoneCollectionLigneBrisee)biefSet_.getBief(nomBiefSelected_).axeHydraulique_.getGeomData(); + } + + public GISZoneCollectionLigneBrisee getZoneLignesDirectrices() { + if(nomBiefSelected_==null) + return null; + return (GISZoneCollectionLigneBrisee)biefSet_.getBief(nomBiefSelected_).lignesDirectrices_.getGeomData(); + } + + public GISZoneCollectionLigneBrisee getZoneLimitesStockages() { + if(nomBiefSelected_==null) + return null; + return (GISZoneCollectionLigneBrisee)biefSet_.getBief(nomBiefSelected_).limitesStockages_.getGeomData(); + } + + public GISZoneCollectionLigneBrisee getZoneProfils() { + if(nomBiefSelected_==null) + return null; + return (GISZoneCollectionLigneBrisee)biefSet_.getBief(nomBiefSelected_).profils_.getGeomData(); + } + + public GISZoneCollectionLigneBrisee getZoneRives() { + if(nomBiefSelected_==null) + return null; + return (GISZoneCollectionLigneBrisee)biefSet_.getBief(nomBiefSelected_).rives_.getGeomData(); + } + + public GISZoneCollectionLigneBrisee[] getZones() { + if(nomBiefSelected_==null) + return null; + return new GISZoneCollectionLigneBrisee[]{getZoneAxeHydraulique(), getZoneLignesDirectrices(), getZoneLimitesStockages(), + getZoneProfils(), getZoneRives()}; + } + + // Raccourcis de gestion des profils \\ + + public int getNbProfil() { + if(nomBiefSelected_==null) + return 0; + return getZoneProfils().getNbGeometries(); + } + + public String getNomProfil(int _idxProfil) { + if(_idxProfil<0||_idxProfil>=getZoneProfils().getNbGeometries()) + throw new IllegalArgumentException("Le profil "+_idxProfil+" n'existe pas"); + return (String) getZoneProfils().getValue(getZoneProfils().getIndiceOf(GISAttributeConstants.TITRE), _idxProfil); + } + + public void removeProfil(int _idxProfil, CtuluCommandContainer _cmd) { + if(_idxProfil<0||_idxProfil>=getZoneProfils().getNbGeometries()) + throw new IllegalArgumentException("Le profil "+_idxProfil+" n'existe pas"); + class RemoveProfilCtuluCommand implements CtuluCommand, CtuluNamedCommand{ + private int idxProfil_; + private CtuluCommandComposite cmd_; + public RemoveProfilCtuluCommand(int _idxProfil, CtuluCommandComposite _cmd) { + idxProfil_=_idxProfil;cmd_=_cmd; + } + public void redo() { + cmd_.redo(); + fireProfilAdded(idxProfil_); + } + public void undo() { + cmd_.undo(); + fireProfilRemoved(idxProfil_); + } + public String getName() {return FudaaLib.getS("supprimer profil");} + } + CtuluCommandComposite cmdComp=new CtuluCommandComposite(); + getZoneProfils().removeGeometries(new int[]{_idxProfil}, cmdComp); + if(_cmd!=null) + _cmd.addCmd(new RemoveProfilCtuluCommand(_idxProfil, cmdComp)); + fireProfilRemoved(_idxProfil); + } + + public void renameProfil(int _idxProfil, String _newName, CtuluCommandContainer _cmd) { + if(_idxProfil<0||_idxProfil>=getZoneProfils().getNbGeometries()) + throw new IllegalArgumentException("Le profil "+_idxProfil+" n'existe pas"); + if(_newName==null||_newName.length()==0) + throw new IllegalArgumentException("Un nom doit \xEAtre donn\xE9"); + class RenameProfilCtuluCommand implements CtuluCommand, CtuluNamedCommand { + private int idxProfil_; + private String oldName_; + private String newName_; + public RenameProfilCtuluCommand(int _idxProfil, String _oldName, String _newName){ + idxProfil_=_idxProfil;oldName_=_oldName;newName_=_newName; + } + public void redo() {renameProfil(idxProfil_, newName_, null);} + public void undo() {renameProfil(idxProfil_, oldName_, null);} + public String getName() {return FudaaLib.getS("renommer profil");} + } + String oldName=(String) getZoneProfils().getValue(getZoneProfils().getIndiceOf(GISAttributeConstants.TITRE), _idxProfil); + getZoneProfils().setAttributValue(getZoneProfils().getIndiceOf(GISAttributeConstants.TITRE), _idxProfil, _newName, null); + if(_cmd!=null) + _cmd.addCmd(new RenameProfilCtuluCommand(_idxProfil, oldName, _newName)); + fireProfilRenamed(_idxProfil, oldName, _newName); + } + + // R\xE9action aux modifications dans le BiefCollection \\ + + public void addedBief(String _name) {} + + public void removedBief(String _name) { + if(_name==nomBiefSelected_) { + nomBiefSelected_=null; + fireBiefSelectedChanged(null); + } + } + + public void renamedBief(String _oldName, String _newName) { + if(_oldName==nomBiefSelected_) { + nomBiefSelected_=_newName; + fireBiefSelectedRenamed(_oldName, _newName); + } + } + + // Gestion des listeners \\ + + /** + * Ajoute un listener r\xE9agissant au modification des donn\xE9es. + */ + public void addBiefContainerListener(BiefContainerListener _listener) { + if(_listener!=null&&!listeners_.contains(_listener)) + listeners_.add(_listener); + } + + /** + * Supprime le listener de la liste. + */ + public void removeBiefContainerListener(BiefContainerListener _listener) { + if(_listener!=null&&listeners_.contains(_listener)) + listeners_.remove(_listener); + } + + protected void fireBiefSelectedChanged(String _newName) { + for(BiefContainerListener listener: listeners_) + listener.biefSelectedChanged(_newName); + } + protected void fireBiefSelectedRenamed(String _oldName, String _newName) { + for(BiefContainerListener listener: listeners_) + listener.biefSelectedRenamed(_oldName, _newName); + } + protected void fireProfilRemoved(int _idxProfil){ + for(BiefContainerListener listener: listeners_) + listener.profilRemoved(_idxProfil); + } + protected void fireProfilRenamed(int _idxProfil, String _oldName, String _newName){ + for(BiefContainerListener listener: listeners_) + listener.profilRenamed(_idxProfil, _oldName, _newName); + } + protected void fireProfilAdded(int _idxProfil) { + for(BiefContainerListener listener: listeners_) + listener.profilAdded(_idxProfil); + } +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/BiefContainerAdapter.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:mergeinfo + /branches/Br_FudaaModeleur_TF/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/DataGeometryListener.java:3445-3850 /branches/FudaaModeleur_TC1/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/DataGeometryListener.java:3861-3891 Added: svn:eol-style + native Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/BiefContainerListener.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/BiefContainerListener.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/BiefContainerListener.java 2008-12-24 15:09:43 UTC (rev 4315) @@ -0,0 +1,21 @@ +/* + * @creation 23 d\xE9c. 2008 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.fudaa.modeleur.modeleur1d.model; + +/** + * Interface permettant de ce maintenir \xE0 jour du contenu du BiefContainer + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public interface BiefContainerListener { + public void biefSelectedRenamed(String _oldName, String _newName); + public void biefSelectedChanged(String _newName); + public void profilRemoved(int _idxProfil); + public void profilRenamed(int _idxProfil, St... [truncated message content] |