From: <emm...@us...> - 2008-09-03 09:42:13
|
Revision: 3870 http://fudaa.svn.sourceforge.net/fudaa/?rev=3870&view=rev Author: emmanuel_martin Date: 2008-09-03 09:42:22 +0000 (Wed, 03 Sep 2008) Log Message: ----------- Changement du curseur de d?\195?\169placement de la vue. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/com/memoire/bu/BuResource.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/BCalquePositionnementInteraction.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/com/memoire/bu/BuResource.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/com/memoire/bu/BuResource.java 2008-09-03 09:36:49 UTC (rev 3869) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/com/memoire/bu/BuResource.java 2008-09-03 09:42:22 UTC (rev 3870) @@ -737,46 +737,45 @@ return getCursor(_path,_size,_spot,Cursor.DEFAULT_CURSOR); } - public Cursor getCursor(String _path, int _size, Point _spot, int _default) - { + public Cursor getCursor(String _path, int _size, Point _spot, int _default) { Cursor r=null; - /*if(FuLib.jdk()<1.2) //System.getProperty("java.version").compareTo("1.2")<0) - { - r=Cursor.getPredefinedCursor(_default); - } - else - {*/ - try - { - Image i=getImage(_path,_size); + /* + * if(FuLib.jdk()<1.2) + * //System.getProperty("java.version").compareTo("1.2")<0) { + * r=Cursor.getPredefinedCursor(_default); } else { + */ + try { + /* Pour utiliser une image dont la taille n'est pas specifiee dans le nom, il faut appeler la fonction + * getImage(String) au lieu de getImage(String, int). Donner un '_size' de -1 d\xE9clanche cette propriete. + */ + Image i = null; + if(_size == -1) + i=getImage(_path); + else + i=getImage(_path, _size); + + int size=32; - int size=32; + Toolkit tk=BuLib.HELPER.getToolkit(); - Toolkit tk=BuLib.HELPER.getToolkit(); + i=tk.createImage(new FilteredImageSource(i.getSource(), new CropImageFilter(0, 0, size, size))); - i=tk.createImage - (new FilteredImageSource - (i.getSource(),new CropImageFilter(0,0,size,size))); + if (BuPreferences.BU.getBooleanProperty("cursors.monochrome", FuLib.isUnix())) + i=tk.createImage(new FilteredImageSource(i.getSource(), BuFilters.BW)); - if(BuPreferences.BU.getBooleanProperty - ("cursors.monochrome",FuLib.isUnix())) - i=tk.createImage - (new FilteredImageSource - (i.getSource(),BuFilters.BW)); + /* + * Method m=tk.getClass().getMethod ("createCustomCursor",new Class[] { + * Image.class, Point.class, String.class }); r=(Cursor)m.invoke(tk,new + * Object[] { i,_spot,_path }); + */ + r=tk.createCustomCursor(i, _spot, _path); + } + catch (Exception ex) { + r=Cursor.getPredefinedCursor(_default); + } + // } - /* - Method m=tk.getClass().getMethod - ("createCustomCursor",new Class[] - { Image.class, Point.class, String.class }); - r=(Cursor)m.invoke(tk,new Object[] { i,_spot,_path }); - */ - r=tk.createCustomCursor(i,_spot,_path); - } - catch(Exception ex) - { r=Cursor.getPredefinedCursor(_default); } -// } - return r; } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/BCalquePositionnementInteraction.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/BCalquePositionnementInteraction.java 2008-09-03 09:36:49 UTC (rev 3869) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/BCalquePositionnementInteraction.java 2008-09-03 09:42:22 UTC (rev 3870) @@ -1,212 +1,214 @@ -/* - * @file BCalquePositionnementInteraction.java - * @creation 2000-09-13 - * @modification $Date: 2006-09-19 14:55:45 $ - * @license GNU General Public License 2 - * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne - * @mail de...@fu... - */ -package org.fudaa.ebli.calque; - -import java.awt.Component; -import java.awt.Cursor; -import java.awt.Graphics; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; -import java.awt.event.MouseMotionListener; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Set; - -import org.fudaa.ebli.commun.EbliLib; -import org.fudaa.ebli.geometrie.GrPoint; -import org.fudaa.ebli.geometrie.GrVecteur; -import org.fudaa.ebli.repere.RepereEvent; -import org.fudaa.ebli.repere.RepereEventListener; - -/** - * Un calque pour la navigation dans la vue calque. Il permet de d\xE9placer interactivement la zone visualis\xE9e par - * glisser/d\xE9placer. - * <p> - * Le deplacement provoque la diffusion d'un \xE9v\xE8nement <I>RepereEvent</I>. - * - * @version $Id: BCalquePositionnementInteraction.java,v 1.12 2006-09-19 14:55:45 deniger Exp $ - * @author Bertrand Marchand - */ -public class BCalquePositionnementInteraction extends BCalqueInteraction implements MouseListener, MouseMotionListener{ - private GrPoint ptOrig_; // Point d'origine du d\xE9placement - private final Set repereEventListeners_; // Listeners de modification de rep\xE8re - private BVueCalque vueCalque_; // VueCalque du calque - - /** - * Cr\xE9ation d'un calque de positionnement. - */ - public BCalquePositionnementInteraction() { - super(); - setDestructible(false); - repereEventListeners_ = new HashSet(); - vueCalque_ = null; - } - - // private Cursor cursor_=new Cursor(Cursor.HAND_CURSOR); - public Cursor getSpecificCursor() { - return new Cursor(Cursor.MOVE_CURSOR); - } - - public String getDescription() { - return EbliLib.getS("D\xE9placer la vue"); - } - - /** - * Retourne la VueCalque contenant le calque. - * - * @return La <code>BVueCalque</code> contenant le calque. <code>null</code> si le calque n'a pas encore \xE9t\xE9 - * affect\xE9 \xE0 une fen\xEAtre de vue. - */ - public BVueCalque getVueCalque() { - return vueCalque_; - } - - /** - * D\xE9finit la VueCalque contenant le calque. Les \xE9v\xE9nements <code>RepereEvent</code> g\xE9n\xE9r\xE9s par le calque sont - * automatiquement envoy\xE9s vers la VueCalque. - * - * @param _v La <code>BVueCalque</code> contenant le calque. Peut \xEAtre <code>null</code> si le calque n'a plus - * affect\xE9 \xE0 une fen\xEAtre de vue. - */ - public void setVueCalque(final BVueCalque _v) { - if (vueCalque_ != _v) { - if (vueCalque_ != null) { - removeRepereEventListener(vueCalque_); - } - vueCalque_ = _v; - if (vueCalque_ != null) { - addRepereEventListener(vueCalque_); - } - } - } - - /** - * Dessin de l'icone. - * - * @param _c composant dont l'icone peut deriver des proprietes (couleur, ...). Ce parametre peut etre <I>null</I>. - * Il est ignore ici. - * @param _g le graphics sur lequel dessiner l'icone - * @param _x lieu cible de l'icone (x) - * @param _y lieu cible de l'icone (y) - */ - public void paintIcon(final Component _c, final Graphics _g, final int _x, final int _y) { - super.paintIcon(_c, _g, _x, _y); - } - - /** - * Ajout d'un auditeur \xE0 l'\xE9venement <I>RepereEvent</I>. - * - * @param _listener Auditeur de l'\xE9v\xE8nement - */ - public synchronized void addRepereEventListener(final RepereEventListener _listener) { - repereEventListeners_.add(_listener); - } - - /** - * Suppression d'un auditeur \xE0 l'\xE9venement <I>RepereEvent</I>. - * - * @param _listener Auditeur de l'\xE9v\xE8nement - */ - public synchronized void removeRepereEventListener(final RepereEventListener _listener) { - repereEventListeners_.remove(_listener); - } - - /** - * Notification aux auditeurs qu'un \xE9venement <I>RepereEvent</I> s'est produit. - */ - public synchronized void fireRepereEvent(final RepereEvent _evt) { - for (final Iterator i = repereEventListeners_.iterator(); i.hasNext();) { - ((RepereEventListener) i.next()).repereModifie(_evt); - } - } - - /* - * Ev\xE8nements souris PRESSED => Saisie du point \xE9cran courant DRAGGED => D\xE9placement de la vue en mode affichage - * rapide RELEASED => Trac\xE9 de la vue en mode affichage raffin\xE9 - */ - /* - * Methode invoqu\xE9e quand on appuie sur un bouton de la souris. Saisie de la position \xE9cran courante. - */ - public void mousePressed(final MouseEvent _evt) { - if (isGele() || _evt.isConsumed()) { - return; - } - ptOrig_ = new GrPoint(_evt.getX(), _evt.getY(), 0.); - } - - /* - * Methode invoquee quand on lache un bouton de la souris. Trac\xE9 de la vue en mode affichage raffin\xE9 - */ - public void mouseReleased(final MouseEvent _evt) { - if (isGele() || _evt.isConsumed()) { - return; - } - final GrPoint ptCur = new GrPoint(_evt.getX(), _evt.getY(), 0.); - final GrVecteur v = ptOrig_.soustraction(ptCur); - if(!vueCalque_.checkTranslation(v.applique(vueCalque_.getVersReel()))) { - v.x_=0; - v.y_=0; - } - // v.autoApplique(getVersReel()); - ptOrig_ = ptCur; - - - final RepereEvent re = new RepereEvent(this, false); - re.ajouteTransformation(RepereEvent.TRANS_X, v.x_, true); - // B.M. 20/09/2000 La translation est invers\xE9e suivant y en attendant de - // comprendre pourquoi - re.ajouteTransformation(RepereEvent.TRANS_Y, -v.y_, true); - fireRepereEvent(re); - } - - - - /* - * Methode invoqu\xE9e quand on deplace la souris avec un bouton appuy\xE9. D\xE9placement de la vue en mode affichage rapide - */ - public void mouseDragged(final MouseEvent _evt) { - if (isGele() || _evt.isConsumed()) { - return; - } - final GrPoint ptCur = new GrPoint(_evt.getX(), _evt.getY(), 0.); - final GrVecteur v = ptOrig_.soustraction(ptCur); - v.autoApplique(getVersReel()); - if(!vueCalque_.checkTranslation(v)) { - return; - } - v.autoApplique(getVersEcran()); - ptOrig_ = ptCur; - final RepereEvent re = new RepereEvent(this, true); - re.ajouteTransformation(RepereEvent.TRANS_X, v.x_, true); - // B.M. 20/09/2000 La translation est invers\xE9e suivant y en attendant de - // comprendre pourquoi - re.ajouteTransformation(RepereEvent.TRANS_Y, -v.y_, true); - fireRepereEvent(re); - } - - /** - * <I>Sans objet</I>. - */ - public void mouseMoved(final MouseEvent _evt) {} - - /** - * <I>Sans objet</I>. - */ - public void mouseClicked(final MouseEvent _evt) {} - - /** - * <I>Sans objet</I>. - */ - public void mouseEntered(final MouseEvent _evt) {} - - /** - * <I>Sans objet</I>. - */ - public void mouseExited(final MouseEvent _evt) {} -} +/* + * @file BCalquePositionnementInteraction.java + * @creation 2000-09-13 + * @modification $Date: 2006-09-19 14:55:45 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.ebli.calque; + +import java.awt.Component; +import java.awt.Cursor; +import java.awt.Point; +import java.awt.Graphics; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionListener; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Set; + +import org.fudaa.ebli.commun.EbliLib; +import org.fudaa.ebli.geometrie.GrPoint; +import org.fudaa.ebli.geometrie.GrVecteur; +import org.fudaa.ebli.repere.RepereEvent; +import org.fudaa.ebli.repere.RepereEventListener; +import org.fudaa.ebli.ressource.EbliResource; + +/** + * Un calque pour la navigation dans la vue calque. Il permet de d\xE9placer interactivement la zone visualis\xE9e par + * glisser/d\xE9placer. + * <p> + * Le deplacement provoque la diffusion d'un \xE9v\xE8nement <I>RepereEvent</I>. + * + * @version $Id: BCalquePositionnementInteraction.java,v 1.12 2006-09-19 14:55:45 deniger Exp $ + * @author Bertrand Marchand + */ +public class BCalquePositionnementInteraction extends BCalqueInteraction implements MouseListener, MouseMotionListener{ + private GrPoint ptOrig_; // Point d'origine du d\xE9placement + private final Set repereEventListeners_; // Listeners de modification de rep\xE8re + private BVueCalque vueCalque_; // VueCalque du calque + + /** + * Cr\xE9ation d'un calque de positionnement. + */ + public BCalquePositionnementInteraction() { + super(); + setDestructible(false); + repereEventListeners_ = new HashSet(); + vueCalque_ = null; + } + + + public Cursor getSpecificCursor() { + return EbliResource.EBLI.getCursor("main", -1, new Point(8, 8)); + } + + public String getDescription() { + return EbliLib.getS("D\xE9placer la vue"); + } + + /** + * Retourne la VueCalque contenant le calque. + * + * @return La <code>BVueCalque</code> contenant le calque. <code>null</code> si le calque n'a pas encore \xE9t\xE9 + * affect\xE9 \xE0 une fen\xEAtre de vue. + */ + public BVueCalque getVueCalque() { + return vueCalque_; + } + + /** + * D\xE9finit la VueCalque contenant le calque. Les \xE9v\xE9nements <code>RepereEvent</code> g\xE9n\xE9r\xE9s par le calque sont + * automatiquement envoy\xE9s vers la VueCalque. + * + * @param _v La <code>BVueCalque</code> contenant le calque. Peut \xEAtre <code>null</code> si le calque n'a plus + * affect\xE9 \xE0 une fen\xEAtre de vue. + */ + public void setVueCalque(final BVueCalque _v) { + if (vueCalque_ != _v) { + if (vueCalque_ != null) { + removeRepereEventListener(vueCalque_); + } + vueCalque_ = _v; + if (vueCalque_ != null) { + addRepereEventListener(vueCalque_); + } + } + } + + /** + * Dessin de l'icone. + * + * @param _c composant dont l'icone peut deriver des proprietes (couleur, ...). Ce parametre peut etre <I>null</I>. + * Il est ignore ici. + * @param _g le graphics sur lequel dessiner l'icone + * @param _x lieu cible de l'icone (x) + * @param _y lieu cible de l'icone (y) + */ + public void paintIcon(final Component _c, final Graphics _g, final int _x, final int _y) { + super.paintIcon(_c, _g, _x, _y); + } + + /** + * Ajout d'un auditeur \xE0 l'\xE9venement <I>RepereEvent</I>. + * + * @param _listener Auditeur de l'\xE9v\xE8nement + */ + public synchronized void addRepereEventListener(final RepereEventListener _listener) { + repereEventListeners_.add(_listener); + } + + /** + * Suppression d'un auditeur \xE0 l'\xE9venement <I>RepereEvent</I>. + * + * @param _listener Auditeur de l'\xE9v\xE8nement + */ + public synchronized void removeRepereEventListener(final RepereEventListener _listener) { + repereEventListeners_.remove(_listener); + } + + /** + * Notification aux auditeurs qu'un \xE9venement <I>RepereEvent</I> s'est produit. + */ + public synchronized void fireRepereEvent(final RepereEvent _evt) { + for (final Iterator i = repereEventListeners_.iterator(); i.hasNext();) { + ((RepereEventListener) i.next()).repereModifie(_evt); + } + } + + /* + * Ev\xE8nements souris PRESSED => Saisie du point \xE9cran courant DRAGGED => D\xE9placement de la vue en mode affichage + * rapide RELEASED => Trac\xE9 de la vue en mode affichage raffin\xE9 + */ + /* + * Methode invoqu\xE9e quand on appuie sur un bouton de la souris. Saisie de la position \xE9cran courante. + */ + public void mousePressed(final MouseEvent _evt) { + if (isGele() || _evt.isConsumed()) { + return; + } + ptOrig_ = new GrPoint(_evt.getX(), _evt.getY(), 0.); + } + + /* + * Methode invoquee quand on lache un bouton de la souris. Trac\xE9 de la vue en mode affichage raffin\xE9 + */ + public void mouseReleased(final MouseEvent _evt) { + if (isGele() || _evt.isConsumed()) { + return; + } + final GrPoint ptCur = new GrPoint(_evt.getX(), _evt.getY(), 0.); + final GrVecteur v = ptOrig_.soustraction(ptCur); + if(!vueCalque_.checkTranslation(v.applique(vueCalque_.getVersReel()))) { + v.x_=0; + v.y_=0; + } + // v.autoApplique(getVersReel()); + ptOrig_ = ptCur; + + + final RepereEvent re = new RepereEvent(this, false); + re.ajouteTransformation(RepereEvent.TRANS_X, v.x_, true); + // B.M. 20/09/2000 La translation est invers\xE9e suivant y en attendant de + // comprendre pourquoi + re.ajouteTransformation(RepereEvent.TRANS_Y, -v.y_, true); + fireRepereEvent(re); + } + + + + /* + * Methode invoqu\xE9e quand on deplace la souris avec un bouton appuy\xE9. D\xE9placement de la vue en mode affichage rapide + */ + public void mouseDragged(final MouseEvent _evt) { + if (isGele() || _evt.isConsumed()) { + return; + } + final GrPoint ptCur = new GrPoint(_evt.getX(), _evt.getY(), 0.); + final GrVecteur v = ptOrig_.soustraction(ptCur); + v.autoApplique(getVersReel()); + if(!vueCalque_.checkTranslation(v)) { + return; + } + v.autoApplique(getVersEcran()); + ptOrig_ = ptCur; + final RepereEvent re = new RepereEvent(this, true); + re.ajouteTransformation(RepereEvent.TRANS_X, v.x_, true); + // B.M. 20/09/2000 La translation est invers\xE9e suivant y en attendant de + // comprendre pourquoi + re.ajouteTransformation(RepereEvent.TRANS_Y, -v.y_, true); + fireRepereEvent(re); + } + + /** + * <I>Sans objet</I>. + */ + public void mouseMoved(final MouseEvent _evt) {} + + /** + * <I>Sans objet</I>. + */ + public void mouseClicked(final MouseEvent _evt) {} + + /** + * <I>Sans objet</I>. + */ + public void mouseEntered(final MouseEvent _evt) {} + + /** + * <I>Sans objet</I>. + */ + public void mouseExited(final MouseEvent _evt) {} +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2008-09-05 08:33:36
|
Revision: 3886 http://fudaa.svn.sourceforge.net/fudaa/?rev=3886&view=rev Author: emmanuel_martin Date: 2008-09-05 08:33:45 +0000 (Fri, 05 Sep 2008) Log Message: ----------- rend le zoom sur selection ind?\195?\169pendant du calque selectionn?\195?\169 et permet de zoomer correctement dans le cas de plusieurs selections simultan?\195?\169s. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquePanelController.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquesPanel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileGridPalette.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigVisuPanel.java Added Paths: ----------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/SceneZoomOnSelectedAction.java Removed Paths: ------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/CalqueZoomOnSelectedAction.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquePanelController.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquePanelController.java 2008-09-04 16:59:56 UTC (rev 3885) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquePanelController.java 2008-09-05 08:33:45 UTC (rev 3886) @@ -38,7 +38,7 @@ import org.fudaa.ebli.calque.action.CalqueActionInteraction; import org.fudaa.ebli.calque.action.CalqueActionTable; import org.fudaa.ebli.calque.action.CalqueSelectionAction; -import org.fudaa.ebli.calque.action.CalqueZoomOnSelectedAction; +import org.fudaa.ebli.calque.action.SceneZoomOnSelectedAction; import org.fudaa.ebli.commun.EbliActionInterface; import org.fudaa.ebli.commun.EbliActionPaletteAbstract; import org.fudaa.ebli.commun.EbliActionPaletteSpecAbstract; @@ -211,7 +211,7 @@ action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke('z')); navigationActionGroup_[i++] = action; - navigationActionGroup_[i++] = new CalqueZoomOnSelectedAction(pn_); + navigationActionGroup_[i++] = new SceneZoomOnSelectedAction(pn_); // VIEW NAVIGATION navigationActionGroup_[i] = new EbliActionSimple(EbliResource.EBLI.getString("Derni\xE8re vue"), EbliResource.EBLI @@ -271,7 +271,7 @@ action.setDefaultToolTip(tltTip); selectedActionGroup_[i++] = action; - action = new CalqueSelectionAction(this, EbliResource.EBLI.getIcon("polygone"), "POLYGON_SELECTION", + action = new CalqueSelectionAction(this, EbliResource.EBLI.getIcon("fleche-polygone"), "POLYGON_SELECTION", ZCalqueSelectionInteractionAbstract.POLYGONE); action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke('p')); action.setDefaultToolTip(tltTip); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquesPanel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquesPanel.java 2008-09-04 16:59:56 UTC (rev 3885) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquesPanel.java 2008-09-05 08:33:45 UTC (rev 3886) @@ -45,6 +45,7 @@ import org.fudaa.ctulu.image.CtuluLibImage; import org.fudaa.ebli.animation.EbliAnimationSourceAbstract; +import org.fudaa.ebli.calque.edition.ZEditorDefault; import org.fudaa.ebli.calque.edition.ZSceneEditor; import org.fudaa.ebli.commun.EbliActionInterface; import org.fudaa.ebli.commun.EbliComponentFactory; @@ -70,6 +71,8 @@ public class ZEbliCalquesPanel extends BuPanel implements EbliFilleCalquesInterface, BCalqueContextuelListener, CtuluImageProducer, BCalqueSaverTargetInterface, EbliFindable, ActionListener, ZSelectionListener { + protected ZEditorDefault gisEditor_; + protected class AnimAdapter extends EbliAnimationSourceAbstract { public AnimAdapter() { @@ -384,8 +387,20 @@ scene_.setRestrictedToCalqueActif(true); scene_.addSelectionListener(this); modelArbre_.addTreeModelListener(scene_); + gisEditor_ = createGisEditor(); } + protected ZEditorDefault createGisEditor() { + return new ZEditorDefault(this); + } + + /** + * @return retourne le ZEditorDefault poss\xE9d\xE9. + */ + public final ZEditorDefault getDefaultGisEditor() { + return gisEditor_; + } + public void setInfoText(final String _s) { if (CtuluLibString.isEmpty(_s)) { unsetInfoText(); @@ -819,6 +834,10 @@ } } + /** + * Cette fonctionnalit\xE9 est d\xE9plac\xE9e et \xE9tendue dans ZSceneEditor + * @deprecated + */ public void zoomOnSelected() { final BCalque cq = getCalqueActif(); if (cq instanceof ZCalqueAffichageDonneesInterface) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java 2008-09-04 16:59:56 UTC (rev 3885) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java 2008-09-05 08:33:45 UTC (rev 3886) @@ -731,7 +731,7 @@ return new ZCalqueAffichageDonneesInterface[0]; } - private ZCalqueAffichageDonneesInterface[] getAllLayers() { + public ZCalqueAffichageDonneesInterface[] getAllLayers() { if (brefreshRequested_) { ArrayList<BCalque> lcqs=new ArrayList<BCalque>(); for ( BCalque cq : cqRoot_.getTousCalques()) { Deleted: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/CalqueZoomOnSelectedAction.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/CalqueZoomOnSelectedAction.java 2008-09-04 16:59:56 UTC (rev 3885) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/CalqueZoomOnSelectedAction.java 2008-09-05 08:33:45 UTC (rev 3886) @@ -1,71 +0,0 @@ -package org.fudaa.ebli.calque.action; - -import java.awt.event.ActionEvent; -import java.awt.event.InputEvent; -import java.awt.event.KeyEvent; - -import javax.swing.Action; -import javax.swing.KeyStroke; -import javax.swing.event.TreeSelectionEvent; -import javax.swing.event.TreeSelectionListener; - -import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; -import org.fudaa.ebli.calque.ZEbliCalquesPanel; -import org.fudaa.ebli.calque.ZSelectionEvent; -import org.fudaa.ebli.calque.ZSelectionListener; -import org.fudaa.ebli.commun.EbliActionInterface; -import org.fudaa.ebli.commun.EbliActionSimple; -import org.fudaa.ebli.ressource.EbliResource; - -/** - * Une action pour un zoom sur la s\xE9lection. Est active si des objets sont selectionn\xE9s. - * @author Fred Deniger - * @version $Id: CalqueZoomOnSelectedAction.java,v 1.2.8.1 2008-02-27 17:16:12 bmarchan Exp $ - */ -public class CalqueZoomOnSelectedAction extends EbliActionSimple implements TreeSelectionListener, ZSelectionListener { - - final ZEbliCalquesPanel cqPn_; - - public CalqueZoomOnSelectedAction(final ZEbliCalquesPanel _pn) { - super(EbliResource.EBLI.getString("Centrer sur la s\xE9lection"), EbliResource.EBLI.getIcon("zoom-selection"), - "ZOOM_ON_SELECTED"); - putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.CTRL_DOWN_MASK)); - putValue(EbliActionInterface.SECOND_KEYSTROKE, KeyStroke.getKeyStroke(KeyEvent.VK_F5, InputEvent.CTRL_DOWN_MASK)); - setDefaultToolTip(EbliResource.EBLI.getString("Centrer la vue sur la s\xE9lection courante")); - cqPn_ = _pn; - cqPn_.getArbreCalqueModel().addTreeSelectionListener(this); - } - - public void actionPerformed(final ActionEvent _arg) { - cqPn_.zoomOnSelected(); - } - - public void updateStateBeforeShow() { - super.setEnabled(cqPn_.isZoomOnSelectedEnable()); - } - - private void updateEnableState() { - setEnabled(current_ != null && !current_.isSelectionEmpty()); - } - - ZCalqueAffichageDonneesInterface current_; - - public void selectionChanged(final ZSelectionEvent _evt) { - updateEnableState(); - } - - public void valueChanged(final TreeSelectionEvent _e) { - if (current_ != null) { - current_.removeSelectionListener(this); - } - final Object newSelected = _e.getPath().getLastPathComponent(); - if (newSelected instanceof ZCalqueAffichageDonneesInterface) { - current_ = (ZCalqueAffichageDonneesInterface) newSelected; - current_.addSelectionListener(this); - } else { - current_ = null; - } - updateEnableState(); - } - -} \ No newline at end of file Copied: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/SceneZoomOnSelectedAction.java (from rev 3861, branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/CalqueZoomOnSelectedAction.java) =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/SceneZoomOnSelectedAction.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/SceneZoomOnSelectedAction.java 2008-09-05 08:33:45 UTC (rev 3886) @@ -0,0 +1,65 @@ +package org.fudaa.ebli.calque.action; + +import java.awt.event.ActionEvent; +import java.awt.event.InputEvent; +import java.awt.event.KeyEvent; + +import javax.swing.Action; +import javax.swing.KeyStroke; +import javax.swing.event.TreeSelectionEvent; +import javax.swing.event.TreeSelectionListener; + +import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; +import org.fudaa.ebli.calque.ZEbliCalquesPanel; +import org.fudaa.ebli.calque.ZSelectionEvent; +import org.fudaa.ebli.calque.ZSelectionListener; +import org.fudaa.ebli.commun.EbliActionInterface; +import org.fudaa.ebli.commun.EbliActionSimple; +import org.fudaa.ebli.ressource.EbliResource; + +/** + * Une action pour un zoom sur la s\xE9lection. Est active si des objets sont selectionn\xE9s. + * @author Fred Deniger + * @version $Id: CalqueZoomOnSelectedAction.java,v 1.2.8.1 2008-02-27 17:16:12 bmarchan Exp $ + */ +public class SceneZoomOnSelectedAction extends EbliActionSimple implements ZSelectionListener { + + final ZEbliCalquesPanel cqPn_; + + public SceneZoomOnSelectedAction(final ZEbliCalquesPanel _pn) { + super(EbliResource.EBLI.getString("Centrer sur la s\xE9lection"), EbliResource.EBLI.getIcon("zoom-selection"), + "ZOOM_ON_SELECTED"); + putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.CTRL_DOWN_MASK)); + putValue(EbliActionInterface.SECOND_KEYSTROKE, KeyStroke.getKeyStroke(KeyEvent.VK_F5, InputEvent.CTRL_DOWN_MASK)); + setDefaultToolTip(EbliResource.EBLI.getString("Centrer la vue sur la s\xE9lection courante")); + cqPn_ = _pn; + cqPn_.getScene().addSelectionListener(this); + } + + /** + * Effectue le zoom sur selection + */ + public void actionPerformed(final ActionEvent _arg) { + cqPn_.getDefaultGisEditor().getSceneEditor().zoomOnSelected(); + } + + public void updateStateBeforeShow() { + super.setEnabled(cqPn_.isZoomOnSelectedEnable()); + } + + /** + * Active le bouton de zoom sur selection. + */ + private void updateEnableState() { + setEnabled(!cqPn_.getDefaultGisEditor().getSceneEditor().getScene().isSelectionEmpty()); + } + + public void selectionChanged(final ZSelectionEvent _evt) { + updateEnableState(); + } + + public void valueChanged(final TreeSelectionEvent _e) { + updateEnableState(); + } + +} \ No newline at end of file Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java 2008-09-04 16:59:56 UTC (rev 3885) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java 2008-09-05 08:33:45 UTC (rev 3886) @@ -169,7 +169,7 @@ } public ZEditorDefault(final ZEbliCalquesPanel _panel) { - this(_panel,new ZSceneEditor(_panel.getScene())); + this(_panel,new ZSceneEditor(_panel.getScene(), _panel)); } /** Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java 2008-09-04 16:59:56 UTC (rev 3885) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java 2008-09-05 08:33:45 UTC (rev 3886) @@ -11,7 +11,10 @@ import org.fudaa.ctulu.CtuluCommandContainer; import org.fudaa.ctulu.CtuluCommandManager; import org.fudaa.ctulu.CtuluUI; +import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; +import org.fudaa.ebli.calque.ZEbliCalquesPanel; import org.fudaa.ebli.calque.ZScene; +import org.fudaa.ebli.geometrie.GrBoite; /** * Regroupe les traitements d'\xE9dition de la scene. @@ -20,11 +23,13 @@ */ public class ZSceneEditor { protected ZScene scene_; + protected ZEbliCalquesPanel claquePanel_; protected CtuluCommandManager mng_; protected CtuluUI ui_; - public ZSceneEditor(ZScene _scene) { + public ZSceneEditor(ZScene _scene, ZEbliCalquesPanel _claquePanel) { scene_=_scene; + claquePanel_ = _claquePanel; } public void setUI(CtuluUI _ui) { @@ -114,4 +119,20 @@ String name=stel.getClassName()+"."+stel.getMethodName(); ui_.message("Not implemented", name, false); } + + /** + * Effectue un zoom sur la selection. Cette selection peut regrouper des + * \xE9l\xE9ments de diff\xE9rents calques. + */ + public void zoomOnSelected() { + GrBoite boite = null; + for (ZCalqueAffichageDonneesInterface cq : scene_.getAllLayers()) { + GrBoite boiteTmp = cq.getDomaineOnSelected(); + if(boite == null) boite = boiteTmp; + else boite.ajuste(boiteTmp); + } + if(boite != null) + claquePanel_.getVueCalque().changeRepere(this, boite); + } + } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileGridPalette.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileGridPalette.java 2008-09-04 16:59:56 UTC (rev 3885) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileGridPalette.java 2008-09-05 08:33:45 UTC (rev 3886) @@ -37,7 +37,7 @@ import org.fudaa.ebli.calque.ZSelectionEvent; import org.fudaa.ebli.calque.ZSelectionListener; import org.fudaa.ebli.calque.action.CalqueActionInteraction; -import org.fudaa.ebli.calque.action.CalqueZoomOnSelectedAction; +import org.fudaa.ebli.calque.action.SceneZoomOnSelectedAction; import org.fudaa.ebli.commun.BPalettePanelInterface; import org.fudaa.ebli.commun.EbliActionInterface; import org.fudaa.ebli.commun.EbliActionSimple; @@ -96,7 +96,7 @@ action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke('z')); navigationActionGroup_[i++] = action; - navigationActionGroup_[i++] = new CalqueZoomOnSelectedAction(pn_); + navigationActionGroup_[i++] = new SceneZoomOnSelectedAction(pn_); // VIEW NAVIGATION navigationActionGroup_[i] = new EbliActionSimple(EbliResource.EBLI.getString("Derni\xE8re vue"), EbliResource.EBLI Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-09-04 16:59:56 UTC (rev 3885) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-09-05 08:33:45 UTC (rev 3886) @@ -57,7 +57,7 @@ MdlRefinementPanel pnRaffinement_=null; public MdlSceneEditor(MdlVisuPanel _pn, ZScene _scene) { - super(_scene); + super(_scene, _pn); pn_=_pn; } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigVisuPanel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigVisuPanel.java 2008-09-04 16:59:56 UTC (rev 3885) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigVisuPanel.java 2008-09-05 08:33:45 UTC (rev 3886) @@ -30,6 +30,7 @@ import org.fudaa.ebli.calque.action.SceneRotationAction; import org.fudaa.ebli.calque.edition.ZCalqueDeplacement; import org.fudaa.ebli.calque.edition.ZCalqueEditionGroup; +import org.fudaa.ebli.calque.edition.ZEditorDefault; import org.fudaa.ebli.commun.EbliActionInterface; import org.fudaa.ebli.commun.EbliFormatter; import org.fudaa.ebli.commun.EbliSelectionMode; @@ -50,8 +51,6 @@ FSigAttibuteTypeManager attMng_; - FSigEditor gisEditor_; - ZCalqueGrille grille_; ThemeMenu theme_; @@ -112,7 +111,7 @@ } - protected FSigEditor createGisEditor() { + protected ZEditorDefault createGisEditor() { return new FSigEditor(this, getCmdMng()); } @@ -188,7 +187,7 @@ } public final FSigEditor getGisEditor() { - return gisEditor_; + return (FSigEditor) gisEditor_; } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-09-16 11:05:29
|
Revision: 3928 http://fudaa.svn.sourceforge.net/fudaa/?rev=3928&view=rev Author: bmarchan Date: 2008-09-16 11:05:38 +0000 (Tue, 16 Sep 2008) Log Message: ----------- Optimisation de la vitesse de traitement lors de la suppression d'un multipoint Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneAttributeFactory.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionGeometry.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditionAttibutesContainer.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditionAttributesDataI.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneAttributeFactory.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneAttributeFactory.java 2008-09-16 07:47:06 UTC (rev 3927) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneAttributeFactory.java 2008-09-16 11:05:38 UTC (rev 3928) @@ -9,7 +9,6 @@ import java.util.Arrays; -import com.sun.j3d.loaders.vrml97.impl.Coordinate; import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.LineString; @@ -31,7 +30,7 @@ * @return l'interpolateur 1d */ public static GISReprojectInterpolateurI create1DInterpolateur(final GISAttributeInterface _att, - final LineString _src, final LineString _target, final GISAttributeModel _model) { + final GISCoordinateSequenceContainerInterface _src, final GISCoordinateSequenceContainerInterface _target, final GISAttributeModel _model) { final Class clazz = _att.getDataClass(); if (clazz == Integer.class) { return new GISReprojectInterpolateur1DInteger(_src.getCoordinateSequence(), _target.getCoordinateSequence(), @@ -49,40 +48,6 @@ } - /** - * @param _att l'attribut - * @param _src la liste des points source - * @param _target la liste des points cible - * @param _model le model initial - * @return l'interpolateur 1d - */ - public static GISReprojectInterpolateurI create1DInterpolateur(final GISAttributeInterface _att, - final Geometry _src, final Geometry _target, final GISAttributeModel _model) { - final Class clazz = _att.getDataClass(); - if (clazz == Integer.class) { - return new GISReprojectInterpolateur1DInteger( - new GISCoordinateSequence(_src.getCoordinates()), - new GISCoordinateSequence(_target.getCoordinates()), - (GISAttributeModelIntegerInterface) _model); - } else if (clazz == Double.class) { - return new GISReprojectInterpolateur1DDouble( - new GISCoordinateSequence(_src.getCoordinates()), - new GISCoordinateSequence(_target.getCoordinates()), - (GISAttributeModelDoubleInterface) _model); - } else if (clazz == Boolean.class) { - return new GISReprojectInterpolateur1DBoolean( - new GISCoordinateSequence(_src.getCoordinates()), - new GISCoordinateSequence(_target.getCoordinates()), - (GISAttributeModelBooleanInterface) _model); - } else { - return new GISReprojectInterpolateur1DObject( - new GISCoordinateSequence(_src.getCoordinates()), - new GISCoordinateSequence(_target.getCoordinates()), - (GISAttributeModelObjectInterface) _model); - } - - } - public static GISAttributeModel createModelList(final GISAttributeInterface _att, final Object _valatt, final int _capacity, final GISAttributeListener _listener, final int _initValuesNb) { final GISAttributeModelListener resfinal = _att.createListModel(_capacity); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionGeometry.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionGeometry.java 2008-09-16 07:47:06 UTC (rev 3927) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionGeometry.java 2008-09-16 11:05:38 UTC (rev 3928) @@ -129,7 +129,7 @@ } geom = GISGeometryFactory.INSTANCE.createGeometry(geom.getClass(),cs); - setValue(_ligneIdx,geom, _cmd); + setGeometry(_ligneIdx,geom, _cmd); } /** @@ -137,7 +137,7 @@ * @param _geom la nouvelle ligne * @param _cmd le receveur de commande */ - public void setValue(final int _idx, final Geometry _geom, final CtuluCommandContainer _cmd) { + public void setGeometry(final int _idx, final Geometry _geom, final CtuluCommandContainer _cmd) { if (!isGeomModifiable_) { return; } @@ -150,8 +150,9 @@ final GISAttributeInterface att = getAttribute(i); if (att.isAtomicValue()) { final GISAttributeModel m = (GISAttributeModel) (getModelListener(i).getObjectValueAt(_idx)); - final GISReprojectInterpolateurI interpolateur = GISZoneAttributeFactory.create1DInterpolateur(att, old, - _geom, m); + final GISReprojectInterpolateurI interpolateur = GISZoneAttributeFactory.create1DInterpolateur(att, + (GISCoordinateSequenceContainerInterface)old, + (GISCoordinateSequenceContainerInterface)_geom, m); getModelListener(i).setObject(_idx, m.deriveNewModel(_geom.getNumPoints(), interpolateur), cmp); } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java 2008-09-16 07:47:06 UTC (rev 3927) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java 2008-09-16 11:05:38 UTC (rev 3928) @@ -94,8 +94,9 @@ final GISAttributeInterface att = getAttribute(i); if (att.isAtomicValue()) { final GISAttributeModel m = (GISAttributeModel) (getModelListener(i).getObjectValueAt(_idx)); - final GISReprojectInterpolateurI interpolateur = GISZoneAttributeFactory.create1DInterpolateur(att, old, - _newLine, m); + final GISReprojectInterpolateurI interpolateur = GISZoneAttributeFactory.create1DInterpolateur(att, + (GISCoordinateSequenceContainerInterface)old, + (GISCoordinateSequenceContainerInterface)_newLine, m); getModelListener(i).setObject(_idx, m.deriveNewModel(_newLine.getNumPoints(), interpolateur), cmp); } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java 2008-09-16 07:47:06 UTC (rev 3927) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java 2008-09-16 11:05:38 UTC (rev 3928) @@ -190,9 +190,7 @@ } return true; } - /** - * @todo Les poly de niveau sont mal trait\xE9es - */ + public void addAtomic(final int _ligneIdx, final int _idxBefore, final double _x, final double _y, final CtuluCommandContainer _cmd) { if (!isGeomModifiable_) { @@ -211,33 +209,34 @@ } geom = GISGeometryFactory.INSTANCE.createMultiPoint(cs); - setValue(_ligneIdx,geom, _cmd); + setGeometry(_ligneIdx,geom, _cmd); } /** - * @param _idx l'indice de la ligne a changer - * @param _geom la nouvelle ligne + * @param _idxGeom l'indice de la g\xE9om\xE9trie a remplacer + * @param _geom la nouvelle g\xE9ometrie * @param _cmd le receveur de commande */ - public void setValue(final int _idx, final Geometry _geom, final CtuluCommandContainer _cmd) { + public void setGeometry(final int _idxGeom, final Geometry _geom, final CtuluCommandContainer _cmd) { if (!isGeomModifiable_) { return; } - final Geometry old = (Geometry) super.geometry_.getValueAt(_idx); + final Geometry old = (Geometry) super.geometry_.getValueAt(_idxGeom); if (old.getNumPoints() == _geom.getNumPoints() || !containsAtomicAttribute()) { - super.geometry_.setObject(_idx, _geom, _cmd); + super.geometry_.setObject(_idxGeom, _geom, _cmd); } else { final CtuluCommandComposite cmp = new CtuluCommandComposite(); for (int i = getNbAttributes() - 1; i >= 0; i--) { final GISAttributeInterface att = getAttribute(i); if (att.isAtomicValue()) { - final GISAttributeModel m = (GISAttributeModel) (getModelListener(i).getObjectValueAt(_idx)); - final GISReprojectInterpolateurI interpolateur = GISZoneAttributeFactory.create1DInterpolateur(att, old, - _geom, m); - getModelListener(i).setObject(_idx, m.deriveNewModel(_geom.getNumPoints(), interpolateur), cmp); + final GISAttributeModel m = (GISAttributeModel) (getModelListener(i).getObjectValueAt(_idxGeom)); + final GISReprojectInterpolateurI interpolateur = GISZoneAttributeFactory.create1DInterpolateur(att, + (GISCoordinateSequenceContainerInterface)old, + (GISCoordinateSequenceContainerInterface)_geom, m); + getModelListener(i).setObject(_idxGeom, m.deriveNewModel(_geom.getNumPoints(), interpolateur), cmp); } } - super.geometry_.setObject(_idx, _geom, cmp); + super.geometry_.setObject(_idxGeom, _geom, cmp); if (_cmd != null) { _cmd.addCmd(cmp.getSimplify()); } @@ -387,34 +386,14 @@ return false; } -// /** -// * @return true si contient au moins un polygone (ligne brisee fermee). -// */ -// public boolean containsPolygone() { -// final GISVisitorChooser chooser = new GISVisitorChooser(); -// for (int i = getNumGeometries() - 1; i >= 0; i--) { -// ((GISGeometry) getGeometry(i)).accept(chooser); -// if (chooser.isPolygone()) { -// return true; -// } -// } -// return false; -// } -// -// /** -// * @return true si contient au moins un polygone (ligne brisee fermee). -// */ -// public boolean containsPolyligne() { -// final GISVisitorChooser chooser = new GISVisitorChooser(); -// for (int i = getNumGeometries() - 1; i >= 0; i--) { -// ((GISGeometry) getGeometry(i)).accept(chooser); -// if (chooser.isPolyligne()) { -// return true; -// } -// } -// return false; -// } -// + /** + * Supprime des sommets sur une g\xE9om\xE9trie. + * @param _idxGeom L'indice de la g\xE9om\xE9trie. + * @param _sel La liste des sommets s\xE9lectionn\xE9s. + * @param _ui L'interface utilisateur. + * @param _cmd Le manager de commandes. + * @return true si tout s'est bien pass\xE9. + */ public boolean removeAtomics(final int _idxGeom, final CtuluListSelectionInterface _sel, final CtuluUI _ui, final CtuluCommandContainer _cmd) { if (_sel == null || _sel.isEmpty()) { @@ -423,11 +402,19 @@ boolean r = true; final Geometry old = (Geometry) getGeometry(_idxGeom); int nbPt = old.getNumPoints(); + + // Raccourci si tous les sommets sont s\xE9lectionn\xE9s. + int nbSel=_sel.getNbSelectedIndex(); + if (nbSel==nbPt) { + removeGeometries(new int[]{_idxGeom}, _cmd); + return true; + } + // les nouvelles coordonnees. - final Coordinate[] newCs = new Coordinate[nbPt]; + final Coordinate[] newCs = new Coordinate[nbPt-nbSel]; // cette liste contient les indice a enlever : creee que si necessaire // si des attribute atomics existent - final TIntArrayList idxToRemove = containsAtomicAttribute() ? new TIntArrayList(nbPt) : null; + final TIntArrayList idxToRemove = containsAtomicAttribute() ? new TIntArrayList(nbPt-nbSel) : null; // compteur tempo int count = 0; @@ -437,69 +424,27 @@ idxToRemove.add(idxPt); } } else { - newCs[count++] = (Coordinate)old.getCoordinates()[idxPt].clone(); + newCs[count++] = ((GISCoordinateSequenceContainerInterface)old).getCoordinateSequence().getCoordinate(idxPt); } } - GISMultiPoint newGeom = null; - -// // Un polygone -// if (line/*.isClosed()*/ instanceof GISPolygone) { -// if (count < 3) { -// r = false; -// if (_ui != null) { -// _ui.error(null, CtuluLib.getS("La ligne brisee doit contenir {0} points au moins", CtuluLibString.TROIS), -// false); -// } -// -// } else { -// newCs[count++] = newCs[0]; -// final Coordinate[] coord = new Coordinate[count]; -// System.arraycopy(newCs, 0, coord, 0, coord.length); -// newString = GISGeometryFactory.INSTANCE.createLinearRing(coord); -// newString.setUserData(line.getUserData()); -// } -// } -// -// // Une polyligne -// else if (line instanceof GISPolyligne && ((GISPolyligne)line).isReliee()) { -// if (count < 2) { -// r = false; -// if (_ui != null) { -// _ui.error(null, CtuluLib.getS("La ligne brisee doit contenir {0} points au moins", CtuluLibString.DEUX), -// false); -// } -// if (FuLog.isTrace()) { -// FuLog.trace("EBLI: polylignes: not enough points"); -// // message -// } -// } else { -// final Coordinate[] coord = new Coordinate[count]; -// System.arraycopy(newCs, 0, coord, 0, coord.length); -// newString = GISGeometryFactory.INSTANCE.createLineString(coord); -// newString.setUserData(line.getUserData()); -// } -// } - - // Une polyligne non reliee -// else if (line instanceof GISPolyligne && !((GISPolyligne)line).isReliee()) { - if (count < 1) { - r = false; - if (_ui != null) { - _ui.error(null, CtuluLib.getS("La ligne non reliee doit contenir {0} points au moins", CtuluLibString.UN), - false); - } - if (FuLog.isTrace()) { - FuLog.trace("EBLI: polylignes: not enough points"); - // message - } - } else { - final Coordinate[] coord = new Coordinate[count]; - System.arraycopy(newCs, 0, coord, 0, coord.length); - newGeom = (GISMultiPoint)GISGeometryFactory.INSTANCE.createMultiPoint(coord); -// ((GISPolyligne)newString).setReliee(false); - newGeom.setUserData(old.getUserData()); + GISMultiPoint newGeom=null; + if (count<1) { + r=false; + if (_ui!=null) { + _ui.error(null, CtuluLib.getS("La ligne non reliee doit contenir {0} points au moins", CtuluLibString.UN), false); } -// } + if (FuLog.isTrace()) { + FuLog.trace("EBLI: polylignes: not enough points"); + // message + } + } + else { +// final Coordinate[] coord=new Coordinate[count]; +// System.arraycopy(newCs, 0, coord, 0, coord.length); + newGeom=(GISMultiPoint)GISGeometryFactory.INSTANCE.createMultiPoint(newCs); + newGeom.setUserData(old.getUserData()); + } + if (r) { super.geometry_.setObject(_idxGeom, newGeom, _cmd); // si des attributs atomics sont concerne Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditionAttibutesContainer.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditionAttibutesContainer.java 2008-09-16 07:47:06 UTC (rev 3927) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditionAttibutesContainer.java 2008-09-16 11:05:38 UTC (rev 3928) @@ -94,11 +94,11 @@ nbGeom_++; } - public int getNumGeometry() { + public int getNbVertex() { return nbGeom_; } - public int getNumValues() { + public int getNbValues() { return name_.length; } @@ -169,11 +169,11 @@ } } - public int getNumGeometry() { + public int getNbVertex() { return 1; } - public int getNumValues() { + public int getNbValues() { return name_.length; } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditionAttributesDataI.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditionAttributesDataI.java 2008-09-16 07:47:06 UTC (rev 3927) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditionAttributesDataI.java 2008-09-16 11:05:38 UTC (rev 3928) @@ -18,12 +18,12 @@ /** * @return Nombre de sommets de la g\xE9om\xE9trie en cours. */ - public abstract int getNumGeometry(); + public abstract int getNbVertex(); /** * @return Le nombre de valeurs d'attribut par sommet. */ - public abstract int getNumValues(); + public abstract int getNbValues(); /** * @param _i L'index d'attribut [0,getNbValues()] @@ -32,20 +32,22 @@ public abstract GISAttributeInterface getAttribute(int _i); /** - * Retourne la valeur pour l'attribut et le sommet. + * Retourne la valeur pour l'attribut et le sommet. Si l'attribut est global, le num\xE9ro de sommet + * n'a pas d'importance. + * * @param _attr La definition d'attribut - * @param _numGeometry Le sommet. + * @param _idxVertex Le sommet. * @return La valeur atomique pour le sommet. */ - public abstract Object getValue(GISAttributeInterface _attr,int _numGeometry); + public abstract Object getValue(GISAttributeInterface _attr,int _idxVertex); /** * Definit la valeur pour l'attribut et le sommet. * @param _attr La definition d'attribut - * @param _numGeometry Le sommet. + * @param _idxVertex Le sommet. * @param _val La valeur atomique. */ - public abstract void setValue(GISAttributeInterface _attr,int _numGeometry,Object _val); + public abstract void setValue(GISAttributeInterface _attr,int _idxVertex, Object _val); /** * Ajout d'un sommet, et cr\xE9ation des valeurs d'attributs en consequence. Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-09-16 07:47:06 UTC (rev 3927) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-09-16 11:05:38 UTC (rev 3928) @@ -61,7 +61,7 @@ for (int i = r.length - 1; i >= 0; i--) { final GISAttributeInterface att = geometries_.getAttribute(i); if (att.isAtomicValue()) { - final Object[] ri = new Object[_d.getNumGeometry()]; + final Object[] ri = new Object[_d.getNbVertex()]; for (int gi = ri.length - 1; gi >= 0; gi--) { ri[gi] = _d.getValue(att, gi); if (FuLog.isTrace()) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-09-16 07:47:06 UTC (rev 3927) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-09-16 11:05:38 UTC (rev 3928) @@ -402,9 +402,17 @@ } } - public void addAtomic(final int _ligneIdx,final int _idxBefore,final double _x,final double _y,final CtuluCommandContainer _cmd){ + /** + * Ajoute un sommet X,Y \xE0 la g\xE9om\xE9trie donn\xE9e. Les valeurs des attributs sont interpol\xE9es \xE9ventuellement. + * @param _idxGeom La g\xE9om\xE9trie modifi\xE9e. + * @param _idxBefore Le sommet qui sera le pr\xE9cedent de celui ajout\xE9. + * @param _x La coordonn\xE9e X du point. + * @param _y La coordonn\xE9e Y du point. + * @param _cmd Le manager de commandes. + */ + public void addAtomic(final int _idxGeom,final int _idxBefore,final double _x,final double _y,final CtuluCommandContainer _cmd){ if (geometries_ == null) return; - geometries_.addAtomic(_ligneIdx, _idxBefore, _x, _y, _cmd); + geometries_.addAtomic(_idxGeom, _idxBefore, _x, _y, _cmd); } protected GISZoneCollectionMultiPoint createCollection(){ @@ -456,7 +464,7 @@ for (int i = r.length - 1; i >= 0; i--) { final GISAttributeInterface att = geometries_.getAttribute(i); if (att.isAtomicValue()) { - final Object[] ri = new Object[_d.getNumGeometry()]; + final Object[] ri = new Object[_d.getNbVertex()]; for (int gi = ri.length - 1; gi >= 0; gi--) { ri[gi] = _d.getValue(att, gi); if (FuLog.isTrace()) { @@ -523,7 +531,7 @@ } final GISMultiPoint geo = (GISMultiPoint) GISGeometryFactory.INSTANCE.createMultiPoint(newSeq); - geometries_.setValue(i, geo, cmp); + geometries_.setGeometry(i, geo, cmp); } } if (_cmd != null) { @@ -667,7 +675,7 @@ } return false; } - geometries_.setValue(idx, geo, cmp); + geometries_.setGeometry(idx, geo, cmp); if (newvals!=null) getGeomData().getModel(zAtt).setObject(idx, newvals, cmp); @@ -740,7 +748,7 @@ newSeq[j].y=dynew+_yreel0; } final GISMultiPoint poly = (GISMultiPoint) GISGeometryFactory.INSTANCE.createMultiPoint(newSeq); - geometries_.setValue(i, poly, cmp); + geometries_.setGeometry(i, poly, cmp); } } @@ -794,7 +802,7 @@ } return false; } - geometries_.setValue(idx, geo, cmp); + geometries_.setGeometry(idx, geo, cmp); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-09-17 13:35:31
|
Revision: 3944 http://fudaa.svn.sourceforge.net/fudaa/?rev=3944&view=rev Author: bmarchan Date: 2008-09-17 13:35:40 +0000 (Wed, 17 Sep 2008) Log Message: ----------- Autorisation de supprimer une ligne bris?\195?\169e si tous les sommets sont s?\195?\169lectionn?\195?\169s. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionGeometry.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionGeometry.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionGeometry.java 2008-09-17 13:27:06 UTC (rev 3943) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionGeometry.java 2008-09-17 13:35:40 UTC (rev 3944) @@ -212,6 +212,14 @@ return false; } + /** + * Supprime des sommets sur une g\xE9om\xE9trie. + * @param _idxGeom L'indice de la g\xE9om\xE9trie. + * @param _sel La liste des sommets s\xE9lectionn\xE9s. + * @param _ui L'interface utilisateur. + * @param _cmd Le manager de commandes. + * @return true si tout s'est bien pass\xE9. + */ public boolean removeAtomics(final int _idxGeom, final CtuluListSelectionInterface _sel, final CtuluUI _ui, final CtuluCommandContainer _cmd) { if (_sel == null || _sel.isEmpty()) { @@ -220,6 +228,14 @@ boolean r = true; final Geometry old = (Geometry) getGeometry(_idxGeom); int nbPt = old.getNumPoints(); + + // Raccourci si tous les sommets sont s\xE9lectionn\xE9s. + int nbSel=_sel.getNbSelectedIndex(); + if (nbSel==nbPt) { + removeGeometries(new int[]{_idxGeom}, _cmd); + return true; + } + // les nouvelles coordonnees. final Coordinate[] newCs = new Coordinate[nbPt]; // cette liste contient les indice a enlever : creee que si necessaire Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java 2008-09-17 13:27:06 UTC (rev 3943) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java 2008-09-17 13:35:40 UTC (rev 3944) @@ -330,7 +330,15 @@ return ((CtuluCollectionDouble) getModel(_idxAtt)).getValue(_idxGeom); } - public boolean removeAtomicValue(final int _idxGeom, final CtuluListSelectionInterface _sel, final CtuluUI _ui, + /** + * Supprime des sommets sur une g\xE9om\xE9trie. + * @param _idxGeom L'indice de la g\xE9om\xE9trie. + * @param _sel La liste des sommets s\xE9lectionn\xE9s. + * @param _ui L'interface utilisateur. + * @param _cmd Le manager de commandes. + * @return true si tout s'est bien pass\xE9. + */ + public boolean removeAtomics(final int _idxGeom, final CtuluListSelectionInterface _sel, final CtuluUI _ui, final CtuluCommandContainer _cmd) { if (_sel == null || _sel.isEmpty()) { return false; @@ -338,6 +346,14 @@ boolean r = true; final LineString line = (LineString) getGeometry(_idxGeom); int nbPt = line.getCoordinateSequence().size(); + + // Raccourci si tous les sommets sont s\xE9lectionn\xE9s. + int nbSel=_sel.getNbSelectedIndex(); + if (nbSel==nbPt) { + removeGeometries(new int[]{_idxGeom}, _cmd); + return true; + } + // les nouvelles coordonnees. final Coordinate[] newCs = new Coordinate[nbPt]; // cette liste contient les indice a enlever : creee que si necessaire Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-09-17 13:27:06 UTC (rev 3943) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-09-17 13:35:40 UTC (rev 3944) @@ -114,7 +114,7 @@ final int idxLigne = iterator.key(); //les points a enlever final CtuluListSelectionInterface sel = (CtuluListSelectionInterface) iterator.value(); - geometries_.removeAtomicValue(idxLigne, sel, _ui, cmp); + geometries_.removeAtomics(idxLigne, sel, _ui, cmp); } if (_cmd != null) { _cmd.addCmd(cmp.getSimplify()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2008-09-26 10:24:34
|
Revision: 3989 http://fudaa.svn.sourceforge.net/fudaa/?rev=3989&view=rev Author: emmanuel_martin Date: 2008-09-26 10:24:20 +0000 (Fri, 26 Sep 2008) Log Message: ----------- Correction d'un bug sur la projection d'un point dans un plan ; amm?\195?\169lioration d'un l'?\195?\169ditino de profile ; correction d'un bug dans l'?\195?\169dition de profile. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLib.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliAtomicCoordinatesTableModel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliSingleObjectEditorPanel.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLib.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLib.java 2008-09-26 09:28:40 UTC (rev 3988) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLib.java 2008-09-26 10:24:20 UTC (rev 3989) @@ -387,7 +387,7 @@ * @return LE point 3D sur le plan de projection. */ public static GISPoint projectOnPlane(GISPoint[] _plan, GISPoint _pt) { - // Teste si on a toute les donn\xE9es + // Teste si on a toutes les donn\xE9es if (_plan==null||_pt==null||_plan.length<3||_plan[0]==null||_plan[1]==null||_plan[2]==null) return null; // On nomme : a, b, c les trois points d\xE9finissant le plan @@ -417,7 +417,7 @@ double yw = zu*xv - xu*zv; double zw = xu*yv - yu*xv; // On calcul k qui est d\xE9fini tel que : vecteur(ip) = k * w - double k = ((xa+xi)*xw+(ya+yi)*yw+(za+zi)*zw)/(xw*xw+yw*yw+zw*zw); + double k = ((xa-xi)*xw+(ya-yi)*yw+(za-zi)*zw)/(xw*xw+yw*yw+zw*zw); // Calcul des coordonn\xE9es de p xp = xi + k*xw; yp = yi + k*yw; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliAtomicCoordinatesTableModel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliAtomicCoordinatesTableModel.java 2008-09-26 09:28:40 UTC (rev 3988) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliAtomicCoordinatesTableModel.java 2008-09-26 10:24:20 UTC (rev 3989) @@ -88,7 +88,7 @@ if (selectedAtomic_ == null) { isFerme_ = zone_.getGeometry(idx_) instanceof LinearRing; } - modeles_ = _useAttribute ? _zone.getAtomicAttributeSubModel(_idx) : null; + modeles_ = _useAttribute ? _zone.getAtomicAttributeSubModel(_idx) : new GISAttributeModel[0]; g_ = _zone.getCoordinateSequence(idx_); } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliSingleObjectEditorPanel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliSingleObjectEditorPanel.java 2008-09-26 09:28:40 UTC (rev 3988) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliSingleObjectEditorPanel.java 2008-09-26 10:24:20 UTC (rev 3989) @@ -59,6 +59,7 @@ import com.memoire.bu.BuLabel; import com.memoire.bu.BuPanel; import com.memoire.bu.BuScrollPane; +import com.memoire.bu.BuSplit2Pane; import com.memoire.fu.FuLog; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.CoordinateSequence; @@ -280,7 +281,7 @@ public String getColumnName(int _column) { switch (_column) { case 0: - return EbliLib.getS("curviligne"); + return EbliLib.getS(EbliLib.getS("Abscisse")); case 1: return model_.getColumnName(zCol_); default: @@ -310,6 +311,8 @@ // Axes du la courbe private EGAxeHorizontal axeX_; private EGAxeVertical axeY_; + // Vue de la courbe + EGCourbeSimple courbeVue_; // Model du tableau CtuluTable tableauVue_; @@ -322,20 +325,20 @@ grapheVue_.setSize(grapheVue_.getPreferredSize()); // Axe des X axeX_=new EGAxeHorizontal(false); - axeX_.setTitre("distance"); - axeX_.setUnite("m\xE8tre"); + axeX_.setTitre(EbliLib.getS("Abscisse curviligne")); + axeX_.setUnite(EbliLib.getS("m\xE8tre")); axeX_.setGraduations(true); grapheVue_.setXAxe(axeX_); // Axe des Y axeY_=new EGAxeVertical(); axeY_.setGraduations(true); - axeY_.setTitre("Z"); - axeY_.setUnite("m\xE8tre"); + axeY_.setTitre(model_.getColumnName(zCol_)); + axeY_.setUnite(EbliLib.getS("m\xE8tre")); // Calcule des x generateCoordX(); // La courbe EGCourbeModelProfile courbeModel=new EGCourbeModelProfile(this, ""); - EGCourbeSimple courbeVue_=new EGCourbeSimple(axeY_, courbeModel); + courbeVue_=new EGCourbeSimple(axeY_, courbeModel); courbeVue_.setAspectContour(Color.BLUE); grapheModel.addCourbe(courbeVue_, new CtuluCommandManager()); // Conteneur de graphe @@ -365,17 +368,15 @@ // Met le bon \xE9diteurs dans le tableau pour l'attribut z tableauVue_.getColumnModel().getColumn(1) .setCellEditor(model_.modeles_[zInd_].getAttribute().getEditor().createTableEditorComponent()); - // Ajout au panel + // Ajout au panel \\ BuScrollPane scrollPane = new BuScrollPane(tableauVue_); BuPanel left = new BuPanel(); left.setLayout(new BuBorderLayout()); scrollPane.setPreferredSize(new Dimension(130, 335)); left.add(buttons, BuBorderLayout.NORTH); left.add(scrollPane, BuBorderLayout.CENTER); - setLayout(new BuBorderLayout()); - add(left, BuBorderLayout.WEST); - add(pnD, BuBorderLayout.CENTER); - setPreferredSize(new Dimension(150, 250)); + BuSplit2Pane splitPane = new BuSplit2Pane(left, pnD, BuSplit2Pane.HORIZONTAL); + add(splitPane); } public int getNbValues() { @@ -487,6 +488,7 @@ idx_=_idx; zone_=_zone.getGeomData(); modeleSrc_=_zone; + zInd_ = -1; // Construction de la table des attributs globaux (globalAttr_) \\ setLayout(new BuBorderLayout()); if (_editAttribut) { @@ -536,21 +538,22 @@ found=model_.modeles_[k].getAttribute()==zAttr; k++; } - if (found) // forc\xE9ment vrai parce que zAttr est non null + if (found){ // forc\xE9ment vrai parce que zAttr est non null zInd_=--k; - // construction de zCol_ - zCol_=zInd_+3; // zInd_ + colonne index, x et y - // Gestionnaire d'onglet - tabbedPane_=new JTabbedPane(); - // Les onglets - tableRep_=new TableRepresentation(_editAttribut, _editVertexAttribut, _xyFormatter); - courbeRep_=new CourbeRepresentation(); - // Ajout - tabbedPane_.add(EbliLib.getS("Table"), tableRep_); - tabbedPane_.add(EbliLib.getS("Courbe"), courbeRep_); - add(tabbedPane_, BuBorderLayout.CENTER); + // construction de zCol_ + zCol_=zInd_+3; // zInd_ + colonne index, x et y + // Gestionnaire d'onglet + tabbedPane_=new JTabbedPane(); + // Les onglets + tableRep_=new TableRepresentation(_editAttribut, _editVertexAttribut, _xyFormatter); + courbeRep_=new CourbeRepresentation(); + // Ajout + tabbedPane_.add(EbliLib.getS("Table"), tableRep_); + tabbedPane_.add(EbliLib.getS("Courbe"), courbeRep_); + add(tabbedPane_, BuBorderLayout.CENTER); + } } - else { + if(zInd_ == -1) { model_=new EbliAtomicCoordinatesTableModel.Line(_xyFormatter, modeleSrc_.getGeomData(), idx_, null, _editVertexAttribut, modeleSrc_); tableRep_=new TableRepresentation(_editAttribut, _editVertexAttribut, _xyFormatter); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-09-29 10:25:26
|
Revision: 4003 http://fudaa.svn.sourceforge.net/fudaa/?rev=4003&view=rev Author: bmarchan Date: 2008-09-29 10:25:19 +0000 (Mon, 29 Sep 2008) Log Message: ----------- Suppression/ajout d'un point sur gros multipoint r?\195?\169vis?\195?\169. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java 2008-09-29 08:47:46 UTC (rev 4002) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java 2008-09-29 10:25:19 UTC (rev 4003) @@ -8,6 +8,7 @@ package org.fudaa.ctulu.gis; import gnu.trove.TIntArrayList; +import gnu.trove.TIntIntHashMap; import java.util.Arrays; @@ -191,25 +192,46 @@ return true; } - public void addAtomic(final int _ligneIdx, final int _idxBefore, final double _x, final double _y, + public void addAtomic(final int _idxGeom, final int _idxBefore, final double _x, final double _y, final CtuluCommandContainer _cmd) { if (!isGeomModifiable_) { return; } - Geometry geom = (Geometry)super.geometry_.getValueAt(_ligneIdx); + Geometry geom = (Geometry)super.geometry_.getValueAt(_idxGeom); final Coordinate[] oldcs = geom.getCoordinates(); final int initSize = oldcs.length; + TIntIntHashMap newIdxOldIdx=new TIntIntHashMap(initSize); + final Coordinate[] cs = new Coordinate[initSize + 1]; int idx = 0; for (int i = 0; i < initSize; i++) { + newIdxOldIdx.put(idx,i); // Pour les attributs cs[idx++] = (Coordinate)oldcs[i].clone(); if (i == _idxBefore) { cs[idx++] = new Coordinate(_x, _y, oldcs[i].z); } } + // setGeometry(_ligneIdx,geom, _cmd); + CtuluCommandComposite cmp=new CtuluCommandComposite(); geom = GISGeometryFactory.INSTANCE.createMultiPoint(cs); - setGeometry(_ligneIdx,geom, _cmd); + super.geometry_.setObject(_idxGeom, geom, cmp); + + for (int i = getNbAttributes() - 1; i >= 0; i--) { + // attribut atomic + if (getAttribute(i).isAtomicValue()) { + // dans ce cas on recupere le model contenant cet attribut + final GISAttributeModel m = getModelListener(i); + // on recupere le sous-model concerne par la modif de geometrie + final GISAttributeModel atomicModel = (GISAttributeModel) m.getObjectValueAt(_idxGeom); + // on le change + m.setObject(_idxGeom, atomicModel.createUpperModel(initSize+1, newIdxOldIdx), cmp); + } + } + + if (_cmd!=null) { + _cmd.addCmd(cmp.getSimplify()); + } } /** @@ -446,7 +468,8 @@ } if (r) { - super.geometry_.setObject(_idxGeom, newGeom, _cmd); + CtuluCommandComposite cmp=new CtuluCommandComposite(); + super.geometry_.setObject(_idxGeom, newGeom, cmp); // si des attributs atomics sont concerne if (idxToRemove != null && idxToRemove.size() > 0) { final int[] idx = idxToRemove.toNativeArray(); @@ -459,10 +482,13 @@ // on recupere le sous-model concerne par la modif de geometrie final GISAttributeModel atomicModel = (GISAttributeModel) m.getObjectValueAt(_idxGeom); // on le change - m.setObject(_idxGeom, atomicModel.createSubModel(idx), _cmd); + m.setObject(_idxGeom, atomicModel.createSubModel(idx), cmp); } } } + if (_cmd!=null) { + _cmd.addCmd(cmp.getSimplify()); + } } return r; } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java 2008-09-29 08:47:46 UTC (rev 4002) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java 2008-09-29 10:25:19 UTC (rev 4003) @@ -53,11 +53,11 @@ return editor_ == null ? EbliLib.getS("Edition impossible") : editor_.edit(this); } - /** - * Scinde en 2 une polyligne de sommet s\xE9lectionn\xE9. Les attributs sont copi\xE9s. - * @param _cmd La pile de commandes. - * @return true si le la polyligne a \xE9t\xE9 scind\xE9e. - */ +// /** +// * Scinde en 2 une polyligne de sommet s\xE9lectionn\xE9. Les attributs sont copi\xE9s. +// * @param _cmd La pile de commandes. +// * @return true si le la polyligne a \xE9t\xE9 scind\xE9e. +// */ // public boolean splitGeometry(final CtuluCommandContainer _cmd) { // if (isSelectionEmpty() || !isAtomicMode()) return false; // @@ -67,12 +67,12 @@ // return getModelePoly().splitGeometry(idxLine, idxSel, _cmd); // } - /** - * Joint 2 polylignes par leurs sommets d\xE9sign\xE9s. - * - * @param _cmd La pile de commandes. - * @return true si les polylignes ont \xE9t\xE9 jointes. - */ +// /** +// * Joint 2 polylignes par leurs sommets d\xE9sign\xE9s. +// * +// * @param _cmd La pile de commandes. +// * @return true si les polylignes ont \xE9t\xE9 jointes. +// */ // public boolean joinGeometries(final CtuluCommandContainer _cmd) { // if (isSelectionEmpty() || !isAtomicMode()) return false; // Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-09-29 08:47:46 UTC (rev 4002) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-09-29 10:25:19 UTC (rev 4003) @@ -403,7 +403,8 @@ } /** - * Ajoute un sommet X,Y \xE0 la g\xE9om\xE9trie donn\xE9e. Les valeurs des attributs sont interpol\xE9es \xE9ventuellement. + * Ajoute un sommet X,Y \xE0 la g\xE9om\xE9trie donn\xE9e.<p> + * <b>ATTENTION</b> : Les valeurs des attributs pour ce sommet sont d\xE9finies par d\xE9faut. * @param _idxGeom La g\xE9om\xE9trie modifi\xE9e. * @param _idxBefore Le sommet qui sera le pr\xE9cedent de celui ajout\xE9. * @param _x La coordonn\xE9e X du point. @@ -851,4 +852,8 @@ public boolean isGeometryReliee(int _idxGeom) { return false; } + + public final boolean isGeometryVisible(final int _idxLigne) { + return true; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2008-10-02 16:17:28
|
Revision: 4024 http://fudaa.svn.sourceforge.net/fudaa/?rev=4024&view=rev Author: emmanuel_martin Date: 2008-10-02 16:17:18 +0000 (Thu, 02 Oct 2008) Log Message: ----------- pr?\195?\169 commit sur l'ajout de l'etat des g?\195?\169om?\195?\169tries Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeString.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliAtomicCoordinatesTableModel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliSingleObjectEditorPanel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dTrace.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dCloud.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dConstraintLine.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dContour.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dDirectionLine.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLevel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dProfile.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dZone.java Added Paths: ----------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorStringRestricted.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2008-10-02 12:26:09 UTC (rev 4023) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2008-10-02 16:17:18 UTC (rev 4024) @@ -10,11 +10,12 @@ import java.util.ArrayList; import java.util.List; -import com.memoire.fu.FuLib; - import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.CtuluLibString; +import org.fudaa.ctulu.gui.CtuluValueEditorStringRestricted; +import com.memoire.fu.FuLib; + /** * Des constantes pour les attributs associables \xE0 des objets GIS. Les attributs constants sont en * principe des attributs programme (non construits par l'utilisateur). Dans ce cas, leur ID est @@ -27,8 +28,6 @@ /** Etat geom modifi\xE9. */ public final static String ATT_VAL_ETAT_MODI="MODI"; - /** Etat geom cr\xE9\xE9 */ - public final static String ATT_VAL_ETAT_CREE="CREE"; /** Etat geom origine */ public final static String ATT_VAL_ETAT_ORIG="ORIG"; @@ -97,8 +96,8 @@ return res; } - public static List getDefaults() { - final ArrayList l = new ArrayList(2); + public static List<GISAttribute> getDefaults() { + final ArrayList<GISAttribute> l = new ArrayList<GISAttribute>(2); l.add(BATHY); l.add(TITRE); l.add(NATURE); @@ -154,17 +153,19 @@ /** * Un attribut etat, global a la g\xE9om\xE9trie. */ - public final static GISAttributeString ETAT_GEOM = new GISAttributeString(CtuluLib.getS("Etat"), false) { + public final static GISAttributeString ETAT_GEOM=new GISAttributeString(new CtuluValueEditorStringRestricted(new String[]{ + ATT_VAL_ETAT_ORIG, ATT_VAL_ETAT_MODI}, new String[]{CtuluLib.getS("Origine"), CtuluLib.getS("Modifi\xE9")}), CtuluLib + .getS("Etat"), false) { public String getID() { return "ATTRIBUTE_ETAT_GEOM"; } public boolean isEditable() { - return false; + return true; } public Object getDefaultValue() { - return ATT_VAL_ETAT_CREE; + return ATT_VAL_ETAT_ORIG; } }; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeString.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeString.java 2008-10-02 12:26:09 UTC (rev 4023) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeString.java 2008-10-02 16:17:18 UTC (rev 4024) @@ -33,6 +33,9 @@ public GISAttributeString(final CtuluValueEditorI _edit,final String _name) { super(_edit, _name); } + public GISAttributeString(final CtuluValueEditorI _edit, final String _name, final boolean _atomic) { + super(_edit, _name, _atomic); + } public final Class getDataClass(){ return String.class; Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorStringRestricted.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorStringRestricted.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorStringRestricted.java 2008-10-02 16:17:18 UTC (rev 4024) @@ -0,0 +1,196 @@ +/* + * @creation 2 oct. 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.ctulu.gui; + +import java.awt.Component; +import java.util.Enumeration; +import java.util.EventObject; +import java.util.Iterator; +import java.util.Vector; + +import javax.swing.JComboBox; +import javax.swing.JComponent; +import javax.swing.JTable; +import javax.swing.event.CellEditorListener; +import javax.swing.event.ChangeEvent; +import javax.swing.table.TableCellEditor; + +import org.fudaa.ctulu.CtuluLibString; + +/** + * Cette classe permet de sp\xE9cifier un ensemble de valeur que peut prendre la + * chaine. Ainsi si on a un attribut ne pouvant prendre que 'Oui' et 'Non' comme + * valeur, l'editeur ne donnera le choix qu'entre ces deux l\xE0 lors de la + * modification. Les valeurs possibles ne peuvent \xEAtre que des string. + * + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class CtuluValueEditorStringRestricted implements CtuluValueEditorI { + + protected class TableCellEditorWithComboBox implements TableCellEditor { + + private JComboBox co_; + private Vector<CellEditorListener> listeners_; + + public TableCellEditorWithComboBox(JComboBox _co) { + if (_co==null) + throw new IllegalArgumentException("Parameter mustn't be null."); + co_=_co; + listeners_=new Vector<CellEditorListener>(); + } + + public Component getTableCellEditorComponent(JTable _table, Object _value, boolean _selected, int _row, int _column) { + return co_; + } + + public void cancelCellEditing() { + ChangeEvent evt=new ChangeEvent(this); + for (Enumeration<CellEditorListener> e=listeners_.elements(); e.hasMoreElements();) + ((CellEditorListener)e.nextElement()).editingCanceled(evt); + } + + public Object getCellEditorValue() { + return co_.getSelectedObjects(); + } + + public boolean isCellEditable(EventObject _evt) { + return true; + } + + public boolean shouldSelectCell(EventObject _evt) { + return true; + } + + public boolean stopCellEditing() { + ChangeEvent evt=new ChangeEvent(this); + for (Enumeration<CellEditorListener> e=listeners_.elements(); e.hasMoreElements();) + ((CellEditorListener)e.nextElement()).editingStopped(evt); + return false; + } + + public void addCellEditorListener(CellEditorListener _l) { + if (!listeners_.contains(_l)) + listeners_.addElement(_l); + } + + public void removeCellEditorListener(CellEditorListener _l) { + listeners_.removeElement(_l); + } + } + + private String[] values_; + private String[] rawValues_; + + /** + * The '_values' parameter can by null. In the case the '_rawValues' will be + * displayed. + * + * @param _rawValues + * Values use by the application + * @param _values + * Values display by the widget + */ + public CtuluValueEditorStringRestricted(String[] _rawValues, String[] _values) { + rawValues_ = _rawValues; + values_=_values; + if(values_!=null && rawValues_.length!=values_.length) + throw new IllegalArgumentException("rawValues and values don't have the same size."); + } + + public CtuluValueEditorStringRestricted(Iterable<String> _rawValues, Iterable<String> _values) { + Vector<String> tmpValues=new Vector<String>(); + // rawValues + Iterator<String> it=_rawValues.iterator(); + for (; it.hasNext();) + tmpValues.add(it.next()); + rawValues_=(String[])tmpValues.toArray(); + // values + if(_values !=null){ + it=_values.iterator(); + for (; it.hasNext();) + tmpValues.add(it.next()); + values_=(String[])tmpValues.toArray(); + } + } + + public Class<String> getDataClass() { + return String.class; + } + + public String getValidationMessage() { + return null; + } + + public boolean isValueValidFromComponent(final Component _comp) { + return isValid(((String)(((JComboBox)_comp).getSelectedItem())).trim()); + } + + public boolean isEmpty(final Component _c) { + final String txt=(String)((JComboBox)_c).getSelectedItem(); + return txt==null||txt.trim().length()==0; + } + + public boolean isEditable() { + return true; + } + + public boolean isValid(final String _s) { + return true; + } + + public Object getValue(final Component _comp) { + return getStringValue(_comp); + } + + public boolean isValid(final Object _o) { + return isValid(_o.toString()); + } + + public JComponent createCommonEditorComponent() { + return createEditorComponent(); + } + + public String[] getAllowedValues() { + return values_.clone(); + } + + public int getNbAllowedValues() { + return values_.length; + } + + public void setValue(final Object _s, final Component _comp) { + if (_s instanceof String){ + boolean found=false; + int i=-1; + while(!found && ++i<rawValues_.length) + found=rawValues_[i].equals(_s); + if(found) + ((JComboBox)_comp).setSelectedIndex(i); + } + } + + public String toString(final Object _o) { + return _o==null ? CtuluLibString.EMPTY_STRING:_o.toString(); + } + + public String getStringValue(final Component _comp) { + return rawValues_[((JComboBox)_comp).getSelectedIndex()]; + } + + public TableCellEditor createTableEditorComponent() { + return new TableCellEditorWithComboBox((JComboBox)createEditorComponent()); + } + + public JComponent createEditorComponent() { + if(values_!=null) + return new JComboBox(values_); + else + return new JComboBox(rawValues_); + } +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorStringRestricted.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliAtomicCoordinatesTableModel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliAtomicCoordinatesTableModel.java 2008-10-02 12:26:09 UTC (rev 4023) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliAtomicCoordinatesTableModel.java 2008-10-02 16:17:18 UTC (rev 4024) @@ -151,12 +151,13 @@ } } } + modelesNewValues_=null; } final CoordinateSequence newSeq = this.getNewCoordinateSequence(); if (newSeq != null) { zone_.setCoordinateSequence(idx_, newSeq, _cmp); } - + rowNewCoordinates_=null; } } @@ -169,6 +170,10 @@ GISZoneCollection zone_; EbliFormatterInterface xyFormatter_; + public boolean isModified(){ + return modelesNewValues_!=null||rowNewCoordinates_!=null; + } + public EbliAtomicCoordinatesTableModel(final EbliFormatterInterface _formatter, final GISZoneCollection _zone, final int[] _selectedAtomic) { zone_ = _zone; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliSingleObjectEditorPanel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliSingleObjectEditorPanel.java 2008-10-02 12:26:09 UTC (rev 4023) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliSingleObjectEditorPanel.java 2008-10-02 16:17:18 UTC (rev 4024) @@ -40,6 +40,7 @@ import org.fudaa.ctulu.CtuluListSelectionEvent; import org.fudaa.ctulu.CtuluListSelectionInterface; import org.fudaa.ctulu.CtuluListSelectionListener; +import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ctulu.gis.GISAttributeDouble; import org.fudaa.ctulu.gis.GISAttributeModel; import org.fudaa.ctulu.gis.GISCoordinateSequenceUnique; @@ -183,19 +184,39 @@ * Enregistre les modifications effectu\xE9es. */ public void apply() { + boolean modification=false; // true si une modification a \xE9t\xE9 faite // Cr\xE9ation d'une nouvelle commande final CtuluCommandComposite cmp=(cmd_==null ? null:new CtuluCommandComposite()); // Application des modifications des attributs globaux for (int i=globalAttr_.length-1; i>=0; i--) { final Object val=globalAttrEditor_[i].getValue(globalComp_[i]); + // Si une modificatin a \xE9t\xE9 faite, modification est mis \xE0 true, sauf si + // cette modification est faite sur ETAT_GEOM + modification = modification||(!val.equals(globalAttr_[i].getObjectValueAt(idx_))&&globalAttr_[i].getAttribute()!=GISAttributeConstants.ETAT_GEOM); globalAttr_[i].setObject(idx_, val, cmp); + } // Cas du tableau modifi\xE9 - if (isTableStat_) - model_.apply(cmp); + if (isTableStat_){ + if(model_.isModified()){ + modification = true; + model_.apply(cmp); + } + } // Cas du point unique modifi\xE9 - else if (zone_.isGeomModifiable()) + else if (zone_.isGeomModifiable()&&!zone_.getCoordinateSequence(idx_).equals(getNewCoordinate())){ + modification=true; zone_.setCoordinateSequence(idx_, getNewCoordinate(), cmp); + } + // Si une modification a \xE9t\xE9 faite, l'attribut 'Etat' de la g\xE9om\xE9trie passe \xE0 modifi\xE9 + if (modification) { + boolean found=false; + int i=-1; + while (!found&&++i<globalAttr_.length) + found=globalAttr_[i].getAttribute()==GISAttributeConstants.ETAT_GEOM; + if(found) + globalAttr_[i].setObject(idx_, GISAttributeConstants.ATT_VAL_ETAT_MODI, cmp); + } // Ajout de la nouvelle commande \xE0 cmd_ if (cmd_!=null) cmd_.addCmd(cmp.getSimplify()); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java 2008-10-02 12:26:09 UTC (rev 4023) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java 2008-10-02 16:17:18 UTC (rev 4024) @@ -15,6 +15,7 @@ import org.fudaa.ctulu.CtuluCommandContainer; import org.fudaa.ctulu.CtuluListSelectionInterface; import org.fudaa.ctulu.CtuluUI; +import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ebli.calque.ZCalqueLigneBrisee; import org.fudaa.ebli.calque.ZModeleLigneBrisee; import org.fudaa.ebli.calque.dessin.DeForme; @@ -52,7 +53,6 @@ private void addPoint(final int _ligneIdx, final int _idxBefore, final double _x, final double _y, final CtuluCommandContainer _cmd) { getModelePoly().addPoint(_ligneIdx, _idxBefore, _x, _y, _cmd); - } /** @@ -185,7 +185,15 @@ modele_.point(seg.e_, i, j); modele_.point(seg.o_, i, j-1); if (seg.distanceXY(ptToTest)<distanceReel) { - addPoint(i, j-1, ptToTest.x_, ptToTest.y_, _cmd); + // Modification de l'etat de la geometrie + boolean found=false; + int k=-1; + while (!found&&++k<modele_.getGeomData().getNbAttributes()) + found=modele_.getGeomData().getAttribute(k)==GISAttributeConstants.ETAT_GEOM; + if (found) + modele_.getGeomData().getDataModel(k).setObject(i, GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); + // Fin de la modification de l'etat de la geometrie + addPoint(i, k-1, ptToTest.x_, ptToTest.y_, _cmd); return true; } } @@ -193,6 +201,14 @@ modele_.point(seg.e_, i, 0); modele_.point(seg.o_, i, modele_.getNbPointForGeometry(i)-1); if (seg.distanceXY(ptToTest)<distanceReel) { + // Modification de l'etat de la geometrie + boolean found=false; + int j=-1; + while (!found&&++j<modele_.getGeomData().getNbAttributes()) + found=modele_.getGeomData().getAttribute(j)==GISAttributeConstants.ETAT_GEOM; + if (found) + modele_.getGeomData().getDataModel(j).setObject(i, GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); + // Fin de la modification de l'etat de la geometrie addPoint(i, modele_.getNbPointForGeometry(i)-1, ptToTest.x_, ptToTest.y_, _cmd); return true; } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dTrace.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dTrace.java 2008-10-02 12:26:09 UTC (rev 4023) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dTrace.java 2008-10-02 16:17:18 UTC (rev 4024) @@ -31,6 +31,7 @@ super(_listener); GISAttribute[] attrs=new GISAttribute[]{ GISAttributeConstants.TITRE, + GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.NATURE }; // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dCloud.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dCloud.java 2008-10-02 12:26:09 UTC (rev 4023) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dCloud.java 2008-10-02 16:17:18 UTC (rev 4024) @@ -39,6 +39,7 @@ // GISAttribute attTry=new GISAttributeString("Nature",false); GISAttribute[] attrs=new GISAttribute[]{ GISAttributeConstants.BATHY, + GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.TITRE, GISAttributeConstants.NATURE // attTry Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dConstraintLine.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dConstraintLine.java 2008-10-02 12:26:09 UTC (rev 4023) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dConstraintLine.java 2008-10-02 16:17:18 UTC (rev 4024) @@ -30,6 +30,7 @@ super(_listener); GISAttribute[] attrs=new GISAttribute[]{ GISAttributeConstants.BATHY, + GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.TITRE, GISAttributeConstants.NATURE }; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dContour.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dContour.java 2008-10-02 12:26:09 UTC (rev 4023) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dContour.java 2008-10-02 16:17:18 UTC (rev 4024) @@ -30,6 +30,7 @@ super(_listener); GISAttribute[] attrs=new GISAttribute[]{ GISAttributeConstants.TITRE, + GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.NATURE }; // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dDirectionLine.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dDirectionLine.java 2008-10-02 12:26:09 UTC (rev 4023) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dDirectionLine.java 2008-10-02 16:17:18 UTC (rev 4024) @@ -32,6 +32,7 @@ super(_listener); GISAttribute[] attrs=new GISAttribute[]{ GISAttributeConstants.BATHY, + GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.TITRE, GISAttributeConstants.NATURE }; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLevel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLevel.java 2008-10-02 12:26:09 UTC (rev 4023) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLevel.java 2008-10-02 16:17:18 UTC (rev 4024) @@ -35,6 +35,7 @@ GISAttributeDouble zglob=new GISAttributeDouble(MdlResource.MDL.getString("Z"),false); GISAttribute[] attrs=new GISAttribute[]{ zglob, + GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.TITRE, GISAttributeConstants.NATURE }; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dProfile.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dProfile.java 2008-10-02 12:26:09 UTC (rev 4023) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dProfile.java 2008-10-02 16:17:18 UTC (rev 4024) @@ -31,6 +31,7 @@ super(_listener); GISAttribute[] attrs=new GISAttribute[]{ GISAttributeConstants.BATHY, + GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.TITRE, GISAttributeConstants.NATURE }; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dZone.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dZone.java 2008-10-02 12:26:09 UTC (rev 4023) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dZone.java 2008-10-02 16:17:18 UTC (rev 4024) @@ -30,6 +30,7 @@ super(_listener); GISAttribute[] attrs=new GISAttribute[]{ GISAttributeConstants.TITRE, + GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.NATURE }; // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-10-03 13:09:02
|
Revision: 4028 http://fudaa.svn.sourceforge.net/fudaa/?rev=4028&view=rev Author: bmarchan Date: 2008-10-03 13:08:56 +0000 (Fri, 03 Oct 2008) Log Message: ----------- Introduction de l'attribut VISIBILITY de g?\195?\169om?\195?\169trie. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGeometryVisitor.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesAbstract.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleGeometry.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleLigneBrisee.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeDefault.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileLayerModelForCourbe.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dProfile.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModelGeometry.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigLineSingleModel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiProfilLayer.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiProfilModel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiProfileSplitter.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2008-10-03 13:06:52 UTC (rev 4027) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2008-10-03 13:08:56 UTC (rev 4028) @@ -170,6 +170,23 @@ }; /** + * Un attribut visibilit\xE9, global a la g\xE9om\xE9trie. + */ + public final static GISAttributeBoolean VISIBILITE = new GISAttributeBoolean(CtuluLib.getS("Visibilit\xE9")) { + public String getID() { + return "ATTRIBUTE_VISIBILITY"; + } + + public boolean isEditable() { + return true; + } + + public Object getDefaultValue() { + return Boolean.TRUE; + } + }; + + /** * Un attribut bathy, atomique. */ public final static GISAttributeDouble BATHY = new GISAttributeDouble(CtuluLib.getS("z"), true) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-10-03 13:06:52 UTC (rev 4027) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-10-03 13:08:56 UTC (rev 4028) @@ -37,7 +37,9 @@ /** La liste ordonn\xE9e des mod\xE8les d'attributs associ\xE9es \xE0 la collection. */ protected GISAttributeModelListener[] attr_; - /** La valeur de la nature pour pour cette collection si elle est impos\xE9e. null : non impos\xE9e. */ + /** L'acc\xE8s direct \xE0 l'indice de mod\xE8le depuis un type d'attribut */ + protected Map<GISAttributeInterface,Integer> att2Idx_=new HashMap<GISAttributeInterface, Integer>(); + /** La valeur de la nature pour cette collection si elle est impos\xE9e. null : non impos\xE9e. */ protected Map<GISAttributeInterface,Object> fixedAttributes_=new HashMap<GISAttributeInterface,Object>(); /** L'attribut utilis\xE9 pour Z */ protected GISAttributeDouble attributeIsZ_=null; @@ -46,6 +48,8 @@ private int idxAttZ_=-1; /** L'indice de l'attribut pris pour Z doit \xEAtre remis a jour */ protected boolean badIdxAttZ_=true; + /** La liste d'attribut a chang\xE9 : L'acc\xE8s direct \xE0 l'indice de mod\xE8le depuis un type doit \xEAtre remis \xE0 jour. */ + protected boolean attListHasChanged_=true; protected boolean isGeomModifiable_ = true; @@ -132,6 +136,7 @@ protected void initAttributes(final GISAttributeInterface[] _att) { if (_att != null) { badIdxAttZ_=true; + attListHasChanged_=true; attr_ = new GISAttributeModelListener[_att.length]; for (int i = _att.length - 1; i >= 0; i--) { attr_[i] = (GISAttributeModelListener) GISZoneAttributeFactory.createModel(this, _att[i]); @@ -146,6 +151,7 @@ protected void initAttributes(final GISAttributeModelListener[] _att) { badIdxAttZ_=true; + attListHasChanged_=true; attr_ = _att; } @@ -158,6 +164,7 @@ protected void initAttributes(final GISAttributeModelListener[] _att, final CtuluCommandContainer _cmd) { if (!Arrays.equals(_att, attr_)) { badIdxAttZ_=true; + attListHasChanged_=true; final GISAttributeModelListener[] old = attr_; attr_ = _att; fireAttributesChanged(null); @@ -323,13 +330,21 @@ public abstract Class getDataStoreClass(); public int getIndiceOf(final GISAttributeInterface _att) { - if (attr_ != null && _att != null) { - for (int i = attr_.length - 1; i >= 0; i--) { - if (_att.equals(getAttribute(i))) { - return i; - } - } + if (attListHasChanged_) { + att2Idx_.clear(); + for (int i=0; i<attr_.length; i++) + att2Idx_.put(attr_[i].getAttribute(),new Integer(i)); + attListHasChanged_=false; } + Integer idx=att2Idx_.get(_att); + if (idx!=null) return idx.intValue(); +// if (attr_ != null && _att != null) { +// for (int i = attr_.length - 1; i >= 0; i--) { +// if (_att.equals(getAttribute(i))) { +// return i; +// } +// } +// } return -1; } @@ -338,13 +353,15 @@ * @return le modele correspondant ou null si aucun. */ public GISAttributeModel getModel(final GISAttributeInterface _att) { - if (attr_ != null) { - for (int i = attr_.length - 1; i >= 0; i--) { - if (attr_[i].getAttribute() == _att || attr_[i].getAttribute().equals(_att)) { - return attr_[i]; - } - } - } + int idx=getIndiceOf(_att); + if (idx!=-1) return attr_[idx]; +// if (attr_ != null) { +// for (int i = attr_.length - 1; i >= 0; i--) { +// if (attr_[i].getAttribute() == _att || attr_[i].getAttribute().equals(_att)) { +// return attr_[i]; +// } +// } +// } return null; } @@ -551,6 +568,7 @@ return; } badIdxAttZ_=true; + attListHasChanged_=true; // on sauvegarde les anciens attributs final GISAttributeModelListener[] old = attr_; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGeometryVisitor.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGeometryVisitor.java 2008-10-03 13:06:52 UTC (rev 4027) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGeometryVisitor.java 2008-10-03 13:08:56 UTC (rev 4028) @@ -60,7 +60,7 @@ // } else if (_cq instanceof ZCalqueLigneBrisee && (mask_&GISLib.MASK_POLYLINE)!=0) { boolean bok=((ZCalqueLigneBrisee) _cq).modeleDonnees().getNombre() > 0; - return bok && ((ZCalqueLigneBrisee)_cq).getModele().getNbLigneBrisee()!=0; + return bok && ((ZCalqueLigneBrisee)_cq).getModele().getNbPolyligne()!=0; } else if (_cq instanceof ZCalqueLigneBrisee && (mask_&GISLib.MASK_POLYGONE)!=0) { boolean bok=((ZCalqueLigneBrisee)_cq).modeleDonnees().getNombre() > 0; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesAbstract.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesAbstract.java 2008-10-03 13:06:52 UTC (rev 4027) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesAbstract.java 2008-10-03 13:08:56 UTC (rev 4028) @@ -335,8 +335,6 @@ return "calque." + BSelecteurIconModel.getProperty(_i); } - public void inverseSelection() {} - /** * @return false */ @@ -367,10 +365,6 @@ return true; } - public boolean isSelectionEmpty() { - return false; - } - public boolean isSpecialSelectionAllowed() { return false; } @@ -494,8 +488,6 @@ return res; } - public void selectAll() {} - public void setForeground(final Color _v) { for (int i = getNbSet() - 1; i >= 0; i--) { final TraceIconModel ic = getIconModel(i); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java 2008-10-03 13:06:52 UTC (rev 4027) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java 2008-10-03 13:08:56 UTC (rev 4028) @@ -144,7 +144,7 @@ } - protected EbliListeSelectionMulti creeSelectionMutli() { + protected EbliListeSelectionMulti creeSelectionMulti() { return new EbliListeSelectionMulti(modeleDonnees().getNombre() / 2); } @@ -236,7 +236,7 @@ // Si la selection de modif est nulle, seule l'action de remplacement // est concernee. if (selectionMulti_ == null) { - selectionMulti_ = creeSelectionMutli(); + selectionMulti_ = creeSelectionMulti(); } boolean sentEvent = false; switch (_action) { @@ -347,8 +347,8 @@ final EbliListeSelectionMultiInterface multi = getLayerSelectionMulti(); int nb = 0; // 20 points par lignes - final TIntArrayList list = new TIntArrayList(modele_.getNbLigneBrisee() * 20); - final int nbLigne = modele_.getNbLigneBrisee(); + final TIntArrayList list = new TIntArrayList(modele_.getNombre() * 20); + final int nbLigne = modele_.getNombre(); for (int i = 0; i < nbLigne; i++) { final CtuluListSelectionInterface sel = multi.getSelection(i); if (sel != null) { @@ -430,7 +430,7 @@ if (isSelectionEmpty()) { return; } - for (int i = modele_.getNbLigneBrisee() - 1; i >= 0; i--) { + for (int i = modele_.getNombre() - 1; i >= 0; i--) { CtuluListSelection s = selectionMulti_.get(i); if (s == null) { s = new CtuluListSelection(); @@ -445,13 +445,23 @@ public void inverseSelection() { if (!isAtomicMode_) { - super.inverseSelection(); +// super.inverseSelection(); + if (isSelectionEmpty()) { + return; + } + initSelection(); + selection_.inverse(modeleDonnees().getNombre()); + for (int i=0; i<modele_.getNombre(); i++) { + if (!modele_.isGeometryVisible(i)) selection_.remove(i); + } + fireSelectionEvent(); return; } if (isSelectionEmpty()) { return; } - for (int i = modele_.getNbLigneBrisee() - 1; i >= 0; i--) { + for (int i = modele_.getNombre() - 1; i >= 0; i--) { + if (!modele_.isGeometryVisible(i)) continue; final CtuluListSelection s = selectionMulti_.get(i); if (s != null) { s.inverse(modele_.getNbPointForGeometry(i)); @@ -533,6 +543,9 @@ if (modele_.getNbPointForGeometry(i) <= 0) { continue; } + // La g\xE9ometrie n'est pas visible + if (!modele_.isGeometryVisible(i)) + continue; modele_.getDomaineForGeometry(i, bPoly); // Si la boite du polygone n'est pas dans la boite d'affichage on passe @@ -573,6 +586,10 @@ if (modele_.getNbPointForGeometry(i) <= 0) { continue; } + // La g\xE9ometrie n'est pas visible + if (!modele_.isGeometryVisible(i)) + continue; + modele_.getDomaineForGeometry(i, bPoly); // Si la boite du polygone n'est pas dans la boite d'affichage on passe if (bPoly.intersectionXY(clip) == null) { @@ -630,7 +647,7 @@ _g.setColor(cs); final TraceLigne tlSelection = _trace.getLigne(); final TraceIcon ic = _trace.getIcone(); - final int nb = Math.min(_containers.getMaxIndex(), modele_.getNbLigneBrisee() - 1); + final int nb = Math.min(_containers.getMaxIndex(), modele_.getNombre() - 1); final GrBoite bPoly = new GrBoite(); bPoly.e_ = new GrPoint(); @@ -671,13 +688,21 @@ if (!isVisible()) return; if (!isAtomicMode_) { - super.selectAll(); +// super.selectAll(); + initSelection(); + selection_.addInterval(0, modele_.getNombre() - 1); + for (int i=0; i<modele_.getNombre(); i++) { + if (!modele_.isGeometryVisible(i)) selection_.remove(i); + } + fireSelectionEvent(); return; } if (selectionMulti_ == null) { - selectionMulti_ = creeSelectionMutli(); + selectionMulti_ = creeSelectionMulti(); } - for (int i = modele_.getNbLigneBrisee() - 1; i >= 0; i--) { + for (int i = modele_.getNombre() - 1; i >= 0; i--) { + if (!modele_.isGeometryVisible(i)) continue; + CtuluListSelection s = selectionMulti_.get(i); if (s == null) { s = new CtuluListSelection(modele_.getNbPointForGeometry(i)); @@ -689,7 +714,7 @@ } public CtuluListSelection selection(final GrPoint _pt, final int _tolerance) { - if (modele_.getNbLigneBrisee() == 0) { + if (modele_.getNombre() == 0) { return null; } final GrBoite bClip = getDomaine(); @@ -704,7 +729,9 @@ // bClip = getClipReel(getGraphics()); final GrSegment poly = new GrSegment(new GrPoint(), new GrPoint()); final GrBoite bPoly = new GrBoite(new GrPoint(), new GrPoint()); - for (int i = modele_.getNbLigneBrisee() - 1; i >= 0; i--) { + for (int i = modele_.getNombre() - 1; i >= 0; i--) { + if (!modele_.isGeometryVisible(i)) continue; + modele_.getDomaineForGeometry(i, bPoly); if (bPoly.contientXY(_pt)||bPoly.distanceXY(_pt)<distanceReel) { for (int j=modele_.getNbPointForGeometry(i)-1; j>0; j--) { @@ -749,7 +776,9 @@ final CtuluListSelection r = creeSelection(); final GrPoint p = new GrPoint(); final GrBoite bPoly = new GrBoite(new GrPoint(), new GrPoint()); - for (int i = getModele().getNombre() - 1; i >= 0; i--) { + for (int i = modele_.getNombre() - 1; i >= 0; i--) { + if (!modele_.isGeometryVisible(i)) continue; + modele_.getDomaineForGeometry(i, bPoly); // si le poly est dans dans le poly de selection boolean selected = false; @@ -812,7 +841,9 @@ bClip = getClipReel(getGraphics()); final GrPoint p = new GrPoint(); final GrBoite btLigne = new GrBoite(); - for (int i = modele_.getNbLigneBrisee() - 1; i >= 0; i--) { + for (int i = modele_.getNombre() - 1; i >= 0; i--) { + if (!modele_.isGeometryVisible(i)) continue; + modele_.getDomaineForGeometry(i, btLigne); if (btLigne.contientXY(_pt) || btLigne.distanceXY(_pt) < distanceReel) { for (int j = modele_.getNbPointForGeometry(i) - 1; j >= 0; j--) { @@ -841,11 +872,13 @@ if (!polyEnv.intersects(domaine)) { return null; } - final EbliListeSelectionMulti r = creeSelectionMutli(); + final EbliListeSelectionMulti r = creeSelectionMulti(); final GrPoint p = new GrPoint(); final SIRtreePointInRing tester = new SIRtreePointInRing(_poly); final Coordinate c = new Coordinate(); - for (int i = modele_.getNbLigneBrisee() - 1; i >= 0; i--) { + for (int i = modele_.getNombre() - 1; i >= 0; i--) { + if (!modele_.isGeometryVisible(i)) continue; + CtuluListSelection l = null; final int nbPt = modele_.getNbPointForGeometry(i); for (int j = nbPt - 1; j >= 0; j--) { @@ -897,6 +930,7 @@ } public boolean setSelection(final int[] _idx) { + // Pas de controle sur la visibilit\xE9 ou non des objets d'indices pass\xE9s. if (!isAtomicMode_) { return super.setSelection(_idx); } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleGeometry.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleGeometry.java 2008-10-03 13:06:52 UTC (rev 4027) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleGeometry.java 2008-10-03 13:08:56 UTC (rev 4028) @@ -10,9 +10,6 @@ import org.fudaa.ebli.geometrie.GrBoite; import org.fudaa.ebli.geometrie.GrPoint; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.LineString; - /** * Un mod\xE8le contenant toutes sortes de GIS g\xE9om\xE9tries (non sp\xE9cialis\xE9). * @see org.fudaa.ebli.calque.ZCalqueGeometry @@ -59,4 +56,11 @@ * @return True : Si la g\xE9om\xE9trie est ferm\xE9e. */ public boolean isGeometryFermee(int _idxGeom); + + /** + * La g\xE9om\xE9trie est-elle visible. + * @param _idxGeom L'indice de la g\xE9om\xE9trie dans le mod\xE8le. + * @return True : Si la g\xE9om\xE9trie est visible. + */ + public boolean isGeometryVisible(int _idxGeom); } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleLigneBrisee.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleLigneBrisee.java 2008-10-03 13:06:52 UTC (rev 4027) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleLigneBrisee.java 2008-10-03 13:08:56 UTC (rev 4028) @@ -20,10 +20,10 @@ public interface ZModeleLigneBrisee extends ZModeleGeometry { /** - * Retourne le nombre de lignes brisees contenues dans le mod\xE8le. - * @return Le nombre de lignes bris\xE9es. + * Retourne le nombre de polylignes (ligne bris\xE9e ouvertes) contenues dans le mod\xE8le. + * @return Le nombre de poylignes. */ - int getNbLigneBrisee(); + int getNbPolyligne(); /** Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeDefault.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeDefault.java 2008-10-03 13:06:52 UTC (rev 4027) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeDefault.java 2008-10-03 13:08:56 UTC (rev 4028) @@ -29,6 +29,7 @@ import org.fudaa.ctulu.CtuluLibString; import org.fudaa.ctulu.CtuluListSelectionInterface; import org.fudaa.ctulu.collection.CtuluCollection; +import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ctulu.gis.GISAttributeInterface; import org.fudaa.ctulu.gis.GISAttributeModel; import org.fudaa.ctulu.gis.GISLib; @@ -277,7 +278,7 @@ return; } - final int nbLigneTotal = getNbLigneBrisee(); + final int nbLigneTotal = getNombre(); final ZCalqueLigneBrisee layer = (ZCalqueLigneBrisee) _layer; if (layer.isAtomicMode()) { final int nb = layer.getLayerSelectionMulti().getNbListSelected(); @@ -376,8 +377,8 @@ return geometries_; } - public final int getNbLigneBrisee() { - return getNombre(); + public final int getNbPolyligne() { + return getNombre()-getNbPolygone(); } public final int getNbPointForGeometry(final int _idxLigne) { @@ -423,6 +424,13 @@ return true; } + public final boolean isGeometryVisible(final int _idxGeom) { + int iattVisibility=geometries_.getIndiceOf(GISAttributeConstants.VISIBILITE); + if (iattVisibility==-1) return true; + + return (Boolean)geometries_.getValue(iattVisibility, _idxGeom); + } + public boolean isValuesTableAvailable() { return true; } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileLayerModelForCourbe.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileLayerModelForCourbe.java 2008-10-03 13:06:52 UTC (rev 4027) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileLayerModelForCourbe.java 2008-10-03 13:08:56 UTC (rev 4028) @@ -42,7 +42,7 @@ _target.ajuste(domaine_); } - public int getNbLigneBrisee() { + public int getNbPolyligne() { return res_ == null ? 0 : 1; } @@ -62,6 +62,10 @@ return true; } + public boolean isGeometryVisible(int _idxGeom) { + return true; + } + public boolean point(GrPoint _pt, int _ligneIdx, int _pointIdx) { if (res_ == null) return false; _pt.x_ = res_.getIntersect(_pointIdx).getX(); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dProfile.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dProfile.java 2008-10-03 13:06:52 UTC (rev 4027) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dProfile.java 2008-10-03 13:08:56 UTC (rev 4028) @@ -33,7 +33,8 @@ GISAttributeConstants.BATHY, GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.TITRE, - GISAttributeConstants.NATURE + GISAttributeConstants.NATURE, + GISAttributeConstants.VISIBILITE }; // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. getGeomData().setAttributes(attrs, null); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModelGeometry.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModelGeometry.java 2008-10-03 13:06:52 UTC (rev 4027) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModelGeometry.java 2008-10-03 13:08:56 UTC (rev 4028) @@ -85,6 +85,10 @@ return (g instanceof LineString && ((LineString)g).isClosed()); } + public boolean isGeometryVisible(int _idxGeom) { + return true; + } + public boolean point(GrPoint _pt, int _idxGeom, int _pointIdx) { final CoordinateSequence g=((GISCoordinateSequenceContainerInterface)geometries_.getGeometry(_idxGeom)).getCoordinateSequence(); _pt.x_ = g.getX(_pointIdx); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigLineSingleModel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigLineSingleModel.java 2008-10-03 13:06:52 UTC (rev 4027) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigLineSingleModel.java 2008-10-03 13:08:56 UTC (rev 4028) @@ -86,7 +86,7 @@ _target.e_.y_ = env_.getMaxY(); } - public int getNbLigneBrisee() { + public int getNbPolyligne() { return isClosed_ ? 0 : 1; } @@ -127,4 +127,8 @@ public boolean isGeometryReliee(int geom) { return true; } + + public boolean isGeometryVisible(int geom) { + return true; + } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiProfilLayer.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiProfilLayer.java 2008-10-03 13:06:52 UTC (rev 4027) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiProfilLayer.java 2008-10-03 13:08:56 UTC (rev 4028) @@ -232,7 +232,7 @@ } public void actionPerformed(final ActionEvent _e) { - if (getProfilModel().getNbLigneBrisee() == 0 || !getProfilModel().isProfilLineDefined()) { + if (getProfilModel().getNombre() == 0 || !getProfilModel().isProfilLineDefined()) { editor_.getUi().error(CtuluUIAbstract.getDefaultErrorTitle(), TrResource.getS("Aucun profil n'est d\xE9fini"), false); return; @@ -364,7 +364,7 @@ } if (!l.containsLegend(this)) { l.ajoute(this, buildPanel(null), getTitle()); - if (getModelePoly().getNbLigneBrisee() == 0) { + if (getModelePoly().getNombre() == 0) { l.setVisible(this, false); } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiProfilModel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiProfilModel.java 2008-10-03 13:06:52 UTC (rev 4027) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiProfilModel.java 2008-10-03 13:08:56 UTC (rev 4028) @@ -328,7 +328,7 @@ } final TIntArrayList list = new TIntArrayList(); final GISAttributeModel model = geometries_.getModel(type_); - for (int i = getNbLigneBrisee() - 1; i >= 0; i--) { + for (int i = getNombre() - 1; i >= 0; i--) { if (BERGE_ID.equals(model.getObjectValueAt(i)) && GISLib.intesects(((LineString) super.geometries_.getGeometry(i)), l)) { list.add(i); @@ -510,7 +510,7 @@ return false; } final GISAttributeModel model = geometries_.getModel(type_); - for (int i = getNbLigneBrisee() - 1; i >= 0; i--) { + for (int i = getNombre() - 1; i >= 0; i--) { if (BERGE_ID.equals(model.getObjectValueAt(i)) && GISLib.intesects(((LineString) super.geometries_.getGeometry(i)), l)) { return true; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiProfileSplitter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiProfileSplitter.java 2008-10-03 13:06:52 UTC (rev 4027) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiProfileSplitter.java 2008-10-03 13:08:56 UTC (rev 4028) @@ -410,11 +410,11 @@ private void computeBerges(final Zone _zones) { // il y a seulement un profil ou pas de zones: pas la peine - if (model_.getNbLigneBrisee() == 1 || _zones == null || _zones.getNumGeometries() == 0) { + if (model_.getNombre() == 1 || _zones == null || _zones.getNumGeometries() == 0) { return; } // final LineString l = getProfilLine(); - for (int i = model_.getNbLigneBrisee() - 1; i >= 0; i--) { + for (int i = model_.getNombre() - 1; i >= 0; i--) { // on parcourt uniquement les berges if (!model_.isProfile(i)) { computeBerge(_zones, model_.getLine(i)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-10-03 14:37:46
|
Revision: 4029 http://fudaa.svn.sourceforge.net/fudaa/?rev=4029&view=rev Author: bmarchan Date: 2008-10-03 14:37:38 +0000 (Fri, 03 Oct 2008) Log Message: ----------- Simplification de l'arborescence des modeles, ZModeleGeom et ZModeleGeometry sont fusionn?\195?\169s. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGISTreeModel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueGeometry.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleGeometry.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelClassLayerFilter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectionPanel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigGeomDataClosedLayerFilter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerFilter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerGroup.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/persistence/FSigLayerPointPersistence.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigWizardVariableModifier.java Removed Paths: ------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleGeom.java Property Changed: ---------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGISTreeModel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueGeometry.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleGeometry.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelClassLayerFilter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectionPanel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigGeomDataClosedLayerFilter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerFilter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerGroup.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/persistence/FSigLayerPointPersistence.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigWizardVariableModifier.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGISTreeModel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGISTreeModel.java 2008-10-03 13:08:56 UTC (rev 4028) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGISTreeModel.java 2008-10-03 14:37:38 UTC (rev 4029) @@ -1,6 +1,6 @@ /* * @creation 21 nov. 06 - * @modification $Date: 2007-05-04 13:49:46 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail de...@fu... @@ -50,7 +50,7 @@ * Ce mod\xE8le est automatiquement mis a jour si une instance de l'arbre des calque lui est fourni. * * @author Fred Deniger, Bertrand Marchand - * @version $Id: CalqueFindCourbeTreeModel.java,v 1.5 2007-05-04 13:49:46 deniger Exp $ + * @version $Id$ */ public class CalqueGISTreeModel extends DefaultTreeModel implements Observer { @@ -229,7 +229,7 @@ */ public void fillWithGeometries(LayerNode _nd, final List<Geometry> _dest) { if (_nd.idxGeom_ >= 0) { - final ZModeleGeom md=(ZModeleGeom)((ZCalqueAffichageDonneesAbstract)_nd.getUserObject()).modeleDonnees(); + final ZModeleGeometry md=(ZModeleGeometry)((ZCalqueAffichageDonneesAbstract)_nd.getUserObject()).modeleDonnees(); _dest.add(md.getGeomData().getGeometry(_nd.idxGeom_)); } else if (((BCalque) _nd.getUserObject()).isGroupeCalque()) { final BCalque[] cqs = ((BCalque) _nd.getUserObject()).getTousCalques(); @@ -247,7 +247,7 @@ private void fillWithLayerGeometries(final List<Geometry> _dest, final BCalque _cq) { if (_cq instanceof ZCalqueAffichageDonneesAbstract) { - final GISZoneCollection collec = ((ZModeleGeom)((ZCalqueAffichageDonneesAbstract)_cq).modeleDonnees()).getGeomData(); + final GISZoneCollection collec = ((ZModeleGeometry)((ZCalqueAffichageDonneesAbstract)_cq).modeleDonnees()).getGeomData(); final GISVisitorGeometryCollector visitor = new GISVisitorGeometryCollector(finder_.getMask()); collec.accept(visitor); _dest.addAll(visitor.getGeometries()); @@ -273,7 +273,7 @@ } void addGeometries(final LayerNode _parent, final ZCalqueAffichageDonneesAbstract _cq) { - final GISZoneCollection collec = ((ZModeleGeom)_cq.modeleDonnees()).getGeomData(); + final GISZoneCollection collec = ((ZModeleGeometry)_cq.modeleDonnees()).getGeomData(); final GISAttributeModelObjectInterface nameAtt = (GISAttributeModelObjectInterface) collec.getModel(GISAttributeConstants.TITRE); final int nb = collec.getNumGeometries(); for (int i = 0; i < nb; i++) { Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueGISTreeModel.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueGeometry.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueGeometry.java 2008-10-03 13:08:56 UTC (rev 4028) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueGeometry.java 2008-10-03 14:37:38 UTC (rev 4029) @@ -1,6 +1,6 @@ /* * @creation 31 mars 2005 - * @modification $Date: 2008-04-01 17:05:16 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail de...@fu... @@ -63,13 +63,13 @@ * {@link ZModeleGeometry}. * * @author Bertrand Marchand - * @version $Id: ZCalqueMultiPoint.java,v 1.1.2.2 2008-04-01 17:05:16 bmarchan Exp $ + * @version $Id$ */ public class ZCalqueGeometry extends ZCalqueAffichageDonneesLineAbstract { /** * @author Fred Deniger - * @version $Id: ZCalqueMultiPoint.java,v 1.1.2.2 2008-04-01 17:05:16 bmarchan Exp $ + * @version $Id$ */ private class VariableNonAtomicFindExpression extends CalqueFindExpression { @@ -81,7 +81,7 @@ public void initialiseExpr(final CtuluExpr _expr) { super.initialiseExpr(_expr); - final GISZoneCollection coll = ((ZModeleGeom) super.data_).getGeomData(); + final GISZoneCollection coll = ((ZModeleGeometry) super.data_).getGeomData(); final int nb = coll.getNbAttributes(); if (nb > 0) { if (varAtt_ == null) { @@ -102,7 +102,7 @@ public void majVariable(final int _idx, final Variable[] _varToUpdate) { super.majVariable(_idx, _varToUpdate); if (varAtt_ != null && !CtuluLibArray.isEmpty(_varToUpdate)) { - final GISZoneCollection coll = ((ZModeleGeom) super.data_).getGeomData(); + final GISZoneCollection coll = ((ZModeleGeometry) super.data_).getGeomData(); for (int i = _varToUpdate.length - 1; i >= 0; i--) { if (varAtt_.containsKey(_varToUpdate[i])) { _varToUpdate[i].setValue(CtuluLib.getDouble(((Number) coll.getDataModel(varAtt_.get(_varToUpdate[i])) Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueGeometry.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Deleted: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleGeom.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleGeom.java 2008-10-03 13:08:56 UTC (rev 4028) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleGeom.java 2008-10-03 14:37:38 UTC (rev 4029) @@ -1,30 +0,0 @@ -/* - * @creation 25 mai 2005 - * @modification $Date: 2008-01-24 10:18:59 $ - * @license GNU General Public License 2 - * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne - * @mail de...@fu... - */ -package org.fudaa.ebli.calque; - -import org.fudaa.ctulu.gis.GISZoneCollection; - -/** - * Une interface mod\xE8le de donn\xE9es comportant des objets de type GIS. Ces objets sont exportables. - * - * @author Fred Deniger - * @version $Id: ZModeleGeom.java,v 1.2.8.1 2008-01-24 10:18:59 bmarchan Exp $ - */ -public interface ZModeleGeom extends ZModeleDonnees { - - /** - * Retourne la g\xE9ometrie GIS. - * @return la geometrie - */ - GISZoneCollection getGeomData(); - - /** - * Prepare l'exportation des donn\xE9es. - */ - void prepareExport(); -} Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleGeometry.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleGeometry.java 2008-10-03 13:08:56 UTC (rev 4028) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleGeometry.java 2008-10-03 14:37:38 UTC (rev 4029) @@ -1,12 +1,13 @@ /* * @creation 31 mars 2005 - * @modification $Date: 2008-03-26 16:46:43 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail de...@fu... */ package org.fudaa.ebli.calque; +import org.fudaa.ctulu.gis.GISZoneCollection; import org.fudaa.ebli.geometrie.GrBoite; import org.fudaa.ebli.geometrie.GrPoint; @@ -14,14 +15,26 @@ * Un mod\xE8le contenant toutes sortes de GIS g\xE9om\xE9tries (non sp\xE9cialis\xE9). * @see org.fudaa.ebli.calque.ZCalqueGeometry * @author Bertrand Marchand - * @version $Id: ZModeleMultiPoint.java,v 1.1.2.1 2008-03-26 16:46:43 bmarchan Exp $ + * @version $Id$ */ -public interface ZModeleGeometry extends ZModeleGeom{ +public interface ZModeleGeometry extends ZModeleDonnees { /** + * Retourne la collection qui associe les g\xE9om\xE9tries du mod\xE8le \xE0 des atrributs. + * @return la collection. + */ + GISZoneCollection getGeomData(); + + /** + * Prepare l'exportation des donn\xE9es, en particulier le Z des g\xE9om\xE9tries est rempli depuis + * l'attribut Z. + */ + void prepareExport(); + + /** * Retourne le nombre de points de la g\xE9om\xE9trie d'indice donn\xE9. * @param _idxGeom l'indice de la g\xE9om\xE9trie - * @return le nombre de point pour cette frontiere + * @return le nombre de point pour cette g\xE9om\xE9trie */ int getNbPointForGeometry(int _idxGeom); Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleGeometry.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java 2008-10-03 13:08:56 UTC (rev 4028) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java 2008-10-03 14:37:38 UTC (rev 4029) @@ -1,6 +1,6 @@ /* * @creation 1 avr. 2005 - * @modification $Date: 2008-05-13 12:10:24 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail de...@fu... @@ -39,7 +39,7 @@ import org.fudaa.ebli.calque.ZCalqueClickInteraction; import org.fudaa.ebli.calque.ZCalqueClikInteractionListener; import org.fudaa.ebli.calque.ZEbliCalquesPanel; -import org.fudaa.ebli.calque.ZModeleGeom; +import org.fudaa.ebli.calque.ZModeleGeometry; import org.fudaa.ebli.calque.ZScene; import org.fudaa.ebli.calque.dessin.DeForme; import org.fudaa.ebli.commun.EbliActionInterface; @@ -62,7 +62,7 @@ * objets manipul\xE9s, met \xE0 jour le panneau des outils, contient les actions possibles, etc. * * @author Fred Deniger - * @version $Id: ZEditorDefault.java,v 1.20.6.5 2008-05-13 12:10:24 bmarchan Exp $ + * @version $Id$ */ public class ZEditorDefault implements ZCalqueEditionInteractionTargetI, ZEditorInterface, PropertyChangeListener, ZCalqueDeplacementTargetInterface { @@ -794,7 +794,7 @@ if (!(cq instanceof ZCalqueAffichageDonnees) || ((ZCalqueAffichageDonnees) cq).isSelectionEmpty()) { return; } - if (!(((ZCalqueAffichageDonnees) cq).modeleDonnees() instanceof ZModeleGeom)) { + if (!(((ZCalqueAffichageDonnees) cq).modeleDonnees() instanceof ZModeleGeometry)) { return; } final ZCalqueAffichageDonnees cqDonnees = (ZCalqueAffichageDonnees) cq; @@ -817,7 +817,7 @@ if (idxGeom < 0) { return; } - final EbliSingleGeomVisuPanel ed = new EbliSingleGeomVisuPanel(((ZModeleGeom) cqDonnees.modeleDonnees()) + final EbliSingleGeomVisuPanel ed = new EbliSingleGeomVisuPanel(((ZModeleGeometry) cqDonnees.modeleDonnees()) .getGeomData(), idxGeom, idxVertex, getXYFormatter()); ed.afficheModale(getFrame(), cqDonnees.getTitle()); Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelClassLayerFilter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelClassLayerFilter.java 2008-10-03 13:08:56 UTC (rev 4028) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelClassLayerFilter.java 2008-10-03 14:37:38 UTC (rev 4029) @@ -1,6 +1,6 @@ /* * @creation 26 mai 2005 - * @modification $Date: 2006-07-13 13:35:47 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail de...@fu... @@ -18,11 +18,11 @@ import org.fudaa.ebli.calque.BCalqueVisitor; import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; import org.fudaa.ebli.calque.ZModeleDonnees; -import org.fudaa.ebli.calque.ZModeleGeom; +import org.fudaa.ebli.calque.ZModeleGeometry; /** * @author Fred Deniger - * @version $Id: ZModelClassLayerFilter.java,v 1.3 2006-07-13 13:35:47 deniger Exp $ + * @version $Id$ */ public class ZModelClassLayerFilter implements BCalqueVisitor { @@ -51,14 +51,14 @@ */ public void fillArray(final GISZoneCollection[] _dest){ for (int i = res_.size() - 1; i >= 0; i--) { - _dest[i] = ((ZModeleGeom) (((ZCalqueAffichageDonneesInterface) res_.get(i)).modeleDonnees())) + _dest[i] = ((ZModeleGeometry) (((ZCalqueAffichageDonneesInterface) res_.get(i)).modeleDonnees())) .getGeomData(); } } public void fillArrayModel(final GISDataModel[] _dest){ for (int i = res_.size() - 1; i >= 0; i--) { - _dest[i] = new GISDataModelZoneAdapter(((ZModeleGeom) (((ZCalqueAffichageDonneesInterface) res_ + _dest[i] = new GISDataModelZoneAdapter(((ZModeleGeometry) (((ZCalqueAffichageDonneesInterface) res_ .get(i)).modeleDonnees())).getGeomData(), null); } } @@ -66,8 +66,8 @@ public boolean visit(final BCalque _cq){ if (!res_.contains(_cq) && _cq instanceof ZCalqueAffichageDonneesInterface) { final ZModeleDonnees data = ((ZCalqueAffichageDonneesInterface) _cq).modeleDonnees(); - if (data instanceof ZModeleGeom - && model_.isAssignableFrom(((ZModeleGeom) data).getGeomData().getClass())) { + if (data instanceof ZModeleGeometry + && model_.isAssignableFrom(((ZModeleGeometry) data).getGeomData().getClass())) { res_.add(_cq); } } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelClassLayerFilter.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleEditable.java 2008-10-03 13:08:56 UTC (rev 4028) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleEditable.java 2008-10-03 14:37:38 UTC (rev 4029) @@ -1,6 +1,6 @@ /* * @creation 15 avr. 2005 - * @modification $Date: 2006-04-12 15:28:02 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail de...@fu... @@ -11,14 +11,14 @@ import org.fudaa.ctulu.CtuluAnalyze; -import org.fudaa.ebli.calque.ZModeleGeom; +import org.fudaa.ebli.calque.ZModeleGeometry ; /** * @author Fred Deniger - * @version $Id: ZModeleEditable.java,v 1.3 2006-04-12 15:28:02 deniger Exp $ + * @version $Id$ */ -public interface ZModeleEditable extends ZModeleGeom{ +public interface ZModeleEditable extends ZModeleGeometry { /** Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleEditable.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java 2008-10-03 13:08:56 UTC (rev 4028) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java 2008-10-03 14:37:38 UTC (rev 4029) @@ -1,6 +1,6 @@ /* * @creation 4 avr. 2005 - * @modification $Date: 2007-04-16 16:35:08 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail de...@fu... @@ -40,13 +40,13 @@ /** * @author Fred Deniger - * @version $Id: ZModelePointEditable.java,v 1.17 2007-04-16 16:35:08 deniger Exp $ + * @version $Id$ */ public class ZModelePointEditable implements ZModelePointEditableInterface { /** * @author Fred Deniger - * @version $Id: ZModelePointEditable.java,v 1.17 2007-04-16 16:35:08 deniger Exp $ + * @version $Id$ */ public class PointTableModel extends AbstractTableModel { @@ -264,6 +264,38 @@ } public Object getObject(final int _ind) { - return null; + return pts_ == null ? null : pts_.getGeometry(_ind); } + + public void getDomaineForGeometry(int _idxGeom, GrBoite _target) { + _target.o_.x_=getX(_idxGeom); + _target.o_.y_=getY(_idxGeom); + _target.e_.x_=_target.o_.x_; + _target.e_.y_=_target.o_.y_; + } + + public int getNbPointForGeometry(int _idxGeom) { + return 1; + } + + public boolean isGeometryFermee(int _idxGeom) { + return false; + } + + public boolean isGeometryReliee(int _idxGeom) { + return false; + } + + public boolean isGeometryVisible(int _idxGeom) { + int iattVisibility=pts_.getIndiceOf(GISAttributeConstants.VISIBILITE); + if (iattVisibility==-1) return true; + + return (Boolean)pts_.getValue(iattVisibility, _idxGeom); + } + + public boolean point(GrPoint _pt, int _idxGeom, int _pointIdx) { + _pt.x_=getX(_idxGeom); + _pt.y_=getY(_idxGeom); + return true; + } } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectionPanel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectionPanel.java 2008-10-03 13:08:56 UTC (rev 4028) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectionPanel.java 2008-10-03 14:37:38 UTC (rev 4029) @@ -1,6 +1,6 @@ /* * @creation 8 sept. 06 - * @modification $Date: 2008/05/13 12:10:21 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail de...@fu... @@ -28,7 +28,7 @@ import org.fudaa.ebli.calque.ZCalqueAffichageDonneesAbstract; import org.fudaa.ebli.calque.ZCalqueGeometry; import org.fudaa.ebli.calque.ZEbliCalquesPanel; -import org.fudaa.ebli.calque.ZModeleGeom; +import org.fudaa.ebli.calque.ZModeleGeometry; import org.fudaa.ebli.geometrie.GrBoite; import org.fudaa.ebli.trace.TraceIcon; import org.fudaa.ebli.trace.TraceIconModel; @@ -48,7 +48,7 @@ /** * Un panneau de saisie des g\xE9om\xE9tries supports de projection suivant Z. * @author Bertrand Marchand - * @version $Id: MdlProjectImportPanel.java,v 1.1.2.1 2008/05/13 12:10:21 bmarchan Exp $ + * @version $Id$ */ public class MdlProjectionPanel extends CtuluDialogPanel { @@ -92,7 +92,7 @@ for (int i=0; i<selpaths.length; i++) { final CalqueGISTreeModel.LayerNode node=(CalqueGISTreeModel.LayerNode)selpaths[i].getLastPathComponent(); final ZCalqueAffichageDonneesAbstract cq = (ZCalqueAffichageDonneesAbstract) node.getUserObject(); - GISZoneCollection col=((ZModeleGeom)cq.modeleDonnees()).getGeomData(); + GISZoneCollection col=((ZModeleGeometry)cq.modeleDonnees()).getGeomData(); // Pour le transport du Z. col.initZCoordinate(node.getIdxGeom()); geoms[i]=col.getGeometry(node.getIdxGeom()); Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectionPanel.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-10-03 13:08:56 UTC (rev 4028) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-10-03 14:37:38 UTC (rev 4029) @@ -1,6 +1,6 @@ /* * @creation 25 avr. 08 - * @modification $Date: 2008-05-13 12:10:19 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail fud...@li... @@ -29,7 +29,7 @@ import org.fudaa.ctulu.interpolation.bilinear.InterpolatorBilinear; import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; import org.fudaa.ebli.calque.ZModeleDonnees; -import org.fudaa.ebli.calque.ZModeleGeom; +import org.fudaa.ebli.calque.ZModeleGeometry; import org.fudaa.ebli.calque.ZScene; import org.fudaa.ebli.calque.edition.ZSceneEditor; import org.fudaa.fudaa.commun.FudaaLib; @@ -44,7 +44,7 @@ /** * L'\xE9diteur effectuant les traitements sur la scene sp\xE9cifiques au modeleur. * @author Bertrand Marchand - * @version $Id: MdlSceneEditor.java,v 1.1.2.1 2008-05-13 12:10:19 bmarchan Exp $ + * @version $Id$ */ public class MdlSceneEditor extends ZSceneEditor { // Pour l'affichage des boites de dialogue. @@ -115,7 +115,7 @@ * D\xE9place les g\xE9om\xE9tries s\xE9lectionn\xE9es dans le calque cible. */ public void moveInLayerSelectedGeometries() { - ZModeleGeom mdldest=(ZModeleGeom)((ZCalqueAffichageDonneesInterface)getScene().getCalqueActif()).modeleDonnees(); + ZModeleGeometry mdldest=(ZModeleGeometry)((ZCalqueAffichageDonneesInterface)getScene().getCalqueActif()).modeleDonnees(); GISZoneCollection coldest=mdldest.getGeomData(); int[] idxGeom=getScene().getLayerSelection().getSelectedIndex(); @@ -141,7 +141,7 @@ // Les attributs Object[] datadest=new Object[coldest.getNbAttributes()]; - GISZoneCollection colsrc=((ZModeleGeom)getScene().getLayerForId(idxGeom[i]).modeleDonnees()).getGeomData(); + GISZoneCollection colsrc=((ZModeleGeometry)getScene().getLayerForId(idxGeom[i]).modeleDonnees()).getGeomData(); for (int iatt=0; iatt<datadest.length; iatt++) { int idxAtt=colsrc.getIndiceOf(coldest.getAttribute(iatt)); if (idxAtt!=-1) datadest[iatt]=colsrc.getValue(idxAtt,getScene().sceneId2LayerId(idxGeom[i])); @@ -307,7 +307,7 @@ for (int i=0; i<idxGeom.length; i++) { Object vals=targetGeoms.getValue(0,i); - GISZoneCollection colTmp=((ZModeleGeom)getScene().getLayerForId(idxGeom[i]).modeleDonnees()).getGeomData(); + GISZoneCollection colTmp=((ZModeleGeometry)getScene().getLayerForId(idxGeom[i]).modeleDonnees()).getGeomData(); if (col!=colTmp) { col=colTmp; zatt=col.getIndiceOf(col.getAttributeIsZ()); Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigGeomDataClosedLayerFilter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigGeomDataClosedLayerFilter.java 2008-10-03 13:08:56 UTC (rev 4028) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigGeomDataClosedLayerFilter.java 2008-10-03 14:37:38 UTC (rev 4029) @@ -1,6 +1,6 @@ /* * @creation 26 mai 2005 - * @modification $Date: 2007-05-04 14:00:26 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail fud...@li... @@ -25,11 +25,11 @@ import org.fudaa.ebli.calque.BCalque; import org.fudaa.ebli.calque.BCalqueVisitor; import org.fudaa.ebli.calque.ZCalqueLigneBrisee; -import org.fudaa.ebli.calque.ZModeleGeom; +import org.fudaa.ebli.calque.ZModeleGeometry; /** * @author Fred Deniger - * @version $Id: FSigGeomDataClosedLayerFilter.java,v 1.8 2007-05-04 14:00:26 deniger Exp $ + * @version $Id$ */ public class FSigGeomDataClosedLayerFilter implements BCalqueVisitor { @@ -125,7 +125,7 @@ } if (_cq instanceof ZCalqueLigneBrisee) { counter_.init(); - final ZModeleGeom geom = ((ZCalqueLigneBrisee) _cq).getModele(); + final ZModeleGeometry geom = ((ZCalqueLigneBrisee) _cq).getModele(); geom.getGeomData().accept(counter_); nbPointTotal_ += counter_.nbPoint_; if (counter_.nbPolygones_ > 0) { Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigGeomDataClosedLayerFilter.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java 2008-10-03 13:08:56 UTC (rev 4028) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java 2008-10-03 14:37:38 UTC (rev 4029) @@ -1,6 +1,6 @@ /* * @creation 5 avr. 2005 - * @modification $Date: 2008-05-13 12:11:01 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail fud...@li... @@ -45,7 +45,7 @@ import org.fudaa.ebli.calque.ZCalqueAffichageDonnees; import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; import org.fudaa.ebli.calque.ZEbliCalquesPanel; -import org.fudaa.ebli.calque.ZModeleGeom; +import org.fudaa.ebli.calque.ZModeleGeometry; import org.fudaa.ebli.calque.edition.ZCalqueEditable; import org.fudaa.ebli.calque.edition.ZCalqueEditionGroup; import org.fudaa.ebli.calque.edition.ZCalqueLigneBriseeEditable; @@ -60,7 +60,7 @@ /** * @author Fred Deniger - * @version $Id: FSigEditor.java,v 1.7.4.6 2008-05-13 12:11:01 bmarchan Exp $ + * @version $Id$ */ public class FSigEditor extends ZEditorDefault implements GISZoneListener { @@ -267,7 +267,7 @@ public void updateStateBeforeShow() { final BCalque cq = FSigEditor.this.getPanel().getArbreCalqueModel().getSelectedCalque(); super.setEnabled((cq instanceof ZCalqueAffichageDonnees) && (!((ZCalqueAffichageDonnees) cq).isSelectionEmpty()) - && ((((ZCalqueAffichageDonnees) cq).modeleDonnees() instanceof ZModeleGeom))); + && ((((ZCalqueAffichageDonnees) cq).modeleDonnees() instanceof ZModeleGeometry))); } public String getEnableCondition() { Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerFilter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerFilter.java 2008-10-03 13:08:56 UTC (rev 4028) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerFilter.java 2008-10-03 14:37:38 UTC (rev 4029) @@ -1,6 +1,6 @@ /* * @creation 10 juin 2005 - * @modification $Date: 2007-04-30 14:22:39 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail fud...@li... @@ -25,12 +25,12 @@ import org.fudaa.ebli.calque.BCalque; import org.fudaa.ebli.calque.BCalqueVisitor; import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; -import org.fudaa.ebli.calque.ZModeleGeom; +import org.fudaa.ebli.calque.ZModeleGeometry; /** * Un filtre sur les calques a exporter. Les calques a exporter peuvent \xEAtre uniquement les calques visibles. * @author Fred Deniger - * @version $Id: FSigLayerFilter.java,v 1.4 2007-04-30 14:22:39 deniger Exp $ + * @version $Id$ */ public class FSigLayerFilter implements BCalqueVisitor { @@ -68,7 +68,7 @@ } final GISZoneCollection getCollect(final ZCalqueAffichageDonneesInterface _o) { - final GISZoneCollection geomData = ((ZModeleGeom) _o.modeleDonnees()).getGeomData(); + final GISZoneCollection geomData = ((ZModeleGeometry) _o.modeleDonnees()).getGeomData(); geomData.prepareExport(); return geomData; } @@ -90,9 +90,9 @@ if (bonlyVisible_ && !_cq.isVisible()) return true; if (!cqs_.contains(_cq) && _cq instanceof ZCalqueAffichageDonneesInterface - && ((ZCalqueAffichageDonneesInterface) _cq).modeleDonnees() instanceof ZModeleGeom) { + && ((ZCalqueAffichageDonneesInterface) _cq).modeleDonnees() instanceof ZModeleGeometry) { cqs_.add(_cq); - final ZModeleGeom geom = (ZModeleGeom) ((ZCalqueAffichageDonneesInterface) _cq).modeleDonnees(); + final ZModeleGeometry geom = (ZModeleGeometry) ((ZCalqueAffichageDonneesInterface) _cq).modeleDonnees(); if (geom.getGeomData().getDataStoreClass().equals(Point.class)) { pointCq_.add(_cq); } else if (LineString.class.isAssignableFrom(geom.getGeomData().getDataStoreClass())) { Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerFilter.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerGroup.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerGroup.java 2008-10-03 13:08:56 UTC (rev 4028) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerGroup.java 2008-10-03 14:37:38 UTC (rev 4029) @@ -1,6 +1,6 @@ /* * @creation 18 mai 2005 - * @modification $Date: 2008-01-17 11:38:59 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail de...@fu... @@ -37,7 +37,7 @@ import org.fudaa.ebli.calque.ZCalqueAffichageDonnees; import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; import org.fudaa.ebli.calque.ZCalqueLigneBrisee; -import org.fudaa.ebli.calque.ZModeleGeom; +import org.fudaa.ebli.calque.ZModeleGeometry; import org.fudaa.ebli.calque.edition.ZCalqueEditionGroup; import org.fudaa.ebli.calque.edition.ZCalqueLigneBriseeEditable; import org.fudaa.ebli.calque.edition.ZCalquePointEditable; @@ -55,13 +55,13 @@ * avec attributs. * * @author Fred Deniger - * @version $Id: FSigLayerGroup.java,v 1.6.2.1 2008-01-17 11:38:59 bmarchan Exp $ + * @version $Id$ */ public class FSigLayerGroup extends ZCalqueEditionGroup { /** * @author fred deniger - * @version $Id: FSigLayerGroup.java,v 1.6.2.1 2008-01-17 11:38:59 bmarchan Exp $ + * @version $Id$ */ static final class CommandForLayerCreation implements CtuluCommand { private final BCalque parent_; @@ -87,7 +87,7 @@ /** * @author fred deniger - * @version $Id: FSigLayerGroup.java,v 1.6.2.1 2008-01-17 11:38:59 bmarchan Exp $ + * @version $Id$ */ static final class NewNamePanel extends CtuluDialogPanel { /** @@ -383,8 +383,8 @@ }; for (int i = 0; i < cq.length; i++) { if (cq[i] instanceof ZCalqueAffichageDonneesInterface - && ((ZCalqueAffichageDonneesInterface) cq[i]).modeleDonnees() instanceof ZModeleGeom) { - final ZModeleGeom donnees = (ZModeleGeom) ((ZCalqueAffichageDonneesInterface) cq[i]).modeleDonnees(); + && ((ZCalqueAffichageDonneesInterface) cq[i]).modeleDonnees() instanceof ZModeleGeometry) { + final ZModeleGeometry donnees = (ZModeleGeometry) ((ZCalqueAffichageDonneesInterface) cq[i]).modeleDonnees(); donnees.getGeomData().setAttributes(att, cmp); } } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerGroup.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/persistence/FSigLayerPointPersistence.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/persistence/FSigLayerPointPersistence.java 2008-10-03 13:08:56 UTC (rev 4028) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/persistence/FSigLayerPointPersistence.java 2008-10-03 14:37:38 UTC (rev 4029) @@ -1,6 +1,6 @@ /* * @creation 26 ao\xFBt 2005 - * @modification $Date: 2008-01-22 09:58:16 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail fud...@li... @@ -45,7 +45,7 @@ import org.fudaa.ebli.calque.BCalqueSaverSingle; import org.fudaa.ebli.calque.BCalqueSaverTargetInterface; import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; -import org.fudaa.ebli.calque.ZModeleGeom; +import org.fudaa.ebli.calque.ZModeleGeometry; import org.fudaa.ebli.calque.edition.ZCalqueEditionGroup; import org.fudaa.fudaa.commun.save.FudaaSaveLib; @@ -53,7 +53,7 @@ /** * @author Fred Deniger - * @version $Id: FSigLayerPointPersistence.java,v 1.9.6.1 2008-01-22 09:58:16 bmarchan Exp $ + * @version $Id$ */ public class FSigLayerPointPersistence extends BCalquePersistenceSingle { @@ -99,7 +99,7 @@ } private GISZoneCollection getGeomData(final BCalque _cqToSave) { - return ((ZModeleGeom) ((ZCalqueAffichageDonneesInterface) _cqToSave).modeleDonnees()).getGeomData(); + return ((ZModeleGeometry) ((ZCalqueAffichageDonneesInterface) _cqToSave).modeleDonnees()).getGeomData(); } protected GISZoneCollection createInitCollection() { Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/persistence/FSigLayerPointPersistence.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigWizardVariableModifier.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigWizardVariableModifier.java 2008-10-03 13:08:56 UTC (rev 4028) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigWizardVariableModifier.java 2008-10-03 14:37:38 UTC (rev 4029) @@ -1,6 +1,6 @@ /* * @creation 25 mai 2005 - * @modification $Date: 2008-02-22 16:27:43 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail de...@fu... @@ -52,7 +52,7 @@ import org.fudaa.ebli.calque.BArbreCalqueModel; import org.fudaa.ebli.calque.BCalque; import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; -import org.fudaa.ebli.calque.ZModeleGeom; +import org.fudaa.ebli.calque.ZModeleGeometry; import org.fudaa.ebli.calque.edition.ZCalqueEditionGroup; import org.fudaa.fudaa.sig.FSigGeomSrcData; @@ -63,7 +63,7 @@ /** * Un wizard pour la modification d'une variable. * @author Fred Deniger - * @version $Id: FSigWizardVariableModifier.java,v 1.3.6.1 2008-02-22 16:27:43 bmarchan Exp $ + * @version $Id$ */ public class FSigWizardVariableModifier extends BuWizardTask implements TreeSelectionListener { @@ -162,7 +162,7 @@ /** * @author fred deniger - * @version $Id: FSigWizardVariableModifier.java,v 1.3.6.1 2008-02-22 16:27:43 bmarchan Exp $ + * @version $Id$ */ static final class VariableCellTextRenderer extends CtuluCellTextRenderer { protected void setValue(Object _value) { @@ -567,8 +567,8 @@ if (_cqToScan instanceof ZCalqueEditionGroup) { res = ((ZCalqueEditionGroup) _cqToScan).getAttributes(); } else if (_cqToScan instanceof ZCalqueAffichageDonneesInterface - && ((ZCalqueAffichageDonneesInterface) _cqToScan).modeleDonnees() instanceof ZModeleGeom) { - res = ((ZModeleGeom) ((ZCalqueAffichageDonneesInterface) _cqToScan).modeleDonnees()).getGeomData() + && ((ZCalqueAffichageDonneesInterface) _cqToScan).modeleDonnees() instanceof ZModeleGeometry) { + res = ((ZModeleGeometry) ((ZCalqueAffichageDonneesInterface) _cqToScan).modeleDonnees()).getGeomData() .getAttributes(); } return res == null ? nullAtt_ : res; Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigWizardVariableModifier.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2008-10-03 15:30:10
|
Revision: 4030 http://fudaa.svn.sourceforge.net/fudaa/?rev=4030&view=rev Author: emmanuel_martin Date: 2008-10-03 15:29:59 +0000 (Fri, 03 Oct 2008) Log Message: ----------- L'attribut ETAT_GEOM existe par defaut et passe automatiquement ?\195?\160 modifi?\195?\169 losqu'une action est faite sur la g?\195?\169ometrie. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionGeometry.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionPoint.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorChoice.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/model/Mv3DFrontierData.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dMultiPoint.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -10,10 +10,11 @@ import java.util.ArrayList; import java.util.List; -import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.CtuluLibString; -import org.fudaa.ctulu.gui.CtuluValueEditorStringRestricted; +import org.fudaa.ctulu.gui.CtuluValueEditorChoice; +import org.fudaa.ctulu.CtuluLib; + import com.memoire.fu.FuLib; /** @@ -153,9 +154,7 @@ /** * Un attribut etat, global a la g\xE9om\xE9trie. */ - public final static GISAttributeString ETAT_GEOM=new GISAttributeString(new CtuluValueEditorStringRestricted(new String[]{ - ATT_VAL_ETAT_ORIG, ATT_VAL_ETAT_MODI}, new String[]{CtuluLib.getS("Origine"), CtuluLib.getS("Modifi\xE9")}), CtuluLib - .getS("Etat"), false) { + public final static GISAttributeString ETAT_GEOM=new GISAttributeString(new CtuluValueEditorChoice(new String[]{ATT_VAL_ETAT_ORIG, ATT_VAL_ETAT_MODI}, new String[]{CtuluLib.getS("Origine"), CtuluLib.getS("Modifi\xE9")}), CtuluLib.getS("Etat"), false) { public String getID() { return "ATTRIBUTE_ETAT_GEOM"; } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -270,8 +270,9 @@ * @param _geom La g\xE9om\xE9trie. * @param _datas Les valeurs d'attributs, dans l'ordre. * @param _cmd Le manager de commandes. + * @return l'index de l'attribut cr\xE9e, -1 si rien n'est cr\xE9e */ - public abstract void addGeometry(Geometry _geom, Object[] _datas, CtuluCommandContainer _cmd); + public abstract int addGeometry(Geometry _geom, Object[] _datas, CtuluCommandContainer _cmd); public void removeGeometries(final int[] _idx, CtuluCommandContainer _cmd) { super.geometry_.remove(_idx, _cmd); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionGeometry.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionGeometry.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionGeometry.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -90,13 +90,15 @@ throw new IllegalAccessError("Can't call this method"); } - public void addGeometry(final Geometry _geom, final Object[] _data, final CtuluCommandContainer _cmd) { + public int addGeometry(final Geometry _geom, final Object[] _data, final CtuluCommandContainer _cmd) { if (!(_geom instanceof GISCoordinateSequenceContainerInterface)) throw new IllegalArgumentException("Bad type geometry"); if (isGeomModifiable_) { geometry_.add(_geom, Arrays.asList(createAttributeList(_data, _geom, true)), _cmd); + return geometry_.getSize() - 1; } + return -1; } public boolean accept(final GISVisitor _v) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -183,13 +183,15 @@ } } - public void addGeometry(final Geometry _geom, final Object[] _data, final CtuluCommandContainer _cmd) { + public int addGeometry(final Geometry _geom, final Object[] _data, final CtuluCommandContainer _cmd) { if (!(_geom instanceof LineString)) throw new IllegalArgumentException("Bad type geometry"); if (isGeomModifiable_) { geometry_.add(_geom, Arrays.asList(createAttributeList(_data, _geom, true)), _cmd); + return geometry_.getSize() - 1; } + return -1; } /** Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -173,13 +173,16 @@ addGeometry(geom,_data,_cmd); } - public void addGeometry(final Geometry _geom, final Object[] _data, final CtuluCommandContainer _cmd) { + public int addGeometry(final Geometry _geom, final Object[] _data, final CtuluCommandContainer _cmd) { if (!(_geom instanceof GISMultiPoint)) throw new IllegalArgumentException("Bad type geometry"); if (isGeomModifiable_) { - geometry_.add(_geom, Arrays.asList(createAttributeList(_data, _geom, true)), _cmd); + Object[] atts = createAttributeList(_data, _geom, true); + geometry_.add(_geom, Arrays.asList(atts), _cmd); + return geometry_.getSize() - 1; } + return -1; } public boolean accept(final GISVisitor _v) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionPoint.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionPoint.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionPoint.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -242,10 +242,11 @@ return geometry_.add(new GISPoint(_x, _y, _z), _o, _c); } - public void addGeometry(final Geometry _seq, final Object[] _datas, final CtuluCommandContainer _cmd) { + public int addGeometry(final Geometry _seq, final Object[] _datas, final CtuluCommandContainer _cmd) { final Point p = (Point) _seq; add(p.getX(), p.getY(), p.getCoordinateSequence().getOrdinate(0, 2), _datas == null ? null : Arrays.asList(_datas), _cmd); + return size() - 1; } public void addCoordinateSequence(final CoordinateSequence _seq, final Object[] _datas, Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorChoice.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorChoice.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorChoice.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -11,6 +11,7 @@ import java.util.Arrays; import javax.swing.DefaultCellEditor; +import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.table.TableCellEditor; @@ -25,37 +26,65 @@ */ public class CtuluValueEditorChoice implements CtuluValueEditorI { - final String[] choices_; + /** + * Les deux tableaux existent pour permettre un affichage diff\xE9rent des + * valeurs r\xE9els retourn\xE9es. Le cas d'utilisation \xE9tant + * l'internationnalisation : on poss\xE8de des infomations au sujet d'un \xE9l\xE9ment + * quelconque, par exemple les couleurs primaires ; on veut afficher ces + * couleurs dans la langue de l'utilisateur, mais poss\xE9der les m\xEAmes + * d\xE9nominations dans le code. Ainsi reelChoices poss\xE9dera les valeurs + * constantes (exemple BLUE, RED, GREEN) et displayChoices poss\xE9dera les + * traductions dans la langue de l'utilisateur (Bleu, Rouge, Vert). Dans le + * cas o\xF9 displayChoices n'est pas renseign\xE9 \xE0 l'instanciation, reelChoice + * sera consid\xE9r\xE9 comme valeur reel et d'affichage. + */ + private String[] displayChoices_; + private String[] reelChoices_; + + private boolean useInteger_; - public boolean useInteger_; - - public CtuluValueEditorChoice(final String[] _choices) { + /** + * Dans le cas o\xF9 dChoices est null, reelChoices sera \xE9galement affich\xE9. + * @param _reelChoices Les choix retourn\xE9s lors des getValue + * @param _dChoices Les choix affich\xE9s par la comboBox + */ + public CtuluValueEditorChoice(final String[] _reelChoices, final String[] _dChoices) { super(); - choices_ = _choices; + useInteger_ = false; + reelChoices_ = _reelChoices; + displayChoices_ = _dChoices; + if(displayChoices_!=null && reelChoices_.length!=displayChoices_.length) + throw new IllegalArgumentException("reelChoices_ and displayChoices_ must have the same size."); } private BuComboBox getCb() { - return new BuComboBox(choices_); + if(displayChoices_!=null) + return new BuComboBox(displayChoices_); + else + return new BuComboBox(reelChoices_); } - - - public Class getDataClass() { + public Class<Arrays> getDataClass() { return Arrays.class; } private boolean isMixteComponent(final BuComboBox _buComboBox) { - return _buComboBox.getModel().getSize() > choices_.length; + return _buComboBox.getModel().getSize() > reelChoices_.length; } private boolean isMixteValuesSelected(final BuComboBox _buComboBox) { - return isMixteComponent(_buComboBox) && _buComboBox.getSelectedIndex() >= choices_.length; + return isMixteComponent(_buComboBox) && _buComboBox.getSelectedIndex() >= reelChoices_.length; } public JComponent createCommonEditorComponent() { - final String[] extendedChoices = new String[choices_.length + 1]; - extendedChoices[choices_.length] = "< " + CtuluLib.getS("Ind\xE9fini") + " >"; - System.arraycopy(choices_, 0, extendedChoices, 0, choices_.length); + String[] elements; + if(displayChoices_!=null) + elements = displayChoices_; + else + elements=reelChoices_; + final String[] extendedChoices = new String[elements.length + 1]; + extendedChoices[elements.length] = "< " + CtuluLib.getS("Ind\xE9fini") + " >"; + System.arraycopy(elements, 0, extendedChoices, 0, elements.length); return new BuComboBox(extendedChoices); } @@ -90,7 +119,7 @@ /* * if (useInteger_) { return CtuluLibString.getString(buComboBox.getSelectedIndex()); } */ - return (String) buComboBox.getSelectedItem(); + return reelChoices_[buComboBox.getSelectedIndex()]; } /** @@ -104,7 +133,7 @@ if (useInteger_) { return new Integer(buComboBox.getSelectedIndex()); } - return buComboBox.getSelectedItem(); + return reelChoices_[buComboBox.getSelectedIndex()]; } public boolean isEditable() { @@ -131,16 +160,16 @@ public void setValue(final Object _s, final Component _comp) { if (useInteger_) { if (_s == null && isMixteComponent((BuComboBox) _comp)) { - ((BuComboBox) _comp).setSelectedIndex(choices_.length); + ((BuComboBox) _comp).setSelectedIndex(reelChoices_.length); } else if (_s != null) { ((BuComboBox) _comp).setSelectedIndex(((Integer) _s).intValue()); } } else { - final int idx = CtuluLibArray.findObject(choices_, _s); + final int idx = CtuluLibArray.findObject(reelChoices_, _s); if (idx >= 0) { ((BuComboBox) _comp).setSelectedIndex(idx); } else if (isMixteComponent(((BuComboBox) _comp))) { - ((BuComboBox) _comp).setSelectedIndex(choices_.length); + ((BuComboBox) _comp).setSelectedIndex(reelChoices_.length); } } @@ -148,7 +177,7 @@ public String toString(final Object _o) { if (useInteger_) { - return _o == null ? "null" : choices_[((Integer) _o).intValue()]; + return _o == null ? "null" : reelChoices_[((Integer) _o).intValue()]; } return _o == null ? "null" : _o.toString(); } @@ -160,5 +189,4 @@ public void setReturnInteger(final boolean _returnInteger) { useInteger_ = _returnInteger; } - } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -185,15 +185,7 @@ modele_.point(seg.e_, i, j); modele_.point(seg.o_, i, j-1); if (seg.distanceXY(ptToTest)<distanceReel) { - // Modification de l'etat de la geometrie - boolean found=false; - int k=-1; - while (!found&&++k<modele_.getGeomData().getNbAttributes()) - found=modele_.getGeomData().getAttribute(k)==GISAttributeConstants.ETAT_GEOM; - if (found) - modele_.getGeomData().getDataModel(k).setObject(i, GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); - // Fin de la modification de l'etat de la geometrie - addPoint(i, k-1, ptToTest.x_, ptToTest.y_, _cmd); + addPoint(i, j-1, ptToTest.x_, ptToTest.y_, _cmd); return true; } } @@ -201,14 +193,6 @@ modele_.point(seg.e_, i, 0); modele_.point(seg.o_, i, modele_.getNbPointForGeometry(i)-1); if (seg.distanceXY(ptToTest)<distanceReel) { - // Modification de l'etat de la geometrie - boolean found=false; - int j=-1; - while (!found&&++j<modele_.getGeomData().getNbAttributes()) - found=modele_.getGeomData().getAttribute(j)==GISAttributeConstants.ETAT_GEOM; - if (found) - modele_.getGeomData().getDataModel(j).setObject(i, GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); - // Fin de la modification de l'etat de la geometrie addPoint(i, modele_.getNbPointForGeometry(i)-1, ptToTest.x_, ptToTest.y_, _cmd); return true; } @@ -380,5 +364,4 @@ public final void setEditor(final ZEditorInterface _editor) { editor_ = _editor; } - } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -114,6 +114,7 @@ iterator.advance(); //l'indice de la ligne final int idxLigne = iterator.key(); + setGeomModif(idxLigne, _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie //les points a enlever final CtuluListSelectionInterface sel = (CtuluListSelectionInterface) iterator.value(); geometries_.removeAtomics(idxLigne, sel, _ui, cmp); @@ -261,6 +262,8 @@ } final CoordinateSequence g = ((LineString) geometries_.getGeometry(_ligneIdx)) .getCoordinateSequence(); + // Modification de l'\xE9tat de la g\xE9om\xE9trie + setGeomModif(_ligneIdx, _cmd); // Cr\xE9ation du segment d\xE9fini par les deux point de la forme // Construction du point projet\xE9 grace \xE0 'pointPlusProche' GrPoint point = (new GrSegment(new GrPoint(g.getX(_idxBefore), g.getY(_idxBefore), 0), @@ -317,6 +320,11 @@ dataline1[i]=name+"_1"; dataline2[i]=name+"_2"; } + // CAs particulier de l'attribut ETAT_GEOM => ATT_VAL_ETAT_MODI + else if(attmodel.getAttribute()==GISAttributeConstants.ETAT_GEOM) { + dataline1[i]=GISAttributeConstants.ATT_VAL_ETAT_MODI; + dataline2[i]=GISAttributeConstants.ATT_VAL_ETAT_MODI; + } else { dataline1[i]=attmodel.getAttribute().createDataForGeom(attmodel.getObjectValueAt(_ligneIdx),1); dataline2[i]=attmodel.getAttribute().createDataForGeom(attmodel.getObjectValueAt(_ligneIdx),1); @@ -413,6 +421,10 @@ String name2=(String)geometries_.getModel(att).getObjectValueAt(_ligneIdx[1]); dataline[att]=name1+"_"+name2; } + // Cas particulier de l'attribut ETAT_GEOM => ATT_VAL_ETAT_MODI + else if (geometries_.getModel(att).getAttribute()==GISAttributeConstants.ETAT_GEOM) { + dataline[att]=GISAttributeConstants.ATT_VAL_ETAT_MODI; + } else dataline[att]=geometries_.getModel(att).getAttribute().createDataForGeom(geometries_.getModel(att).getObjectValueAt(_ligneIdx[0]),1); } @@ -480,6 +492,7 @@ final int min = _selection.getMinIndex(); for (int i = _selection.getMaxIndex(); i >= min; i--) { if (_selection.isSelected(i)) { + setGeomModif(i, _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie r = true; final CoordinateSequence newSeq = ((LineString) geometries_.getGeometry(i).clone()).getCoordinateSequence(); for (int j = newSeq.size() - 1; j >= 0; j--) { @@ -550,6 +563,7 @@ if (!s.isEmpty()) { r = true; final int idx = it.key(); + setGeomModif(idx, _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie final CoordinateSequence newSeq = ((LineString) geometries_.getGeometry(idx).clone()) .getCoordinateSequence(); @@ -632,6 +646,7 @@ final int min = _selection.getMinIndex(); for (int i = _selection.getMaxIndex(); i >= min; i--) { if (_selection.isSelected(i)) { + setGeomModif(i, _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie r = true; final CoordinateSequence newSeq = ((LineString) geometries_.getGeometry(i).clone()).getCoordinateSequence(); for (int j = newSeq.size() - 1; j >= 0; j--) { @@ -684,6 +699,7 @@ if (!s.isEmpty()) { r = true; final int idx = it.key(); + setGeomModif(idx, _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie final CoordinateSequence newSeq = ((LineString) geometries_.getGeometry(idx).clone()) .getCoordinateSequence(); final int min = s.getMinIndex(); @@ -743,6 +759,8 @@ return false; } geometries_.removeLignes(_idx, _cmd); + for(int i=0 ; i<_idx.length;i++) + setGeomModif(_idx[i], _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie return true; } @@ -767,6 +785,7 @@ for (int iatt=0; iatt<geometries_.getNbAttributes(); iatt++) { Object val=geometries_.getValue(iatt,idx); if (geometries_.getAttribute(iatt).equals(GISAttributeConstants.TITRE)) val=CtuluLib.getS("Copie de")+" "+val; + if (geometries_.getAttribute(iatt).equals(GISAttributeConstants.ETAT_GEOM)) val=GISAttributeConstants.ATT_VAL_ETAT_MODI; int nbpt=geom.getNumPoints(); vals[iatt]=geometries_.getAttribute(iatt).createDataForGeom(val, nbpt); } @@ -777,4 +796,14 @@ if (_cmd!=null) _cmd.addCmd(cmp.getSimplify()); return true; } + + /** + * Fait passer la g\xE9om\xE9trie en Modifier + * @param _idx : index de la geom\xE9trie + * @param _cmd : + */ + public void setGeomModif(int _idx, CtuluCommandContainer _cmd) { + getGeomData().getDataModel(getGeomData().getIndiceOf(GISAttributeConstants.ETAT_GEOM)).setObject(_idx, + GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); + } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -413,6 +413,7 @@ */ public void addAtomic(final int _idxGeom,final int _idxBefore,final double _x,final double _y,final CtuluCommandContainer _cmd){ if (geometries_ == null) return; + setGeomModif(_idxGeom, _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie geometries_.addAtomic(_idxGeom, _idxBefore, _x, _y, _cmd); } @@ -502,6 +503,7 @@ final int min = _selection.getMinIndex(); for (int i = _selection.getMaxIndex(); i >= min; i--) { if (_selection.isSelected(i)) { + setGeomModif(i, _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie r = true; Coordinate[] newSeq = ((Geometry) geometries_.getGeometry(i).clone()).getCoordinates(); for (int j = newSeq.length - 1; j >= 0; j--) { @@ -603,6 +605,11 @@ datageom1[i]=name+"_1"; datageom2[i]=name+"_2"; } + // CAs particulier de l'attribut ETAT_GEOM => ATT_VAL_ETAT_MODI + else if(attmodel.getAttribute()==GISAttributeConstants.ETAT_GEOM) { + datageom1[i]=GISAttributeConstants.ATT_VAL_ETAT_MODI; + datageom2[i]=GISAttributeConstants.ATT_VAL_ETAT_MODI; + } else { datageom1[i]=attmodel.getAttribute().createDataForGeom(attmodel.getObjectValueAt(_geomIdx),1); datageom2[i]=attmodel.getAttribute().createDataForGeom(attmodel.getObjectValueAt(_geomIdx),1); @@ -644,6 +651,7 @@ if (!s.isEmpty()) { r = true; final int idx = it.key(); + setGeomModif(idx, _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie Coordinate[] newSeq = ((Geometry) geometries_.getGeometry(idx).clone()).getCoordinates(); // Translation suivant Z si attribut Z non null et atomic. @@ -700,6 +708,7 @@ iterator.advance(); //l'indice de la ligne final int idxLigne = iterator.key(); + setGeomModif(idxLigne, _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie //les points a enlever final CtuluListSelectionInterface sel = (CtuluListSelectionInterface) iterator.value(); geometries_.removeAtomics(idxLigne, sel, _ui, cmp); @@ -714,6 +723,8 @@ if (geometries_ == null) { return false; } + for(int i=0 ; i<_idx.length;i++) + setGeomModif(_idx[i], _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie geometries_.removeGeometries(_idx, _cmd); return true; } @@ -736,6 +747,7 @@ final int min = _selection.getMinIndex(); for (int i = _selection.getMaxIndex(); i >= min; i--) { if (_selection.isSelected(i)) { + setGeomModif(i, _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie r = true; final Coordinate[] newSeq = ((Geometry) geometries_.getGeometry(i).clone()).getCoordinates(); for (int j = newSeq.length - 1; j >= 0; j--) { @@ -782,6 +794,7 @@ if (!s.isEmpty()) { r = true; final int idx = it.key(); + setGeomModif(idx, _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie final Coordinate[] newSeq = ((Geometry) geometries_.getGeometry(idx).clone()).getCoordinates(); final int min = s.getMinIndex(); for (int j = s.getMaxIndex(); j >= min; j--) { @@ -834,6 +847,7 @@ for (int iatt=0; iatt<geometries_.getNbAttributes(); iatt++) { Object val=geometries_.getValue(iatt,idx); if (geometries_.getAttribute(iatt).equals(GISAttributeConstants.TITRE)) val=CtuluLib.getS("Copie de")+" "+val; + if (geometries_.getAttribute(iatt).equals(GISAttributeConstants.ETAT_GEOM)) val=GISAttributeConstants.ATT_VAL_ETAT_MODI; int nbpt=geom.getNumPoints(); vals[iatt]=geometries_.getAttribute(iatt).createDataForGeom(val, nbpt); } @@ -856,4 +870,14 @@ public final boolean isGeometryVisible(final int _idxLigne) { return true; } + + /** + * Fait passer la g\xE9om\xE9trie en Modifier + * @param _idx : index de la geom\xE9trie + * @param _cmd : + */ + public void setGeomModif(int _idx, CtuluCommandContainer _cmd) { + getGeomData().getDataModel(getGeomData().getIndiceOf(GISAttributeConstants.ETAT_GEOM)).setObject(_idx, + GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); + } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -165,12 +165,14 @@ * @return true si ok. */ public boolean removePoint(final int[] _idx, final CtuluCommandContainer _cmd) { + for(int i=0;i<_idx.length;i++) + setGeomModif(_idx[i], _cmd); // Modification de l'etat de la g\xE9om\xE9trie return pts_.remove(_idx, _cmd); } public boolean setPoint(final int _idx, final double _newX, final double _newY, final CtuluCommandContainer _cmd) { + setGeomModif(_idx, _cmd); // Modification de l'etat de la g\xE9om\xE9trie return pts_.set(_idx, _newX, _newY, _cmd); - } public boolean point(final GrPoint _p, final int _i, final boolean _force) { @@ -248,6 +250,7 @@ for (int iatt=0; iatt<pts_.getNbAttributes(); iatt++) { Object val=pts_.getValue(iatt,idx); if (pts_.getAttribute(iatt).equals(GISAttributeConstants.TITRE)) val=CtuluLib.getS("Copie de")+" "+val; + if (pts_.getAttribute(iatt).equals(GISAttributeConstants.ETAT_GEOM)) val=GISAttributeConstants.ATT_VAL_ETAT_MODI; int nbpt=geom.getNumPoints(); vals[iatt]=pts_.getAttribute(iatt).createDataForGeom(val, nbpt); } @@ -298,4 +301,14 @@ _pt.y_=getY(_idxGeom); return true; } + + /** + * Fait passer la g\xE9om\xE9trie en Modifier + * @param _idx : index de la geom\xE9trie + * @param _cmd : + */ + public void setGeomModif(int _idx, CtuluCommandContainer _cmd) { + getGeomData().getDataModel(getGeomData().getIndiceOf(GISAttributeConstants.ETAT_GEOM)).setObject(_idx, + GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); + } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/model/Mv3DFrontierData.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/model/Mv3DFrontierData.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/model/Mv3DFrontierData.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -154,7 +154,7 @@ } } selectionIntern.sort(); - final CtuluValueEditorChoice type = new CtuluValueEditorChoice(new String[] { getStrNone(), getStrBuilding() }); + final CtuluValueEditorChoice type = new CtuluValueEditorChoice(new String[] { getStrNone(), getStrBuilding() }, null); type.setReturnInteger(true); final CtuluValueEditorDouble db = new CtuluValueEditorDouble(true); final CtuluValuesEditorPanel pn = new CtuluValuesEditorPanel(new String[] { MvResource.getS("Type"), Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -144,7 +144,12 @@ GISZoneCollection colsrc=((ZModeleGeometry)getScene().getLayerForId(idxGeom[i]).modeleDonnees()).getGeomData(); for (int iatt=0; iatt<datadest.length; iatt++) { int idxAtt=colsrc.getIndiceOf(coldest.getAttribute(iatt)); - if (idxAtt!=-1) datadest[iatt]=colsrc.getValue(idxAtt,getScene().sceneId2LayerId(idxGeom[i])); + if (idxAtt!=-1) { + datadest[iatt]=colsrc.getValue(idxAtt, getScene().sceneId2LayerId(idxGeom[i])); + // Les nouvelles g\xE9om\xE9tries sont modifi\xE9s, pas d'origine + if (colsrc.getAttribute(idxAtt)==GISAttributeConstants.ETAT_GEOM) + datadest[iatt]=GISAttributeConstants.ATT_VAL_ETAT_MODI; + } } // La g\xE9om\xE9trie @@ -315,6 +320,8 @@ int idx=getScene().sceneId2LayerId(idxGeom[i]); if (zatt!=-1) col.setAttributValue(zatt, idx, vals, cmp); + // Changement de l'attribut ETAT_GEOM en modifi\xE9 + col.getDataModel(col.getIndiceOf(GISAttributeConstants.ETAT_GEOM)).setObject(idx, GISAttributeConstants.ATT_VAL_ETAT_MODI, null); } if (mng_ != null) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -67,7 +67,9 @@ coords[coords.length-1]=(Coordinate)_coords[1].clone(); GISPolyligne poly = (GISPolyligne)GISGeometryFactory.INSTANCE.createLineString(coords); - geometries_.addGeometry(poly, null, _cmd); + int idx = geometries_.addGeometry(poly, null, _cmd); + if(idx!=-1) + getGeomData().getDataModel(geometries_.getIndiceOf(GISAttributeConstants.ETAT_GEOM)).setObject(idx, GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); return true; } @@ -163,6 +165,7 @@ CtuluListSelectionInterface ids = new CtuluListSelection(list.toNativeArray()); geometries_.removeAtomics(_idxGeom, ids, null, _cmd); // L'UI est null, le cas ou moins de 2 points ne peut pas arriver. + setGeomModif(_idxGeom, _cmd); // Modification de l'etat de la g\xE9om\xE9trie return true; } @@ -223,6 +226,7 @@ GISPolyligne newgeom=(GISPolyligne)GISGeometryFactory.INSTANCE.createLineString((Coordinate[])coords.toArray(new Coordinate[0])); geometries_.setValue(_idxGeom, newgeom, _cmd); + setGeomModif(_idxGeom, _cmd); // Modification de l'etat de la g\xE9om\xE9trie return true; } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dMultiPoint.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dMultiPoint.java 2008-10-03 14:37:38 UTC (rev 4029) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dMultiPoint.java 2008-10-03 15:29:59 UTC (rev 4030) @@ -58,7 +58,10 @@ coords[coords.length-1]=(Coordinate)_coords[1].clone(); GISMultiPoint poly = (GISMultiPoint) GISGeometryFactory.INSTANCE.createMultiPoint(coords); - geometries_.addGeometry(poly, null, _cmd); + int idx = geometries_.addGeometry(poly, null, _cmd); + // Modification de l'etat de la g\xE9ometrie en modifi\xE9e + if(idx != -1) + getGeomData().getDataModel(geometries_.getIndiceOf(GISAttributeConstants.ETAT_GEOM)).setObject(idx, GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); return true; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2008-10-07 08:04:48
|
Revision: 4039 http://fudaa.svn.sourceforge.net/fudaa/?rev=4039&view=rev Author: emmanuel_martin Date: 2008-10-07 08:04:46 +0000 (Tue, 07 Oct 2008) Log Message: ----------- bug fix : verification de l'existance de l'attribut ETAT_GEOM avant de le modifier. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorChoice.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dMultiPoint.java Removed Paths: ------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorStringRestricted.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorChoice.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorChoice.java 2008-10-06 19:31:22 UTC (rev 4038) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorChoice.java 2008-10-07 08:04:46 UTC (rev 4039) @@ -101,7 +101,13 @@ } }; } - return new DefaultCellEditor(cb); + else { + return new DefaultCellEditor(cb) { + public Object getCellEditorValue() { + return reelChoices_[cb.getSelectedIndex()]; + } + }; + } } public int getSelectedIdx(final Component _c) { Deleted: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorStringRestricted.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorStringRestricted.java 2008-10-06 19:31:22 UTC (rev 4038) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorStringRestricted.java 2008-10-07 08:04:46 UTC (rev 4039) @@ -1,196 +0,0 @@ -/* - * @creation 2 oct. 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.ctulu.gui; - -import java.awt.Component; -import java.util.Enumeration; -import java.util.EventObject; -import java.util.Iterator; -import java.util.Vector; - -import javax.swing.JComboBox; -import javax.swing.JComponent; -import javax.swing.JTable; -import javax.swing.event.CellEditorListener; -import javax.swing.event.ChangeEvent; -import javax.swing.table.TableCellEditor; - -import org.fudaa.ctulu.CtuluLibString; - -/** - * Cette classe permet de sp\xE9cifier un ensemble de valeur que peut prendre la - * chaine. Ainsi si on a un attribut ne pouvant prendre que 'Oui' et 'Non' comme - * valeur, l'editeur ne donnera le choix qu'entre ces deux l\xE0 lors de la - * modification. Les valeurs possibles ne peuvent \xEAtre que des string. - * - * @author Emmanuel MARTIN - * @version $Id:$ - */ -public class CtuluValueEditorStringRestricted implements CtuluValueEditorI { - - protected class TableCellEditorWithComboBox implements TableCellEditor { - - private JComboBox co_; - private Vector<CellEditorListener> listeners_; - - public TableCellEditorWithComboBox(JComboBox _co) { - if (_co==null) - throw new IllegalArgumentException("Parameter mustn't be null."); - co_=_co; - listeners_=new Vector<CellEditorListener>(); - } - - public Component getTableCellEditorComponent(JTable _table, Object _value, boolean _selected, int _row, int _column) { - return co_; - } - - public void cancelCellEditing() { - ChangeEvent evt=new ChangeEvent(this); - for (Enumeration<CellEditorListener> e=listeners_.elements(); e.hasMoreElements();) - ((CellEditorListener)e.nextElement()).editingCanceled(evt); - } - - public Object getCellEditorValue() { - return co_.getSelectedObjects(); - } - - public boolean isCellEditable(EventObject _evt) { - return true; - } - - public boolean shouldSelectCell(EventObject _evt) { - return true; - } - - public boolean stopCellEditing() { - ChangeEvent evt=new ChangeEvent(this); - for (Enumeration<CellEditorListener> e=listeners_.elements(); e.hasMoreElements();) - ((CellEditorListener)e.nextElement()).editingStopped(evt); - return false; - } - - public void addCellEditorListener(CellEditorListener _l) { - if (!listeners_.contains(_l)) - listeners_.addElement(_l); - } - - public void removeCellEditorListener(CellEditorListener _l) { - listeners_.removeElement(_l); - } - } - - private String[] values_; - private String[] rawValues_; - - /** - * The '_values' parameter can by null. In the case the '_rawValues' will be - * displayed. - * - * @param _rawValues - * Values use by the application - * @param _values - * Values display by the widget - */ - public CtuluValueEditorStringRestricted(String[] _rawValues, String[] _values) { - rawValues_ = _rawValues; - values_=_values; - if(values_!=null && rawValues_.length!=values_.length) - throw new IllegalArgumentException("rawValues and values don't have the same size."); - } - - public CtuluValueEditorStringRestricted(Iterable<String> _rawValues, Iterable<String> _values) { - Vector<String> tmpValues=new Vector<String>(); - // rawValues - Iterator<String> it=_rawValues.iterator(); - for (; it.hasNext();) - tmpValues.add(it.next()); - rawValues_=(String[])tmpValues.toArray(); - // values - if(_values !=null){ - it=_values.iterator(); - for (; it.hasNext();) - tmpValues.add(it.next()); - values_=(String[])tmpValues.toArray(); - } - } - - public Class<String> getDataClass() { - return String.class; - } - - public String getValidationMessage() { - return null; - } - - public boolean isValueValidFromComponent(final Component _comp) { - return isValid(((String)(((JComboBox)_comp).getSelectedItem())).trim()); - } - - public boolean isEmpty(final Component _c) { - final String txt=(String)((JComboBox)_c).getSelectedItem(); - return txt==null||txt.trim().length()==0; - } - - public boolean isEditable() { - return true; - } - - public boolean isValid(final String _s) { - return true; - } - - public Object getValue(final Component _comp) { - return getStringValue(_comp); - } - - public boolean isValid(final Object _o) { - return isValid(_o.toString()); - } - - public JComponent createCommonEditorComponent() { - return createEditorComponent(); - } - - public String[] getAllowedValues() { - return values_.clone(); - } - - public int getNbAllowedValues() { - return values_.length; - } - - public void setValue(final Object _s, final Component _comp) { - if (_s instanceof String){ - boolean found=false; - int i=-1; - while(!found && ++i<rawValues_.length) - found=rawValues_[i].equals(_s); - if(found) - ((JComboBox)_comp).setSelectedIndex(i); - } - } - - public String toString(final Object _o) { - return _o==null ? CtuluLibString.EMPTY_STRING:_o.toString(); - } - - public String getStringValue(final Component _comp) { - return rawValues_[((JComboBox)_comp).getSelectedIndex()]; - } - - public TableCellEditor createTableEditorComponent() { - return new TableCellEditorWithComboBox((JComboBox)createEditorComponent()); - } - - public JComponent createEditorComponent() { - if(values_!=null) - return new JComboBox(values_); - else - return new JComboBox(rawValues_); - } -} Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-10-06 19:31:22 UTC (rev 4038) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-10-07 08:04:46 UTC (rev 4039) @@ -803,7 +803,8 @@ * @param _cmd : */ public void setGeomModif(int _idx, CtuluCommandContainer _cmd) { - getGeomData().getDataModel(getGeomData().getIndiceOf(GISAttributeConstants.ETAT_GEOM)).setObject(_idx, - GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); + int idxAttr = getGeomData().getIndiceOf(GISAttributeConstants.ETAT_GEOM); + if(idxAttr >= 0) + getGeomData().getDataModel(idxAttr).setObject(_idx, GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-10-06 19:31:22 UTC (rev 4038) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-10-07 08:04:46 UTC (rev 4039) @@ -877,7 +877,8 @@ * @param _cmd : */ public void setGeomModif(int _idx, CtuluCommandContainer _cmd) { - getGeomData().getDataModel(getGeomData().getIndiceOf(GISAttributeConstants.ETAT_GEOM)).setObject(_idx, - GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); + int idxAttr = getGeomData().getIndiceOf(GISAttributeConstants.ETAT_GEOM); + if(idxAttr >= 0) + getGeomData().getDataModel(idxAttr).setObject(_idx, GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java 2008-10-06 19:31:22 UTC (rev 4038) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java 2008-10-07 08:04:46 UTC (rev 4039) @@ -308,7 +308,8 @@ * @param _cmd : */ public void setGeomModif(int _idx, CtuluCommandContainer _cmd) { - getGeomData().getDataModel(getGeomData().getIndiceOf(GISAttributeConstants.ETAT_GEOM)).setObject(_idx, - GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); + int idxAttr = getGeomData().getIndiceOf(GISAttributeConstants.ETAT_GEOM); + if(idxAttr >= 0) + getGeomData().getDataModel(idxAttr).setObject(_idx, GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-10-06 19:31:22 UTC (rev 4038) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2008-10-07 08:04:46 UTC (rev 4039) @@ -11,6 +11,7 @@ import java.util.List; import org.fudaa.ctulu.CtuluCommandComposite; +import org.fudaa.ctulu.CtuluCommandContainer; import org.fudaa.ctulu.CtuluListSelection; import org.fudaa.ctulu.CtuluListSelectionInterface; import org.fudaa.ctulu.gis.GISAttributeConstants; @@ -321,8 +322,10 @@ if (zatt!=-1) col.setAttributValue(zatt, idx, vals, cmp); // Changement de l'attribut ETAT_GEOM en modifi\xE9 - col.getDataModel(col.getIndiceOf(GISAttributeConstants.ETAT_GEOM)).setObject(idx, GISAttributeConstants.ATT_VAL_ETAT_MODI, null); - } + int idxAttr = col.getIndiceOf(GISAttributeConstants.ETAT_GEOM); + if(idxAttr >= 0) + col.getDataModel(idxAttr).setObject(idx, GISAttributeConstants.ATT_VAL_ETAT_MODI, null); + } if (mng_ != null) { mng_.addCmd(cmp.getSimplify()); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java 2008-10-06 19:31:22 UTC (rev 4038) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java 2008-10-07 08:04:46 UTC (rev 4039) @@ -69,7 +69,7 @@ GISPolyligne poly = (GISPolyligne)GISGeometryFactory.INSTANCE.createLineString(coords); int idx = geometries_.addGeometry(poly, null, _cmd); if(idx!=-1) - getGeomData().getDataModel(geometries_.getIndiceOf(GISAttributeConstants.ETAT_GEOM)).setObject(idx, GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); + setGeomModif(idx, _cmd); return true; } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dMultiPoint.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dMultiPoint.java 2008-10-06 19:31:22 UTC (rev 4038) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dMultiPoint.java 2008-10-07 08:04:46 UTC (rev 4039) @@ -61,7 +61,7 @@ int idx = geometries_.addGeometry(poly, null, _cmd); // Modification de l'etat de la g\xE9ometrie en modifi\xE9e if(idx != -1) - getGeomData().getDataModel(geometries_.getIndiceOf(GISAttributeConstants.ETAT_GEOM)).setObject(idx, GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); + setGeomModif(idx, _cmd); return true; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-10-06 12:50:54
|
Revision: 4035 http://fudaa.svn.sourceforge.net/fudaa/?rev=4035&view=rev Author: bmarchan Date: 2008-10-06 12:46:31 +0000 (Mon, 06 Oct 2008) Log Message: ----------- Factorisation des GISZoneCollection Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionGeometry.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigLineSingleModel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiProfilLayer.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiProfileSplitter.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionGeometry.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionGeometry.java 2008-10-05 22:05:30 UTC (rev 4034) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionGeometry.java 2008-10-06 12:46:31 UTC (rev 4035) @@ -83,7 +83,11 @@ } /** - * Ne peut \xEAtre utilis\xE9 que si la liste contient des objets GIS homogenes. + * Ajoute une g\xE9om\xE9trie, d\xE9finie a partir d'une sequence de coordonn\xE9es.<p> + * Attention : Ne peut \xEAtre utilis\xE9 que si la liste contient des objets GIS homogenes. + * @param _seq La sequence de coordonnees + * @param _data Les valeurs d'attribut associ\xE9es \xE0 la g\xE9om\xE9trie, dans l'ordre des attributs. + * @param _cmd Le manager de commandes. */ public void addCoordinateSequence(final CoordinateSequence _seq, final Object[] _data, final CtuluCommandContainer _cmd) { @@ -110,15 +114,21 @@ } return true; } + /** - * @todo Les poly de niveau sont mal trait\xE9es + * Ajoute un sommet a une g\xE9om\xE9trie. + * @param _idxGeom L'index de la g\xE9om\xE9trie + * @param _idxBefore L'indice du point juste avant. + * @param _x La coordonn\xE9e X du sommet ajout\xE9. + * @param _y LA coordonn\xE9e Y du sommet ajout\xE9. + * @param _cmd Le manager de commandes. */ - public void addAtomic(final int _ligneIdx, final int _idxBefore, final double _x, final double _y, + public void addAtomic(final int _idxGeom, final int _idxBefore, final double _x, final double _y, final CtuluCommandContainer _cmd) { if (!isGeomModifiable_) { return; } - Geometry geom = (Geometry)super.geometry_.getValueAt(_ligneIdx); + Geometry geom = (Geometry)super.geometry_.getValueAt(_idxGeom); final Coordinate[] oldcs = geom.getCoordinates(); final int initSize = oldcs.length; final Coordinate[] cs = new Coordinate[initSize + 1]; @@ -131,7 +141,7 @@ } geom = GISGeometryFactory.INSTANCE.createGeometry(geom.getClass(),cs); - setGeometry(_ligneIdx,geom, _cmd); + setGeometry(_idxGeom,geom, _cmd); } /** @@ -238,11 +248,15 @@ return true; } + // dans le cas polygone le dernier point n'est pas a considerer=premier point + if (old instanceof GISPolygone) { + nbPt--; + } // les nouvelles coordonnees. - final Coordinate[] newCs = new Coordinate[nbPt]; + final Coordinate[] newCs = new Coordinate[nbPt-nbSel]; // cette liste contient les indice a enlever : creee que si necessaire // si des attribute atomics existent - final TIntArrayList idxToRemove = containsAtomicAttribute() ? new TIntArrayList(nbPt) : null; + final TIntArrayList idxToRemove = containsAtomicAttribute() ? new TIntArrayList(nbPt-nbSel) : null; // compteur tempo int count = 0; @@ -252,7 +266,8 @@ idxToRemove.add(idxPt); } } else { - newCs[count++] = (Coordinate)old.getCoordinates()[idxPt].clone(); + newCs[count++] = ((GISCoordinateSequenceContainerInterface)old).getCoordinateSequence().getCoordinate(idxPt); +// newCs[count++] = (Coordinate)old.getCoordinates()[idxPt].clone(); } } Geometry newGeom = null; @@ -283,14 +298,15 @@ } } else { - final Coordinate[] coord=new Coordinate[count]; - System.arraycopy(newCs, 0, coord, 0, coord.length); - newGeom=GISGeometryFactory.INSTANCE.createGeometry(old.getClass(), coord); +// final Coordinate[] coord=new Coordinate[count]; +// System.arraycopy(newCs, 0, coord, 0, coord.length); + newGeom=GISGeometryFactory.INSTANCE.createGeometry(old.getClass(), newCs); newGeom.setUserData(old.getUserData()); } if (r) { - super.geometry_.setObject(_idxGeom, newGeom, _cmd); + final CtuluCommandComposite cmp = new CtuluCommandComposite(); + super.geometry_.setObject(_idxGeom, newGeom, cmp); // si des attributs atomics sont concerne if (idxToRemove != null && idxToRemove.size() > 0) { final int[] idx = idxToRemove.toNativeArray(); @@ -303,10 +319,12 @@ // on recupere le sous-model concerne par la modif de geometrie final GISAttributeModel atomicModel = (GISAttributeModel) m.getObjectValueAt(_idxGeom); // on le change - m.setObject(_idxGeom, atomicModel.createSubModel(idx), _cmd); + m.setObject(_idxGeom, atomicModel.createSubModel(idx), cmp); } } } + if (_cmd!=null) + _cmd.addCmd(cmp.getSimplify()); } return r; } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java 2008-10-05 22:05:30 UTC (rev 4034) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java 2008-10-06 12:46:31 UTC (rev 4035) @@ -23,17 +23,15 @@ import org.fudaa.ctulu.CtuluCommandComposite; import org.fudaa.ctulu.CtuluCommandContainer; import org.fudaa.ctulu.CtuluLib; -import org.fudaa.ctulu.CtuluLibArray; import org.fudaa.ctulu.CtuluLibString; import org.fudaa.ctulu.CtuluListSelectionInterface; import org.fudaa.ctulu.CtuluUI; -import org.fudaa.ctulu.collection.CtuluCollectionDouble; /** * @author Fred Deniger * @version $Id: GISZoneCollectionLigneBrisee.java,v 1.20.6.4 2008-04-01 07:22:47 bmarchan Exp $ */ -public class GISZoneCollectionLigneBrisee extends GISZoneCollection { +public class GISZoneCollectionLigneBrisee extends GISZoneCollectionGeometry { public GISZoneCollectionLigneBrisee() { this(null); @@ -49,18 +47,12 @@ /** * @param _listener le listener */ - public GISZoneCollectionLigneBrisee(final GISZoneListener _listener, final GISZoneCollectionLigneBrisee _br) { - this(10, _listener); - if (_br != null) { - for (int i = 0; i < _br.getNumGeometries(); i++) { - super.geometry_.add(_br.getGeometry(i), null, null); - } - } + public GISZoneCollectionLigneBrisee(final GISZoneListener _listener, final GISZoneCollectionLigneBrisee _col) { + super(_listener,_col); } public GISZoneCollectionLigneBrisee(final int _nbObject, final GISZoneListener _listener) { - super(_nbObject); - listener_ = _listener; + super(_nbObject,_listener); } private List createListForSeveralAdd(final Object[][] _att, final int _nbGeom) { @@ -76,69 +68,6 @@ return attListe; } - /** - * @param _idx l'indice de la ligne a changer - * @param _newLine la nouvelle ligne - * @param _cmd le receveur de commande - */ - private void setValueIntern(final int _idx, final LineString _newLine, final CtuluCommandContainer _cmd) { - if (!isGeomModifiable_) { - return; - } - final LineString old = (LineString) super.geometry_.getValueAt(_idx); - if (old.getNumPoints() == _newLine.getNumPoints() || !containsAtomicAttribute()) { - super.geometry_.setObject(_idx, _newLine, _cmd); - } else { - final CtuluCommandComposite cmp = new CtuluCommandComposite(); - for (int i = getNbAttributes() - 1; i >= 0; i--) { - final GISAttributeInterface att = getAttribute(i); - if (att.isAtomicValue()) { - final GISAttributeModel m = (GISAttributeModel) (getModelListener(i).getObjectValueAt(_idx)); - final GISReprojectInterpolateurI interpolateur = GISZoneAttributeFactory.create1DInterpolateur(att, - (GISCoordinateSequenceContainerInterface)old, - (GISCoordinateSequenceContainerInterface)_newLine, m); - getModelListener(i).setObject(_idx, m.deriveNewModel(_newLine.getNumPoints(), interpolateur), cmp); - } - } - super.geometry_.setObject(_idx, _newLine, cmp); - if (_cmd != null) { - _cmd.addCmd(cmp.getSimplify()); - } - } - } - - /** - * Cr\xE9e un tableau de valeurs d'attributs.<p> - * - * Les valeurs peuvent \xEAtre globales ou atomiques. - * - * @param _init Les valeurs d'initialisation, dans l'ordre et au nombre des mod\xE8les d'attributs. - * Si null, les valeurs par d\xE9faut sont affect\xE9es (voir {@link GISAttributeInterface#getDefaultValue()}) - * @param _dest La g\xE9ometrie polyligne ou polygone. - * @param _isClosed Param\xE8tre inutilis\xE9. - * @return - */ - protected Object[] createAttributeList(final Object[] _init, final Geometry _dest, final boolean _isClosed) { - final Object[] rf = new Object[getNbAttributes()]; - if (_init != null && _init.length != getNbAttributes()) { - throw new IllegalArgumentException("bad size"); - } - for (int i = getNbAttributes() - 1; i >= 0; i--) { - rf[i]=createOrAssignAttribut(i,_init==null?null:_init[i],_dest); - } - return rf; - } - - public boolean accept(final GISVisitor _v) { - final int nb = getNumGeometries(); - for (int i = 0; i < nb; i++) { - if (!((GISLigneBrisee) getGeometry(i)).accept(_v)) { - return false; - } - } - return true; - } - public void addAllLineStringClosedOrNode(final LineString[] _gs, final CtuluCommandContainer _cmd) { if (isGeomModifiable_) { @@ -186,44 +115,11 @@ public int addGeometry(final Geometry _geom, final Object[] _data, final CtuluCommandContainer _cmd) { if (!(_geom instanceof LineString)) throw new IllegalArgumentException("Bad type geometry"); - - if (isGeomModifiable_) { - geometry_.add(_geom, Arrays.asList(createAttributeList(_data, _geom, true)), _cmd); - return geometry_.getSize() - 1; - } - return -1; + + return super.addGeometry(_geom, _data, _cmd); } - /** - * @todo Les poly de niveau sont mal trait\xE9es - */ - public void addPoint(final int _ligneIdx, final int _idxBefore, final double _x, final double _y, - final CtuluCommandContainer _cmd) { - if (!isGeomModifiable_) { - return; - } - LineString str = (LineString) super.geometry_.getValueAt(_ligneIdx); - final CoordinateSequence newSeq = str.getCoordinateSequence(); - final int initSize = newSeq.size(); - final Coordinate[] cs = new Coordinate[initSize + 1]; - int idx = 0; - for (int i = 0; i < initSize; i++) { - cs[idx++] = newSeq.getCoordinateCopy(i); - if (i == _idxBefore) { - cs[idx++] = new Coordinate(_x, _y, newSeq.getOrdinate(i, 2)); - } - } - if (str/*.isClosed()*/ instanceof GISPolygone) { - str = GISGeometryFactory.INSTANCE.createLinearRing(cs); - setValue(_ligneIdx, (GISPolygone) str, _cmd); - } - else if (str instanceof GISPolyligne) { - str = GISGeometryFactory.INSTANCE.createLineString(cs); - setValue(_ligneIdx, (GISPolyligne) str, _cmd); - } - } - public void addPolygone(final CoordinateSequence _g, final CtuluCommandContainer _cmd) { addPolygone((GISPolygone) GISGeometryFactory.INSTANCE.createLinearRing(_g), _cmd); } @@ -280,15 +176,6 @@ addPolyligne((GISPolyligne) GISGeometryFactory.INSTANCE.createLineStringNiveau(_g), _cmd); } - public boolean containsAtomicAttribute() { - for (int i = getNbAttributes() - 1; i >= 0; i--) { - if (getAttribute(i).isAtomicValue()) { - return true; - } - } - return false; - } - /** * @return true si contient au moins un polygone (ligne brisee fermee). */ @@ -317,28 +204,12 @@ return false; } - public CoordinateSequence getCoordinateSequence(final int _i) { - return ((LineString) getGeometry(_i)).getCoordinateSequence(); - } - public Class getDataStoreClass() { return LineString.class; } - public double getDoubleValue(final int _idxAtt, final int _idxGeom) { - if (getAttribute(_idxAtt).isAtomicValue()) { - return CtuluLibArray.getMoyenne(((CtuluCollectionDouble) getModel(_idxAtt).getObjectValueAt(_idxGeom)).getValues()); - } - return ((CtuluCollectionDouble) getModel(_idxAtt)).getValue(_idxGeom); - } - - /** - * Supprime des sommets sur une g\xE9om\xE9trie. - * @param _idxGeom L'indice de la g\xE9om\xE9trie. - * @param _sel La liste des sommets s\xE9lectionn\xE9s. - * @param _ui L'interface utilisateur. - * @param _cmd Le manager de commandes. - * @return true si tout s'est bien pass\xE9. + /* + * Surcharge, en attendant d'etre sur que la methode m\xE8re fonctionne dans tous les cas. */ public boolean removeAtomics(final int _idxGeom, final CtuluListSelectionInterface _sel, final CtuluUI _ui, final CtuluCommandContainer _cmd) { @@ -441,58 +312,4 @@ } return r; } - - public void removeLignes(final int[] _idx, final CtuluCommandContainer _cmd) { - super.geometry_.remove(_idx, _cmd); - } - - public void setCoordinateSequence(final int _idx, final CoordinateSequence _newSeq, final CtuluCommandContainer _cmd) { - final LineString old = (LineString) super.geometry_.getValueAt(_idx); - if (_newSeq != null && _newSeq.size() == old.getNumPoints()) { - final CoordinateSequence seq = GISGeometryFactory.INSTANCE.getCoordinateSequenceFactory().create(_newSeq); - if (old/*.isClosed()*/ instanceof GISPolygone) { - geometry_.setObject(_idx, GISGeometryFactory.INSTANCE.createLinearRing(seq), _cmd); - } else { - GISPolyligne nl = (GISPolyligne)GISGeometryFactory.INSTANCE.createLineString(seq); - geometry_.setObject(_idx, nl, _cmd); - } - } - } - - - /** - * Remplace une ancienne g\xE9om\xE9trie par un nouveau polygone, en interpolant si n\xE9cessaire les attributs. - * @param _idx L'index de la g\xE9ometrie. - * @param _newLine La nouvelle g\xE9om\xE9trie. - * @param _cmd Le container de commandes. - */ - public void setValue(final int _idx, final GISPolygone _newLine, final CtuluCommandContainer _cmd) { - setValueIntern(_idx, _newLine, _cmd); - } - - /** - * Remplace une ancienne g\xE9om\xE9trie par une nouvelle polyligne, en interpolant si n\xE9cessaire les attributs. - * @param _idx L'index de la g\xE9ometrie. - * @param _newLine La nouvelle g\xE9om\xE9trie. - * @param _cmd Le container de commandes. - */ - public void setValue(final int _idx, final GISPolyligne _newLine, final CtuluCommandContainer _cmd) { - setValueIntern(_idx, _newLine, _cmd); - } - - public void updateListeners() { - for (int i = getNbAttributes() - 1; i >= 0; i--) { - final GISAttributeModelListener m = getModelListener(i); - if (m != null) { - if (m.getAttribute().isAtomicValue()) { - for (int j = m.getSize() - 1; j >= 0; j--) { - ((GISAttributeModelListener) m.getObjectValueAt(j)).setListener(this); - } - - } else { - m.setListener(this); - } - } - } - } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java 2008-10-05 22:05:30 UTC (rev 4034) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java 2008-10-06 12:46:31 UTC (rev 4035) @@ -7,33 +7,22 @@ */ package org.fudaa.ctulu.gis; -import gnu.trove.TIntArrayList; import gnu.trove.TIntIntHashMap; -import java.util.Arrays; +import org.fudaa.ctulu.CtuluCommandComposite; +import org.fudaa.ctulu.CtuluCommandContainer; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.CoordinateSequence; import com.vividsolutions.jts.geom.Geometry; -import com.memoire.fu.FuLog; - -import org.fudaa.ctulu.CtuluCommandComposite; -import org.fudaa.ctulu.CtuluCommandContainer; -import org.fudaa.ctulu.CtuluLib; -import org.fudaa.ctulu.CtuluLibArray; -import org.fudaa.ctulu.CtuluLibString; -import org.fudaa.ctulu.CtuluListSelectionInterface; -import org.fudaa.ctulu.CtuluUI; -import org.fudaa.ctulu.collection.CtuluCollectionDouble; - /** * Une collection pour les multipoints. * * @author Bertrand Marchand * @version $Id: GISZoneCollectionMultiPoint.java,v 1.1.2.2 2008-04-01 07:22:48 bmarchan Exp $ */ -public class GISZoneCollectionMultiPoint extends GISZoneCollection { +public class GISZoneCollectionMultiPoint extends GISZoneCollectionGeometry { public GISZoneCollectionMultiPoint() { this(null); @@ -50,119 +39,13 @@ * @param _listener le listener */ public GISZoneCollectionMultiPoint(final GISZoneListener _listener, final GISZoneCollectionMultiPoint _col) { - this(10, _listener); - if (_col != null) { - for (int i = 0; i < _col.getNumGeometries(); i++) { - super.geometry_.add(_col.getGeometry(i), null, null); - } - } + super(_listener,_col); } public GISZoneCollectionMultiPoint(final int _nbObject, final GISZoneListener _listener) { - super(_nbObject); - listener_ = _listener; + super(_nbObject,_listener); } -// private List createListForSeveralAdd(final Object[][] _att, final int _nbGeom) { -// final int nbAttributes = getNbAttributes(); -// final List attListe = new ArrayList(nbAttributes); -// for (int i = 0; i < nbAttributes; i++) { -// final Object[] oi = new Object[_nbGeom]; -// for (int j = 0; j < _nbGeom; j++) { -// oi[j] = _att[j][i]; -// } -// attListe.add(oi); -// } -// return attListe; -// } -// -// /** -// * @param _idx l'indice de la ligne a changer -// * @param _newLine la nouvelle ligne -// * @param _cmd le receveur de commande -// */ -// private void setValueIntern(final int _idx, final LineString _newLine, final CtuluCommandContainer _cmd) { -// if (!isGeomModifiable_) { -// return; -// } -// final LineString old = (LineString) super.geometry_.getValueAt(_idx); -// if (old.getNumPoints() == _newLine.getNumPoints() || !containsAtomicAttribute()) { -// super.geometry_.setObject(_idx, _newLine, _cmd); -// } else { -// final CtuluCommandComposite cmp = new CtuluCommandComposite(); -// for (int i = getNbAttributes() - 1; i >= 0; i--) { -// final GISAttributeInterface att = getAttribute(i); -// if (att.isAtomicValue()) { -// final GISAttributeModel m = (GISAttributeModel) (getModelListener(i).getObjectValueAt(_idx)); -// final GISReprojectInterpolateurI interpolateur = GISZoneAttributeFactory.create1DInterpolateur(att, old, -// _newLine, m); -// getModelListener(i).setObject(_idx, m.deriveNewModel(_newLine.getNumPoints(), interpolateur), cmp); -// } -// } -// super.geometry_.setObject(_idx, _newLine, cmp); -// if (_cmd != null) { -// _cmd.addCmd(cmp.getSimplify()); -// } -// } -// } - - /** - * Cr\xE9e un tableau de valeurs d'attributs.<p> - * - * Les valeurs peuvent \xEAtre globales ou atomiques. - * - * @param _init Les valeurs d'initialisation, dans l'ordre et au nombre des mod\xE8les d'attributs. - * Si null, les valeurs par d\xE9faut sont affect\xE9es (voir {@link GISAttributeInterface#getDefaultValue()}) - * @param _dest La g\xE9ometrie. - * @param _isClosed Param\xE8tre inutilis\xE9. - * @return - */ - protected Object[] createAttributeList(final Object[] _init, final Geometry _dest, final boolean _isClosed) { - final Object[] rf = new Object[getNbAttributes()]; - if (_init != null && _init.length != getNbAttributes()) { - throw new IllegalArgumentException("bad size"); - } - for (int i = getNbAttributes() - 1; i >= 0; i--) { - rf[i]=createOrAssignAttribut(i,_init==null?null:_init[i],_dest); - } - return rf; - } - -// public void addAllLineStringClosedOrNode(final LineString[] _gs, final CtuluCommandContainer _cmd) { -// if (isGeomModifiable_) { -// -// final Object[][] att = new Object[_gs.length][]; -// for (int i = 0; i < _gs.length; i++) { -// att[i] = createAttributeList(null, _gs[i], _gs[i].isClosed()); -// } -// -// geometry_.addAll(_gs, createListForSeveralAdd(att, _gs.length), _cmd); -// } -// } - -// public void addAllPolygones(final GISPolygone[] _gs, final CtuluCommandContainer _cmd) { -// if (isGeomModifiable_) { -// final Object[][] att = new Object[_gs.length][]; -// for (int i = 0; i < _gs.length; i++) { -// att[i] = createAttributeList(null, _gs[i], true); -// } -// geometry_.addAll(_gs, createListForSeveralAdd(att, _gs.length), _cmd); -// } -// } -// -// public void addAllPolylignes(final GISPolyligne[] _gs, final CtuluCommandContainer _cmd) { -// if (isGeomModifiable_) { -// final Object[][] att = new Object[_gs.length][]; -// for (int i = 0; i < _gs.length; i++) { -// att[i] = createAttributeList(null, _gs[i], false); -// } -// geometry_.addAll(_gs, createListForSeveralAdd(att, _gs.length), _cmd); -// } -// } - - /** - * Ne peut \xEAtre utilis\xE9 que si la liste contient des objets GIS homogenes. - */ public void addCoordinateSequence(final CoordinateSequence _seq, final Object[] _data, final CtuluCommandContainer _cmd) { if (_seq == null || _seq.size() < 1) { @@ -176,25 +59,13 @@ public int addGeometry(final Geometry _geom, final Object[] _data, final CtuluCommandContainer _cmd) { if (!(_geom instanceof GISMultiPoint)) throw new IllegalArgumentException("Bad type geometry"); - - if (isGeomModifiable_) { - Object[] atts = createAttributeList(_data, _geom, true); - geometry_.add(_geom, Arrays.asList(atts), _cmd); - return geometry_.getSize() - 1; - } - return -1; + + return super.addGeometry(_geom, _data, _cmd); } - public boolean accept(final GISVisitor _v) { - final int nb = getNumGeometries(); - for (int i = 0; i < nb; i++) { - if (!((GISMultiPoint) getGeometry(i)).accept(_v)) { - return false; - } - } - return true; - } - + /* + * Le sommet est ajout\xE9 sans interpolation des valeurs atomiques. + */ public void addAtomic(final int _idxGeom, final int _idxBefore, final double _x, final double _y, final CtuluCommandContainer _cmd) { if (!isGeomModifiable_) { @@ -237,265 +108,10 @@ } } - /** - * @param _idxGeom l'indice de la g\xE9om\xE9trie a remplacer - * @param _geom la nouvelle g\xE9ometrie - * @param _cmd le receveur de commande - */ - public void setGeometry(final int _idxGeom, final Geometry _geom, final CtuluCommandContainer _cmd) { - if (!isGeomModifiable_) { - return; - } - final Geometry old = (Geometry) super.geometry_.getValueAt(_idxGeom); - if (old.getNumPoints() == _geom.getNumPoints() || !containsAtomicAttribute()) { - super.geometry_.setObject(_idxGeom, _geom, _cmd); - } else { - final CtuluCommandComposite cmp = new CtuluCommandComposite(); - for (int i = getNbAttributes() - 1; i >= 0; i--) { - final GISAttributeInterface att = getAttribute(i); - if (att.isAtomicValue()) { - final GISAttributeModel m = (GISAttributeModel) (getModelListener(i).getObjectValueAt(_idxGeom)); - final GISReprojectInterpolateurI interpolateur = GISZoneAttributeFactory.create1DInterpolateur(att, - (GISCoordinateSequenceContainerInterface)old, - (GISCoordinateSequenceContainerInterface)_geom, m); - getModelListener(i).setObject(_idxGeom, m.deriveNewModel(_geom.getNumPoints(), interpolateur), cmp); - } - } - super.geometry_.setObject(_idxGeom, _geom, cmp); - if (_cmd != null) { - _cmd.addCmd(cmp.getSimplify()); - } - } - } - - public CoordinateSequence getCoordinateSequence(final int _i) { - if (!(getGeometry(_i) instanceof GISMultiPoint)) return null; - return ((GISMultiPoint) getGeometry(_i)).getCoordinateSequence(); - } - public Class getDataStoreClass() { return GISMultiPoint.class; } - public double getDoubleValue(final int _idxAtt, final int _idxGeom) { - if (getAttribute(_idxAtt).isAtomicValue()) { - return CtuluLibArray.getMoyenne(((CtuluCollectionDouble) getModel(_idxAtt).getObjectValueAt(_idxGeom)).getValues()); - } - return ((CtuluCollectionDouble) getModel(_idxAtt)).getValue(_idxGeom); - } - - public void setCoordinateSequence(final int _idx, final CoordinateSequence _newSeq, final CtuluCommandContainer _cmd) { - final Geometry old = (Geometry) super.geometry_.getValueAt(_idx); - if (_newSeq != null && _newSeq.size() == old.getNumPoints()) { - final CoordinateSequence seq = GISGeometryFactory.INSTANCE.getCoordinateSequenceFactory().create(_newSeq); - geometry_.setObject(_idx, GISGeometryFactory.INSTANCE.createMultiPoint(seq), _cmd); - } - } - - public void updateListeners() { - for (int i = getNbAttributes() - 1; i >= 0; i--) { - final GISAttributeModelListener m = getModelListener(i); - if (m != null) { - if (m.getAttribute().isAtomicValue()) { - for (int j = m.getSize() - 1; j >= 0; j--) { - ((GISAttributeModelListener) m.getObjectValueAt(j)).setListener(this); - } - - } else { - m.setListener(this); - } - } - } - } - -// /** -// * @todo Les poly de niveau sont mal trait\xE9es -// */ -// public void addPoint(final int _ligneIdx, final int _idxBefore, final double _x, final double _y, -// final CtuluCommandContainer _cmd) { -// if (!isGeomModifiable_) { -// return; -// } -// LineString str = (LineString) super.geometry_.getValueAt(_ligneIdx); -// final CoordinateSequence newSeq = str.getCoordinateSequence(); -// final int initSize = newSeq.size(); -// final Coordinate[] cs = new Coordinate[initSize + 1]; -// int idx = 0; -// for (int i = 0; i < initSize; i++) { -// cs[idx++] = newSeq.getCoordinateCopy(i); -// if (i == _idxBefore) { -// cs[idx++] = new Coordinate(_x, _y, newSeq.getOrdinate(i, 2)); -// } -// } -// -// if (str/*.isClosed()*/ instanceof GISPolygone) { -// str = GISGeometryFactory.INSTANCE.createLinearRing(cs); -// setValue(_ligneIdx, (GISPolygone) str, _cmd); -// } -// else if (str instanceof GISPolyligne) { -// boolean breliee=((GISPolyligne)str).isReliee(); -// str = GISGeometryFactory.INSTANCE.createLineString(cs); -// ((GISPolyligne)str).setReliee(breliee); -// setValue(_ligneIdx, (GISPolyligne) str, _cmd); -// } -// } - -/* public void addPolygone(final CoordinateSequence _g, final CtuluCommandContainer _cmd) { - addPolygone((GISPolygone) GISGeometryFactory.INSTANCE.createLinearRing(_g), _cmd); - } - - public void addPolygone(final CoordinateSequence _g, final Object[] _data, final CtuluCommandContainer _cmd) { - addPolygone((GISPolygone) GISGeometryFactory.INSTANCE.createLinearRing(_g), _data, _cmd); - } - - public void addPolygone(final GISPolygone _g, final CtuluCommandContainer _cmd) { - addPolygone(_g, null, _cmd); - } - - public void addPolygone(final GISPolygone _g, final Object[] _data, final CtuluCommandContainer _cmd) { - if (isGeomModifiable_) { - super.geometry_.add(_g, Arrays.asList(createAttributeList(_data, _g, true)), _cmd); - } - } - - public void addPolygoneNiveau(final CoordinateSequence _g, final CtuluCommandContainer _cmd) { - addPolygone((GISPolygone) GISGeometryFactory.INSTANCE.createLinearRingNiveau(_g), _cmd); - }*/ - - /** - * Ajoute une polyligne sous forme d'une liste de coordonn\xE9es, avec attributs et gestionnaire de commandes. - * @param _g La liste de coordonn\xE9es, renseign\xE9e en Z. - * @param _data Les attributs, dans l'ordre dans lequel ils sont d\xE9finis dans la collection. - * @param _cmd Le gestionnaire de commandes. Peut \xEAtre null. - */ -/* public void addPolyligne(final CoordinateSequence _g, final Object[] _data, final CtuluCommandContainer _cmd) { - addPolyligne((GISPolyligne) GISGeometryFactory.INSTANCE.createLineString(_g), _data, _cmd); - } - - public void addPolyligne(final GISCoordinateSequence _g, final CtuluCommandContainer _cmd) { - addPolyligne((GISPolyligne) GISGeometryFactory.INSTANCE.createLineString(_g), _cmd); - } - - public void addPolyligne(final GISPolyligne _g, final CtuluCommandContainer _cmd) { - addPolyligne(_g, null, _cmd); - }*/ - - /** - * Ajoute une polyligne, avec attributs et gestionnaire de commandes. - * @param _g La polyligne, renseign\xE9e en Z. - * @param _data Les attributs, dans l'ordre dans lequel ils sont d\xE9finis dans la collection. - * @param _cmd Le gestionnaire de commandes. Peut \xEAtre null. - */ -/* public void addPolyligne(final GISPolyligne _g, final Object[] _data, final CtuluCommandContainer _cmd) { - if (isGeomModifiable_) { - super.geometry_.add(_g, Arrays.asList(createAttributeList(_data, _g, false)), _cmd); - } - } - - public void addMultiPoint(final GISMultiPoint _g, final Object[] _data, final CtuluCommandContainer _cmd) { - if (isGeomModifiable_) { - super.geometry_.add(_g, Arrays.asList(createAttributeList(_data, _g, false)), _cmd); - } - }*/ - -// public void addPolyligneNiveau(final GISCoordinateSequence _g, final CtuluCommandContainer _cmd) { -// addPolyligne((GISPolyligne) GISGeometryFactory.INSTANCE.createLineStringNiveau(_g), _cmd); -// } - - public boolean containsAtomicAttribute() { - for (int i = getNbAttributes() - 1; i >= 0; i--) { - if (getAttribute(i).isAtomicValue()) { - return true; - } - } - return false; - } - - /** - * Supprime des sommets sur une g\xE9om\xE9trie. - * @param _idxGeom L'indice de la g\xE9om\xE9trie. - * @param _sel La liste des sommets s\xE9lectionn\xE9s. - * @param _ui L'interface utilisateur. - * @param _cmd Le manager de commandes. - * @return true si tout s'est bien pass\xE9. - */ - public boolean removeAtomics(final int _idxGeom, final CtuluListSelectionInterface _sel, final CtuluUI _ui, - final CtuluCommandContainer _cmd) { - if (_sel == null || _sel.isEmpty()) { - return false; - } - boolean r = true; - final Geometry old = (Geometry) getGeometry(_idxGeom); - int nbPt = old.getNumPoints(); - - // Raccourci si tous les sommets sont s\xE9lectionn\xE9s. - int nbSel=_sel.getNbSelectedIndex(); - if (nbSel==nbPt) { - removeGeometries(new int[]{_idxGeom}, _cmd); - return true; - } - - // les nouvelles coordonnees. - final Coordinate[] newCs = new Coordinate[nbPt-nbSel]; - // cette liste contient les indice a enlever : creee que si necessaire - // si des attribute atomics existent - final TIntArrayList idxToRemove = containsAtomicAttribute() ? new TIntArrayList(nbPt-nbSel) : null; - - // compteur tempo - int count = 0; - for (int idxPt = 0; idxPt < nbPt; idxPt++) { - if (_sel.isSelected(idxPt)) { - if (idxToRemove != null) { - idxToRemove.add(idxPt); - } - } else { - newCs[count++] = ((GISCoordinateSequenceContainerInterface)old).getCoordinateSequence().getCoordinate(idxPt); - } - } - GISMultiPoint newGeom=null; - if (count<1) { - r=false; - if (_ui!=null) { - _ui.error(null, CtuluLib.getS("La ligne non reliee doit contenir {0} points au moins", CtuluLibString.UN), false); - } - if (FuLog.isTrace()) { - FuLog.trace("EBLI: polylignes: not enough points"); - // message - } - } - else { -// final Coordinate[] coord=new Coordinate[count]; -// System.arraycopy(newCs, 0, coord, 0, coord.length); - newGeom=(GISMultiPoint)GISGeometryFactory.INSTANCE.createMultiPoint(newCs); - newGeom.setUserData(old.getUserData()); - } - - if (r) { - CtuluCommandComposite cmp=new CtuluCommandComposite(); - super.geometry_.setObject(_idxGeom, newGeom, cmp); - // si des attributs atomics sont concerne - if (idxToRemove != null && idxToRemove.size() > 0) { - final int[] idx = idxToRemove.toNativeArray(); - Arrays.sort(idx); - for (int i = getNbAttributes() - 1; i >= 0; i--) { - // attribut atomic - if (getAttribute(i).isAtomicValue()) { - // dans ce cas on recupere le model contenant cet attribut - final GISAttributeModel m = getModelListener(i); - // on recupere le sous-model concerne par la modif de geometrie - final GISAttributeModel atomicModel = (GISAttributeModel) m.getObjectValueAt(_idxGeom); - // on le change - m.setObject(_idxGeom, atomicModel.createSubModel(idx), cmp); - } - } - } - if (_cmd!=null) { - _cmd.addCmd(cmp.getSimplify()); - } - } - return r; - } - public boolean addAll(final GISDataModel _model, final CtuluCommandContainer _cmd, final boolean _doPostImport) { if (!isGeomModifiable_ || _model == null) { return false; @@ -507,16 +123,4 @@ } return super.addAll(_model, _cmd, _doPostImport); } - -// public void removeLignes(final int[] _idx, final CtuluCommandContainer _cmd) { -// super.geometry_.remove(_idx, _cmd); -// } -// -// public void setValue(final int _idx, final GISPolygone _newLine, final CtuluCommandContainer _cmd) { -// setValueIntern(_idx, _newLine, _cmd); -// } -// -// public void setValue(final int _idx, final GISPolyligne _newLine, final CtuluCommandContainer _cmd) { -// setValueIntern(_idx, _newLine, _cmd); -// } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-10-05 22:05:30 UTC (rev 4034) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-10-06 12:46:31 UTC (rev 4035) @@ -269,7 +269,7 @@ GrPoint point = (new GrSegment(new GrPoint(g.getX(_idxBefore), g.getY(_idxBefore), 0), new GrPoint(g.getX(_idxBefore + 1), g.getY(_idxBefore + 1), 0))) .pointPlusProche(new GrPoint(_x, _y, 0)); - geometries_.addPoint(_ligneIdx, _idxBefore, point.x_, point.y_, _cmd); + geometries_.addAtomic(_ligneIdx, _idxBefore, point.x_, point.y_, _cmd); } /** @@ -333,7 +333,7 @@ } // Remplacement dans la collection. - geometries_.removeLignes(new int[]{_ligneIdx}, cmp); + geometries_.removeGeometries(new int[]{_ligneIdx}, cmp); geometries_.addPolyligne((GISPolyligne)GISGeometryFactory.INSTANCE.createLineString(cline1), dataline1, cmp); geometries_.addPolyligne((GISPolyligne)GISGeometryFactory.INSTANCE.createLineString(cline2), dataline2, cmp); @@ -432,7 +432,7 @@ // Remplacement dans la collection. geometries_.addPolyligne((GISPolyligne)GISGeometryFactory.INSTANCE.createLineString(cline), dataline, cmp); - geometries_.removeLignes(_ligneIdx, cmp); + geometries_.removeGeometries(_ligneIdx, cmp); if (_cmd != null) { _cmd.addCmd(cmp.getSimplify()); @@ -526,11 +526,11 @@ if (isGeometryFermee(i)) { final GISPolygone poly = (GISPolygone) GISGeometryFactory.INSTANCE.createLinearRing(newSeq); - geometries_.setValue(i, poly, cmp); + geometries_.setGeometry(i, poly, cmp); } else { final GISPolyligne poly = (GISPolyligne) GISGeometryFactory.INSTANCE.createLineString(newSeq); - geometries_.setValue(i, poly, cmp); + geometries_.setGeometry(i, poly, cmp); } } } @@ -605,7 +605,7 @@ } return false; } - geometries_.setValue(idx, poly, cmp); + geometries_.setGeometry(idx, poly, cmp); } else { final GISPolyligne poly = (GISPolyligne) GISGeometryFactory.INSTANCE.createLineString(newSeq); @@ -615,7 +615,7 @@ } return false; } - geometries_.setValue(idx, poly, cmp); + geometries_.setGeometry(idx, poly, cmp); } if (newvals!=null) @@ -661,11 +661,11 @@ } if (isGeometryFermee(i)) { final GISPolygone poly = (GISPolygone) GISGeometryFactory.INSTANCE.createLinearRing(newSeq); - geometries_.setValue(i, poly, cmp); + geometries_.setGeometry(i, poly, cmp); } else { final GISPolyligne poly = (GISPolyligne) GISGeometryFactory.INSTANCE.createLineString(newSeq); - geometries_.setValue(i, poly, cmp); + geometries_.setGeometry(i, poly, cmp); } } } @@ -727,7 +727,7 @@ } return false; } - geometries_.setValue(idx, poly, cmp); + geometries_.setGeometry(idx, poly, cmp); } else { final GISPolyligne poly = (GISPolyligne) GISGeometryFactory.INSTANCE.createLineString(newSeq); @@ -737,7 +737,7 @@ } return false; } - geometries_.setValue(idx, poly, cmp); + geometries_.setGeometry(idx, poly, cmp); } } } @@ -758,7 +758,7 @@ if (geometries_ == null) { return false; } - geometries_.removeLignes(_idx, _cmd); + geometries_.removeGeometries(_idx, _cmd); for(int i=0 ; i<_idx.length;i++) setGeomModif(_idx[i], _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie return true; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java 2008-10-05 22:05:30 UTC (rev 4034) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java 2008-10-06 12:46:31 UTC (rev 4035) @@ -225,7 +225,7 @@ } GISPolyligne newgeom=(GISPolyligne)GISGeometryFactory.INSTANCE.createLineString((Coordinate[])coords.toArray(new Coordinate[0])); - geometries_.setValue(_idxGeom, newgeom, _cmd); + geometries_.setGeometry(_idxGeom, newgeom, _cmd); setGeomModif(_idxGeom, _cmd); // Modification de l'etat de la g\xE9om\xE9trie return true; } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigLineSingleModel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigLineSingleModel.java 2008-10-05 22:05:30 UTC (rev 4034) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigLineSingleModel.java 2008-10-06 12:46:31 UTC (rev 4035) @@ -53,7 +53,7 @@ public final void setLine(final LineString _r) { if (geom_.getNumGeometries() > 0) { - geom_.removeLignes(new int[] { 0 }, null); + geom_.removeGeometries(new int[] { 0 }, null); } r_ = _r; geom_.addCoordinateSequence(r_.getCoordinateSequence(), null, null); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiProfilLayer.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiProfilLayer.java 2008-10-05 22:05:30 UTC (rev 4034) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiProfilLayer.java 2008-10-06 12:46:31 UTC (rev 4035) @@ -364,7 +364,7 @@ } if (!l.containsLegend(this)) { l.ajoute(this, buildPanel(null), getTitle()); - if (getModelePoly().getNombre() == 0) { + if (modeleDonnees().getNombre() == 0) { l.setVisible(this, false); } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiProfileSplitter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiProfileSplitter.java 2008-10-05 22:05:30 UTC (rev 4034) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiProfileSplitter.java 2008-10-06 12:46:31 UTC (rev 4035) @@ -346,7 +346,7 @@ zonei = GISGeometryFactory.INSTANCE.createPolygon(ringi, null); } else { final int idx = _zone.indexOf(ringi.lit_); - _zone.removeLignes(new int[] { idx }, null); + _zone.removeGeometries(new int[] { idx }, null); zonei = GISGeometryFactory.INSTANCE.createPolygon(ringi.lit_, null); envi = ringi.lit_.getEnvelopeInternal(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-10-07 14:15:50
|
Revision: 4042 http://fudaa.svn.sourceforge.net/fudaa/?rev=4042&view=rev Author: bmarchan Date: 2008-10-07 14:14:47 +0000 (Tue, 07 Oct 2008) Log Message: ----------- MdlModelGeometry -> ZModeleGeometryDefault Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectionPanel.java Added Paths: ----------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleGeometryDefault.java Removed Paths: ------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModelGeometry.java Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleGeometryDefault.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleGeometryDefault.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleGeometryDefault.java 2008-10-07 14:14:47 UTC (rev 4042) @@ -0,0 +1,133 @@ +/* + * @creation 20 janv. 08 + * @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.ebli.calque.edition; + +import org.fudaa.ctulu.gis.GISAttributeConstants; +import org.fudaa.ctulu.gis.GISCoordinateSequenceContainerInterface; +import org.fudaa.ctulu.gis.GISZoneCollection; +import org.fudaa.ctulu.gis.GISZoneCollectionGeometry; +import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; +import org.fudaa.ebli.calque.ZModeleGeometry; +import org.fudaa.ebli.geometrie.GrBoite; +import org.fudaa.ebli.geometrie.GrPoint; +import org.fudaa.ebli.palette.BPaletteInfo.InfoData; + +import com.memoire.bu.BuTable; +import com.memoire.fu.FuLog; +import com.vividsolutions.jts.geom.CoordinateSequence; +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.LineString; + +/** + * Une impl\xE9mentation par defaut d'un mod\xE8le contenant des g\xE9om\xE9tries de tous types. + * @author Bertrand Marchand + * @version $Id$ + */ +public class ZModeleGeometryDefault implements ZModeleGeometry { + protected GISZoneCollectionGeometry geometries_; + + /** + * Constructeur + */ + public ZModeleGeometryDefault() { + geometries_=new GISZoneCollectionGeometry(); + } + + public void getDomaineForGeometry(int _idxGeom, GrBoite _target) { + if (geometries_ == null || geometries_.getNumGeometries() == 0) { + return; + } + final Geometry g = geometries_.getGeometry(_idxGeom); + final Envelope e = g.getEnvelopeInternal(); + if (_target.o_ == null) { + _target.o_ = new GrPoint(); + } + if (_target.e_ == null) { + _target.e_ = new GrPoint(); + } + if (e != null && !e.isNull()) { + _target.o_.x_ = e.getMinX(); + _target.o_.y_ = e.getMinY(); + _target.e_.x_ = e.getMaxX(); + _target.e_.y_ = e.getMaxY(); + } + } + + public int getNbPointForGeometry(int _idxGeom) { + if (geometries_ == null) { + return 0; + } + final Geometry gi = geometries_.getGeometry(_idxGeom); + return gi.getNumPoints(); + } + + public final boolean isGeometryReliee(final int _idxGeom) { + Geometry g=getGeomData().getGeometry(_idxGeom); + return (g instanceof LineString); + } + + public final boolean isGeometryFermee(final int _idxGeom) { + Geometry g=getGeomData().getGeometry(_idxGeom); + return (g instanceof LineString && ((LineString)g).isClosed()); + } + + public boolean isGeometryVisible(int _idxGeom) { + int iattVisibility=geometries_.getIndiceOf(GISAttributeConstants.VISIBILITE); + if (iattVisibility==-1) return true; + + return GISAttributeConstants.ATT_VAL_TRUE.equals(geometries_.getValue(iattVisibility, _idxGeom)); + } + + public boolean point(GrPoint _pt, int _idxGeom, int _pointIdx) { + // Pour des multipoints, on s'appuie sur la m\xE9thode GISMultiPoint.getCoordinateSequence() cr\xE9\xE9e pour l'occasion et non + // GISMultiPoint.getCoordinates() pour r\xE9cuperer les coordonn\xE9es d'un point. En effet, recup\xE9rer le tableau des coordonn\xE9es + // s'av\xE8re terriblement penalisant pour l'affichage. + final CoordinateSequence g=((GISCoordinateSequenceContainerInterface)geometries_.getGeometry(_idxGeom)).getCoordinateSequence(); + _pt.x_ = g.getX(_pointIdx); + _pt.y_ = g.getY(_pointIdx); + return true; + } + + public GISZoneCollection getGeomData() { + return geometries_; + } + + public void prepareExport() { + geometries_.prepareExport(); + } + + public BuTable createValuesTable(ZCalqueAffichageDonneesInterface _layer) { + return null; + } + + public void fillWithInfo(InfoData _d, ZCalqueAffichageDonneesInterface _layer) {} + + public GrBoite getDomaine() { + if (geometries_ == null || geometries_.getNumGeometries() == 0) { + return null; + } + final Envelope e = geometries_.getEnvelopeInternal(); + if (e == null) { + return null; + } + return new GrBoite(new GrPoint(e.getMinX(), e.getMinY(), 0), new GrPoint(e.getMaxX(), e.getMaxY(), 0)); + } + + public final int getNombre() { + return geometries_ == null ? 0 : geometries_.getNumGeometries(); + } + + public final Object getObject(final int _ind) { + return geometries_ == null ? null : geometries_.getGeometry(_ind); + } + + public boolean isValuesTableAvailable() { + return false; + } +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleGeometryDefault.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Added: svn:eol-style + native Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectionPanel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectionPanel.java 2008-10-07 14:12:32 UTC (rev 4041) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectionPanel.java 2008-10-07 14:14:47 UTC (rev 4042) @@ -29,6 +29,7 @@ import org.fudaa.ebli.calque.ZCalqueGeometry; import org.fudaa.ebli.calque.ZEbliCalquesPanel; import org.fudaa.ebli.calque.ZModeleGeometry; +import org.fudaa.ebli.calque.edition.ZModeleGeometryDefault; import org.fudaa.ebli.geometrie.GrBoite; import org.fudaa.ebli.trace.TraceIcon; import org.fudaa.ebli.trace.TraceIconModel; @@ -36,7 +37,6 @@ import org.fudaa.ebli.trace.TraceLigneModel; import org.fudaa.ebli.trace.TraceSurface; import org.fudaa.ebli.trace.TraceSurfaceModel; -import org.fudaa.fudaa.modeleur.layer.MdlModelGeometry; import org.fudaa.fudaa.sig.FSigLib; import org.fudaa.fudaa.tr.common.TrResource; @@ -117,7 +117,7 @@ return; } - MdlModelGeometry mdl=new MdlModelGeometry(); + ZModeleGeometryDefault mdl=new ZModeleGeometryDefault(); support_=mdl.getGeomData(); for (int i=0; i<_geoms.length; i++) { Deleted: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModelGeometry.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModelGeometry.java 2008-10-07 14:12:32 UTC (rev 4041) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModelGeometry.java 2008-10-07 14:14:47 UTC (rev 4042) @@ -1,135 +0,0 @@ -/* - * @creation 20 janv. 08 - * @modification $Date: 2008/02/21 19:41:56 $ - * @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.ctulu.gis.GISAttributeDouble; -import org.fudaa.ctulu.gis.GISCoordinateSequenceContainerInterface; -import org.fudaa.ctulu.gis.GISMultiPoint; -import org.fudaa.ctulu.gis.GISZoneCollection; -import org.fudaa.ctulu.gis.GISZoneCollectionGeometry; -import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; -import org.fudaa.ctulu.gis.GISZoneListener; -import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; -import org.fudaa.ebli.calque.ZModeleGeometry; -import org.fudaa.ebli.calque.edition.ZModeleLigneBriseeEditable; -import org.fudaa.ebli.geometrie.GrBoite; -import org.fudaa.ebli.geometrie.GrPoint; -import org.fudaa.ebli.palette.BPaletteInfo.InfoData; -import org.fudaa.fudaa.modeleur.MdlResource; -import org.fudaa.fudaa.sig.FSigResource; - -import com.memoire.bu.BuTable; -import com.vividsolutions.jts.geom.CoordinateSequence; -import com.vividsolutions.jts.geom.Envelope; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.LineString; - -/** - * Un mod\xE8le contenant des g\xE9om\xE9tries de tous types, pour repr\xE9sentation unique. - * @author Bertrand Marchand - * @version $Id: MdlModel2dLevel.java,v 1.1.2.6 2008/02/21 19:41:56 bmarchan Exp $ - */ -public class MdlModelGeometry implements ZModeleGeometry { - GISZoneCollectionGeometry geometries_; - - /** - * Constructeur - */ - public MdlModelGeometry() { - geometries_=new GISZoneCollectionGeometry(); - } - - public void getDomaineForGeometry(int _idxGeom, GrBoite _target) { - if (geometries_ == null || geometries_.getNumGeometries() == 0) { - return; - } - final Geometry g = geometries_.getGeometry(_idxGeom); - final Envelope e = g.getEnvelopeInternal(); - if (_target.o_ == null) { - _target.o_ = new GrPoint(); - } - if (_target.e_ == null) { - _target.e_ = new GrPoint(); - } - if (e != null && !e.isNull()) { - _target.o_.x_ = e.getMinX(); - _target.o_.y_ = e.getMinY(); - _target.e_.x_ = e.getMaxX(); - _target.e_.y_ = e.getMaxY(); - } - } - - public int getNbPointForGeometry(int _idxGeom) { - if (geometries_ == null) { - return 0; - } - final Geometry gi = geometries_.getGeometry(_idxGeom); - return gi.getNumPoints(); - } - - public final boolean isGeometryReliee(final int _idxGeom) { - Geometry g=getGeomData().getGeometry(_idxGeom); - return (g instanceof LineString); - } - - public final boolean isGeometryFermee(final int _idxGeom) { - Geometry g=getGeomData().getGeometry(_idxGeom); - return (g instanceof LineString && ((LineString)g).isClosed()); - } - - public boolean isGeometryVisible(int _idxGeom) { - return true; - } - - public boolean point(GrPoint _pt, int _idxGeom, int _pointIdx) { - final CoordinateSequence g=((GISCoordinateSequenceContainerInterface)geometries_.getGeometry(_idxGeom)).getCoordinateSequence(); - _pt.x_ = g.getX(_pointIdx); - _pt.y_ = g.getY(_pointIdx); - return true; - } - - public GISZoneCollection getGeomData() { - return geometries_; - } - - public void prepareExport() { - geometries_.prepareExport(); - } - - public BuTable createValuesTable(ZCalqueAffichageDonneesInterface _layer) { - return null; - } - - public void fillWithInfo(InfoData _d, ZCalqueAffichageDonneesInterface _layer) {} - - public GrBoite getDomaine() { - if (geometries_ == null || geometries_.getNumGeometries() == 0) { - return null; - } - final Envelope e = geometries_.getEnvelopeInternal(); - if (e == null) { - return null; - } - return new GrBoite(new GrPoint(e.getMinX(), e.getMinY(), 0), new GrPoint(e.getMaxX(), e.getMaxY(), 0)); - } - - public final int getNombre() { - return geometries_ == null ? 0 : geometries_.getNumGeometries(); - } - - public final Object getObject(final int _ind) { - return geometries_ == null ? null : geometries_.getGeometry(_ind); - } - - public boolean isValuesTableAvailable() { - return false; - } -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-10-07 14:17:20
|
Revision: 4043 http://fudaa.svn.sourceforge.net/fudaa/?rev=4043&view=rev Author: bmarchan Date: 2008-10-07 14:16:16 +0000 (Tue, 07 Oct 2008) Log Message: ----------- Am?\195?\169lioration sur attribut VISIBILITY Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dTrace.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dCloud.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dConstraintLine.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dContour.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dDirectionLine.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLevel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dZone.java Property Changed: ---------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dTrace.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dCloud.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dConstraintLine.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dContour.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dDirectionLine.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLevel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dZone.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2008-10-07 14:14:47 UTC (rev 4042) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2008-10-07 14:16:16 UTC (rev 4043) @@ -1,6 +1,6 @@ /* * @creation 7 avr. 2005 - * @modification $Date: 2008-03-28 14:58:56 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail de...@fu... @@ -8,6 +8,7 @@ package org.fudaa.ctulu.gis; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import org.fudaa.ctulu.CtuluLibString; @@ -18,12 +19,14 @@ import com.memoire.fu.FuLib; /** - * Des constantes pour les attributs associables \xE0 des objets GIS. Les attributs constants sont en - * principe des attributs programme (non construits par l'utilisateur). Dans ce cas, leur ID est - * ind\xE9pendant de la langue pour \xEAtre correctement sauv\xE9 dans les fichiers GML. + * Une classe pour d\xE9finir des attributs syst\xE8mes associables \xE0 des objets GIS. Les attributs syst\xE8mes + * sont en principe des attributs programme (non construits par l'utilisateur). Le systeme connait + * ces attributs sp\xE9cifiques, et peut r\xE9agir en cons\xE9quence.<p> + * L'ID de chacun de ces attributs est ind\xE9pendant de la langue pour \xEAtre correctement sauv\xE9 dans + * les fichiers GML. * * @author Fred Deniger - * @version $Id: GISAttributeConstants.java,v 1.14.8.3 2008-03-28 14:58:56 bmarchan Exp $ + * @version $Id$ */ public final class GISAttributeConstants { @@ -31,84 +34,11 @@ public final static String ATT_VAL_ETAT_MODI="MODI"; /** Etat geom origine */ public final static String ATT_VAL_ETAT_ORIG="ORIG"; + /** Une valeur d'attribut valant True */ + public final static String ATT_VAL_TRUE="T"; + /** Une valeur d'attribut valant False */ + public final static String ATT_VAL_FALSE="F"; - private GISAttributeConstants() { - - } - - public static String toString(final GISAttributeInterface _att) { - if (_att == TITRE || _att == BATHY || _att == NATURE || _att == ETAT_GEOM) { - return _att.getID(); - } - final String attributeSep = getAttributeSep(); - return _att.getDataClass().getName() + attributeSep + FuLib.replace(_att.getName(), attributeSep, "_") - + attributeSep + CtuluLibString.toString(_att.isAtomicValue()); - } - - private static String getAttributeSep() { - return "|"; - } - - public static GISAttributeInterface getConstantAttribute(final String _saveName) { - if (TITRE.getID().equals(_saveName)) { - return TITRE; - } - if (BATHY.getID().equals(_saveName)) { - return BATHY; - } - if (NATURE.getID().equals(_saveName)) { - return NATURE; - } - if (ETAT_GEOM.getID().equals(_saveName)) { - return ETAT_GEOM; - } - return null; - } - - public static GISAttributeInterface restoreFrom(final String _s) { - GISAttributeInterface res = getConstantAttribute(_s); - if (res != null) { - return res; - } - final String[] s = CtuluLibString.parseString(_s, getAttributeSep()); - if (s == null || s.length != 3) { - return null; - } - final String clazz = s[0]; - final String name = s[1]; - final boolean atomic = CtuluLibString.toBoolean(s[2]); - if (clazz.equals(Double.class.getName())) { - res = new GISAttributeDouble(name, atomic); - if (BATHY.isSameContent(res)) { - res = BATHY; - } - } else if (clazz.equals(Integer.class.getName())) { - res = new GISAttributeInteger(name, atomic); - } else { - res = new GISAttributeString(name, atomic); - if (TITRE.isSameContent(res)) { - res = TITRE; - } - else if (NATURE.isSameContent(res)) { - res = NATURE; - } - } - - return res; - } - - public static List<GISAttribute> getDefaults() { - final ArrayList<GISAttribute> l = new ArrayList<GISAttribute>(2); - l.add(BATHY); - l.add(TITRE); - l.add(NATURE); - return l; - } - - public static boolean isConstant(final GISAttributeInterface _att) { - return _att == TITRE || _att == BATHY || _att == NATURE; - } - /** * Un attribut nom, global. */ @@ -154,7 +84,9 @@ /** * Un attribut etat, global a la g\xE9om\xE9trie. */ - public final static GISAttributeString ETAT_GEOM=new GISAttributeString(new CtuluValueEditorChoice(new String[]{ATT_VAL_ETAT_ORIG, ATT_VAL_ETAT_MODI}, new String[]{CtuluLib.getS("Origine"), CtuluLib.getS("Modifi\xE9")}), CtuluLib.getS("Etat"), false) { + public final static GISAttributeString ETAT_GEOM= + new GISAttributeString(new CtuluValueEditorChoice(new String[]{ATT_VAL_ETAT_ORIG, ATT_VAL_ETAT_MODI}, + new String[]{CtuluLib.getS("Origine"), CtuluLib.getS("Modifi\xE9")}), CtuluLib.getS("Etat"), false) { public String getID() { return "ATTRIBUTE_ETAT_GEOM"; } @@ -171,7 +103,10 @@ /** * Un attribut visibilit\xE9, global a la g\xE9om\xE9trie. */ - public final static GISAttributeBoolean VISIBILITE = new GISAttributeBoolean(CtuluLib.getS("Visibilit\xE9")) { + public final static GISAttributeString VISIBILITE = + new GISAttributeString(new CtuluValueEditorChoice(new String[]{ATT_VAL_TRUE, ATT_VAL_FALSE}, + new String[]{CtuluLib.getS("Oui"), CtuluLib.getS("Non")}), CtuluLib.getS("Visibilit\xE9"), false) { + public String getID() { return "ATTRIBUTE_VISIBILITY"; } @@ -181,7 +116,7 @@ } public Object getDefaultValue() { - return Boolean.TRUE; + return ATT_VAL_TRUE; } }; @@ -193,7 +128,94 @@ public String getID() { return "ATTRIBUTE_Z"; } - }; + /** La liste des attributs syst\xE8mes. */ + protected final static List<GISAttribute> attrs_= + Arrays.asList(new GISAttribute[]{BATHY,TITRE,NATURE,VISIBILITE,ETAT_GEOM}); + + private GISAttributeConstants() {} + + public static String toString(final GISAttributeInterface _att) { + for (GISAttributeInterface att: attrs_) { + if (_att==att) return _att.getID(); + } + final String attributeSep = getAttributeSep(); + return _att.getDataClass().getName() + attributeSep + FuLib.replace(_att.getName(), attributeSep, "_") + + attributeSep + CtuluLibString.toString(_att.isAtomicValue()); + } + + private static String getAttributeSep() { + return "|"; + } + + /** + * Retourne l'attribut syst\xE8me a partir de son identifiant. + * @param _idName L'identifiant. + * @return L'attribut syst\xE8me, ou null si aucun ne correspond a l'identifiant. + */ + public static GISAttributeInterface getConstantAttribute(final String _idName) { + for (GISAttributeInterface att: attrs_) { + if (att.getID().equals(_idName)) return att; + } + return null; + } + + public static GISAttributeInterface restoreFrom(final String _s) { + GISAttributeInterface res = getConstantAttribute(_s); + if (res != null) { + return res; + } + final String[] s = CtuluLibString.parseString(_s, getAttributeSep()); + if (s == null || s.length != 3) { + return null; + } + final String clazz = s[0]; + final String name = s[1]; + final boolean atomic = CtuluLibString.toBoolean(s[2]); + if (clazz.equals(Double.class.getName())) { + res = new GISAttributeDouble(name, atomic); + if (BATHY.isSameContent(res)) { + res = BATHY; + } + } else if (clazz.equals(Integer.class.getName())) { + res = new GISAttributeInteger(name, atomic); + } else { + res = new GISAttributeString(name, atomic); + if (TITRE.isSameContent(res)) { + res = TITRE; + } + else if (NATURE.isSameContent(res)) { + res = NATURE; + } + else if (ETAT_GEOM.isSameContent(res)) { + res = ETAT_GEOM; + } + else if (VISIBILITE.isSameContent(res)) { + res = VISIBILITE; + } + } + + return res; + } + + /** + * Retourne la liste des attributs syst\xE8mes. + * @return La liste. + */ + public static List<GISAttribute> getDefaults() { + return new ArrayList<GISAttribute>(attrs_); // Une copie, pour eviter les modifications. + } + + /** + * L'attribut est-il un attribut syst\xE8me ? + * @param _att L'attribut a tester. + * @return True si l'attribut est systeme. + */ + public static boolean isConstant(final GISAttributeInterface _att) { + for (GISAttributeInterface att: attrs_) { + if (_att==att) return true; + } + return false; + } } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java 2008-10-07 14:14:47 UTC (rev 4042) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModelePointEditable.java 2008-10-07 14:16:16 UTC (rev 4043) @@ -293,7 +293,7 @@ int iattVisibility=pts_.getIndiceOf(GISAttributeConstants.VISIBILITE); if (iattVisibility==-1) return true; - return (Boolean)pts_.getValue(iattVisibility, _idxGeom); + return GISAttributeConstants.ATT_VAL_TRUE.equals(pts_.getValue(iattVisibility, _idxGeom)); } public boolean point(GrPoint _pt, int _idxGeom, int _pointIdx) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dTrace.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dTrace.java 2008-10-07 14:14:47 UTC (rev 4042) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dTrace.java 2008-10-07 14:16:16 UTC (rev 4043) @@ -1,6 +1,6 @@ /* * @creation 20 janv. 08 - * @modification $Date: 2008-05-13 12:10:42 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail fud...@li... @@ -19,7 +19,7 @@ * Un mod\xE8le de calque pour le calque 1D des traces de profils. Les traces sont des polylignes XY. * * @author Bertrand Marchand - * @version $Id: MdlModel2dProfile.java,v 1.1.2.6 2008-05-13 12:10:42 bmarchan Exp $ + * @version $Id$ */ public class MdlModel1dTrace extends MdlModel2dLine { @@ -32,7 +32,8 @@ GISAttribute[] attrs=new GISAttribute[]{ GISAttributeConstants.TITRE, GISAttributeConstants.ETAT_GEOM, - GISAttributeConstants.NATURE + GISAttributeConstants.NATURE, + GISAttributeConstants.VISIBILITE }; // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. getGeomData().setAttributes(attrs, null); Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dTrace.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dCloud.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dCloud.java 2008-10-07 14:14:47 UTC (rev 4042) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dCloud.java 2008-10-07 14:16:16 UTC (rev 4043) @@ -1,6 +1,6 @@ /* * @creation 20 janv. 08 - * @modification $Date: 2008/03/26 16:46:44 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail fud...@li... @@ -26,7 +26,7 @@ * Un mod\xE8le de calque pour le calque 2D des semis. Les semis sont des blocs de points X,Y,Z distincts. * * @author Bertrand Marchand - * @version $Id: MdlModel2dCloud.java,v 1.1.2.4 2008/03/26 16:46:44 bmarchan Exp $ + * @version $Id$ */ public class MdlModel2dCloud extends MdlModel2dMultiPoint { @@ -36,13 +36,13 @@ */ public MdlModel2dCloud(final GISZoneListener _listener, final CtuluCommandContainer _cmd) { super(_listener); -// GISAttribute attTry=new GISAttributeString("Nature",false); + GISAttribute[] attrs=new GISAttribute[]{ GISAttributeConstants.BATHY, GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.TITRE, - GISAttributeConstants.NATURE -// attTry + GISAttributeConstants.NATURE, + GISAttributeConstants.VISIBILITE }; // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. getGeomData().setAttributes(attrs, null); Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dCloud.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dConstraintLine.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dConstraintLine.java 2008-10-07 14:14:47 UTC (rev 4042) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dConstraintLine.java 2008-10-07 14:16:16 UTC (rev 4043) @@ -1,6 +1,6 @@ /* * @creation 20 janv. 08 - * @modification $Date: 2008-05-13 12:10:42 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail fud...@li... @@ -18,7 +18,7 @@ * ferm\xE9es. * * @author Bertrand Marchand - * @version $Id: MdlModel2dProfile.java,v 1.1.2.6 2008-05-13 12:10:42 bmarchan Exp $ + * @version $Id$ */ public class MdlModel2dConstraintLine extends MdlModel2dLine { @@ -32,7 +32,8 @@ GISAttributeConstants.BATHY, GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.TITRE, - GISAttributeConstants.NATURE + GISAttributeConstants.NATURE, + GISAttributeConstants.VISIBILITE }; // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. getGeomData().setAttributes(attrs, null); Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dConstraintLine.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dContour.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dContour.java 2008-10-07 14:14:47 UTC (rev 4042) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dContour.java 2008-10-07 14:16:16 UTC (rev 4043) @@ -1,6 +1,6 @@ /* * @creation 20 janv. 08 - * @modification $Date: 2008/02/21 19:41:56 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail fud...@li... @@ -17,7 +17,7 @@ * Un mod\xE8le de calque pour le calque 2D contour d'\xE9tudes. Les contours d'\xE9tude limitent les informations * transmiss lors de l'exportation. Un contour d'\xE9tude est en XY. * @author Bertrand Marchand - * @version $Id: MdlModel2dLevel.java,v 1.1.2.6 2008/02/21 19:41:56 bmarchan Exp $ + * @version $Id$ */ public class MdlModel2dContour extends MdlModel2dLine { @@ -31,7 +31,8 @@ GISAttribute[] attrs=new GISAttribute[]{ GISAttributeConstants.TITRE, GISAttributeConstants.ETAT_GEOM, - GISAttributeConstants.NATURE + GISAttributeConstants.NATURE, + GISAttributeConstants.VISIBILITE }; // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. getGeomData().setAttributes(attrs, null); Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dContour.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dDirectionLine.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dDirectionLine.java 2008-10-07 14:14:47 UTC (rev 4042) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dDirectionLine.java 2008-10-07 14:16:16 UTC (rev 4043) @@ -1,6 +1,6 @@ /* * @creation 20 janv. 08 - * @modification $Date: 2008-05-13 12:10:42 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail fud...@li... @@ -20,7 +20,7 @@ * ferm\xE9es. * * @author Bertrand Marchand - * @version $Id: MdlModel2dProfile.java,v 1.1.2.6 2008-05-13 12:10:42 bmarchan Exp $ + * @version $Id$ */ public class MdlModel2dDirectionLine extends MdlModel2dLine { @@ -34,7 +34,8 @@ GISAttributeConstants.BATHY, GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.TITRE, - GISAttributeConstants.NATURE + GISAttributeConstants.NATURE, + GISAttributeConstants.VISIBILITE }; // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. getGeomData().setAttributes(attrs, null); Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dDirectionLine.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLevel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLevel.java 2008-10-07 14:14:47 UTC (rev 4042) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLevel.java 2008-10-07 14:16:16 UTC (rev 4043) @@ -1,6 +1,6 @@ /* * @creation 20 janv. 08 - * @modification $Date: 2008/02/21 19:41:56 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail fud...@li... @@ -21,7 +21,7 @@ * Un mod\xE8le de calque pour le calque 2D lignes de niveaux. Les lignes de niveau sont des lignes XY * avec une bathym\xE9trie constante. * @author Bertrand Marchand - * @version $Id: MdlModel2dLevel.java,v 1.1.2.6 2008/02/21 19:41:56 bmarchan Exp $ + * @version $Id$ */ public class MdlModel2dLevel extends MdlModel2dLine { @@ -37,7 +37,8 @@ zglob, GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.TITRE, - GISAttributeConstants.NATURE + GISAttributeConstants.NATURE, + GISAttributeConstants.VISIBILITE }; // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. getGeomData().setAttributes(attrs, null); Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLevel.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java 2008-10-07 14:14:47 UTC (rev 4042) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java 2008-10-07 14:16:16 UTC (rev 4043) @@ -1,6 +1,6 @@ /* * @creation 20 janv. 08 - * @modification $Date: 2008-05-13 12:10:40 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail fud...@li... @@ -31,7 +31,7 @@ * Un mod\xE8le de calque pour un calque 2D contenant des lignes. * * @author Bertrand Marchand - * @version $Id: MdlModel2dLine.java,v 1.1.2.1 2008-05-13 12:10:40 bmarchan Exp $ + * @version $Id$ */ public class MdlModel2dLine extends ZModeleLigneBriseeEditable { @@ -67,7 +67,7 @@ coords[coords.length-1]=(Coordinate)_coords[1].clone(); GISPolyligne poly = (GISPolyligne)GISGeometryFactory.INSTANCE.createLineString(coords); - int idx = geometries_.addGeometry(poly, null, _cmd); + int idx = getGeomData().addGeometry(poly, null, _cmd); if(idx!=-1) setGeomModif(idx, _cmd); return true; @@ -148,7 +148,7 @@ } // Methode par distance mini. else if (_meth==1) { - LineString geom=(LineString)geometries_.getGeometry(_idxGeom); + LineString geom=(LineString)getGeomData().getGeometry(_idxGeom); CoordinateSequence seq=geom.getCoordinateSequence(); double dst=0; for (int i=_idxdeb+1; i<=_idxfin-1; i++) { @@ -164,7 +164,7 @@ } CtuluListSelectionInterface ids = new CtuluListSelection(list.toNativeArray()); - geometries_.removeAtomics(_idxGeom, ids, null, _cmd); // L'UI est null, le cas ou moins de 2 points ne peut pas arriver. + getGeomData().removeAtomics(_idxGeom, ids, null, _cmd); // L'UI est null, le cas ou moins de 2 points ne peut pas arriver. setGeomModif(_idxGeom, _cmd); // Modification de l'etat de la g\xE9om\xE9trie return true; } @@ -183,7 +183,7 @@ * @return true si modif ok. */ public boolean refine(int _idxGeom, int _idxdeb,int _idxfin,int _meth,int _nbpts, double _dstmax, CtuluCommandContainer _cmd) { - LineString geom=(LineString)geometries_.getGeometry(_idxGeom); + LineString geom=(LineString)getGeomData().getGeometry(_idxGeom); CoordinateSequence seq=geom.getCoordinateSequence(); ArrayList coords=new ArrayList(seq.size()); @@ -225,7 +225,7 @@ } GISPolyligne newgeom=(GISPolyligne)GISGeometryFactory.INSTANCE.createLineString((Coordinate[])coords.toArray(new Coordinate[0])); - geometries_.setGeometry(_idxGeom, newgeom, _cmd); + getGeomData().setGeometry(_idxGeom, newgeom, _cmd); setGeomModif(_idxGeom, _cmd); // Modification de l'etat de la g\xE9om\xE9trie return true; } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLine.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dZone.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dZone.java 2008-10-07 14:14:47 UTC (rev 4042) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dZone.java 2008-10-07 14:16:16 UTC (rev 4043) @@ -1,6 +1,6 @@ /* * @creation 20 janv. 08 - * @modification $Date: 2008/02/21 19:41:56 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2008 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail fud...@li... @@ -17,7 +17,7 @@ * Un mod\xE8le de calque pour le calque 2D de zones g\xE9om\xE9triques. Les zones permettent de sp\xE9cifier un strickler par la suite. * Une zone est en XY, ferm\xE9e. * @author Bertrand Marchand - * @version $Id: MdlModel2dLevel.java,v 1.1.2.6 2008/02/21 19:41:56 bmarchan Exp $ + * @version $Id$ */ public class MdlModel2dZone extends MdlModel2dLine { @@ -31,7 +31,8 @@ GISAttribute[] attrs=new GISAttribute[]{ GISAttributeConstants.TITRE, GISAttributeConstants.ETAT_GEOM, - GISAttributeConstants.NATURE + GISAttributeConstants.NATURE, + GISAttributeConstants.VISIBILITE }; // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. getGeomData().setAttributes(attrs, null); Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dZone.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-10-07 14:15:14
|
Revision: 4041 http://fudaa.svn.sourceforge.net/fudaa/?rev=4041&view=rev Author: bmarchan Date: 2008-10-07 14:12:32 +0000 (Tue, 07 Oct 2008) Log Message: ----------- ZCalqueGeometry devient calque pere generique de ZCalqueMultiPoint Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueGeometry.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueMultiPoint.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeDefault.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiPlanLayer.java Property Changed: ---------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueMultiPoint.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeDefault.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiPlanLayer.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueGeometry.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueGeometry.java 2008-10-07 13:59:38 UTC (rev 4040) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueGeometry.java 2008-10-07 14:12:32 UTC (rev 4041) @@ -136,7 +136,7 @@ surfModel_=new TraceSurfaceModel(TraceSurface.INVISIBLE, Color.BLACK,null); } - protected EbliListeSelectionMulti creeSelectionMutli() { + protected EbliListeSelectionMulti creeSelectionMulti() { return new EbliListeSelectionMulti(modeleDonnees().getNombre() / 2); } @@ -224,7 +224,7 @@ // Si la selection de modif est nulle, seule l'action de remplacement // est concernee. if (selectionMulti_ == null) { - selectionMulti_ = creeSelectionMutli(); + selectionMulti_ = creeSelectionMulti(); } boolean sentEvent = false; switch (_action) { @@ -329,15 +329,17 @@ final Envelope env = new Envelope(); if (isAtomicMode_) { final EbliListeSelectionMultiInterface multi = getLayerSelectionMulti(); + Coordinate c=new Coordinate(); final TIntObjectIterator it = multi.getIterator(); for (int i = multi.getNbListSelected(); i-- > 0;) { it.advance(); final CtuluListSelectionInterface atomSel = (CtuluListSelectionInterface) it.value(); - final Geometry g = (Geometry) modele_.getGeomData().getGeometry(it.key()); + final CoordinateSequence seq = modele_.getGeomData().getCoordinateSequence(it.key()); final int max = atomSel.getMaxIndex(); for (int j = atomSel.getMinIndex(); j <= max; j++) { if (atomSel.isSelected(j)) { - env.expandToInclude(g.getCoordinates()[j]); + seq.getCoordinate(j,c); + env.expandToInclude(c); } } } @@ -367,19 +369,26 @@ } public void inverseSelection() { - if (!isAtomicMode_) { - super.inverseSelection(); - return; - } if (isSelectionEmpty()) { return; } - for (int i = modele_.getNombre() - 1; i >= 0; i--) { - final CtuluListSelection s = selectionMulti_.get(i); - if (s != null) { - s.inverse(modele_.getNbPointForGeometry(i)); + if (!isAtomicMode_) { + initSelection(); + selection_.inverse(modeleDonnees().getNombre()); + for (int i=0; i<modele_.getNombre(); i++) { + if (!modele_.isGeometryVisible(i)) selection_.remove(i); } } + else { + for (int i=modele_.getNombre()-1; i>=0; i--) { + if (!modele_.isGeometryVisible(i)) continue; + + final CtuluListSelection s=selectionMulti_.get(i); + if (s!=null) { + s.inverse(modele_.getNbPointForGeometry(i)); + } + } + } fireSelectionEvent(); } @@ -417,7 +426,7 @@ } } - public ZModeleDonnees modeleDonnees() { + public ZModeleGeometry modeleDonnees() { return modele_; } @@ -467,6 +476,9 @@ final int nbPoints=modele_.getNbPointForGeometry(i); if (nbPoints <= 0) continue; + // La g\xE9ometrie n'est pas visible + if (!modele_.isGeometryVisible(i)) + continue; modele_.getDomaineForGeometry(i, bPoly); // Si la boite du polygone n'est pas dans la boite d'affichage on passe @@ -497,6 +509,9 @@ final int nbPoints=modele_.getNbPointForGeometry(i); if (nbPoints <= 0) continue; + // La g\xE9ometrie n'est pas visible + if (!modele_.isGeometryVisible(i)) + continue; modele_.getDomaineForGeometry(i, bPoly); // Si la boite du polygone n'est pas dans la boite d'affichage on passe @@ -533,6 +548,10 @@ if (modele_.getNbPointForGeometry(i) <= 0) { continue; } + // La g\xE9ometrie n'est pas visible + if (!modele_.isGeometryVisible(i)) + continue; + modele_.getDomaineForGeometry(i, bPoly); // Si la boite du polygone n'est pas dans la boite d'affichage on passe if (bPoly.intersectionXY(clip) == null) { @@ -638,19 +657,26 @@ if (!isVisible()) return; if (!isAtomicMode_) { - super.selectAll(); - return; + initSelection(); + selection_.addInterval(0, modele_.getNombre() - 1); + for (int i=0; i<modele_.getNombre(); i++) { + if (!modele_.isGeometryVisible(i)) selection_.remove(i); + } } - if (selectionMulti_ == null) { - selectionMulti_ = creeSelectionMutli(); - } - for (int i = modele_.getNombre() - 1; i >= 0; i--) { - CtuluListSelection s = selectionMulti_.get(i); - if (s == null) { - s = new CtuluListSelection(modele_.getNbPointForGeometry(i)); - selectionMulti_.set(i, s); + else { + if (selectionMulti_==null) { + selectionMulti_=creeSelectionMulti(); } - s.setSelectionInterval(0, modele_.getNbPointForGeometry(i) - 1); + for (int i=modele_.getNombre()-1; i>=0; i--) { + if (!modele_.isGeometryVisible(i)) continue; + + CtuluListSelection s=selectionMulti_.get(i); + if (s==null) { + s=new CtuluListSelection(modele_.getNbPointForGeometry(i)); + selectionMulti_.set(i, s); + } + s.setSelectionInterval(0, modele_.getNbPointForGeometry(i)-1); + } } fireSelectionEvent(); } @@ -671,6 +697,8 @@ final GrPoint pt=new GrPoint(); final GrBoite bPoly = new GrBoite(new GrPoint(), new GrPoint()); for (int i = modele_.getNombre() - 1; i >= 0; i--) { + if (!modele_.isGeometryVisible(i)) continue; + modele_.getDomaineForGeometry(i, bPoly); if (bPoly.contientXY(_pt)||bPoly.distanceXY(_pt)<distanceReel) { for (int j=modele_.getNbPointForGeometry(i)-1; j>=0; j--) { @@ -706,6 +734,8 @@ final GrPoint p = new GrPoint(); final GrBoite bPoly = new GrBoite(new GrPoint(), new GrPoint()); for (int i = modeleDonnees().getNombre() - 1; i >= 0; i--) { + if (!modele_.isGeometryVisible(i)) continue; + modele_.getDomaineForGeometry(i, bPoly); // si le poly est dans dans le poly de selection boolean selected = false; @@ -769,6 +799,8 @@ final GrPoint p = new GrPoint(); final GrBoite btLigne = new GrBoite(); for (int i = modele_.getNombre() - 1; i >= 0; i--) { + if (!modele_.isGeometryVisible(i)) continue; + modele_.getDomaineForGeometry(i, btLigne); if (btLigne.contientXY(_pt) || btLigne.distanceXY(_pt) < distanceReel) { for (int j = modele_.getNbPointForGeometry(i) - 1; j >= 0; j--) { @@ -797,11 +829,13 @@ if (!polyEnv.intersects(domaine)) { return null; } - final EbliListeSelectionMulti r = creeSelectionMutli(); + final EbliListeSelectionMulti r = creeSelectionMulti(); final GrPoint p = new GrPoint(); final SIRtreePointInRing tester = new SIRtreePointInRing(_poly); final Coordinate c = new Coordinate(); for (int i = modele_.getNombre() - 1; i >= 0; i--) { + if (!modele_.isGeometryVisible(i)) continue; + CtuluListSelection l = null; final int nbPt = modele_.getNbPointForGeometry(i); for (int j = nbPt - 1; j >= 0; j--) { @@ -841,11 +875,12 @@ } public boolean setSelection(final int[] _idx) { + // Aucun controle n'est fait sur la visibilit\xE9 ou non des objets d'indices pass\xE9s. if (!isAtomicMode_) { return super.setSelection(_idx); } // TODO : Traitement a faire si on est en mode atomique. - FuLog.warning("EBL:ZCalqueLigneBrisee.setSelection() can't be called in atomic mode"); + FuLog.warning("EBL:ZCalqueGeometry.setSelection() can't be called in atomic mode"); return false; } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java 2008-10-07 13:59:38 UTC (rev 4040) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java 2008-10-07 14:12:32 UTC (rev 4041) @@ -1,6 +1,6 @@ /* * @creation 31 mars 2005 - * @modification $Date: 2008-03-26 16:46:43 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail de...@fu... @@ -60,13 +60,13 @@ * {@link ZModeleLigneBrisee}. * * @author Fred Deniger - * @version $Id: ZCalqueLigneBrisee.java,v 1.29.6.4 2008-03-26 16:46:43 bmarchan Exp $ + * @version $Id$ */ public class ZCalqueLigneBrisee extends ZCalqueAffichageDonneesLineAbstract { /** * @author Fred Deniger - * @version $Id: ZCalqueLigneBrisee.java,v 1.29.6.4 2008-03-26 16:46:43 bmarchan Exp $ + * @version $Id$ */ private class VariableNonAtomicFindExpression extends CalqueFindExpression { @@ -930,7 +930,7 @@ } public boolean setSelection(final int[] _idx) { - // Pas de controle sur la visibilit\xE9 ou non des objets d'indices pass\xE9s. + // Aucun controle n'est fait sur la visibilit\xE9 ou non des objets d'indices pass\xE9s. if (!isAtomicMode_) { return super.setSelection(_idx); } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueMultiPoint.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueMultiPoint.java 2008-10-07 13:59:38 UTC (rev 4040) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueMultiPoint.java 2008-10-07 14:12:32 UTC (rev 4041) @@ -1,57 +1,16 @@ /* * @creation 31 mars 2005 - * @modification $Date: 2008-04-01 17:05:16 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail de...@fu... */ package org.fudaa.ebli.calque; -import gnu.trove.TIntArrayList; -import gnu.trove.TIntObjectIterator; -import gnu.trove.TObjectIntHashMap; - import java.awt.Color; -import java.awt.Graphics; -import java.awt.Graphics2D; -import org.nfunk.jep.Variable; - -import com.memoire.fu.FuLog; -import com.vividsolutions.jts.algorithm.SIRtreePointInRing; -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.CoordinateSequence; -import com.vividsolutions.jts.geom.Envelope; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.LinearRing; - -import org.fudaa.ctulu.CtuluExpr; -import org.fudaa.ctulu.CtuluLib; -import org.fudaa.ctulu.CtuluLibArray; -import org.fudaa.ctulu.CtuluListSelection; -import org.fudaa.ctulu.CtuluListSelectionInterface; -import org.fudaa.ctulu.gis.GISAttributeInterface; -import org.fudaa.ctulu.gis.GISCoordinateSequenceContainerInterface; -import org.fudaa.ctulu.gis.GISGeometryFactory; -import org.fudaa.ctulu.gis.GISLib; -import org.fudaa.ctulu.gis.GISZoneCollection; - -import org.fudaa.ebli.calque.edition.ZModeleEditable; -import org.fudaa.ebli.calque.find.CalqueFindExpression; -import org.fudaa.ebli.commun.EbliLib; -import org.fudaa.ebli.commun.EbliListeSelectionMulti; -import org.fudaa.ebli.commun.EbliListeSelectionMultiInterface; -import org.fudaa.ebli.commun.EbliSelectionMode; -import org.fudaa.ebli.commun.EbliSelectionState; -import org.fudaa.ebli.commun.EbliUIProperties; -import org.fudaa.ebli.find.EbliFindExpressionContainerInterface; -import org.fudaa.ebli.geometrie.GrBoite; -import org.fudaa.ebli.geometrie.GrMorphisme; -import org.fudaa.ebli.geometrie.GrPoint; import org.fudaa.ebli.trace.TraceIcon; import org.fudaa.ebli.trace.TraceIconModel; -import org.fudaa.ebli.trace.TraceLigneModel; /** * Un calque g\xE9rant des multipoints, \xE0 un niveau global ou atomique.<p> @@ -59,747 +18,31 @@ * {@link ZModeleMultiPoint}. * * @author Bertrand Marchand - * @version $Id: ZCalqueMultiPoint.java,v 1.1.2.2 2008-04-01 17:05:16 bmarchan Exp $ + * @version $Id$ */ -public class ZCalqueMultiPoint extends ZCalqueAffichageDonneesLineAbstract { +public class ZCalqueMultiPoint extends ZCalqueGeometry { /** - * @author Fred Deniger - * @version $Id: ZCalqueMultiPoint.java,v 1.1.2.2 2008-04-01 17:05:16 bmarchan Exp $ - */ - private class VariableNonAtomicFindExpression extends CalqueFindExpression { - - TObjectIntHashMap varAtt_; - - public VariableNonAtomicFindExpression() { - super(ZCalqueMultiPoint.this.modeleDonnees()); - } - - public void initialiseExpr(final CtuluExpr _expr) { - super.initialiseExpr(_expr); - final GISZoneCollection coll = ((ZModeleEditable) super.data_).getGeomData(); - final int nb = coll.getNbAttributes(); - if (nb > 0) { - if (varAtt_ == null) { - varAtt_ = new TObjectIntHashMap(nb); - } else { - varAtt_.clear(); - } - for (int i = 0; i < nb; i++) { - final GISAttributeInterface att = coll.getAttribute(i); - if (!att.isAtomicValue() && Number.class.isAssignableFrom(att.getDataClass())) { - varAtt_.put(_expr.addVar(att.getName(), att.getLongName()), i); - } - } - } - - } - - public void majVariable(final int _idx, final Variable[] _varToUpdate) { - super.majVariable(_idx, _varToUpdate); - if (varAtt_ != null && !CtuluLibArray.isEmpty(_varToUpdate)) { - final GISZoneCollection coll = ((ZModeleEditable) super.data_).getGeomData(); - for (int i = _varToUpdate.length - 1; i >= 0; i--) { - if (varAtt_.containsKey(_varToUpdate[i])) { - _varToUpdate[i].setValue(CtuluLib.getDouble(((Number) coll.getDataModel(varAtt_.get(_varToUpdate[i])) - .getObjectValueAt(_idx)).doubleValue())); - } - } - } - } - - } - - /** true si edition de sommets */ - transient private boolean isAtomicMode_; - - protected ZModeleMultiPoint modele_; - - /** La selection a utilise dans le mode selection sommets */ - protected EbliListeSelectionMulti selectionMulti_; - /** Pour le trac\xE9 de la selection en mode atomique. */ - protected ZSelectionTrace traceAtomic_; - - - /** * Le seul constructeur, avec le mod\xE8le. * @param _modele le modele du calque */ public ZCalqueMultiPoint(final ZModeleMultiPoint _modele) { - modele_ = _modele; + super(_modele); iconModel_ = new TraceIconModel(TraceIcon.CARRE_PLEIN, 2, Color.BLACK); } - protected EbliListeSelectionMulti creeSelectionMutli() { - return new EbliListeSelectionMulti(modeleDonnees().getNombre() / 2); - } - - protected void initTrace(final TraceIconModel _icon, final int _idxPoly) { - _icon.updateData(getIconModel(0)); - if (isAttenue()) { - _icon.setCouleur(EbliLib.getAlphaColor(attenueCouleur(_icon.getCouleur()), alpha_)); - } else if (EbliLib.isAlphaChanged(alpha_)) { - _icon.setCouleur(EbliLib.getAlphaColor(_icon.getCouleur(), alpha_)); - } - } - - protected void paintSelectionMulti(final Graphics _g, final ZSelectionTrace _trace, final GrMorphisme _versEcran, - final GrBoite _clipReel) { - if ((isRapide()) || (isSelectionEmpty())) { - return; - } - final GrBoite clip = _clipReel; - if (!getDomaine().intersectXY(clip)) { - return; - } - Color cs = _trace.getColor(); - if (isAttenue()) { - cs = attenueCouleur(cs); - } - _g.setColor(cs); - final TraceIcon ic = _trace.getIconeInterne(); - final TIntObjectIterator it = selectionMulti_.getIterator(); - final GrPoint p = new GrPoint(); - final GrMorphisme versEcran = _versEcran; - for (int i = selectionMulti_.getNbListSelected(); i-- > 0;) { - it.advance(); - final CtuluListSelectionInterface s = (CtuluListSelectionInterface) it.value(); - if (!s.isEmpty()) { - final int idxPoly = it.key(); - final int min = s.getMinIndex(); - for (int j = s.getMaxIndex(); j >= min; j--) { - if (s.isSelected(j)) { - modele_.point(p, idxPoly, j); - if (clip.contientXY(p)) { - p.autoApplique(versEcran); - ic.paintIconCentre(this, _g, p.x_, p.y_); - } - } - } - } - } - } - - public boolean changeSelection(final GrPoint _pt, final int _tolerancePixel, final int _action) { - if (isAtomicMode_) { - final EbliListeSelectionMulti l = selectionMulti(_pt, _tolerancePixel); - changeSelectionMulti(l, _action); - if ((l == null) || (l.isEmpty())) { - return false; - } - return true; - } - return super.changeSelection(_pt, _tolerancePixel, _action); - } - - public boolean changeSelection(final LinearRing _poly, final int _action, final int _mode) { - if (isAtomicMode_) { - final EbliListeSelectionMulti l = selectionMulti(_poly); - changeSelectionMulti(l, _action); - if ((l == null) || (l.isEmpty())) { - return false; - } - return true; - } - return super.changeSelection(_poly, _action, _mode); - } - - private void changeSelectionMulti(final EbliListeSelectionMulti _s, final int _action) { - // Si la selection de modif est nulle, seule l'action de remplacement - // est concernee. - if (selectionMulti_ == null) { - selectionMulti_ = creeSelectionMutli(); - } - boolean sentEvent = false; - switch (_action) { - case EbliSelectionState.ACTION_ADD: - sentEvent = selectionMulti_.add(_s); - break; - case EbliSelectionState.ACTION_DEL: - sentEvent = selectionMulti_.remove(_s); - break; - case EbliSelectionState.ACTION_XOR: - sentEvent = selectionMulti_.xor(_s); - break; - case EbliSelectionState.ACTION_REPLACE: - selectionMulti_.setSelection(_s); - sentEvent = true; - break; - default: - break; - } - if (sentEvent) { - fireSelectionEvent(); - } - } - - public void clearSelection() { - // dans le mode edition de noeuds - if (isAtomicMode_) { - if (selectionMulti_ != null && !selectionMulti_.isEmpty()) { - - selectionMulti_.clear(); - fireSelectionEvent(); - } - } else { - super.clearSelection(); - } - } - - public EbliFindExpressionContainerInterface getExpressionContainer() { - if (isAtomicMode_) { - return new CalqueFindExpression(modele_); - } - return new VariableNonAtomicFindExpression(); - } - - public EbliListeSelectionMultiInterface getLayerSelectionMulti() { - return selectionMulti_; - } - - public int getNbSelected() { - if (isSelectionEmpty()) { - return 0; - } - if (isAtomicMode_) { - return selectionMulti_.getNbListSelected(); - } - return super.getNbSelected(); - } - - public int[] getSelectedIndex() { - if (isSelectionEmpty()) { - return null; - } - if (isAtomicMode_) { - return selectionMulti_.getIdxSelected(); - } - return super.getSelectedIndex(); - } - - public int[] getSelectedObjectInTable() { - if (isSelectionEmpty()) { - return null; - } - if (!isAtomicMode_) { - return super.getSelectedObjectInTable(); - } - final EbliListeSelectionMultiInterface multi = getLayerSelectionMulti(); - int nb = 0; - // 20 points par lignes - final TIntArrayList list = new TIntArrayList(modele_.getNombre() * 20); - final int nbLigne = modele_.getNombre(); - for (int i = 0; i < nbLigne; i++) { - final CtuluListSelectionInterface sel = multi.getSelection(i); - if (sel != null) { - final int max = sel.getMaxIndex(); - for (int j = sel.getMinIndex(); j <= max; j++) { - if (sel.isSelected(j)) { - list.add(nb + j); - } - } - - } - nb += modele_.getNbPointForGeometry(i); - } - - return list.toNativeArray(); - } - - public GrBoite getDomaineOnSelected() { - if (isSelectionEmpty()) { - return null; - } - final Envelope env = new Envelope(); - if (isAtomicMode_) { - final EbliListeSelectionMultiInterface multi = getLayerSelectionMulti(); - Coordinate c=new Coordinate(); - final TIntObjectIterator it = multi.getIterator(); - for (int i = multi.getNbListSelected(); i-- > 0;) { - it.advance(); - final CtuluListSelectionInterface atomSel = (CtuluListSelectionInterface) it.value(); - final CoordinateSequence seq = modele_.getGeomData().getCoordinateSequence(it.key()); - final int max = atomSel.getMaxIndex(); - for (int j = atomSel.getMinIndex(); j <= max; j++) { - if (atomSel.isSelected(j)) { - seq.getCoordinate(j,c); - env.expandToInclude(c); - } - } - } - - } else { - final CtuluListSelectionInterface sel = getLayerSelection(); - final int max = sel.getMaxIndex(); - for (int i = sel.getMinIndex(); i <= max; i++) { - if (sel.isSelected(i)) { - env.expandToInclude(modele_.getGeomData().getGeometry(i).getEnvelopeInternal()); - } - } - } - final GrBoite r = new GrBoite(); - r.ajuste(env.getMaxX(), env.getMaxY(), 0); - r.ajuste(env.getMinX(), env.getMinY(), 0); - return r; - } - - public void initFrom(final EbliUIProperties _p) { - if (_p != null) { - super.initFrom(_p); - if (_p.isDefined("calqueGIS.ligneModel")) { - setLineModel(0, (TraceLigneModel) _p.get("calqueGIS.ligneModel")); - } - } - } - - public void inverseSelection() { - if (!isAtomicMode_) { - super.inverseSelection(); - return; - } - if (isSelectionEmpty()) { - return; - } - for (int i = modele_.getNombre() - 1; i >= 0; i--) { - final CtuluListSelection s = selectionMulti_.get(i); - if (s != null) { - s.inverse(modele_.getNbPointForGeometry(i)); - } - } - fireSelectionEvent(); - } - /** - * @return true si on est dans le mode edition de noeuds - */ - public boolean isAtomicMode() { - return isAtomicMode_; - } - - public boolean isPaletteModifiable() { - return false; - } - - /** - * Indique si la s\xE9lection est vide. - * @return true Si aucun objet ni aucun point en mode atomique selectionn\xE9. - */ - public boolean isSelectionEmpty() { - return isAtomicMode_ ? selectionMulti_ == null ? true : selectionMulti_.isEmpty() : super.isSelectionEmpty(); - } - - public boolean isTitleModifiable() { - return true; - } - - /** * @param _modele Modele */ public void modele(final ZModeleMultiPoint _modele) { if (modele_ != _modele) { - final ZModeleMultiPoint vp = modele_; + final ZModeleMultiPoint vp = (ZModeleMultiPoint)modele_; modele_ = _modele; firePropertyChange("modele", vp, modele_); } } - public ZModeleDonnees modeleDonnees() { - return modele_; + public ZModeleMultiPoint modeleDonnees() { + return (ZModeleMultiPoint)modele_; } - - /** - * @param _g - */ - public void paintDonnees(final Graphics2D _g, final GrMorphisme _versEcran, final GrMorphisme _versReel, - final GrBoite _clipReel) { - if ((modele_ == null) || (modele_.getNombre() <= 0)) { - return; - } - final GrBoite clip = _clipReel; - final GrMorphisme versEcran = _versEcran; - final int nombre = modele_.getNombre(); - - final TraceIconModel iconeModel = iconModel_ == null ? null : new TraceIconModel(iconModel_); - - final TraceIcon icone; - if (isRapide()) { - icone=new TraceIcon(TraceIcon.CARRE,2,iconeModel.getCouleur()); - } - else - icone = iconeModel == null ? null : new TraceIcon(iconeModel); - - final GrBoite bPoly = new GrBoite(); - bPoly.o_ = new GrPoint(); - bPoly.e_ = new GrPoint(); - - // on trace les icones apres pour qu'ils soient dessin\xE9s au-dessus des lignes. - if (icone != null) { - for (int i = nombre - 1; i >= 0; i--) { - // il n'y a pas de points pour cette ligne - if (modele_.getNbPointForGeometry(i) <= 0) { - continue; - } - modele_.getDomaineForGeometry(i, bPoly); - // Si la boite du polygone n'est pas dans la boite d'affichage on passe - if (bPoly.intersectionXY(clip) == null) { - continue; - } - final int nbPoints = modele_.getNbPointForGeometry(i); - if (nbPoints <= 0) { - continue; - } - if (!isRapide()) initTrace(iconeModel, i); - final GrPoint ptDest = new GrPoint(); - for (int j = nbPoints - 1; j >= 0; j--) { - // le point de dest est initialise - modele_.point(ptDest, i, j); - if (!_clipReel.contientXY(ptDest)) { - continue; - } - ptDest.autoApplique(versEcran); - icone.paintIconCentre(this, _g, ptDest.x_, ptDest.y_); - } - } - } - } - - public void paintSelection(final Graphics2D _g, final ZSelectionTrace _trace, final GrMorphisme _versEcran, - final GrBoite _clipReel) { - if (isSelectionEmpty()) return; - - if (isAtomicMode_) { - if (traceAtomic_==null) { - Color cg=attenueCouleur(_trace.getColor()); - Color cs=_trace.getColor(); - traceAtomic_=new ZSelectionTrace(cg,cs); - } - CtuluListSelection containers=new CtuluListSelection(selectionMulti_.getIdxSelection()); - paintSelectionSimple(_g, traceAtomic_, _versEcran, _clipReel, containers); - paintSelectionMulti(_g, traceAtomic_, _versEcran, _clipReel); - } else { - paintSelectionSimple(_g, _trace, _versEcran, _clipReel, selection_); - } - } - - public void paintSelectionSimple(final Graphics _g, final ZSelectionTrace _trace, final GrMorphisme _versEcran, - final GrBoite _clipReel, CtuluListSelection _containers) { - if ((isRapide()) || (isSelectionEmpty())) { - return; - } - final GrBoite clip = _clipReel; - if (getDomaine() == null || !getDomaine().intersectXY(clip)) { - return; - } - final GrMorphisme versEcran = _versEcran; - Color cs = _trace.getColor(); - if (isAttenue()) { - cs = attenueCouleur(cs); - } - _g.setColor(cs); - final TraceIcon ic = _trace.getIcone(); - final int nb = Math.min(_containers.getMaxIndex(), modele_.getNombre() - 1); - - final GrBoite btgeom = new GrBoite(); - btgeom.e_ = new GrPoint(); - btgeom.o_ = new GrPoint(); - for (int i = nb; i >= 0; i--) { - if (!_containers.isSelected(i)) { - continue; - } - modele_.getDomaineForGeometry(i, btgeom); - // Si la boite de la geometrie n'est pas dans la boite d'affichage on passe - if (btgeom.intersectionXY(clip) == null) { - continue; - } - - final int nbPoints = modele_.getNbPointForGeometry(i); - final GrPoint pt = new GrPoint(); - for (int j=0; j<nbPoints; j++) { - modele_.point(pt, i, j); - pt.autoApplique(versEcran); - ic.paintIconCentre(this, _g, pt.x_, pt.y_); - } - } - } - - public void selectAll() { - if (!isVisible()) return; - - if (!isAtomicMode_) { - super.selectAll(); - return; - } - if (selectionMulti_ == null) { - selectionMulti_ = creeSelectionMutli(); - } - for (int i = modele_.getNombre() - 1; i >= 0; i--) { - CtuluListSelection s = selectionMulti_.get(i); - if (s == null) { - s = new CtuluListSelection(modele_.getNbPointForGeometry(i)); - selectionMulti_.set(i, s); - } - s.setSelectionInterval(0, modele_.getNbPointForGeometry(i) - 1); - } - fireSelectionEvent(); - } - - public CtuluListSelection selection(final GrPoint _pt, final int _tolerance) { - if (modele_.getNombre() == 0) { - return null; - } - final GrBoite bClip = getDomaine(); - if (bClip == null) { - return null; - } - final double distanceReel = GrMorphisme.convertDistanceXY(getVersReel(), _tolerance); - if ((!bClip.contientXY(_pt)) && (bClip.distanceXY(_pt) > distanceReel)) { - return null; - } - - final GrPoint pt=new GrPoint(); - final GrBoite bPoly = new GrBoite(new GrPoint(), new GrPoint()); - for (int i = modele_.getNombre() - 1; i >= 0; i--) { - modele_.getDomaineForGeometry(i, bPoly); - if (bPoly.contientXY(_pt)||bPoly.distanceXY(_pt)<distanceReel) { - for (int j=modele_.getNbPointForGeometry(i)-1; j>=0; j--) { - modele_.point(pt, i, j); - if (pt.distanceXY(_pt)<distanceReel) { - final CtuluListSelection r=new CtuluListSelection(1); - r.setSelectionInterval(i, i); - return r; - } - } - } - } - return null; - } - - public CtuluListSelection selection(final LinearRing _poly, final int _mode) { - if (modele_.getNombre() == 0 || !isVisible()) { - return null; - } - final Envelope polyEnv = _poly.getEnvelopeInternal(); - final GrBoite domaineBoite = getDomaine(); - final Envelope domaine = new Envelope(domaineBoite.e_.x_, domaineBoite.o_.x_, domaineBoite.e_.y_, - domaineBoite.o_.y_); - // si l'envelop du polygone n'intersect pas le domaine, il n'y a pas de - // selection - if (!polyEnv.intersects(domaine)) { - return null; - } - - final SIRtreePointInRing tester = new SIRtreePointInRing(_poly); - final Coordinate c = new Coordinate(); - final CtuluListSelection r = creeSelection(); - final GrPoint p = new GrPoint(); - final GrBoite bPoly = new GrBoite(new GrPoint(), new GrPoint()); - for (int i = modeleDonnees().getNombre() - 1; i >= 0; i--) { - modele_.getDomaineForGeometry(i, bPoly); - // si le poly est dans dans le poly de selection - boolean selected = false; - if (_mode == EbliSelectionMode.MODE_ALL) { - if (polyEnv.contains(bPoly.e_.x_, bPoly.e_.y_) && polyEnv.contains(bPoly.o_.x_, bPoly.o_.y_)) { - selected = true; - for (int j = modele_.getNbPointForGeometry(i) - 1; (j >= 0) && selected; j--) { - modele_.point(p, i, j); - c.x = p.x_; - c.y = p.y_; - if (!tester.isInside(c)) { - selected = false; - } - } - } - } else if (_mode == EbliSelectionMode.MODE_ONE) { - if (polyEnv.intersects(bPoly.getEnv())) { - for (int j = modele_.getNbPointForGeometry(i) - 1; (j >= 0) && !selected; j--) { - modele_.point(p, i, j); - c.x = p.x_; - c.y = p.y_; - if (GISLib.isSelectedEnv(c, _poly, polyEnv, tester)) { - selected = true; - } - } - } - - } else if (_mode == EbliSelectionMode.MODE_CENTER) { - final CoordinateSequence coordinateSequence = modele_.getGeomData().getCoordinateSequence(i); - c.x = GISLib.getMoyX(coordinateSequence); - c.y = GISLib.getMoyY(coordinateSequence); - selected = GISLib.isSelectedEnv(c, _poly, polyEnv, tester); - - } - if (selected) { - r.add(i); - } - } - if (r.isEmpty()) { - return null; - } - return r; - } - - /** - * Renvoie la liste des objets selectionnees pour le point <code>_pt</code> avec pour tolerance - * <code>_tolerance</code>. - * - * @param _pt - * @param _tolerance - * @return la liste des indexs selectionnes (ou null si aucune selection) - */ - public EbliListeSelectionMulti selectionMulti(final GrPoint _pt, final int _tolerance) { - final GrMorphisme versReel = getVersReel(); - GrBoite bClip = getDomaine(); - if (bClip == null || (!bClip.contientXY(_pt)) && (bClip.distanceXY(_pt) > _tolerance)) { - return null; - } - final double distanceReel = GrMorphisme.convertDistanceXY(versReel, _tolerance); - bClip = getClipReel(getGraphics()); - final GrPoint p = new GrPoint(); - final GrBoite btLigne = new GrBoite(); - for (int i = modele_.getNombre() - 1; i >= 0; i--) { - modele_.getDomaineForGeometry(i, btLigne); - if (btLigne.contientXY(_pt) || btLigne.distanceXY(_pt) < distanceReel) { - for (int j = modele_.getNbPointForGeometry(i) - 1; j >= 0; j--) { - modele_.point(p, i, j); - if (bClip.contientXY(p) && (p.distanceXY(_pt) < distanceReel)) { - final EbliListeSelectionMulti r = new EbliListeSelectionMulti(1); - r.set(i, j); - return r; - } - } - } - } - return null; - } - - public EbliListeSelectionMulti selectionMulti(final LinearRing _poly) { - if (modele_.getNombre() == 0 || !isVisible()) { - return null; - } - final Envelope polyEnv = _poly.getEnvelopeInternal(); - final GrBoite domaineBoite = getDomaine(); - final Envelope domaine = new Envelope(domaineBoite.e_.x_, domaineBoite.o_.x_, domaineBoite.e_.y_, - domaineBoite.o_.y_); - // si l'envelop du polygone n'intersect pas le domaine, il n'y a pas de - // selection - if (!polyEnv.intersects(domaine)) { - return null; - } - final EbliListeSelectionMulti r = creeSelectionMutli(); - final GrPoint p = new GrPoint(); - final SIRtreePointInRing tester = new SIRtreePointInRing(_poly); - final Coordinate c = new Coordinate(); - for (int i = modele_.getNombre() - 1; i >= 0; i--) { - CtuluListSelection l = null; - final int nbPt = modele_.getNbPointForGeometry(i); - for (int j = nbPt - 1; j >= 0; j--) { - modele_.point(p, i, j); - c.x = p.x_; - c.y = p.y_; - if ((polyEnv.contains(c)) && (tester.isInside(c))) { - if (l == null) { - l = new CtuluListSelection(nbPt); - } - l.add(j); - } - } - if (l != null) { - r.set(i, l); - } - } - if (r.isEmpty()) { - return null; - } - return r; - } - - /** - * D\xE9finit que les modifications d'objets auront lieu en mode atomique. - * @param _new true : Modifications en mode atomique. - * @return true si l'appel a produit un changement de mode. - */ - public boolean setAtomicMode(final boolean _new) { - if (_new != isAtomicMode_) { - isAtomicMode_ = _new; - firePropertyChange("mode", !isAtomicMode_, isAtomicMode_); - clearSelection(); - return true; - } - return false; - } - - public boolean setSelection(final int[] _idx) { - if (!isAtomicMode_) { - return super.setSelection(_idx); - } - // TODO : Traitement a faire si on est en mode atomique. - FuLog.warning("EBL:ZCalqueLigneBrisee.setSelection() can't be called in atomic mode"); - return false; - } - - public boolean setTitle(final String _title) { - final boolean r = super.setTitle(_title); - if (r && modele_ != null && modele_.getGeomData() != null) { - modele_.getGeomData().setTitle(_title, null); - } - return r; - } - - private LineString createLineFromSelection(final int _i, final CtuluListSelectionInterface _selection, final int _nbSelected) { - final LineString geom = (LineString) modele_.getGeomData().getGeometry(_i); - final Coordinate[] cs = new Coordinate[_nbSelected]; - final int[] idx = _selection.getSelectedIndex(); - for (int j = 0; j < _nbSelected; j++) { - cs[j] = geom.getCoordinateN(idx[j]); - } - return GISGeometryFactory.INSTANCE.createLineString(cs); - } - - public LineString getSelectedLine() { - if (isSelectionEmpty()) { - return null; - } - // en mode normal (pas de vertex selectionne), on renvoie la ligne s\xE9lectionn\xE9e - if (!isAtomicMode()) { -// return getLayerSelection().getNbSelectedIndex() == 1 ? (LineString) modele_.getGeomData().getGeometry( -// getLayerSelection().getMaxIndex()) : null; - throw new UnsupportedOperationException("Can't create line from vertices"); - } - // mode vertex - final EbliListeSelectionMultiInterface select = getLayerSelectionMulti(); - // mode vertex - // la selection se situe dans la meme ligne - if (select.getNbListSelected() == 1) { - final int i = select.getIdxSelected()[0]; - final CtuluListSelectionInterface selection = select.getSelection(i); - final int nbSelected = selection.getNbSelectedIndex(); - // deux sommets s\xE9lectionn\xE9s: on choisit la ligne en les 2 sommets - if (nbSelected == 2) { - return createLineFromSelection(i, selection, nbSelected); - - } else if (nbSelected >= 2) { - final int nbPointForLigne = modele_.getNbPointForGeometry(i); - final int[] res = CtuluListSelection.isSelectionContiguous(select.getSelection(i), nbPointForLigne); - if (res == null) { - return null; - } - // selection normale - if (res[0] < res[1]) { - return createLineFromSelection(i, selection, nbSelected); - } - } - } else if (select.getNbListSelected() == 2) { - final int[] idx = select.getIdxSelected(); - final CtuluListSelectionInterface selection1 = select.getSelection(idx[0]); - final CtuluListSelectionInterface selection2 = select.getSelection(idx[1]); - if (selection1.getNbSelectedIndex() == 1 && selection2.getNbSelectedIndex() == 1) { - final Coordinate[] cs = new Coordinate[2]; - cs[0] = ((Geometry)modele_.getGeomData().getGeometry(idx[0])).getCoordinates()[selection1.getMaxIndex()]; - cs[1] = ((Geometry)modele_.getGeomData().getGeometry(idx[1])).getCoordinates()[selection2.getMaxIndex()]; - return GISGeometryFactory.INSTANCE.createLineString(cs); - } - } - return null; - } - } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueMultiPoint.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeDefault.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeDefault.java 2008-10-07 13:59:38 UTC (rev 4040) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeDefault.java 2008-10-07 14:12:32 UTC (rev 4041) @@ -1,6 +1,6 @@ /* * @creation 4 avr. 2005 - * @modification $Date: 2008-05-13 12:10:33 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail de...@fu... @@ -14,52 +14,48 @@ import javax.swing.table.AbstractTableModel; -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.CoordinateSequence; -import com.vividsolutions.jts.geom.Envelope; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.LinearRing; - -import com.memoire.bu.BuTable; -import com.memoire.fu.FuLog; - import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.CtuluLibString; import org.fudaa.ctulu.CtuluListSelectionInterface; import org.fudaa.ctulu.collection.CtuluCollection; -import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ctulu.gis.GISAttributeInterface; import org.fudaa.ctulu.gis.GISAttributeModel; import org.fudaa.ctulu.gis.GISLib; import org.fudaa.ctulu.gis.GISZoneCollection; +import org.fudaa.ctulu.gis.GISZoneCollectionGeometry; import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; import org.fudaa.ctulu.gui.CtuluTable; - import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; import org.fudaa.ebli.calque.ZCalqueLigneBrisee; import org.fudaa.ebli.calque.ZModeleLigneBrisee; import org.fudaa.ebli.commun.EbliLib; -import org.fudaa.ebli.geometrie.GrBoite; -import org.fudaa.ebli.geometrie.GrPoint; import org.fudaa.ebli.palette.BPaletteInfo.InfoData; +import com.memoire.bu.BuTable; +import com.memoire.fu.FuLog; +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.CoordinateSequence; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.LinearRing; + /** * @author Fred Deniger - * @version $Id: ZModeleLigneBriseeDefault.java,v 1.20.6.3 2008-05-13 12:10:33 bmarchan Exp $ + * @version $Id$ */ -public class ZModeleLigneBriseeDefault implements ZModeleLigneBrisee, ZModeleEditable { +public class ZModeleLigneBriseeDefault extends ZModeleGeometryDefault + implements ZModeleLigneBrisee, ZModeleEditable { /** * @author Fred Deniger - * @version $Id: ZModeleLigneBriseeDefault.java,v 1.20.6.3 2008-05-13 12:10:33 bmarchan Exp $ + * @version $Id$ */ public static class AtomesTableModel extends AbstractTableModel { GISAttributeInterface[] att_; - final GISZoneCollectionLigneBrisee ligne_; + final GISZoneCollectionGeometry ligne_; final int[] nbLineAtoms_; @@ -67,7 +63,7 @@ final int nb_; - public AtomesTableModel(final GISZoneCollectionLigneBrisee _ligne) { + public AtomesTableModel(final GISZoneCollectionGeometry _ligne) { ligne_ = _ligne; nbLineAtoms_ = new int[_ligne.getNumGeometries()]; lineClosed_ = new boolean[_ligne.getNumGeometries()]; @@ -163,7 +159,7 @@ /** * @author Fred Deniger - * @version $Id: ZModeleLigneBriseeDefault.java,v 1.20.6.3 2008-05-13 12:10:33 bmarchan Exp $ + * @version $Id$ */ public static class LignesTableModel extends AbstractTableModel { @@ -237,8 +233,6 @@ } } - protected GISZoneCollectionLigneBrisee geometries_; - public ZModeleLigneBriseeDefault() {} /** @@ -250,15 +244,15 @@ } public final boolean containsPolygone() { - return geometries_ == null ? false : geometries_.containsPolygone(); + return geometries_ == null ? false : getGeomData().containsPolygone(); } public BuTable createValuesTable(final ZCalqueAffichageDonneesInterface _layer) { final BuTable r = new CtuluTable(); if (((ZCalqueLigneBrisee) _layer).isAtomicMode()) { - r.setModel(new AtomesTableModel(geometries_)); + r.setModel(new AtomesTableModel(getGeomData())); } else { - r.setModel(new LignesTableModel(true, geometries_)); + r.setModel(new LignesTableModel(true, getGeomData())); } return r; } @@ -335,48 +329,10 @@ } } - /** - * @return la collection a la base du modele. - */ - public final GISZoneCollectionLigneBrisee getCollection() { - return geometries_; + public final GISZoneCollectionLigneBrisee getGeomData() { + return (GISZoneCollectionLigneBrisee)geometries_; } - public final GrBoite getDomaine() { - if (geometries_ == null || geometries_.getNumGeometries() == 0) { - return null; - } - final Envelope e = geometries_.getEnvelopeInternal(); - if (e == null) { - return null; - } - return new GrBoite(new GrPoint(e.getMinX(), e.getMinY(), 0), new GrPoint(e.getMaxX(), e.getMaxY(), 0)); - } - - public final void getDomaineForGeometry(final int _idxLigne, final GrBoite _target) { - if (geometries_ == null || geometries_.getNumGeometries() == 0) { - return; - } - final Geometry g = geometries_.getGeometry(_idxLigne); - final Envelope e = g.getEnvelopeInternal(); - if (_target.o_ == null) { - _target.o_ = new GrPoint(); - } - if (_target.e_ == null) { - _target.e_ = new GrPoint(); - } - if (e != null && !e.isNull()) { - _target.o_.x_ = e.getMinX(); - _target.o_.y_ = e.getMinY(); - _target.e_.x_ = e.getMaxX(); - _target.e_.y_ = e.getMaxY(); - } - } - - public final GISZoneCollection getGeomData() { - return geometries_; - } - public final int getNbPolyligne() { return getNombre()-getNbPolygone(); } @@ -404,48 +360,14 @@ return GISLib.getNbGeomOf(LinearRing.class, geometries_); } - public final int getNombre() { - return geometries_ == null ? 0 : geometries_.getNumGeometries(); - } - - public final Object getObject(final int _ind) { - return geometries_ == null ? null : geometries_.getGeometry(_ind); - } - public boolean isCoordinateValid(final CoordinateSequence _seq, final CtuluAnalyze _analyze) { return false; } - public final boolean isGeometryFermee(final int _idxLigne) { - return geometries_ == null ? false : ((LineString) geometries_.getGeometry(_idxLigne)).isClosed(); - } - - public final boolean isGeometryReliee(final int _idxLigne) { - return true; - } - - public final boolean isGeometryVisible(final int _idxGeom) { - int iattVisibility=geometries_.getIndiceOf(GISAttributeConstants.VISIBILITE); - if (iattVisibility==-1) return true; - - return (Boolean)geometries_.getValue(iattVisibility, _idxGeom); - } - public boolean isValuesTableAvailable() { return true; } - public final boolean point(final GrPoint _pt, final int _ligneIdx, final int _pointIdx) { - final CoordinateSequence g = ((LineString) geometries_.getGeometry(_ligneIdx)).getCoordinateSequence(); - _pt.x_ = g.getX(_pointIdx); - _pt.y_ = g.getY(_pointIdx); - return true; - } - - public void prepareExport() { - geometries_.prepareExport(); - } - protected void fillWithAtomicInfo(final int _idxLigne, final int _idxPt, final InfoData _d) { final GISZoneCollection model = getGeomData(); final int nbAtt = model.getNbAttributes(); Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeDefault.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-10-07 13:59:38 UTC (rev 4040) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-10-07 14:12:32 UTC (rev 4041) @@ -1,6 +1,6 @@ /* * @creation 4 avr. 2005 - * @modification $Date: 2008-05-13 12:10:33 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail de...@fu... @@ -39,7 +39,7 @@ /** * @author Fred Deniger - * @version $Id: ZModeleLigneBriseeEditable.java,v 1.11.6.7 2008-05-13 12:10:33 bmarchan Exp $ + * @version $Id$ */ public class ZModeleLigneBriseeEditable extends ZModeleLigneBriseeDefault{ @@ -202,7 +202,7 @@ return false; } if (r) { - geometries_.addPolygone(poly, data, _cmd); + getGeomData().addPolygone(poly, data, _cmd); } return r; } @@ -246,7 +246,7 @@ return false; } if (r) { - geometries_.addPolyligne(poly, data, _cmd); + getGeomData().addPolyligne(poly, data, _cmd); } return r; } @@ -334,8 +334,8 @@ // Remplacement dans la collection. geometries_.removeGeometries(new int[]{_ligneIdx}, cmp); - geometries_.addPolyligne((GISPolyligne)GISGeometryFactory.INSTANCE.createLineString(cline1), dataline1, cmp); - geometries_.addPolyligne((GISPolyligne)GISGeometryFactory.INSTANCE.createLineString(cline2), dataline2, cmp); + getGeomData().addPolyligne((GISPolyligne)GISGeometryFactory.INSTANCE.createLineString(cline1), dataline1, cmp); + getGeomData().addPolyligne((GISPolyligne)GISGeometryFactory.INSTANCE.createLineString(cline2), dataline2, cmp); if (_cmd != null) { _cmd.addCmd(cmp.getSimplify()); @@ -431,7 +431,7 @@ } // Remplacement dans la collection. - geometries_.addPolyligne((GISPolyligne)GISGeometryFactory.INSTANCE.createLineString(cline), dataline, cmp); + getGeomData().addPolyligne((GISPolyligne)GISGeometryFactory.INSTANCE.createLineString(cline), dataline, cmp); geometries_.removeGeometries(_ligneIdx, cmp); if (_cmd != null) { Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-10-07 13:59:38 UTC (rev 4040) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-10-07 14:12:32 UTC (rev 4041) @@ -1,6 +1,6 @@ /* * @creation 4 avr. 2005 - * @modification $Date: 2008-05-13 12:10:22 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail de...@fu... @@ -14,14 +14,6 @@ import javax.swing.table.AbstractTableModel; -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.CoordinateSequence; -import com.vividsolutions.jts.geom.Envelope; -import com.vividsolutions.jts.geom.Geometry; - -import com.memoire.bu.BuTable; -import com.memoire.fu.FuLog; - import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ctulu.CtuluCommandComposite; import org.fudaa.ctulu.CtuluCommandContainer; @@ -40,26 +32,29 @@ import org.fudaa.ctulu.gis.GISZoneCollection; import org.fudaa.ctulu.gis.GISZoneCollectionMultiPoint; import org.fudaa.ctulu.gui.CtuluTable; - import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; import org.fudaa.ebli.calque.ZCalqueMultiPoint; import org.fudaa.ebli.calque.ZModeleMultiPoint; import org.fudaa.ebli.commun.EbliLib; import org.fudaa.ebli.commun.EbliListeSelectionMultiInterface; -import org.fudaa.ebli.geometrie.GrBoite; -import org.fudaa.ebli.geometrie.GrPoint; import org.fudaa.ebli.palette.BPaletteInfo.InfoData; +import com.memoire.bu.BuTable; +import com.memoire.fu.FuLog; +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.CoordinateSequence; +import com.vividsolutions.jts.geom.Geometry; + /** * Une implementation par defaut d'un mod\xE8le \xE9ditable pour des multipoints. * @author Bertrand Marchand - * @version $Id: ZModeleMultiPointEditable.java,v 1.1.2.4 2008-05-13 12:10:22 bmarchan Exp $ + * @version $Id$ */ -public class ZModeleMultiPointEditable implements ZModeleMultiPoint, ZModeleEditable { +public class ZModeleMultiPointEditable extends ZModeleGeometryDefault implements ZModeleMultiPoint, ZModeleEditable { /** * @author Bertrand Marchand - * @version $Id: ZModeleMultiPointEditable.java,v 1.1.2.4 2008-05-13 12:10:22 bmarchan Exp $ + * @version $Id$ */ public static class AtomesTableModel extends AbstractTableModel { @@ -164,7 +159,7 @@ /** * @author Fred Deniger - * @version $Id: ZModeleMultiPointEditable.java,v 1.1.2.4 2008-05-13 12:10:22 bmarchan Exp $ + * @version $Id$ */ public static class LignesTableModel extends AbstractTableModel { @@ -223,8 +218,6 @@ } } - protected GISZoneCollectionMultiPoint geometries_; - /** * @param _zone la zone: non copiee */ @@ -236,9 +229,9 @@ public BuTable createValuesTable(final ZCalqueAffichageDonneesInterface _layer) { final BuTable r = new CtuluTable(); if (((ZCalqueMultiPoint) _layer).isAtomicMode()) { - r.setModel(new AtomesTableModel(geometries_)); + r.setModel(new AtomesTableModel(getGeomData())); } else { - r.setModel(new LignesTableModel(geometries_)); + r.setModel(new LignesTableModel(getGeomData())); } return r; } @@ -298,41 +291,13 @@ } } - public final GrBoite getDomaine() { - if (geometries_ == null || geometries_.getNumGeometries() == 0) { - return null; - } - final Envelope e = geometries_.getEnvelopeInternal(); - if (e == null) { - return null; - } - return new GrBoite(new GrPoint(e.getMinX(), e.getMinY(), 0), new GrPoint(e.getMaxX(), e.getMaxY(), 0)); + public final GISZoneCollectionMultiPoint getGeomData() { + return (GISZoneCollectionMultiPoint)geometries_; } - public final void getDomaineForGeometry(final int _idxLigne, final GrBoite _target) { - if (geometries_ == null || geometries_.getNumGeometries() == 0) { - return; - } - final Geometry g = geometries_.getGeometry(_idxLigne); - final Envelope e = g.getEnvelopeInternal(); - if (_target.o_ == null) { - _target.o_ = new GrPoint(); - } - if (_target.e_ == null) { - _target.e_ = new GrPoint(); - } - if (e != null && !e.isNull()) { - _target.o_.x_ = e.getMinX(); - _target.o_.y_ = e.getMinY(); - _target.e_.x_ = e.getMaxX(); - _target.e_.y_ = e.getMaxY(); - } - } - - public final GISZoneCollection getGeomData() { - return geometries_; - } - + /* + * Surcharge pour acceleration des traitements. + */ public final int getNbPointForGeometry(final int _idxLigne) { if (geometries_ == null) { return 0; @@ -342,14 +307,6 @@ // return gi.getNumPoints(); } - public final int getNombre() { - return geometries_ == null ? 0 : geometries_.getNumGeometries(); - } - - public final Object getObject(final int _ind) { - return geometries_ == null ? null : geometries_.getGeometry(_ind); - } - public boolean isCoordinateValid(final CoordinateSequence _seq, final CtuluAnalyze _analyze) { if (_seq == null || _seq.size()<=0) { _analyze.addFatalError(EbliLib.getS("Pas de coordonn\xE9es")); @@ -361,21 +318,7 @@ public boolean isValuesTableAvailable() { return true; } - - public final boolean point(final GrPoint _pt, final int _ligneIdx, final int _pointIdx) { - // On s'appuie sur la m\xE9thode GISMultiPoint.getCoordinateSequence() cr\xE9\xE9e pour l'occasion et non GISMultiPoint.getCoordinates() - // pour r\xE9cuperer les coordonn\xE9es d'un point. En effet, recup\xE9rer le tableau des coordonn\xE9es s'av\xE8re terriblement - // penalisant pour l'affichage. - final CoordinateSequence g = ((GISMultiPoint) geometries_.getGeometry(_ligneIdx)).getCoordinateSequence(); - _pt.x_ = g.getX(_pointIdx); - _pt.y_ = g.getY(_pointIdx); - return true; - } - public void prepareExport() { - geometries_.prepareExport(); - } - protected void fillWithAtomicInfo(final int _idxLigne, final int _idxPt, final InfoData _d) { final GISZoneCollection model = getGeomData(); final int nbAtt = model.getNbAttributes(); @@ -858,18 +801,6 @@ if (_cmd!=null) _cmd.addCmd(cmp.getSimplify()); return true; } - - public boolean isGeometryFermee(int _idxGeom) { - return false; - } - - public boolean isGeometryReliee(int _idxGeom) { - return false; - } - - public final boolean isGeometryVisible(final int _idxLigne) { - return true; - } /** * Fait passer la g\xE9om\xE9trie en Modifier Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiPlanLayer.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiPlanLayer.java 2008-10-07 13:59:38 UTC (rev 4040) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiPlanLayer.java 2008-10-07 14:12:32 UTC (rev 4041) @@ -1,6 +1,6 @@ /* * @creation 14 avr. 2005 - * @modification $Date: 2007-01-19 13:14:09 $ + * @modification $Date$ * @license GNU General Public License 2 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail fud...@li... @@ -18,7 +18,7 @@ /** * @author Fred Deniger - * @version $Id: TrSiPlanLayer.java,v 1.25 2007-01-19 13:14:09 deniger Exp $ + * @version $Id$ */ public class TrSiPlanLayer extends FSigLayerLine { @@ -50,7 +50,7 @@ } public TrSiProfilModel.Zone getZone() { - return (TrSiProfilModel.Zone) ((ZModeleLigneBriseeDefault) getModele()).getCollection(); + return (TrSiProfilModel.Zone) ((ZModeleLigneBriseeDefault) getModele()).getGeomData(); } } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiPlanLayer.java ___________________________________________________________________ Added: svn:keywords + Date Revision Author URL Id This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2008-10-08 13:37:10
|
Revision: 4046 http://fudaa.svn.sourceforge.net/fudaa/?rev=4046&view=rev Author: emmanuel_martin Date: 2008-10-08 13:36:53 +0000 (Wed, 08 Oct 2008) Log Message: ----------- modification du wizard d'import pour permettre de choisir l'ETAT_GEOM de chaque fichier import?\195?\169. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLib.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoadResult.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderCsv.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderGIS.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderGrid.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderI.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderInp.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderPanel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderReflucadBER.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderReflucadPRO.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderReflucadSEM.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRefluxRefondeResult.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarCox.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarInx.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarSem.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarSt.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderSerafin.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderSinusX.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigWizardFileMng.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigWizardFileModel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigWizardImport.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigWizardImportStepDestination.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrGisProjectEditor.java Added Paths: ----------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/test/org/fudaa/ctulu/gis/TestGISDataModelAttributAdapter.java Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributAdapter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributAdapter.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributAdapter.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -0,0 +1,226 @@ +/* + * @creation 7 oct. 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.ctulu.gis; + +import java.util.ArrayList; +import java.util.List; + +import org.fudaa.ctulu.CtuluLibArray; +import org.fudaa.ctulu.ProgressionInterface; + +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.geom.Geometry; + +/** + * Cet Adapter permet d'ajouter d'attributs globaux au DataModel. + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class GISDataModelAttributAdapter implements GISDataModel{ + + // Le model adapt\xE9 + private GISDataModel dataModel_; + // Les nouveaux attributs + private List<GISAttributeInterface> newAttr_; + private List<Object[]> newValues_; + + public GISDataModelAttributAdapter(GISDataModel _dataModel){ + dataModel_ = _dataModel; + newAttr_ = new ArrayList<GISAttributeInterface>(1); + newValues_ = new ArrayList<Object[]>(1); + } + + /** + * Ajout un attribut pour tout les \xE9l\xE9ments si cet attribut n'existe pas d\xE9j\xE0. + * L'atomicit\xE9 (ou la globalit\xE9) de l'attribut est respect\xE9. + * @param _attr l'attribut a ajouter + * @param _value une valeur unique qui sera dupliquer pour toutes les g\xE9om\xE9tries + * @return 0 si l'attribut existe d\xE9j\xE0 (il n'est pas remplac\xE9) + * -2 si _attr ou _value sont null + */ + public int addAttribut(GISAttributeInterface _attr, Object _value){ + if(_attr==null||_value==null) + return -2; + if (dataModel_.getIndiceOf(_attr)==-1 && !newAttr_.contains(_attr)) { + newAttr_.add(_attr); + // Attribut atomique + if (_attr.isAtomicValue()) { + Object[] tmp=new Object[dataModel_.getNumGeometries()]; + for (int i=0; i<tmp.length; i++) + tmp[i]=_attr.createDataForGeom(_value, dataModel_.getGeometry(i).getNumPoints()); + newValues_.add(tmp); + } + // Attribut global + else { + Object[] tmp=new Object[dataModel_.getNumGeometries()]; + for (int i=0; i<tmp.length; i++) + tmp[i]=_value; + newValues_.add(tmp); + } + return 1; + } + else + return 0; + } + + /** + * Ajout un attribut pour tout les \xE9l\xE9ments si cet attribut n'existe pas d\xE9j\xE0. + * si _attr est un attribut atomique, chaque valeur sera dupliqu\xE9 pour + * chaque sommet de la g\xE9om\xE9trie. + * @param _attr l'attribut a ajouter + * @param _values une valeur pour chaque g\xE9om\xE9trie. + * @return 0 si l'attribut existe d\xE9j\xE0 (il n'est pas remplac\xE9) + * -1 en cas de tableau _values de mauvaise taille + * -2 si _attr ou _values sont null + */ + public int addAttribut(GISAttributeInterface _attr, Object[] _values){ + if(_attr==null||_values==null) + return -2; + if(dataModel_.getIndiceOf(_attr) == -1 && !newAttr_.contains(_attr)){ + if(_values.length != dataModel_.getNumGeometries()) + return -1; + // Attribut atomique + if (_attr.isAtomicValue()) { + Object[] tmp=new Object[dataModel_.getNumGeometries()]; + for (int i=0; i<tmp.length; i++) + tmp[i]=_attr.createDataForGeom(_values[i], dataModel_.getGeometry(i).getNumPoints()); + newAttr_.add(_attr); + newValues_.add(tmp); + } + // Attribut global + else { + newAttr_.add(_attr); + newValues_.add(_values); + } + return 1; + } + else + return 0; + } + + /** + * Ajout un attribut pour tout les \xE9l\xE9ments si cet attribut n'existe pas d\xE9j\xE0. + * Cette m\xE9thode n'est d\xE9finie que pour les attributs atomiques. + * @param _attr l'attribut a ajouter + * @param _values une valeur pour chaque sommet de chaque g\xE9om\xE9trie. + * @return 0 si l'attribut existe d\xE9j\xE0 (il n'est pas remplac\xE9) + * -1 en cas de tableau _values de mauvaise taille + * -2 si _attr ou _values sont null + * -3 si l'attribut n'est pas atomique + */ + public int addAttribut(GISAttributeInterface _attr, Object[][] _values){ + if(_attr==null||_values==null) + return -2; + if (_attr.isAtomicValue()) + if (dataModel_.getIndiceOf(_attr)==-1 && !newAttr_.contains(_attr)) { + if (_values.length!=dataModel_.getNumGeometries()) + return -1; + // Attribut atomique + Object[] tmp=new Object[dataModel_.getNumGeometries()]; + for (int i=0; i<tmp.length; i++){ + if(_values[i].length != dataModel_.getGeometry(i).getNumPoints()) + return -1; + tmp[i]=_attr.createDataForGeom(_values[i], _values[i].length); + } + newAttr_.add(_attr); + newValues_.add(tmp); + return 1; + } + else + return 0; + else + return -3; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getAttribute(int) + */ + public GISAttributeInterface getAttribute(int att) { + if(att<0) + return null; + if (dataModel_.getNbAttributes() > att) + return dataModel_.getAttribute(att); + else if(newAttr_.size() > att - dataModel_.getNbAttributes()) + return newAttr_.get(att - dataModel_.getNbAttributes()); + else return null; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getDoubleValue(int, int) + */ + public double getDoubleValue(int att, int geom) { + if(att>=0&&geom>=0){ + if (dataModel_.getNbAttributes() > att) + return dataModel_.getDoubleValue(att, geom); + else if(newAttr_.size() > att - dataModel_.getNbAttributes()) + return (Double)newValues_.get(att)[geom]; + else return 0; + } + return 0; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getEnvelopeInternal() + */ + public Envelope getEnvelopeInternal() { + return dataModel_.getEnvelopeInternal(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getGeometry(int) + */ + public Geometry getGeometry(int geom) { + if(geom<0||geom>=getNumGeometries()) + return null; + return dataModel_.getGeometry(geom); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getIndiceOf(org.fudaa.ctulu.gis.GISAttributeInterface) + */ + public int getIndiceOf(GISAttributeInterface _att) { + if(dataModel_.getIndiceOf(_att) != -1) + return dataModel_.getIndiceOf(_att); + else if(CtuluLibArray.findObjectEgalEgal(newAttr_, _att)!=-1) + return dataModel_.getNbAttributes()+CtuluLibArray.findObjectEgalEgal(newAttr_, _att); + else return -1; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getNbAttributes() + */ + public int getNbAttributes() { + return dataModel_.getNbAttributes()+newAttr_.size(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getNumGeometries() + */ + public int getNumGeometries() { + return dataModel_.getNumGeometries(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getValue(int, int) + */ + public Object getValue(int att, int geom) { + if(att<0||geom<0) return null; + if (dataModel_.getNbAttributes() > att && geom < dataModel_.getNumGeometries()) + return dataModel_.getValue(att, geom); + else if(newAttr_.size() > att - dataModel_.getNbAttributes() && geom < dataModel_.getNumGeometries()) + return newValues_.get(att - dataModel_.getNbAttributes())[geom]; + return null; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#preload(org.fudaa.ctulu.gis.GISAttributeInterface[], org.fudaa.ctulu.ProgressionInterface) + */ + public void preload(GISAttributeInterface[] _att, ProgressionInterface _prog) { + dataModel_.preload(_att, _prog); + } +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributAdapter.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLib.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLib.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLib.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -650,6 +650,9 @@ if (GISAttributeConstants.TITRE.getID().equals(_name)) { return GISAttributeConstants.TITRE; } + else if (GISAttributeConstants.ETAT_GEOM.getID().equals(_name)) { + return GISAttributeConstants.ETAT_GEOM; + } return new GISAttributeString(_name); } else if (!Geometry.class.isAssignableFrom(_c)) { return new GISAttribute(CtuluValueEditorDefaults.STRING_EDITOR, _name); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -333,8 +333,9 @@ public int getIndiceOf(final GISAttributeInterface _att) { if (attListHasChanged_) { att2Idx_.clear(); - for (int i=0; i<attr_.length; i++) - att2Idx_.put(attr_[i].getAttribute(),new Integer(i)); + if(attr_!=null) + for (int i=0; i<attr_.length; i++) + att2Idx_.put(attr_[i].getAttribute(),new Integer(i)); attListHasChanged_=false; } Integer idx=att2Idx_.get(_att); Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/test/org/fudaa/ctulu/gis/TestGISDataModelAttributAdapter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/test/org/fudaa/ctulu/gis/TestGISDataModelAttributAdapter.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/test/org/fudaa/ctulu/gis/TestGISDataModelAttributAdapter.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -0,0 +1,303 @@ +/* + * @creation 8 oct. 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.ctulu.gis; + +import junit.framework.TestCase; + +import org.fudaa.ctulu.gui.CtuluValueEditorDouble; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.Point; + +/** + * Test de la classe GISDataModelAttributAdapter. + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class TestGISDataModelAttributAdapter extends TestCase { + + private GISZoneCollection zoneEmpty_; + private GISZoneCollection zoneNoEmpty_; + private GISAttributeInterface[] attr_; + private Geometry[] geometries_; + private GISDataModelAttributAdapter adapterInitialised_; + + /** + * @param name + */ + public TestGISDataModelAttributAdapter(String name) { + super(name); + } + + public void testAddAttribut_1(){ + // TEST SUR LA ZONE NON VIDE \\ + // Test de la valeur de retour Sur un attribut global + assertEquals(1, adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.ATT_VAL_ETAT_MODI)); + assertEquals(0, adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.ATT_VAL_ETAT_MODI)); + // Test de de la valeur de retour sur un attribut atomique + GISAttribute attr = new GISAttribute(new CtuluValueEditorDouble(), "MyAttributAtomique", true); + assertEquals(1, adapterInitialised_.addAttribut(attr, new Double(2))); + assertEquals(0, adapterInitialised_.addAttribut(attr, new Double(12))); + // Test de coh\xE9rence des attributs + assertEquals(GISAttributeConstants.ETAT_GEOM, adapterInitialised_.getAttribute(attr_.length)); + assertEquals(attr, adapterInitialised_.getAttribute(attr_.length+1)); + // Test de coh\xE9rence des valeurs d'attribut + assertEquals(GISAttributeConstants.ATT_VAL_ETAT_MODI, adapterInitialised_.getValue(adapterInitialised_.getNbAttributes()-2, 0)); + assertEquals(GISAttributeConstants.ATT_VAL_ETAT_MODI, adapterInitialised_.getValue(adapterInitialised_.getNbAttributes()-2, adapterInitialised_.getNumGeometries()-1)); + Object result = adapterInitialised_.getValue(adapterInitialised_.getNbAttributes()-1, 0); + assertTrue(result instanceof GISAttributeModelObjectArray); + assertNotNull(result); + GISAttributeModelObjectArray expected = (GISAttributeModelObjectArray)attr.createDataForGeom(new Double(2), zoneNoEmpty_.getGeometry(0).getNumPoints()); + assertEquals(expected.getSize(), ((GISAttributeModelObjectArray)result).getSize()); + for(int i=0;i<expected.getSize();i++) + assertEquals(expected.getValue(i), ((GISAttributeModelObjectArray)result).getValue(i)); + + // TEST SUR LA ZONE VIDE \\ + GISDataModelAttributAdapter adapter = new GISDataModelAttributAdapter(zoneEmpty_); + // Test de la valeur de retour Sur un attribut global + assertEquals(1, adapter.addAttribut(GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.ATT_VAL_ETAT_MODI)); + assertEquals(0, adapter.addAttribut(GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.ATT_VAL_ETAT_MODI)); + // Test de de la valeur de retour sur un attribut atomique + assertEquals(1, adapter.addAttribut(attr, new Double(2))); + assertEquals(0, adapter.addAttribut(attr, new Double(12))); + // Test de coh\xE9rence des attributs + assertEquals(GISAttributeConstants.ETAT_GEOM, adapter.getAttribute(0)); + assertEquals(attr, adapter.getAttribute(1)); + + // TEST AVEC VALEURS NULL \\ + assertEquals(-2, adapterInitialised_.addAttribut(null, new Double(2))); + assertEquals(-2, adapterInitialised_.addAttribut(GISAttributeConstants.VISIBILITE, null)); + assertEquals(-2, adapterInitialised_.addAttribut(null, null)); + } + + public void testAddAttribut_2(){ + // TEST SUR LA ZONE NON VIDE \\ + // Test de la valeur de retour Sur un attribut global + Object[] valuesEtatGeom = new Object[geometries_.length]; + for(int i=0;i<geometries_.length;i++) + if(i>0 && valuesEtatGeom[i-1]==GISAttributeConstants.ATT_VAL_ETAT_ORIG) + valuesEtatGeom[i]=GISAttributeConstants.ATT_VAL_ETAT_MODI; + else + valuesEtatGeom[i]=GISAttributeConstants.ATT_VAL_ETAT_ORIG; + assertEquals(-1, adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, new Object[0])); + assertEquals(1, adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, valuesEtatGeom)); + assertEquals(0, adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, valuesEtatGeom)); + // Test de de la valeur de retour sur un attribut atomique + Object[] valuesMyAttr = new Object[geometries_.length]; + for(int i=0;i<geometries_.length;i++) + valuesMyAttr[i]=new Double(i); + GISAttribute attr = new GISAttribute(new CtuluValueEditorDouble(), "MyAttributAtomique", true); + assertEquals(1, adapterInitialised_.addAttribut(attr, valuesMyAttr)); + assertEquals(0, adapterInitialised_.addAttribut(attr, valuesMyAttr)); + // Test de coh\xE9rence des attributs + assertEquals(GISAttributeConstants.ETAT_GEOM, adapterInitialised_.getAttribute(attr_.length)); + assertEquals(attr, adapterInitialised_.getAttribute(attr_.length+1)); + // Test de coh\xE9rence des valeurs d'attribut + assertEquals(valuesEtatGeom[0], adapterInitialised_.getValue(adapterInitialised_.getNbAttributes()-2, 0)); + assertEquals(valuesEtatGeom[adapterInitialised_.getNumGeometries()-1], adapterInitialised_.getValue(adapterInitialised_.getNbAttributes()-2, adapterInitialised_.getNumGeometries()-1)); + Object result = adapterInitialised_.getValue(adapterInitialised_.getNbAttributes()-1, 0); + assertTrue(result instanceof GISAttributeModelObjectArray); + assertNotNull(result); + GISAttributeModelObjectArray expected = (GISAttributeModelObjectArray)attr.createDataForGeom(valuesMyAttr[0], zoneNoEmpty_.getGeometry(0).getNumPoints()); + assertEquals(expected.getSize(), ((GISAttributeModelObjectArray)result).getSize()); + for(int i=0;i<expected.getSize();i++) + assertEquals(expected.getValue(i), ((GISAttributeModelObjectArray)result).getValue(i)); + + // TEST SUR LA ZONE VIDE \\ + GISDataModelAttributAdapter adapter = new GISDataModelAttributAdapter(zoneEmpty_); + // Test de la valeur de retour Sur un attribut global + assertEquals(-1, adapter.addAttribut(GISAttributeConstants.ETAT_GEOM, valuesEtatGeom)); + assertEquals(1, adapter.addAttribut(GISAttributeConstants.ETAT_GEOM, new Object[0])); + assertEquals(0, adapter.addAttribut(GISAttributeConstants.ETAT_GEOM, new Object[0])); + // Test de de la valeur de retour sur un attribut atomique + assertEquals(-1, adapter.addAttribut(attr, valuesMyAttr)); + assertEquals(1, adapter.addAttribut(attr, new Object[0])); + assertEquals(0, adapter.addAttribut(attr, new Object[0])); + // Test de coh\xE9rence des attributs + assertEquals(GISAttributeConstants.ETAT_GEOM, adapter.getAttribute(0)); + assertEquals(attr, adapter.getAttribute(1)); + + // TEST AVEC VALEURS NULL \\ + assertEquals(-2, adapterInitialised_.addAttribut(null, new Double[geometries_.length])); + } + + public void testAddAttribut_3(){ + // TEST SUR LA ZONE NON VIDE \\ + // Test de la valeur de retour Sur un attribut global + assertEquals(-3, adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, new Object[0][0])); + // Test de de la valeur de retour sur un attribut atomique + Object[][] valuesMyAttr = new Object[geometries_.length][]; + for(int i=0;i<geometries_.length;i++){ + valuesMyAttr[i] = new Object[geometries_[i].getNumPoints()]; + for(int j=0;j<valuesMyAttr[i].length;j++) + valuesMyAttr[i][j] = new Double(i+j); + } + GISAttribute attr = new GISAttribute(new CtuluValueEditorDouble(), "MyAttributAtomique", true); + assertEquals(-1, adapterInitialised_.addAttribut(attr, new Object[0][0])); + assertEquals(-1, adapterInitialised_.addAttribut(attr, new Object[geometries_.length][0])); + assertEquals(1, adapterInitialised_.addAttribut(attr, valuesMyAttr)); + assertEquals(0, adapterInitialised_.addAttribut(attr, valuesMyAttr)); + // Test de coh\xE9rence des attributs + assertEquals(attr, adapterInitialised_.getAttribute(attr_.length)); + // Test de coh\xE9rence des valeurs d'attribut + Object result = adapterInitialised_.getValue(adapterInitialised_.getNbAttributes()-1, 0); + assertTrue(result instanceof GISAttributeModelObjectArray); + assertNotNull(result); + GISAttributeModelObjectArray expected = (GISAttributeModelObjectArray)attr.createDataForGeom(valuesMyAttr[0], zoneNoEmpty_.getGeometry(0).getNumPoints()); + assertEquals(expected.getSize(), ((GISAttributeModelObjectArray)result).getSize()); + for(int i=0;i<expected.getSize();i++) + assertEquals(expected.getValue(i), ((GISAttributeModelObjectArray)result).getValue(i)); + + + // TEST SUR LA ZONE VIDE \\ + GISDataModelAttributAdapter adapter = new GISDataModelAttributAdapter(zoneEmpty_); + // Test de la valeur de retour Sur un attribut global + assertEquals(-3, adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, new Object[0][0])); + // Test de de la valeur de retour sur un attribut atomique + assertEquals(-1, adapter.addAttribut(attr, valuesMyAttr)); + assertEquals(1, adapter.addAttribut(attr, new Object[0][])); + assertEquals(0, adapter.addAttribut(attr, new Object[0][])); + // Test de coh\xE9rence des attributs + assertEquals(attr, adapter.getAttribute(0)); + + // TEST AVEC VALEURS NULL \\ + assertEquals(-2, adapterInitialised_.addAttribut(null, new Double[geometries_.length][])); + assertEquals(-2, adapterInitialised_.addAttribut(null, new Double[geometries_.length][0])); + } + + public void testGetAttribut(){ + adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.ATT_VAL_ETAT_MODI); + assertEquals(attr_[0], adapterInitialised_.getAttribute(0)); + assertEquals(GISAttributeConstants.ETAT_GEOM, adapterInitialised_.getAttribute(attr_.length)); + assertNull(adapterInitialised_.getAttribute(-1)); + assertNull(adapterInitialised_.getAttribute(attr_.length+1)); + } + + public void testGetDoubleValue(){ + adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.ATT_VAL_ETAT_MODI); + assertEquals((Double)GISAttributeConstants.BATHY.getDefaultValue(), adapterInitialised_.getDoubleValue(0, 0), 0.00001); + assertEquals(0.0, adapterInitialised_.getDoubleValue(-1, 0), 0.00001); + assertEquals(0.0, adapterInitialised_.getDoubleValue(0, -1), 0.00001); + assertEquals(0.0, adapterInitialised_.getDoubleValue(-1, -1), 0.00001); + } + + public void testGetEnvelopeInternal(){ + adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.ATT_VAL_ETAT_MODI); + assertEquals(zoneNoEmpty_.getEnvelopeInternal(), adapterInitialised_.getEnvelopeInternal()); + } + + public void testGetGeometry(){ + adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.ATT_VAL_ETAT_MODI); + assertEquals(geometries_[0], adapterInitialised_.getGeometry(0)); + assertEquals(geometries_[attr_.length-1], adapterInitialised_.getGeometry(attr_.length-1)); + assertNull(adapterInitialised_.getGeometry(-1)); + assertNull(adapterInitialised_.getGeometry(attr_.length)); + } + + public void testGetIndiceOf(){ + adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.ATT_VAL_ETAT_MODI); + assertEquals(0, adapterInitialised_.getIndiceOf(attr_[0])); + assertEquals(attr_.length-1, adapterInitialised_.getIndiceOf(attr_[attr_.length-1])); + assertEquals(attr_.length, adapterInitialised_.getIndiceOf(GISAttributeConstants.ETAT_GEOM)); + assertEquals(-1, adapterInitialised_.getIndiceOf(GISAttributeConstants.VISIBILITE)); + assertEquals(-1, adapterInitialised_.getIndiceOf(null)); + } + + public void testGetNbAttributes(){ + assertEquals(attr_.length, adapterInitialised_.getNbAttributes()); + GISDataModelAttributAdapter adapter = new GISDataModelAttributAdapter(zoneEmpty_); + assertEquals(0, adapter.getNbAttributes()); + adapterInitialised_.addAttribut(GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.ATT_VAL_ETAT_MODI); + assertEquals(attr_.length+1, adapterInitialised_.getNbAttributes()); + adapter.addAttribut(GISAttributeConstants.ETAT_GEOM, GISAttributeConstants.ATT_VAL_ETAT_MODI); + assertEquals(1, adapter.getNbAttributes()); + } + + public void testGetNumGeometries(){ + assertEquals(geometries_.length, adapterInitialised_.getNumGeometries()); + GISDataModelAttributAdapter adapter = new GISDataModelAttributAdapter(zoneEmpty_); + assertEquals(0, adapter.getNumGeometries()); + } + + public void testGetValue(){ + GISAttributeModelDoubleArray reel = (GISAttributeModelDoubleArray) GISAttributeConstants.BATHY.createDataForGeom(GISAttributeConstants.BATHY.getDefaultValue(), geometries_[0].getNumGeometries()); + Object actual = adapterInitialised_.getValue(0, 0); + assertTrue(actual instanceof GISAttributeModelDoubleArray); + assertNotNull(actual); + assertTrue(reel.getSize()==((GISAttributeModelDoubleArray)actual).getSize()); + for(int i=0;i<reel.getSize();i++) + assertEquals((Double)reel.getValue(i),(Double) ((GISAttributeModelDoubleArray)actual).getValue(i), 0.00001); + + Object result = GISAttributeConstants.NATURE.createDataForGeom(GISAttributeConstants.NATURE.getDefaultValue(), geometries_[0].getNumGeometries()); + assertEquals(result, (String)adapterInitialised_.getValue(1, 0)); + + GISAttributeModelObjectArray reel2 = (GISAttributeModelObjectArray) attr_[2].createDataForGeom(attr_[2].getDefaultValue(), geometries_[0].getNumGeometries()); + actual = adapterInitialised_.getValue(2, 0); + assertTrue(actual instanceof GISAttributeModelObjectArray); + assertNotNull(actual); + assertTrue(reel2.getSize()==((GISAttributeModelObjectArray)actual).getSize()); + for(int i=0;i<reel2.getSize();i++) + assertEquals(reel2.getValue(i),((GISAttributeModelObjectArray)actual).getValue(i)); + + reel2 = (GISAttributeModelObjectArray) attr_[2].createDataForGeom(attr_[2].getDefaultValue(), geometries_[1].getNumGeometries()); + actual = adapterInitialised_.getValue(2, 1); + assertTrue(actual instanceof GISAttributeModelObjectArray); + assertNotNull(actual); + assertTrue(reel2.getSize()==((GISAttributeModelObjectArray)actual).getSize()); + for(int i=0;i<reel2.getSize();i++) + assertEquals(reel2.getValue(i),((GISAttributeModelObjectArray)actual).getValue(i)); + + assertNull(adapterInitialised_.getValue(-1, 0)); + assertNull(adapterInitialised_.getValue(0, -1)); + assertNull(adapterInitialised_.getValue(-1, -1)); + assertNull(adapterInitialised_.getValue(attr_.length, 0)); + assertNull(adapterInitialised_.getValue(0, geometries_.length)); + assertNull(adapterInitialised_.getValue(attr_.length, geometries_.length)); + } + + /* (non-Javadoc) + * @see junit.framework.TestCase#setUp() + */ + protected void setUp() throws Exception { + super.setUp(); + zoneEmpty_ = new GISZoneCollectionGeometry(); + zoneNoEmpty_ = new GISZoneCollectionGeometry(); + // Ajout d'attributs \\ + attr_ = new GISAttributeInterface[]{ + GISAttributeConstants.BATHY, + GISAttributeConstants.NATURE, + new GISAttribute(new CtuluValueEditorDouble(), "MyAttribut", true) + }; + zoneNoEmpty_.setAttributes(attr_, null); + // Ajout de g\xE9om\xE9tries \\ + geometries_ = new Geometry[]{ + GISGeometryFactory.INSTANCE.createPoint(0, 0, 0), + GISGeometryFactory.INSTANCE.createMultiPoint(new Point[]{GISGeometryFactory.INSTANCE.createPoint(1, 2, 3), GISGeometryFactory.INSTANCE.createPoint(4, 5, 6)}), + GISGeometryFactory.INSTANCE.createLinearRing(new Coordinate[]{new Coordinate(7, 8), new Coordinate(4, 10), new Coordinate(9, 10), new Coordinate(7, 8)}) + }; + for (int j=0; j<geometries_.length; j++) { + Object[] attrModel=new Object[attr_.length]; + for (int i=0; i<attr_.length; i++) + attrModel[i] =attr_[i].createDataForGeom(attr_[i].getDefaultValue(), geometries_[j].getNumPoints()); + zoneNoEmpty_.addGeometry(geometries_[j], attrModel, null); + } + adapterInitialised_ = new GISDataModelAttributAdapter(zoneNoEmpty_); + } + + /* (non-Javadoc) + * @see junit.framework.TestCase#tearDown() + */ + protected void tearDown() throws Exception { + super.tearDown(); + zoneEmpty_=null; + zoneNoEmpty_=null; + attr_=null; + } + +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/test/org/fudaa/ctulu/gis/TestGISDataModelAttributAdapter.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -758,9 +758,9 @@ if (geometries_ == null) { return false; } - geometries_.removeGeometries(_idx, _cmd); for(int i=0 ; i<_idx.length;i++) setGeomModif(_idx[i], _cmd); // Modification de l'\xE9tat de la g\xE9om\xE9trie + geometries_.removeGeometries(_idx, _cmd); return true; } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -8,50 +8,39 @@ package org.fudaa.fudaa.modeleur; import java.io.File; -import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import javax.swing.filechooser.FileFilter; - import org.fudaa.ctulu.CtuluCommandManager; import org.fudaa.ctulu.CtuluIOOperationSynthese; import org.fudaa.ctulu.CtuluRunnable; -import org.fudaa.ctulu.CtuluTaskDelegate; import org.fudaa.ctulu.ProgressionInterface; -import org.fudaa.ctulu.gis.factory.GISExportDataStoreFactory; import org.fudaa.ctulu.gui.CtuluDialogPanel; -import org.fudaa.ctulu.gui.CtuluFileChooser; -import org.fudaa.ctulu.gui.CtuluFileChooserTestWritable; import org.fudaa.ctulu.gui.CtuluLibSwing; -import org.fudaa.dodico.rubar.io.RubarStCnFileFormat; -import org.fudaa.dodico.telemac.io.SinusxFileFormat; import org.fudaa.ebli.calque.BCalque; +import org.fudaa.ebli.calque.BGroupeCalque; +import org.fudaa.ebli.calque.ZCalqueAffichageDonnees; import org.fudaa.ebli.calque.action.SceneSplitAction; import org.fudaa.ebli.calque.edition.ZCalqueEditable; import org.fudaa.ebli.commun.EbliActionAbstract; import org.fudaa.ebli.commun.EbliActionInterface; import org.fudaa.fudaa.commun.FudaaLib; -import org.fudaa.fudaa.commun.impl.FudaaGuiLib; -import org.fudaa.fudaa.commun.save.FudaaSaveLib; -import org.fudaa.fudaa.commun.save.FudaaSaveZipLoader; +import org.fudaa.fudaa.modeleur.action.CalqueNewCalqueAction; import org.fudaa.fudaa.modeleur.action.SceneDecimationAction; import org.fudaa.fudaa.modeleur.action.SceneInterpolationAction; import org.fudaa.fudaa.modeleur.action.SceneMoveInLayerAction; import org.fudaa.fudaa.modeleur.action.SceneProjectionAction; import org.fudaa.fudaa.modeleur.action.SceneRefinementAction; +import org.fudaa.fudaa.modeleur.layer.MdlLayerFactory; +import org.fudaa.fudaa.modeleur.layer.MdlLayerInterface; +import org.fudaa.fudaa.ressource.FudaaResource; import org.fudaa.fudaa.sig.layer.FSigEditor; import org.fudaa.fudaa.sig.layer.FSigLayerExporter; import org.fudaa.fudaa.sig.layer.FSigLayerFilter; +import org.fudaa.fudaa.sig.layer.FSigLayerGroup; import org.fudaa.fudaa.sig.layer.FSigVisuPanel; -import org.geotools.data.FileDataStoreFactorySpi; -import com.memoire.bu.BuFileFilter; import com.memoire.bu.BuWizardDialog; -import com.memoire.fu.FuLog; /** * Un manager pour l'\xE9dition des calques SIG. @@ -93,7 +82,21 @@ */ public void importSelectedLayer() { final ZCalqueEditable ed = super.getTarget(); - final MdlWizardImport importWizard = new MdlWizardImport(getEnglobPolygone(), ed, + + BGroupeCalque dest = null; + BCalque parent = null; + if (ed == null) { + parent = super.getPanel().getArbreCalqueModel().getSelectedCalque(); + } else { + parent = (BCalque) ((BCalque) ed).getParent(); + } + if (parent instanceof BGroupeCalque) { + dest = (BGroupeCalque) parent; + } else { + return; + } + + final MdlWizardImport importWizard = new MdlWizardImport(dest, this, getEnglobPolygone(), ed, ((FSigVisuPanel) getPanel()).getImpl(),((FSigVisuPanel) getPanel()).getCmdMng()); final BuWizardDialog dialog = new BuWizardDialog(CtuluLibSwing.getFrameAncestorHelper(super.getPanel()), importWizard); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -7,6 +7,15 @@ */ package org.fudaa.fudaa.modeleur; +import java.awt.Dimension; +import java.util.Map; + +import javax.swing.JComponent; +import javax.swing.event.ListDataEvent; +import javax.swing.event.ListDataListener; +import javax.swing.event.TableModelEvent; +import javax.swing.event.TableModelListener; + import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ctulu.CtuluCommandComposite; import org.fudaa.ctulu.CtuluCommandManager; @@ -19,18 +28,29 @@ import org.fudaa.ctulu.gis.GISDataModel; import org.fudaa.ctulu.gis.GISDataModelFilterAdapter; import org.fudaa.ctulu.gis.GISDataModelPointMultiPointAdapter; +import org.fudaa.ctulu.gis.GISDataModelPointPolyAdapter; import org.fudaa.ctulu.gis.GISPolygone; import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; import org.fudaa.ctulu.gis.GISZoneCollectionMultiPoint; +import org.fudaa.ctulu.gis.GISZoneCollectionPoint; +import org.fudaa.ebli.calque.BGroupeCalque; +import org.fudaa.ebli.calque.ZCalqueAffichageDonnees; import org.fudaa.ebli.calque.dessin.DeForme; import org.fudaa.ebli.calque.edition.ZCalqueEditable; +import org.fudaa.ebli.calque.edition.ZCalqueEditionGroup; import org.fudaa.fudaa.commun.FudaaLib; import org.fudaa.fudaa.modeleur.layer.MdlLayer2dLine; import org.fudaa.fudaa.modeleur.layer.MdlLayer2dMultiPoint; +import org.fudaa.fudaa.modeleur.layer.MdlLayerFactory; +import org.fudaa.fudaa.modeleur.layer.MdlLayerInterface; import org.fudaa.fudaa.modeleur.layer.MdlModel2dLine; import org.fudaa.fudaa.modeleur.layer.MdlModel2dMultiPoint; +import org.fudaa.fudaa.sig.FSigExportImportAttributesMapper; import org.fudaa.fudaa.sig.FSigLib; +import org.fudaa.fudaa.sig.layer.FSigEditor; +import org.fudaa.fudaa.sig.wizard.FSigFileLoaderPanel; import org.fudaa.fudaa.sig.wizard.FSigWizardImport; +import org.fudaa.fudaa.sig.wizard.FSigWizardImportStepDestination; /** * Un wizard d'import de donn\xE9es dans le calque cible. Il est limit\xE9 \xE0 1 etape. @@ -40,17 +60,75 @@ public class MdlWizardImport extends FSigWizardImport { CtuluCommandManager mng_; + private BGroupeCalque mdlDest_; + private FSigEditor mdlEditor_; + + + /** * @param _previewZone * @param _selectedLayer * @param _impl */ - public MdlWizardImport(GISPolygone[] _previewZone, ZCalqueEditable _selectedLayer, CtuluUI _impl, CtuluCommandManager _mng) { + public MdlWizardImport(BGroupeCalque _dest, FSigEditor _editor, GISPolygone[] _previewZone, ZCalqueEditable _selectedLayer, CtuluUI _impl, CtuluCommandManager _mng) { super(null, _previewZone, _selectedLayer, _impl); mng_=_mng; + mdlDest_=_dest; + mdlEditor_=_editor; + + // Exemple de cr\xE9ation d'un sous calque pour un BGroupeCalque + /* + int cqType_ = MdlLayerFactory.LAYER2D_CLOUD; + ZCalqueAffichageDonnees cq=MdlLayerFactory.getInstance().createLayer(cqType_, editor_); + cq.setName(BGroupeCalque.findUniqueChildName(parent_, ((MdlLayerInterface)cq).getExtName())); + parent_.enDernier(cq); + */ } + + public JComponent getStepComponent() { + if (current_ == 0) { + if (fileLoader_ == null) { + srcAtt_.addListDataListener(new ListDataListener() { - @Override + public void contentsChanged(final ListDataEvent _e) { + rebuildAtt(); + } + + public void intervalAdded(final ListDataEvent _e) { + rebuildAtt(); + } + + public void intervalRemoved(final ListDataEvent _e) { + rebuildAtt(); + } + }); + fileLoader_ = new FSigFileLoaderPanel(srcAtt_, impl_, previewZone_); + fileLoader_.setPreferredSize(new Dimension(450, 400)); + fileLoader_.setAttributeRequired(false); + fileLoader_.getFileMng().getModel().addTableModelListener(new TableModelListener() { + + public void tableChanged(final TableModelEvent _e) { + data_ = null; + } + }); + } + return fileLoader_; + } else if (current_ == 1) { + if (mapper_ == null) { + if (dest_!=null && dest_.getAttributes()!=null) + mapper_ = new FSigExportImportAttributesMapper(src_, dest_.getAttributes(), false); + } + if (pnDest_==null) pnDest_=new FSigWizardImportStepDestination(mdlDest_); + pnDest_.setMapper(mapper_); + pnDest_.setSrc(data_); + pnDest_.setSelectedLayer(selectedLayer_); + pnDest_.update(); + return pnDest_; + } + return null; + } + + public void doTask() { CtuluAnalyze analyze=new CtuluAnalyze(); if (data_==null) data_ = fileLoader_.loadAll(null, analyze); @@ -124,12 +202,84 @@ } if (mng_!=null) mng_.addCmd(cmp.getSimplify()); } + + /*protected void importData(final ProgressionInterface _prog) { + if (data_ == null || mapper_ == null) { + return; + } + final Map r = mapper_.getDestReadMap(); + final GISAttributeInterface[] dest = dest_.getAttributes(); + final GISAttributeInterface[] attChosen = new GISAttributeInterface[dest == null ? 0 : dest.length]; + boolean doPost = true; + for (int i = attChosen.length - 1; i >= 0; i--) { + // dest n'est pas null ici + attChosen[i] = (GISAttributeInterface) r.get(dest[i]); + if (dest[i] == GISAttributeConstants.BATHY && attChosen[i] != null) { + doPost = false; + } + } + data_.preload(attChosen, _prog); + final CtuluCommandComposite cmp = new CtuluCommandComposite(); + if (pnDest_.importPoint_.isOk() && data_.getNbPoints() > 0) { + // creation du calque de dest. + final GISZoneCollectionPoint pt = createPointLayer(cmp); + final GISDataModel[] pts = data_.getPoints(); + final int nb = pts.length; + for (int i = 0; i < nb; i++) { + final GISDataModel model = GISDataModelFilterAdapter.buildPointAdapter(pts[i], attChosen); + pt.addAll(model, cmp, false); + } + } + if (pnDest_.importLignes_.isOk()) { + GISZoneCollectionLigneBrisee line = null; + if (data_.getNbPolygones() > 0 || data_.getNbPolylignes() > 0) { + // creation du calque de dest. + line = createLineLayer(cmp); + GISDataModel[] lines = data_.getPolylignes(); + if (line != null) { + final int nb = lines.length; + for (int i = 0; i < nb; i++) { + final GISDataModel model = GISDataModelFilterAdapter.buildLigneAdapter(lines[i], attChosen); + line.addAll(model, cmp, doPost); + } + } + lines = data_.getPolygones(); + if (lines != null && line != null) { + final int nb = lines.length; + for (int i = 0; i < nb; i++) { + final GISDataModel model = GISDataModelFilterAdapter.buildLigneAdapter(lines[i], attChosen); + line.addAll(model, cmp, doPost); + } + } + } + if (pnDest_.cbImportLignesFromPt_.isSelected() && data_.getNbPoints() > 0) { + final GISDataModel[] pts = data_.getPoints(); + final int nb = pts.length; + final GISDataModelPointPolyAdapter.PolyOption option = new GISDataModelPointPolyAdapter.PolyOption(); + if (pnDest_.cmbImpLinesFromPt_.getSelectedIndex() == 1) { + option.setPoly(); + } else if (pnDest_.cmbImpLinesFromPt_.getSelectedIndex() == 2) { + option.setCheck(); + } + for (int i = 0; i < nb; i++) { + if (pts[i].getNumGeometries() > 2) { + if (line == null) { + line = createLineLayer(cmp); + } + line.addAll(new GISDataModelPointPolyAdapter(pts[i], attChosen, option), cmp, doPost); + } + } + } + } + + dest_.getCmdMng().addCmd(cmp.getSimplify()); + }*/ + @Override public int getStepCount() { return 1; } - } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoadResult.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoadResult.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoadResult.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -35,8 +35,8 @@ private boolean first_ = true; - public Set allAttribute_ = new HashSet(); - public Set attribute_ = new HashSet(); + public Set<GISAttributeInterface> allAttribute_ = new HashSet<GISAttributeInterface>(); + public Set<GISAttributeInterface> attribute_ = new HashSet<GISAttributeInterface>(); /** La somme des points contenus dans tous les mod\xE8les de points */ public int nbPoint_; @@ -47,11 +47,11 @@ /** La somme des poylignes contenus dans tous les mod\xE8les de polylignes */ public int nbPolylignes_; /** La liste des mod\xE8les {@link GISDataModel} de polylignes */ - public List ligneModel_ = new ArrayList(); + public List<GISDataModel> ligneModel_ = new ArrayList<GISDataModel>(); /** La liste des mod\xE8les {@link GISDataModel} de points */ - public List pointModel_ = new ArrayList(); + public List<GISDataModel> pointModel_ = new ArrayList<GISDataModel>(); /** La liste des mod\xE8les {@link GISDataModel} de polygones */ - public List polygoneModel_ = new ArrayList(); + public List<GISDataModel> polygoneModel_ = new ArrayList<GISDataModel>(); /** La liste des mod\xE8les {@link GISDataModel} de multipoints */ public void addUsedAttributes(final GISAttributeInterface[] _att) { @@ -112,7 +112,7 @@ } private GISAttributeInterface findAttributes(final String _name, final Class _clazz, final boolean _isAtomic) { - for (final Iterator it = allAttribute_.iterator(); it.hasNext();) { + for (final Iterator<GISAttributeInterface> it = allAttribute_.iterator(); it.hasNext();) { final GISAttributeInterface att = (GISAttributeInterface) it.next(); if (att.isAtomicValue() == _isAtomic && att.getName().equals(_name) && att.getDataClass().equals(_clazz)) { return att; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderCsv.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderCsv.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderCsv.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -13,23 +13,23 @@ import java.util.List; import java.util.Map; -import com.memoire.bu.BuFileFilter; - import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ctulu.CtuluDoubleParser; import org.fudaa.ctulu.CtuluIOOperationSynthese; import org.fudaa.ctulu.CtuluLibArray; import org.fudaa.ctulu.CtuluLibString; import org.fudaa.ctulu.ProgressionInterface; +import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ctulu.gis.GISAttributeInterface; +import org.fudaa.ctulu.gis.GISDataModelAttributAdapter; import org.fudaa.ctulu.gis.GISDataModelListPtAdapter; import org.fudaa.ctulu.gis.GISPoint; - import org.fudaa.dodico.mesure.DodicoCsvReader; - import org.fudaa.fudaa.commun.FudaaLib; import org.fudaa.fudaa.sig.FSigLib; +import com.memoire.bu.BuFileFilter; + /** * @author Fred Deniger * @version $Id: FSigFileLoaderCsv.java,v 1.2 2007-05-04 14:00:26 deniger Exp $ @@ -134,7 +134,7 @@ return ft_; } - public void setInResult(final FSigFileLoadResult _r, final File _f, final ProgressionInterface _prog, + public void setInResult(final FSigFileLoadResult _r, final File _f, String _fileOrigine, final ProgressionInterface _prog, final CtuluAnalyze _analyze) { final XYCsvReader reader = new XYCsvReader(); final CtuluDoubleParser parser = new CtuluDoubleParser(); @@ -158,7 +158,7 @@ double[][] attValues = null; final String[] name = reader.getName(); GISAttributeInterface[] att = null; - if (values.length > 2) { + if (values.length > 2) { // On ne prend pas le x et le y att = new GISAttributeInterface[values.length - 2]; attValues = new double[att.length][]; for (int i = att.length - 1; i >= 0; i--) { @@ -171,7 +171,12 @@ } _r.nbPoint_ += pt.length; _r.nbPointTotal_ += pt.length; - _r.pointModel_.add(new GISDataModelListPtAdapter(pt, att, attValues)); + // Ajout de l'attribut ETAT_GEOM + _r.findOrCreateAttribute(GISAttributeConstants.ETAT_GEOM.getID(), String.class, false); + GISDataModelAttributAdapter adapter = new GISDataModelAttributAdapter(new GISDataModelListPtAdapter(pt, att, attValues)); + adapter.addAttribut(GISAttributeConstants.ETAT_GEOM, _fileOrigine); + // + _r.pointModel_.add(adapter); } } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderGIS.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderGIS.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderGIS.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -23,6 +23,9 @@ import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ctulu.ProgressionInterface; +import org.fudaa.ctulu.gis.GISAttributeConstants; +import org.fudaa.ctulu.gis.GISDataModelAttributAdapter; +import org.fudaa.ctulu.gis.GISDataModelListPtAdapter; import org.fudaa.ctulu.gis.GISGeometry; import org.fudaa.ctulu.gis.GISVisitorDefault; @@ -96,7 +99,7 @@ } - public void setInResult(final FSigFileLoadResult _r, final File _f, final ProgressionInterface _prog, + public void setInResult(final FSigFileLoadResult _r, final File _f, String _fileOrigine, final ProgressionInterface _prog, final CtuluAnalyze _analyze) { if (src_ == null) { try { @@ -120,15 +123,20 @@ if (src_ != null && src_.getNumGeometries() > 0) { src_.atts_ = null; src_.buildAttributes(_r); + // Ajout de l'attribut ETAT_GEOM + _r.findOrCreateAttribute(GISAttributeConstants.ETAT_GEOM.getID(), String.class, false); + GISDataModelAttributAdapter adapter = new GISDataModelAttributAdapter(src_); + adapter.addAttribut(GISAttributeConstants.ETAT_GEOM, _fileOrigine); + // _r.addUsedAttributes(src_.atts_); if (nbPoint_ > 0) { - _r.pointModel_.add(src_); + _r.pointModel_.add(adapter); } if (nbPolygone_ > 0) { - _r.polygoneModel_.add(src_); + _r.polygoneModel_.add(adapter); } if (nbPolyligne_ > 0) { - _r.ligneModel_.add(src_); + _r.ligneModel_.add(adapter); } _r.nbPoint_ += nbPoint_; _r.nbPointTotal_ += nbPointTotal_; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderGrid.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderGrid.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderGrid.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -16,6 +16,7 @@ import org.fudaa.ctulu.ProgressionInterface; import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ctulu.gis.GISAttributeInterface; +import org.fudaa.ctulu.gis.GISDataModelAttributAdapter; import org.fudaa.dodico.ef.EfGridInterface; import org.fudaa.dodico.ef.EfGridSource; @@ -51,7 +52,7 @@ EfGridGisAdapter adapter_; - public void setInResult(final FSigFileLoadResult _r, final File _f, final ProgressionInterface _prog, + public void setInResult(final FSigFileLoadResult _r, final File _f, String _fileOrigine, final ProgressionInterface _prog, final CtuluAnalyze _analyze) { if (adapter_ == null) { final CtuluIOOperationSynthese op = version_.readGrid(_f, _prog); @@ -72,7 +73,12 @@ if (adapter_ != null) { _r.addUsedAttributes(new GISAttributeInterface[] { GISAttributeConstants.BATHY }); _r.allAttribute_.add(GISAttributeConstants.BATHY); - _r.pointModel_.add(adapter_); + // Ajout de l'attribut ETAT_GEOM + _r.findOrCreateAttribute(GISAttributeConstants.ETAT_GEOM.getID(), String.class, false); + GISDataModelAttributAdapter adapter = new GISDataModelAttributAdapter(adapter_); + adapter.addAttribut(GISAttributeConstants.ETAT_GEOM, _fileOrigine); + // + _r.pointModel_.add(adapter); _r.nbPoint_ += adapter_.getNumGeometries(); _r.nbPointTotal_ += adapter_.getNumGeometries(); } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderI.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderI.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderI.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -34,10 +34,11 @@ * \xEAtre produites et g\xE9r\xE9es par _analyse. * @param _r le conteneur de resultat * @param _f le fichier a lire si necessaire + * @param _fileOrigine un string indiquant \xE0 la valeur \xE0 mettre dans l'attribut ETAT_GEOM * @param _prog la barre de progression * @param _analyze L'analyseur d'informations. */ - void setInResult(FSigFileLoadResult _r, File _f, ProgressionInterface _prog, CtuluAnalyze _analyze); + void setInResult(FSigFileLoadResult _r, File _f, String _fileOrigine, ProgressionInterface _prog, CtuluAnalyze _analyze); /** * Le filtre pour les fichiers accept\xE9s par ce lecteur. Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderInp.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderInp.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderInp.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -20,8 +20,10 @@ import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.CtuluLibArray; import org.fudaa.ctulu.ProgressionInterface; +import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ctulu.gis.GISAttributeInterface; import org.fudaa.ctulu.gis.GISDataModel; +import org.fudaa.ctulu.gis.GISDataModelAttributAdapter; import org.fudaa.ctulu.gis.GISPoint; import org.fudaa.dodico.ef.EfGridInterface; @@ -133,7 +135,7 @@ return ft_; } - public void setInResult(final FSigFileLoadResult _r, final File _f, final ProgressionInterface _prog, + public void setInResult(final FSigFileLoadResult _r, final File _f, String _fileOrigine, final ProgressionInterface _prog, final CtuluAnalyze _analyze) { if (inp_ == null) { final CtuluIOOperationSynthese op = INPFileFormat.getInstance().getLastINPVersionImpl().read(_f, _prog); @@ -159,7 +161,12 @@ } _r.nbPoint_ += inp_.getGrid().getEltNb(); _r.nbPointTotal_ += inp_.getGrid().getEltNb(); - _r.pointModel_.add(new INPAdapter(att)); + // Ajout de l'attribut ETAT_GEOM + _r.findOrCreateAttribute(GISAttributeConstants.ETAT_GEOM.getID(), String.class, false); + GISDataModelAttributAdapter adapter = new GISDataModelAttributAdapter(new INPAdapter(att)); + adapter.addAttribut(GISAttributeConstants.ETAT_GEOM, _fileOrigine); + // + _r.pointModel_.add(adapter); _r.addUsedAttributes(att); } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderPanel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderPanel.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderPanel.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -147,6 +147,8 @@ pnFiles_.setValueListCellRenderer(new FileListCellRenderer()); pnFiles_.getTableColumnModel().getColumn(2).setCellEditor(fileMng_.getFmtRowEditor()); pnFiles_.getTableColumnModel().getColumn(2).setCellRenderer(fileMng_.getFmtRowRenderer()); + pnFiles_.getTableColumnModel().getColumn(3).setCellEditor(fileMng_.getFmtRowOrigineEditor()); + pnFiles_.getTableColumnModel().getColumn(3).setCellRenderer(fileMng_.getFmtRowOrigineRenderer()); final BuButton btPreview = new BuButton(FSigLib.getS("Pr\xE9visualiser")); btPreview.addActionListener(new ActionListener() { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderReflucadBER.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderReflucadBER.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderReflucadBER.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -12,6 +12,8 @@ import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ctulu.CtuluIOOperationSynthese; import org.fudaa.ctulu.ProgressionInterface; +import org.fudaa.ctulu.gis.GISAttributeConstants; +import org.fudaa.ctulu.gis.GISDataModelAttributAdapter; import org.fudaa.ctulu.gis.GISLib; import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; import org.fudaa.dodico.reflux.io.ReflucadBERFileFormat; @@ -55,7 +57,7 @@ } /* @override */ - public void setInResult(final FSigFileLoadResult _r, final File _f, final ProgressionInterface _prog, + public void setInResult(final FSigFileLoadResult _r, final File _f, String _fileOrigine, final ProgressionInterface _prog, final CtuluAnalyze _analyze) { final CtuluIOOperationSynthese op=ReflucadBERFileFormat.getInstance().read(_f, _prog); // En cas d'erreur, fin d'import. @@ -67,8 +69,12 @@ lines_=(GISZoneCollectionLigneBrisee)op.getSource(); _r.nbPointTotal_+=lines_.getNumPoints(); _r.nbPolylignes_+=lines_.getNumGeometries(); - - _r.ligneModel_.add(lines_); + // Ajout de l'attribut ETAT_GEOM + _r.findOrCreateAttribute(GISAttributeConstants.ETAT_GEOM.getID(), String.class, false); + GISDataModelAttributAdapter adapter = new GISDataModelAttributAdapter(lines_); + adapter.addAttribut(GISAttributeConstants.ETAT_GEOM, _fileOrigine); + // + _r.ligneModel_.add(adapter); _r.addUsedAttributes(GISLib.getAttributeFrom(lines_)); } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderReflucadPRO.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderReflucadPRO.java 2008-10-07 17:53:30 UTC (rev 4045) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderReflucadPRO.java 2008-10-08 13:36:53 UTC (rev 4046) @@ -12,6 +12,8 @@ import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ctulu.CtuluIOOperationSynthese; import org.fudaa.ctulu.ProgressionInterface; +import org.fudaa.ctulu.gis.GISAttributeConstants; +import org.fudaa.ctulu.gis.GISDataModelAttributAdapter; import org.fudaa.ctulu.gis.GISLib; import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; import org.fudaa.dodico.reflux.io.ReflucadPROFileFormat; @@ -55,7 +57,7 @@ } /* @override */ - public void setInResult(final FSigFileLoadResult _r, final File _f, final ProgressionInterface _prog, + public void setInResult(final FSigFileLoadResult _r, final File _f, String _fileOrigine, final ProgressionInterface _prog, final CtuluAnalyze _analyze) { final CtuluIOOperationSynthese op=ReflucadPROFileFormat.getInstance().read(_f, ... [truncated message content] |
From: <emm...@us...> - 2008-10-14 15:02:17
|
Revision: 4057 http://fudaa.svn.sourceforge.net/fudaa/?rev=4057&view=rev Author: emmanuel_martin Date: 2008-10-14 15:02:06 +0000 (Tue, 14 Oct 2008) Log Message: ----------- R?\195?\169impl?\195?\169mentation (pas totalement termin?\195?\169e) de la partie conversion du wizard d'import du modeleur. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigExportImportAttributesMapper.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderSinusX.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigWizardFileModel.java Added Paths: ----------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributSubstitution.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelMultiPointToPolyligne.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPolygoneToMultiPoint.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPolyligneToMultiPoint.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPolyligneToPolygone.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelSelectionAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluTableCellEditorProxy.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueSelectorVisitor.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImportStepDestination.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributAdapter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributAdapter.java 2008-10-13 17:18:22 UTC (rev 4056) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributAdapter.java 2008-10-14 15:02:06 UTC (rev 4057) @@ -17,9 +17,9 @@ import com.vividsolutions.jts.geom.Geometry; /** - * Cet Adapter permet d'ajouter d'attributs globaux au DataModel. + * Cet Adapter permet l'ajout d'attributs au DataModel. * @author Emmanuel MARTIN - * @version $Id:$ + * @version $Id$ */ public class GISDataModelAttributAdapter implements GISDataModel{ @@ -209,11 +209,12 @@ * @see org.fudaa.ctulu.gis.GISDataModel#getValue(int, int) */ public Object getValue(int att, int geom) { - if(att<0||geom<0) return null; - if (dataModel_.getNbAttributes() > att && geom < dataModel_.getNumGeometries()) + if (att<0||geom<0) + return null; + if (dataModel_.getNbAttributes()>att&&geom<dataModel_.getNumGeometries()) return dataModel_.getValue(att, geom); - else if(newAttr_.size() > att - dataModel_.getNbAttributes() && geom < dataModel_.getNumGeometries()) - return newValues_.get(att - dataModel_.getNbAttributes())[geom]; + else if (newAttr_.size()>att-dataModel_.getNbAttributes()&&geom<dataModel_.getNumGeometries()) + return newValues_.get(att-dataModel_.getNbAttributes())[geom]; return null; } Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributSubstitution.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributSubstitution.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributSubstitution.java 2008-10-14 15:02:06 UTC (rev 4057) @@ -0,0 +1,196 @@ +/* + * @creation 14 oct. 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.ctulu.gis; + +import java.util.HashMap; +import java.util.Map; + +import org.fudaa.ctulu.ProgressionInterface; + +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.geom.Geometry; + +/** + * Cette adapter permet de substituer des attributs existant par d'autre. + * Par exemple, me model poss\xE8de deux attributs : V1 (type double) et Z + * (type double), l'adapter permet de substituer V& \xE0 Z. Ainsi toutes les + * requ\xEAtes sur Z seront redirig\xE9es sur V1. + * Les deux attributs doivent pr\xE9alablement exist\xE9s, avoir des types de valeur + * identique et \xEAtre de m\xEAme niveau (global ou atomique). + * A not\xE9 que se ne sont que les valeurs qui sont substituer. En cas d'appelle + * \xE0 la m\xE9thod getAttribut sur l'attribut substituer, sont GISAttributInterface + * sera toujours renvoy\xE9 comme avant. + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class GISDataModelAttributSubstitution implements GISDataModel { + + private final GISDataModel model_; + /** + * Table contenant les substitutions d'attributs \xE0 faire sur le model. + * Pour des raisons de performence, la substitution est m\xE9moris\xE9 par + * l'index des attributs. + */ + private final HashMap<Integer, Integer> substitutionTable_; + + /** + * Cette adapter permet de substituer des attributs existant par d'autre. Par + * exemple, me model poss\xE8de deux attributs : V1 (type double) et Z (type + * double), l'adapter permet de substituer V1 \xE0 Z. Ainsi toutes les requ\xEAtes + * sur Z seront redirig\xE9es sur V1. Les deux attributs doivent pr\xE9alablement + * exist\xE9s et avoir des types de valeur identique. Si les attributs sont de + * niveau (global ou atomique) diff\xE9rent, l'adapter converti les valeurs + * en utilisant la m\xE9thod createDataForGeom. + * A not\xE9 que se ne sont que les valeurs qui sont substituer. En + * cas d'appelle \xE0 la m\xE9thod getAttribut sur l'attribut substituer, sont + * GISAttributInterface sera toujours renvoy\xE9 comme avant. + * + * + * @param _model + * le model \xE0 adaoter + * @param _substitutionTable + * cette table contient les substitutions \xE0 faire. Une substitution + * est un tableau \xE0 deux \xE9l\xE9ments : le premier l'attribut a + * substituer et le second l'attribut par lequel le substituer. + * _substitutionTable est donc un tableau de tableau \xE0 deux \xE9l\xE9ments. + */ + public GISDataModelAttributSubstitution(GISDataModel _model, GISAttributeInterface[][] _substitutionTable){ + if(_substitutionTable==null||_model==null) + throw new IllegalArgumentException("_substitutionTable et _model ne doivent pas \xEAtre null."); + model_=_model; + substitutionTable_=new HashMap<Integer, Integer>(); + // Verification des substitutions + for(int i=0;i<_substitutionTable.length;i++){ + if(_substitutionTable[i].length!=2) + throw new IllegalArgumentException("Une substitution est un tableau \xE0 deux \xE9l\xE9ments, ni plus, ni moins."); + if(_substitutionTable[i][0].getDataClass()!=_substitutionTable[i][1].getDataClass()) + throw new IllegalArgumentException("Les deux substitutions doivent avoir des valeurs de m\xEAme type."); + if(model_.getIndiceOf(_substitutionTable[i][0])==-1) + throw new IllegalArgumentException(_substitutionTable[i][0].getID() + "n'est pas dans le model."); + if(model_.getIndiceOf(_substitutionTable[i][1])==-1) + throw new IllegalArgumentException(_substitutionTable[i][1].getID() + "n'est pas dans le model."); + // Ajout de la substitution + substitutionTable_.put(model_.getIndiceOf(_substitutionTable[i][0]), model_.getIndiceOf(_substitutionTable[i][1])); + } + } + + /** + * Cette adapter permet de substituer des attributs existant par d'autre. Par + * exemple, me model poss\xE8de deux attributs : V1 (type double) et Z (type + * double), l'adapter permet de substituer V& \xE0 Z. Ainsi toutes les requ\xEAtes + * sur Z seront redirig\xE9es sur V1. Les deux attributs doivent pr\xE9alablement + * exist\xE9s, avoir des types de valeur identique et \xEAtre de m\xEAme niveau (global + * ou atomique). + * A not\xE9 que se ne sont que les valeurs qui sont substituer. En + * cas d'appelle \xE0 la m\xE9thod getAttribut sur l'attribut substituer, sont + * GISAttributInterface sera toujours renvoy\xE9 comme avant. + * + * + * @param _model + * le model \xE0 adaoter + * @param _substitutionTable + * cette map contient les substitutions \xE0 faire. Le premier l'attribut + * a substituer et le second l'attribut par lequel le substituer. + */ + public GISDataModelAttributSubstitution(GISDataModel _model, Map<GISAttributeInterface, GISAttributeInterface> _substitutionTable){ + if(_substitutionTable==null||_model==null) + throw new IllegalArgumentException("_substitutionTable et _model ne doivent pas \xEAtre null."); + model_=_model; + substitutionTable_=new HashMap<Integer, Integer>(); + // Verification des substitutions + for(Map.Entry<GISAttributeInterface, GISAttributeInterface> entry:_substitutionTable.entrySet()){ + if(entry.getKey().getDataClass()!=entry.getValue().getDataClass()) + throw new IllegalArgumentException("Les deux substitutions doivent avoir des valeurs de m\xEAme type."); + if(model_.getIndiceOf(entry.getKey())==-1) + throw new IllegalArgumentException(entry.getKey().getID() + "n'est pas dans le model."); + if(model_.getIndiceOf(entry.getValue())==-1) + throw new IllegalArgumentException(entry.getValue().getID() + "n'est pas dans le model."); + // Ajout de la substitution + substitutionTable_.put(model_.getIndiceOf(entry.getKey()), model_.getIndiceOf(entry.getValue())); + } + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getAttribute(int) + */ + public GISAttributeInterface getAttribute(int _att) { + return model_.getAttribute(_att); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getDoubleValue(int, int) + */ + public double getDoubleValue(int _att, int _geom) { + if (substitutionTable_.containsKey(_att)) + return model_.getDoubleValue(substitutionTable_.get(_att), _geom); + else + return model_.getDoubleValue(_att, _geom); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getEnvelopeInternal() + */ + public Envelope getEnvelopeInternal() { + return model_.getEnvelopeInternal(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getGeometry(int) + */ + public Geometry getGeometry(int _geom) { + return model_.getGeometry(_geom); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getIndiceOf(org.fudaa.ctulu.gis.GISAttributeInterface) + */ + public int getIndiceOf(GISAttributeInterface _att) { + return model_.getIndiceOf(_att); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getNbAttributes() + */ + public int getNbAttributes() { + return model_.getNbAttributes(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getNumGeometries() + */ + public int getNumGeometries() { + return model_.getNumGeometries(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getValue(int, int) + */ + public Object getValue(int _att, int _geom) { + if (substitutionTable_.containsKey(_att)) + if (getAttribute(_att).isAtomicValue()!=getAttribute(substitutionTable_.get(_att)).isAtomicValue()) { + Object value; + if (getAttribute(substitutionTable_.get(_att)).isAtomicValue()) + value=((GISAttributeModel)model_.getValue(substitutionTable_.get(_att), _geom)).getAverage(); + else + value=model_.getValue(substitutionTable_.get(_att), _geom); + return model_.getAttribute(_att).createDataForGeom(value, model_.getGeometry(_geom).getNumPoints()); + } + else + return model_.getValue(substitutionTable_.get(_att), _geom); + else + return model_.getValue(_att, _geom); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#preload(org.fudaa.ctulu.gis.GISAttributeInterface[], org.fudaa.ctulu.ProgressionInterface) + */ + public void preload(GISAttributeInterface[] _att, ProgressionInterface _prog) { + model_.preload(_att, _prog); + } + +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributSubstitution.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelMultiPointToPolyligne.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelMultiPointToPolyligne.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelMultiPointToPolyligne.java 2008-10-14 15:02:06 UTC (rev 4057) @@ -0,0 +1,125 @@ +/* + * @creation 14 oct. 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.ctulu.gis; + +import java.util.ArrayList; +import java.util.HashMap; + +import org.fudaa.ctulu.ProgressionInterface; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.LinearRing; +import com.vividsolutions.jts.geom.MultiPoint; + +/** + * Cette classe convertie les mulitpoints en polyligne. Les g\xE9om\xE9tries faisant + * partie du model ne pouvant \xEAtre converties (soit parce que se ne sont pas des + * multipoint soit parce qu'il n'y a pas assez de points pour faire la conversion) + * deviennent invisible. + * + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class GISDataModelMultiPointToPolyligne implements GISDataModel { + + private final GISDataModel model_; + /** Table de translation d'indices des g\xE9om\xE9tries. */ + private final ArrayList<Integer> translationTable_; + /** Table cache des polylignes cr\xE9es.*/ + private final HashMap<Integer, LineString> cachePolyligne_; + + public GISDataModelMultiPointToPolyligne(GISDataModel _model){ + if(_model==null) + throw new IllegalArgumentException("_model ne doit pas \xEAtre null."); + translationTable_=new ArrayList<Integer>(); + cachePolyligne_=new HashMap<Integer, LineString>(); + model_=_model; + // Construction de la table de translation + for(int i=0;i<model_.getNumGeometries();i++) + if(model_.getGeometry(i) instanceof MultiPoint && model_.getGeometry(i).getNumPoints() >= 2) + translationTable_.add(i); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getAttribute(int) + */ + public GISAttributeInterface getAttribute(int _att) { + return model_.getAttribute(_att); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getDoubleValue(int, int) + */ + public double getDoubleValue(int _att, int _geom) { + if(_geom>0&&_geom<translationTable_.size()) + return getDoubleValue(_att, translationTable_.get(_geom)); + return 0; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getEnvelopeInternal() + */ + public Envelope getEnvelopeInternal() { + return model_.getEnvelopeInternal(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getGeometry(int) + */ + public Geometry getGeometry(int _geom) { + if (_geom>=0&&_geom<translationTable_.size()) { + if (!cachePolyligne_.containsKey(_geom)) { + Coordinate[] coordinates=model_.getGeometry(translationTable_.get(_geom)).getCoordinates(); + // Cr\xE9ation de la polyligne + cachePolyligne_.put(_geom, GISGeometryFactory.INSTANCE.createLineString(coordinates)); + } + return cachePolyligne_.get(_geom); + } + return null; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getIndiceOf(org.fudaa.ctulu.gis.GISAttributeInterface) + */ + public int getIndiceOf(GISAttributeInterface _att) { + return model_.getIndiceOf(_att); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getNbAttributes() + */ + public int getNbAttributes() { + return model_.getNbAttributes(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getNumGeometries() + */ + public int getNumGeometries() { + return translationTable_.size(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getValue(int, int) + */ + public Object getValue(int _att, int _geom) { + if(_geom>0&&_geom<translationTable_.size()) + return model_.getValue(_att, translationTable_.get(_geom)); + return null; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#preload(org.fudaa.ctulu.gis.GISAttributeInterface[], org.fudaa.ctulu.ProgressionInterface) + */ + public void preload(GISAttributeInterface[] _att, ProgressionInterface _prog) { + model_.preload(_att, _prog); + } +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelMultiPointToPolyligne.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPolygoneToMultiPoint.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPolygoneToMultiPoint.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPolygoneToMultiPoint.java 2008-10-14 15:02:06 UTC (rev 4057) @@ -0,0 +1,124 @@ +/* + * @creation 14 oct. 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.ctulu.gis; + +import java.util.ArrayList; +import java.util.HashMap; + +import org.fudaa.ctulu.ProgressionInterface; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.LinearRing; +import com.vividsolutions.jts.geom.MultiPoint; +import com.vividsolutions.jts.geom.Point; + +/** + * Cette classe convertie les polygones en Multipoint. Les g\xE9om\xE9tries faisant + * partie du model ne pouvant \xEAtre converties (parce que se ne sont pas des + * polygones) deviennent invisible. + * + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class GISDataModelPolygoneToMultiPoint implements GISDataModel { + + private final GISDataModel model_; + /** Table de translation d'indices des g\xE9om\xE9tries. */ + private final ArrayList<Integer> translationTable_; + /** Table cache des multipoints cr\xE9es.*/ + private final HashMap<Integer, MultiPoint> cacheMultiPoint_; + + public GISDataModelPolygoneToMultiPoint(GISDataModel _model){ + if(_model==null) + throw new IllegalArgumentException("_model ne doit pas \xEAtre null."); + translationTable_=new ArrayList<Integer>(); + cacheMultiPoint_=new HashMap<Integer, MultiPoint>(); + model_=_model; + // Construction de la table de translation + for(int i=0;i<model_.getNumGeometries();i++) + if(model_.getGeometry(i) instanceof LinearRing) + translationTable_.add(i); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getAttribute(int) + */ + public GISAttributeInterface getAttribute(int _att) { + return model_.getAttribute(_att); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getDoubleValue(int, int) + */ + public double getDoubleValue(int _att, int _geom) { + if(_geom>0&&_geom<translationTable_.size()) + return getDoubleValue(_att, translationTable_.get(_geom)); + return 0; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getEnvelopeInternal() + */ + public Envelope getEnvelopeInternal() { + return model_.getEnvelopeInternal(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getGeometry(int) + */ + public Geometry getGeometry(int _geom) { + if (_geom>=0&&_geom<translationTable_.size()) { + if (!cacheMultiPoint_.containsKey(_geom)) { + Coordinate[] coordinates=model_.getGeometry(translationTable_.get(_geom)).getCoordinates(); + // Cr\xE9ation du MultiPoint + cacheMultiPoint_.put(_geom, GISGeometryFactory.INSTANCE.createMultiPoint(coordinates)); + } + return cacheMultiPoint_.get(_geom); + } + return null; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getIndiceOf(org.fudaa.ctulu.gis.GISAttributeInterface) + */ + public int getIndiceOf(GISAttributeInterface _att) { + return model_.getIndiceOf(_att); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getNbAttributes() + */ + public int getNbAttributes() { + return model_.getNbAttributes(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getNumGeometries() + */ + public int getNumGeometries() { + return translationTable_.size(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getValue(int, int) + */ + public Object getValue(int _att, int _geom) { + if(_geom>0&&_geom<translationTable_.size()) + return model_.getValue(_att, translationTable_.get(_geom)); + return null; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#preload(org.fudaa.ctulu.gis.GISAttributeInterface[], org.fudaa.ctulu.ProgressionInterface) + */ + public void preload(GISAttributeInterface[] _att, ProgressionInterface _prog) { + model_.preload(_att, _prog); + } +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPolygoneToMultiPoint.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPolyligneToMultiPoint.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPolyligneToMultiPoint.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPolyligneToMultiPoint.java 2008-10-14 15:02:06 UTC (rev 4057) @@ -0,0 +1,123 @@ +/* + * @creation 14 oct. 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.ctulu.gis; + +import java.util.ArrayList; +import java.util.HashMap; + +import org.fudaa.ctulu.ProgressionInterface; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.MultiPoint; + +/** + * Cette classe convertie les polylignes en Multipoint. Les g\xE9om\xE9tries faisant + * partie du model ne pouvant \xEAtre converties (parce que se ne sont pas des + * polylignes) deviennent invisible. + * + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class GISDataModelPolyligneToMultiPoint implements GISDataModel { + + private final GISDataModel model_; + /** Table de translation d'indices des g\xE9om\xE9tries. */ + private final ArrayList<Integer> translationTable_; + /** Table cache des multipoints cr\xE9es.*/ + private final HashMap<Integer, MultiPoint> cacheMultiPoint_; + + public GISDataModelPolyligneToMultiPoint(GISDataModel _model){ + if(_model==null) + throw new IllegalArgumentException("_model ne doit pas \xEAtre null."); + translationTable_=new ArrayList<Integer>(); + cacheMultiPoint_=new HashMap<Integer, MultiPoint>(); + model_=_model; + // Construction de la table de translation + for(int i=0;i<model_.getNumGeometries();i++) + if(model_.getGeometry(i) instanceof LineString) + translationTable_.add(i); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getAttribute(int) + */ + public GISAttributeInterface getAttribute(int _att) { + return model_.getAttribute(_att); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getDoubleValue(int, int) + */ + public double getDoubleValue(int _att, int _geom) { + if(_geom>0&&_geom<translationTable_.size()) + return getDoubleValue(_att, translationTable_.get(_geom)); + return 0; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getEnvelopeInternal() + */ + public Envelope getEnvelopeInternal() { + return model_.getEnvelopeInternal(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getGeometry(int) + */ + public Geometry getGeometry(int _geom) { + if (_geom>=0&&_geom<translationTable_.size()) { + if (!cacheMultiPoint_.containsKey(_geom)) { + Coordinate[] coordinates=model_.getGeometry(translationTable_.get(_geom)).getCoordinates(); + // Cr\xE9ation du MultiPoint + cacheMultiPoint_.put(_geom, GISGeometryFactory.INSTANCE.createMultiPoint(coordinates)); + } + return cacheMultiPoint_.get(_geom); + } + return null; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getIndiceOf(org.fudaa.ctulu.gis.GISAttributeInterface) + */ + public int getIndiceOf(GISAttributeInterface _att) { + return model_.getIndiceOf(_att); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getNbAttributes() + */ + public int getNbAttributes() { + return model_.getNbAttributes(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getNumGeometries() + */ + public int getNumGeometries() { + return translationTable_.size(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getValue(int, int) + */ + public Object getValue(int _att, int _geom) { + if(_geom>0&&_geom<translationTable_.size()) + return model_.getValue(_att, translationTable_.get(_geom)); + return null; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#preload(org.fudaa.ctulu.gis.GISAttributeInterface[], org.fudaa.ctulu.ProgressionInterface) + */ + public void preload(GISAttributeInterface[] _att, ProgressionInterface _prog) { + model_.preload(_att, _prog); + } +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPolyligneToMultiPoint.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPolyligneToPolygone.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPolyligneToPolygone.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPolyligneToPolygone.java 2008-10-14 15:02:06 UTC (rev 4057) @@ -0,0 +1,132 @@ +/* + * @creation 14 oct. 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.ctulu.gis; + +import java.util.ArrayList; +import java.util.HashMap; + +import org.fudaa.ctulu.ProgressionInterface; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.LinearRing; + +/** + * Cette classe convertie les polylignes en polygone. Les g\xE9om\xE9tries faisant + * partie du model ne pouvant \xEAtre converties (soit parce que se ne sont pas des + * polylignes soit parce qu'il n'y a pas assez de point dans la polyligne) + * deviennent invisible. + * + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class GISDataModelPolyligneToPolygone implements GISDataModel { + + private final GISDataModel model_; + /** Table de translation d'indices des g\xE9om\xE9tries. */ + private final ArrayList<Integer> translationTable_; + /** Table cache des polygone cr\xE9es.*/ + private final HashMap<Integer, LinearRing> cachePolygone_; + + public GISDataModelPolyligneToPolygone(GISDataModel _model){ + if(_model==null) + throw new IllegalArgumentException("_model ne doit pas \xEAtre null."); + translationTable_=new ArrayList<Integer>(); + cachePolygone_=new HashMap<Integer, LinearRing>(); + model_=_model; + // Construction de la table de translation + for(int i=0;i<model_.getNumGeometries();i++) + if(model_.getGeometry(i) instanceof LineString && model_.getGeometry(i).getNumPoints() >= 3) + translationTable_.add(i); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getAttribute(int) + */ + public GISAttributeInterface getAttribute(int _att) { + return model_.getAttribute(_att); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getDoubleValue(int, int) + */ + public double getDoubleValue(int _att, int _geom) { + if(_geom>0&&_geom<translationTable_.size()) + return getDoubleValue(_att, translationTable_.get(_geom)); + return 0; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getEnvelopeInternal() + */ + public Envelope getEnvelopeInternal() { + return model_.getEnvelopeInternal(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getGeometry(int) + */ + public Geometry getGeometry(int _geom) { + if (_geom>=0&&_geom<translationTable_.size()) { + if (!cachePolygone_.containsKey(_geom)) { + Coordinate[] coordinates=model_.getGeometry(translationTable_.get(_geom)).getCoordinates(); + // Le premier point et le dernier point doivent \xEAtre les m\xEAmes pour le + // polygone + if (coordinates[0]!=coordinates[coordinates.length-1]) { + Coordinate[] newCoordinates=new Coordinate[coordinates.length+1]; + System.arraycopy(coordinates, 0, newCoordinates, 0, coordinates.length); + newCoordinates[newCoordinates.length-1]=newCoordinates[0]; + coordinates=newCoordinates; + } + // Cr\xE9ation du polygone + cachePolygone_.put(_geom, GISGeometryFactory.INSTANCE.createLinearRing(coordinates)); + } + return cachePolygone_.get(_geom); + } + return null; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getIndiceOf(org.fudaa.ctulu.gis.GISAttributeInterface) + */ + public int getIndiceOf(GISAttributeInterface _att) { + return model_.getIndiceOf(_att); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getNbAttributes() + */ + public int getNbAttributes() { + return model_.getNbAttributes(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getNumGeometries() + */ + public int getNumGeometries() { + return translationTable_.size(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getValue(int, int) + */ + public Object getValue(int _att, int _geom) { + if(_geom>0&&_geom<translationTable_.size()) + return model_.getValue(_att, translationTable_.get(_geom)); + return null; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#preload(org.fudaa.ctulu.gis.GISAttributeInterface[], org.fudaa.ctulu.ProgressionInterface) + */ + public void preload(GISAttributeInterface[] _att, ProgressionInterface _prog) { + model_.preload(_att, _prog); + } +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPolyligneToPolygone.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelSelectionAdapter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelSelectionAdapter.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelSelectionAdapter.java 2008-10-14 15:02:06 UTC (rev 4057) @@ -0,0 +1,160 @@ +/* + * @creation 14 oct. 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.ctulu.gis; + +import java.util.ArrayList; + +import org.fudaa.ctulu.ProgressionInterface; + +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.geom.Geometry; + +/** + * Cette adapter permet de ne faire apparaitre dans le model que les g\xE9om\xE9tries + * r\xE9pondant \xE0 des conditions donn\xE9es sur les attributs. Par exemple on peut + * dire que seul les g\xE9om\xE9tries d'une certaine nature sont visbles. + * Plusieurs conditions peuvent \xEAtre donn\xE9es. Elles seront g\xE9r\xE9es avec un OU + * logique. Pour simuler un ET logique entre des conditions, il suffi d'empiler + * plusieurs fois cette adapter sur le model. + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class GISDataModelSelectionAdapter implements GISDataModel { + + public static final String ATTRIBUT_EXIST = "< GISDataModelSelectionAdapter:ATTRIBUT_EXIST >"; + public static final String ATTRIBUT_NOT_EXIST = "< GISDataModelSelectionAdapter:ATTRIBUT_NOT_EXIST >"; + + private final GISDataModel model_; + private final Object[][] conditions_; + /** Table de translation d'indices des g\xE9om\xE9tries. */ + private final ArrayList<Integer> translationTable_; + + /** + * Cette adapter permet de ne faire apparaitre dans le model que les + * g\xE9om\xE9tries r\xE9pondant \xE0 des conditions donn\xE9es sur les attributs.Par + * exemple on peut dire que seul les g\xE9om\xE9tries d'une certaine nature sont + * visbles. Plusieurs conditions peuvent \xEAtre donn\xE9es. Elles seront g\xE9r\xE9es + * avec un OU logique. Pour simuler un ET logique entre des conditions, il + * suffi d'empiler plusieurs fois cette adapter sur le model. + * + * @param _model + * le model sur lequel va se faire la selection + * @param _conditions + * un tableau de conditions. Une condition \xE9tant d\xE9finie par deux + * \xE9l\xE9ments : l'attribut concern\xE9 (GISAttributeInterface) et sa + * valeur (Object). Deux valeurs sp\xE9cials sont d\xE9finies dans cette + * classe : ATTRIBUT_EXIST pour indiquer que la condition est vrai a + * partir du moment o\xF9 l'attribut est d\xE9finie ; ATTRIBUT_NOT_EXIST + * indique que la condition est vrai a partir du moment o\xF9 l'attribut + * n'existe pas. + */ + public GISDataModelSelectionAdapter(GISDataModel _model, Object[][] _conditions){ + if(_model==null||_conditions==null) + throw new IllegalArgumentException("_model et _conditions ne doivent pas \xEAtre null."); + translationTable_=new ArrayList<Integer>(); + model_=_model; + // Verification de la validit\xE9 des conditions + for(int i=0;i<_conditions.length;i++){ + if(_conditions[i].length!=2) + throw new IllegalArgumentException("La taille de chaque condition doit \xEAtre \xE9gale \xE0 deux."); + if(!(_conditions[i][0] instanceof GISAttributeInterface)) + throw new IllegalArgumentException("Le premier \xE9l\xE9ment de la condition doit \xEAtre un GISAttributeInterface"); + } + conditions_=_conditions; + // R\xE9cup\xE9ration des indices des attribtus concernant les conditions + int[] indexAttributsConditions = new int[conditions_.length]; + for(int i=0;i<indexAttributsConditions.length;i++) + indexAttributsConditions[i]=model_.getIndiceOf((GISAttributeInterface)conditions_[i][0]); + // G\xE9n\xE9ration d'une table de translation d'index des g\xE9om\xE9tries + for(int i=0;i<model_.getNumGeometries();i++){ + // Verification des conditions + boolean valide=false; + int j=-1; + while(!valide&&++j<conditions_.length){ + if(indexAttributsConditions[j]==-1&&conditions_[j][1]==ATTRIBUT_NOT_EXIST) + valide=true; + else if(indexAttributsConditions[j]!=-1&&conditions_[j][1]==ATTRIBUT_EXIST) + valide=true; + else if(indexAttributsConditions[j]!=-1&&conditions_[j][1]==model_.getValue(indexAttributsConditions[j], i)) + valide=true; + } + if(valide) + translationTable_.add(i); + } + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getAttribute(int) + */ + public GISAttributeInterface getAttribute(int _att) { + return model_.getAttribute(_att); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getDoubleValue(int, int) + */ + public double getDoubleValue(int _att, int _geom) { + if(_geom>0&&_geom<translationTable_.size()) + return model_.getDoubleValue(_att, translationTable_.get(_geom)); + return 0; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getEnvelopeInternal() + */ + public Envelope getEnvelopeInternal() { + return model_.getEnvelopeInternal(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getGeometry(int) + */ + public Geometry getGeometry(int _geom) { + if(_geom<0||_geom>=translationTable_.size()) + return null; + return model_.getGeometry(translationTable_.get(_geom)); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getIndiceOf(org.fudaa.ctulu.gis.GISAttributeInterface) + */ + public int getIndiceOf(GISAttributeInterface _att) { + return model_.getIndiceOf(_att); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getNbAttributes() + */ + public int getNbAttributes() { + return model_.getNbAttributes(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getNumGeometries() + */ + public int getNumGeometries() { + return translationTable_.size(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getValue(int, int) + */ + public Object getValue(int _att, int _geom) { + if(_geom>=0&&_geom<translationTable_.size()) + return model_.getValue(_att, translationTable_.get(_geom)); + return null; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#preload(org.fudaa.ctulu.gis.GISAttributeInterface[], org.fudaa.ctulu.ProgressionInterface) + */ + public void preload(GISAttributeInterface[] _att, ProgressionInterface _prog) { + model_.preload(_att, _prog); + } + +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelSelectionAdapter.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-10-13 17:18:22 UTC (rev 4056) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-10-14 15:02:06 UTC (rev 4057) @@ -559,6 +559,19 @@ else fixedAttributes_.put(_att, _value); } + + /** + * Retourne la valeur associ\xE9e \xE0 un attribut immuable via la m\xE9thode + * setFixedAttributeValue. + * + * @param _att : l'attribut recherch\xE9 + * @return la valeur de l'attribut. Null si l'attribut n'est pas renseign\xE9. + */ + public Object getFixedAttributValue(GISAttributeInterface _att) { + if(_att!=null && fixedAttributes_.containsKey(_att)) + return fixedAttributes_.get(_att); + return null; + } /** * Associe les attributs aux objets de la collection. Pour chaque attribut inexistant dans la liste est cr\xE9\xE9 un nouveau mod\xE8le. Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluTableCellEditorProxy.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluTableCellEditorProxy.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluTableCellEditorProxy.java 2008-10-14 15:02:06 UTC (rev 4057) @@ -0,0 +1,187 @@ +/* + * @creation 10 oct. 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.ctulu.gui; + +import java.awt.Component; +import java.util.EventObject; +import java.util.HashMap; +import java.util.Map; + +import javax.swing.AbstractCellEditor; +import javax.swing.JTable; +import javax.swing.event.CellEditorListener; +import javax.swing.event.ChangeEvent; +import javax.swing.table.TableCellEditor; + +/** + * Cette classe est un proxy qui permet de choisir un \xE9ditor diff\xE9rent par + * ligne. Il est possible de donner les editeurs soit via un table soit via une + * map. + * + * tableau : le tableau doit avoir le m\xEAme nombre de case que le nombre de ligne + * dans le tableau \xE0 \xE9diter. Si se n'est pas le cas, les cellules + * suppl\xE9mentaires seront consid\xE9r\xE9es comme non \xE9ditable. Il est possible que + * donner des valeurs null dans le tableau, il sera alors consid\xE9r\xE9 que la + * cellule n'est pas \xE9ditable. + * + * map : l'avantage de la map par rapport au tableau est de ne renseigner que + * les lignes voulus. Il est possible de donner un index par defaut. Cette index + * servira \xE0 retourner l'editeur par defaut si il n'y en a pas de d\xE9fini \xE0 + * l'index demand\xE9. Si aucune instance n'est renseign\xE9 pour l'index par defaut, + * les cases seront consid\xE9r\xE9es comme non \xE9ditable. Comme le tableau, la valeur + * null pour un \xE9diteur signifie que la cellule n'est pas \xE9ditable. + * + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class CtuluTableCellEditorProxy extends AbstractCellEditor implements TableCellEditor, CellEditorListener { + + /** Le container d'editor, la clef est la ligne et la valeur le TableCellEditor.*/ + private final Map<Integer, TableCellEditor> mapEditors_; + /** Index par defaut en cas d'absence de la ligne dans la map. */ + private final int defaultIndex_; + /** L'index utilis\xE9 actuellement. */ + private int currentIndex_; + + /** + * Si le tableau n'est pas assez grand, null sera retourn\xE9 par la method + * getTableCellEditorComponent. + * + * Si _editors est null IllegalArgumentException sera lev\xE9e. + * + * @param _editors + * Tableau contenant l'editeur pour chaque ligne. Une valeur null + * pour un editeur undique que la cellule n'est pas \xE9ditable, null + * sera renvoy\xE9 par getTableCellEditorComponent. + */ + public CtuluTableCellEditorProxy(TableCellEditor[] _editors) { + if (_editors==null) + throw new IllegalArgumentException("_editors de doit pas \xEAtre null."); + mapEditors_=new HashMap<Integer, TableCellEditor>(); + defaultIndex_=-1; + currentIndex_=-1; + for (int i=0; i<_editors.length; i++) + mapEditors_.put(i, _editors[i]); + } + + /** + * Si _editors est null IllegalArgumentException sera lev\xE9e. + * + * @param _editors + * Une Map avec pour key le num\xE9ro de la ligne et pour Value un + * TableCellEditor. Une valeur null pour un editeur indique que la + * cellule n'est pas \xE9ditable : null sera renvoy\xE9 par + * getTableCellEditorComponent. + * @param _defaultChoice + * Si des lignes ne sont pas renseign\xE9s, la Key _defaultChoice sera + * utilis\xE9e \xE0 la place. Si la valeur par defaut n'est pas dans la map, + * null sera renvoy\xE9 par getTableCellEditor. + */ + public CtuluTableCellEditorProxy(Map<Integer, TableCellEditor> _editors, int _defaultChoice) { + if (_editors==null) + throw new IllegalArgumentException("_editors de doit pas \xEAtre null."); + defaultIndex_=_defaultChoice; + currentIndex_=-1; + mapEditors_=_editors; + } + + /* (non-Javadoc) + * @see javax.swing.table.TableCellEditor#getTableCellEditorComponent(javax.swing.JTable, java.lang.Object, boolean, int, int) + */ + public Component getTableCellEditorComponent(JTable _table, Object _value, boolean _isSelected, int _row, int _column) { + // Suppression de l'\xE9coute d'\xE9venement sur l'ancien editeur + if(currentIndex_!=-1) + mapEditors_.get(currentIndex_).removeCellEditorListener(this); + // Actualisation de currentIndex_ + if(mapEditors_.containsKey(_row)) + if(mapEditors_.get(_row)!=null) + // Cas normal + currentIndex_=_row; + else{ + // Cas o\xF9 la cellule n'est pas \xE9ditable + currentIndex_=-1; + return null; + } + else if(mapEditors_.containsKey(defaultIndex_)) + // Cas o\xF9 l'editeur n'est pas renseign\xE9 : on utilise la valeur par defaut + if(mapEditors_.get(defaultIndex_)!=null) + // Cas normal de l'utilisation de l'editeur par defaut + currentIndex_=defaultIndex_; + else{ + // Cas o\xF9 l'index par defaut pointe sur null + currentIndex_=-1; + return null; + } + else{ + // Cas o\xF9 la valeur par defaut n'existe pas : la case est non \xE9ditable + currentIndex_=-1; + return null; + } + // Ajout de l'\xE9coute d'\xE9venement sur le nouvel \xE9diteur et transfert d'appelle + mapEditors_.get(currentIndex_).addCellEditorListener(this); + return mapEditors_.get(currentIndex_).getTableCellEditorComponent(_table, _value, _isSelected, _row, _column); + } + + /* (non-Javadoc) + * @see javax.swing.CellEditor#cancelCellEditing() + */ + public void cancelCellEditing() { + if(currentIndex_!=-1) + mapEditors_.get(currentIndex_).cancelCellEditing(); + } + + /* (non-Javadoc) + * @see javax.swing.CellEditor#getCellEditorValue() + */ + public Object getCellEditorValue() { + if(currentIndex_!=-1) + return mapEditors_.get(currentIndex_).getCellEditorValue(); + return null; + } + + /* (non-Javadoc) + * @see javax.swing.CellEditor#isCellEditable(java.util.EventObject) + */ + public boolean isCellEditable(EventObject _anEvent) { + if(currentIndex_!=-1) + return mapEditors_.get(currentIndex_).isCellEditable(_anEvent); + return true; + } + + /* (non-Javadoc) + * @see javax.swing.CellEditor#shouldSelectCell(java.util.EventObject) + */ + public boolean shouldSelectCell(EventObject _anEvent) { + if(currentIndex_!=-1) + return mapEditors_.get(currentIndex_).shouldSelectCell(_anEvent); + return true; + } + + /* (non-Javadoc) + * @see javax.swing.CellEditor#stopCellEditing() + */ + public boolean stopCellEditing() { + if(currentIndex_!=-1) + return mapEditors_.get(currentIndex_).stopCellEditing(); + return true; + } + + /* (non-Javadoc) + * @see javax.swing.event.CellEditorListener#editingCanceled(javax.swing.event.ChangeEvent) + */ + public void editingCanceled(ChangeEvent e) { + fireEditingCanceled(); + } + + /* (non-Javadoc) + * @see javax.swing.event.CellEditorListener#editingStopped(javax.swing.event.ChangeEvent) + */ + public void editingStopped(ChangeEvent e) { + fireEditingStopped(); + } +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluTableCellEditorProxy.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueSelectorVisitor.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueSelectorVisitor.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueSelectorVisitor.java 2008-10-14 15:02:06 UTC (rev 4057) @@ -0,0 +1,55 @@ +/* + * @creation 13 oct. 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.ebli.calque; + +import java.util.ArrayList; + +import org.fudaa.ebli.calque.edition.ZCalqueEditable; + +/** + * Ce visiteur parcours la hi\xE9rarchie de calque et selectionne ceux poss\xE9dant un + * model de donn\xE9es du type choisie et impl\xE9mentant ZCalqueEditable. + * + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class CalqueSelectorVisitor implements BCalqueVisitor { + + /** Le type de model sur lequel se fait la selection des calques. */ + private Class<? extends ZModeleDonnees> typeModel_; + /** Liste contenant les calques selectionn\xE9s */ + private ArrayList<ZCalqueAffichageDonneesAbstract> selectedCalques_; + + public CalqueSelectorVisitor(Class<? extends ZModeleDonnees> _typeModel) { + typeModel_=_typeModel; + selectedCalques_=new ArrayList<ZCalqueAffichageDonneesAbstract>(); + } + + /* + * (non-Javadoc) + * + * @see + * org.fudaa.ebli.calque.BCalqueVisitor#visit(org.fudaa.ebli.calque.BCalque) + */ + public boolean visit(BCalque _cq) { + if (_cq instanceof ZCalqueAffichageDonneesAbstract && _cq instanceof ZCalqueEditable) { + ZModeleDonnees modelData=((ZCalqueAffichageDonneesAbstract)_cq).modeleDonnees(); + if (modelData!=null&&typeModel_.isInstance(modelData)) + selectedCalques_.add((ZCalqueAffichageDonneesAbstract)_cq); + } + return true; + } + + /** + * @return retourne la liste de calques selectionn\xE9s. + */ + public ZCalqueAffichageDonneesAbstract[] getSelectedCalques() { + return selectedCalques_.toArray(new ZCalqueAffichageDonneesAbstract[0]); + } + +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/CalqueSelectorVisitor.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java 2008-10-13 17:18:22 UTC (rev 4056) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java 2008-10-14 15:02:06 UTC (rev 4057) @@ -96,10 +96,9 @@ return; } - final MdlWizardImport importWizard = new MdlWizardImport(dest, this, getEnglobPolygone(), ed, - ((FSigVisuPanel) getPanel()).getImpl(),((FSigVisuPanel) getPanel()).getCmdMng()); - final BuWizardDialog dialog = new BuWizardDialog(CtuluLibSwing.getFrameAncestorHelper(super.getPanel()), - importWizard); + final MdlWizardImport importWizard=new MdlWizardImport(getPanel().getDonneesCalque(), getEnglobPolygone(), ed, + ((FSigVisuPanel)getPanel()).getImpl(), ((FSigVisuPanel)getPanel()).getCmdMng()); + final BuWizardDialog dialog=new BuWizardDialog(CtuluLibSwing.getFrameAncestorHelper(super.getPanel()), importWizard); importWizard.setDialog(dialog); dialog.pack(); dialog.setModal(true); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java 2008-10-13 17:18:22 UTC (rev 4056) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java 2008-10-14 15:02:06 UTC (rev 4057) @@ -7,10 +7,14 @@ */ package org.fudaa.fudaa.modeleur; +import java.awt.Component; import java.awt.Dimension; +import java.util.Arrays; import java.util.Map; +import javax.swing.DefaultListModel; import javax.swing.JComponent; +import javax.swing.JDialog; import javax.swing.event.ListDataEvent; import javax.swing.event.ListDataListener; import javax.swing.event.TableModelEvent; @@ -19,63 +23,75 @@ import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ctulu.CtuluCommandComposite; import org.fudaa.ctulu.CtuluCommandManager; -import org.fudaa.ctulu.CtuluLib; +import org.fudaa.ctulu.CtuluLibString; import org.fudaa.ctulu.CtuluTaskDelegate; import org.fudaa.ctulu.CtuluUI; import org.fudaa.ctulu.ProgressionInterface; import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ctulu.gis.GISAttributeInterface; +import org.fudaa.ctulu.gis.GISAttributeNameComparator; import org.fudaa.ctulu.gis.GISDataModel; +import org.fudaa.ctulu.gis.GISDataModelAttributAdapter; +import org.fudaa.ctulu.gis.GISDataModelAttributSubstitution; import org.fudaa.ctulu.gis.GISDataModelFilterAdapter; +import org.fudaa.ctulu.gis.GISDataModelMultiPointToPolyligne; import org.fudaa.ctulu.gis.GISDataModelPointMultiPointAdapter; -import org.fudaa.ctulu.gis.GISDataModelPointPolyAdapter; +import org.fudaa.ctulu.gis.GISDataModelPolygoneToMultiPoint; +import org.fudaa.ctulu.gis.GISDataModelPolyligneToMultiPoint; +import org.fudaa.ctulu.gis.GISDataModelPolyligneToPolygone; +import org.fudaa.ctulu.gis.GISDataModelSelectionAdapter; import org.fudaa.ctulu.gis.GISPolygone; -import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; -import org.fudaa.ctulu.gis.GISZoneCollectionMultiPoint; -import org.fudaa.ctulu.gis.GISZoneCollectionPoint; +import org.fudaa.ctulu.gis.GISZoneCollection; import org.fudaa.ebli.calque.BGroupeCalque; -import org.fudaa.ebli.calque.ZCalqueAffichageDonnees; +import org.fudaa.ebli.calque.ZCalqueAffichageDonneesAbstract; +import org.fudaa.ebli.calque.ZModeleGeometry; import org.fudaa.ebli.calque.dessin.DeForme; import org.fudaa.ebli.calque.edition.ZCalqueEditable; -import org.fudaa.ebli.calque.edition.ZCalqueEditionGroup; import org.fudaa.fudaa.commun.FudaaLib; -import org.fudaa.fudaa.modeleur.layer.MdlLayer2dLine; -import org.fudaa.fudaa.modeleur.layer.MdlLayer2dMultiPoint; -import org.fudaa.fudaa.modeleur.layer.MdlLayerFactory; -import org.fudaa.fudaa.modeleur.layer.MdlLayerInterface; -import org.fudaa.fudaa.modeleur.layer.MdlModel2dLine; -import org.fudaa.fudaa.modeleur.layer.MdlModel2dMultiPoint; import org.fudaa.fudaa.sig.FSigExportImportAttributesMapper; +import org.fudaa.fudaa.sig.FSigGeomSrcData; import org.fudaa.fudaa.sig.FSigLib; -import org.fudaa.fudaa.sig.layer.FSigEditor; import org.fudaa.fudaa.sig.wizard.FSigFileLoaderPanel; -import org.fudaa.fudaa.sig.wizard.FSigWizardImport; -import org.fudaa.fudaa.sig.wizard.FSigWizardImportStepDestination; +import org.fudaa.fudaa.sig.wizard.FSigWizardImportHelper; +import com.memoire.bu.BuButtonPanel; +import com.memoire.bu.BuGlassPaneStop; +import com.memoire.bu.BuWizardTask; + /** - * Un wizard d'import de donn\xE9es dans le calque cible. Il est limit\xE9 \xE0 1 etape. + * Wizard d'import du modeleur. * @author Bertrand Marchand + * @author Emmanuel Martin * @version $Id:$ */ -public class MdlWizardImport extends FSigWizardImport { - CtuluCommandManager mng_; +public class MdlWizardImport extends BuWizardTask { + private CtuluCommandManager mng_; - private BGroupeCalque mdlDest_; - private FSigEditor mdlEditor_; + private BGroupeCalque calqueRacine_; + private MdlWizardImportStepDestination pnDest_; + protected final GISPolygone[] previewZone_; + protected final ZCalqueEditable selectedLayer_; + protected FSigGeomSrcData data_; + protected JDialog dialog_; + protected FSigFileLoaderPanel fileLoader_; + protected final CtuluUI impl_; + protected GISAttributeInterface[] src_; + protected final DefaultListModel srcAtt_ = new DefaultListModel(); - /** - * @param _previewZone - * @param _selectedLayer - * @param _impl + * @param _previewZone la zone a utiliser pour la pr\xE9visualisation + * @param _selectedLayer le calque en cours de selection: peut-etre null + * @param _impl l'impl parent */ - public MdlWizardImport(BGroupeCalque _dest, FSigEditor _editor, GISPolygone[] _previewZone, ZCalqueEditable _selectedLayer, CtuluUI _impl, CtuluCommandManager _mng) { - super(null, _previewZone, _selectedLayer, _impl); + public MdlWizardImport(BGroupeCalque _racine, GISPolygone[] _previewZone, ZCalqueEditable _selectedLayer, CtuluUI _impl, CtuluCommandManager _mng) { mng_=_mng; - mdlDest_=_dest; - mdlEditor_=_editor; + calqueRacine_=_racine; + impl_ = _impl; + previewZone_ = _previewZone; + selectedLayer_ = _selectedLayer; + // Exemple de cr\xE9ation d'un sous calque pour un BGroupeCalque /* int cqType_ = MdlLayerFactory.LAYER2D_CLOUD; @@ -86,200 +102,230 @@ } public JComponent getStepComponent() { - if (current_ == 0) { - if (fileLoader_ == null) { + if (current_==0) { + if (fileLoader_==null) { srcAtt_.addListDataListener(new ListDataListener() { - public void contentsChanged(final ListDataEvent _e) { rebuildAtt(); } - public void intervalAdded(final ListDataEvent _e) { rebuildAtt(); } - public void intervalRemoved(final ListDataEvent _e) { rebuildAtt(); } }); - fileLoader_ = new FSigFileLoaderPanel(srcAtt_, impl_, previewZone_); + fileLoader_=new FSigFileLoaderPanel(srcAtt_, impl_, previewZone_); fileLoader_.setPreferredSize(new Dimension(450, 400)); fileLoader_.setAttributeRequired(false); fileLoader_.getFileMng().getModel().addTableModelListener(new TableModelListener() { - public void tableChanged(final TableModelEvent _e) { - data_ = null; + data_=null; } }); } return fileLoader_; - } else if (current_ == 1) { - if (mapper_ == null) { - if (dest_!=null && dest_.getAttributes()!=null) - mapper_ = new FSigExportImportAttributesMapper(src_, dest_.getAttributes(), false); - } - if (pnDest_==null) pnDest_=new FSigWizardImportStepDestination(mdlDest_); - pnDest_.setMapper(mapper_); - pnDest_.setSrc(data_); - pnDest_.setSelectedLayer(selectedLayer_); - pnDest_.update(); + } + else if (current_==1) { + pnDest_=new MdlWizardImportStepDestination(calqueRacine_, data_, selectedLayer_); return pnDest_; } return null; } - public void doTask() { - CtuluAnalyze analyze=new CtuluAnalyze(); - if (data_==null) data_ = fileLoader_.loadAll(null, analyze); - // Affiche les erreurs dans une boite de dialogue. - impl_.manageAnalyzeAndIsFatal(analyze); - -... [truncated message content] |
From: <emm...@us...> - 2008-10-16 14:01:12
|
Revision: 4073 http://fudaa.svn.sourceforge.net/fudaa/?rev=4073&view=rev Author: emmanuel_martin Date: 2008-10-16 14:01:02 +0000 (Thu, 16 Oct 2008) Log Message: ----------- am?\195?\169liorations et corrections de bugs dans le wizard du modeleur. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluLibArray.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeBoolean.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelFilterAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometryFactory.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLib.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/test/org/fudaa/ctulu/gis/TestGISDataModelAttributAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/dunes/io/DunesGEOWriter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/reflux/io/ReflucadBERReader.java branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/reflux/io/ReflucadPROReader.java branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/reflux/io/ReflucadSEMReader.java branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SerafinNewReaderInfo.java branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxReader.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImportStepDestination.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigExportImportAttributesMapper.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoadResult.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderCsv.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderGIS.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderGrid.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderInp.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderReflucadBER.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderReflucadPRO.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderReflucadSEM.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRefluxRefondeResult.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarCox.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarInx.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarSem.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarSt.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderSerafin.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderSinusX.java Added Paths: ----------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributeAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributeSubstitutionAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelMultiPointToPolyligneAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPointToMultiPointAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPolygoneToMultiPointAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPolyligneToMultiPointAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPolyligneToPolygoneAdapter.java Removed Paths: ------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributSubstitution.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelMultiPointToPolyligne.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPointMultiPointAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPolygoneToMultiPoint.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPolyligneToMultiPoint.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPolyligneToPolygone.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluLibArray.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluLibArray.java 2008-10-16 13:40:50 UTC (rev 4072) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/CtuluLibArray.java 2008-10-16 14:01:02 UTC (rev 4073) @@ -477,7 +477,7 @@ * * @param _array le tableau a parcourir * @param _objectToFound l'entier cherche - * @return l'index de l'objet dans le tableau. null si non trouve + * @return l'index de l'objet dans le tableau. -1 si non trouve */ public static int findObjectEgalEgal(final Object[] _array, final Object _objectToFound) { if ((_array == null) || (_objectToFound == null)) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeBoolean.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeBoolean.java 2008-10-16 13:40:50 UTC (rev 4072) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeBoolean.java 2008-10-16 14:01:02 UTC (rev 4073) @@ -56,6 +56,10 @@ public GISAttributeBoolean(final String _name) { super(CtuluValueEditorDefaults.STRING_EDITOR, _name); } + + public GISAttributeBoolean(final String _name, final boolean _isAtomic) { + super(CtuluValueEditorDefaults.STRING_EDITOR, _name, _isAtomic); + } public final Class getDataClass() { return Boolean.class; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2008-10-16 13:40:50 UTC (rev 4072) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2008-10-16 14:01:02 UTC (rev 4073) @@ -91,6 +91,21 @@ return "ATTRIBUTE_ETAT_GEOM"; } + protected Object createGlobalValues(Object _initValues) { + if (_initValues instanceof Object[]) { + // Si au moins une des valeurs est "modifi\xE9", on retourne "modifi\xE9". + boolean modifie=false; + int i=-1; + while (!modifie&&++i<((Object[])_initValues).length) + modifie=((Object[])_initValues)[i]==ATT_VAL_ETAT_MODI; + if (modifie) + _initValues=ATT_VAL_ETAT_MODI; + else + _initValues=ATT_VAL_ETAT_ORIG; + } + return super.createGlobalValues(_initValues); + } + public boolean isEditable() { return true; } Deleted: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributAdapter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributAdapter.java 2008-10-16 13:40:50 UTC (rev 4072) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributAdapter.java 2008-10-16 14:01:02 UTC (rev 4073) @@ -1,227 +0,0 @@ -/* - * @creation 7 oct. 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.ctulu.gis; - -import java.util.ArrayList; -import java.util.List; - -import org.fudaa.ctulu.CtuluLibArray; -import org.fudaa.ctulu.ProgressionInterface; - -import com.vividsolutions.jts.geom.Envelope; -import com.vividsolutions.jts.geom.Geometry; - -/** - * Cet Adapter permet l'ajout d'attributs au DataModel. - * @author Emmanuel MARTIN - * @version $Id$ - */ -public class GISDataModelAttributAdapter implements GISDataModel{ - - // Le model adapt\xE9 - private GISDataModel dataModel_; - // Les nouveaux attributs - private List<GISAttributeInterface> newAttr_; - private List<Object[]> newValues_; - - public GISDataModelAttributAdapter(GISDataModel _dataModel){ - dataModel_ = _dataModel; - newAttr_ = new ArrayList<GISAttributeInterface>(1); - newValues_ = new ArrayList<Object[]>(1); - } - - /** - * Ajout un attribut pour tout les \xE9l\xE9ments si cet attribut n'existe pas d\xE9j\xE0. - * L'atomicit\xE9 (ou la globalit\xE9) de l'attribut est respect\xE9. - * @param _attr l'attribut a ajouter - * @param _value une valeur unique qui sera dupliquer pour toutes les g\xE9om\xE9tries - * @return 0 si l'attribut existe d\xE9j\xE0 (il n'est pas remplac\xE9) - * -2 si _attr ou _value sont null - */ - public int addAttribut(GISAttributeInterface _attr, Object _value){ - if(_attr==null||_value==null) - return -2; - if (dataModel_.getIndiceOf(_attr)==-1 && !newAttr_.contains(_attr)) { - newAttr_.add(_attr); - // Attribut atomique - if (_attr.isAtomicValue()) { - Object[] tmp=new Object[dataModel_.getNumGeometries()]; - for (int i=0; i<tmp.length; i++) - tmp[i]=_attr.createDataForGeom(_value, dataModel_.getGeometry(i).getNumPoints()); - newValues_.add(tmp); - } - // Attribut global - else { - Object[] tmp=new Object[dataModel_.getNumGeometries()]; - for (int i=0; i<tmp.length; i++) - tmp[i]=_value; - newValues_.add(tmp); - } - return 1; - } - else - return 0; - } - - /** - * Ajout un attribut pour tout les \xE9l\xE9ments si cet attribut n'existe pas d\xE9j\xE0. - * si _attr est un attribut atomique, chaque valeur sera dupliqu\xE9 pour - * chaque sommet de la g\xE9om\xE9trie. - * @param _attr l'attribut a ajouter - * @param _values une valeur pour chaque g\xE9om\xE9trie. - * @return 0 si l'attribut existe d\xE9j\xE0 (il n'est pas remplac\xE9) - * -1 en cas de tableau _values de mauvaise taille - * -2 si _attr ou _values sont null - */ - public int addAttribut(GISAttributeInterface _attr, Object[] _values){ - if(_attr==null||_values==null) - return -2; - if(dataModel_.getIndiceOf(_attr) == -1 && !newAttr_.contains(_attr)){ - if(_values.length != dataModel_.getNumGeometries()) - return -1; - // Attribut atomique - if (_attr.isAtomicValue()) { - Object[] tmp=new Object[dataModel_.getNumGeometries()]; - for (int i=0; i<tmp.length; i++) - tmp[i]=_attr.createDataForGeom(_values[i], dataModel_.getGeometry(i).getNumPoints()); - newAttr_.add(_attr); - newValues_.add(tmp); - } - // Attribut global - else { - newAttr_.add(_attr); - newValues_.add(_values); - } - return 1; - } - else - return 0; - } - - /** - * Ajout un attribut pour tout les \xE9l\xE9ments si cet attribut n'existe pas d\xE9j\xE0. - * Cette m\xE9thode n'est d\xE9finie que pour les attributs atomiques. - * @param _attr l'attribut a ajouter - * @param _values une valeur pour chaque sommet de chaque g\xE9om\xE9trie. - * @return 0 si l'attribut existe d\xE9j\xE0 (il n'est pas remplac\xE9) - * -1 en cas de tableau _values de mauvaise taille - * -2 si _attr ou _values sont null - * -3 si l'attribut n'est pas atomique - */ - public int addAttribut(GISAttributeInterface _attr, Object[][] _values){ - if(_attr==null||_values==null) - return -2; - if (_attr.isAtomicValue()) - if (dataModel_.getIndiceOf(_attr)==-1 && !newAttr_.contains(_attr)) { - if (_values.length!=dataModel_.getNumGeometries()) - return -1; - // Attribut atomique - Object[] tmp=new Object[dataModel_.getNumGeometries()]; - for (int i=0; i<tmp.length; i++){ - if(_values[i].length != dataModel_.getGeometry(i).getNumPoints()) - return -1; - tmp[i]=_attr.createDataForGeom(_values[i], _values[i].length); - } - newAttr_.add(_attr); - newValues_.add(tmp); - return 1; - } - else - return 0; - else - return -3; - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#getAttribute(int) - */ - public GISAttributeInterface getAttribute(int att) { - if(att<0) - return null; - if (dataModel_.getNbAttributes() > att) - return dataModel_.getAttribute(att); - else if(newAttr_.size() > att - dataModel_.getNbAttributes()) - return newAttr_.get(att - dataModel_.getNbAttributes()); - else return null; - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#getDoubleValue(int, int) - */ - public double getDoubleValue(int att, int geom) { - if(att>=0&&geom>=0){ - if (dataModel_.getNbAttributes() > att) - return dataModel_.getDoubleValue(att, geom); - else if(newAttr_.size() > att - dataModel_.getNbAttributes()) - return (Double)newValues_.get(att)[geom]; - else return 0; - } - return 0; - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#getEnvelopeInternal() - */ - public Envelope getEnvelopeInternal() { - return dataModel_.getEnvelopeInternal(); - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#getGeometry(int) - */ - public Geometry getGeometry(int geom) { - if(geom<0||geom>=getNumGeometries()) - return null; - return dataModel_.getGeometry(geom); - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#getIndiceOf(org.fudaa.ctulu.gis.GISAttributeInterface) - */ - public int getIndiceOf(GISAttributeInterface _att) { - if(dataModel_.getIndiceOf(_att) != -1) - return dataModel_.getIndiceOf(_att); - else if(CtuluLibArray.findObjectEgalEgal(newAttr_, _att)!=-1) - return dataModel_.getNbAttributes()+CtuluLibArray.findObjectEgalEgal(newAttr_, _att); - else return -1; - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#getNbAttributes() - */ - public int getNbAttributes() { - return dataModel_.getNbAttributes()+newAttr_.size(); - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#getNumGeometries() - */ - public int getNumGeometries() { - return dataModel_.getNumGeometries(); - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#getValue(int, int) - */ - public Object getValue(int att, int geom) { - if (att<0||geom<0) - return null; - if (dataModel_.getNbAttributes()>att&&geom<dataModel_.getNumGeometries()) - return dataModel_.getValue(att, geom); - else if (newAttr_.size()>att-dataModel_.getNbAttributes()&&geom<dataModel_.getNumGeometries()) - return newValues_.get(att-dataModel_.getNbAttributes())[geom]; - return null; - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#preload(org.fudaa.ctulu.gis.GISAttributeInterface[], org.fudaa.ctulu.ProgressionInterface) - */ - public void preload(GISAttributeInterface[] _att, ProgressionInterface _prog) { - dataModel_.preload(_att, _prog); - } -} Deleted: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributSubstitution.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributSubstitution.java 2008-10-16 13:40:50 UTC (rev 4072) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributSubstitution.java 2008-10-16 14:01:02 UTC (rev 4073) @@ -1,196 +0,0 @@ -/* - * @creation 14 oct. 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.ctulu.gis; - -import java.util.HashMap; -import java.util.Map; - -import org.fudaa.ctulu.ProgressionInterface; - -import com.vividsolutions.jts.geom.Envelope; -import com.vividsolutions.jts.geom.Geometry; - -/** - * Cette adapter permet de substituer des attributs existant par d'autre. - * Par exemple, me model poss\xE8de deux attributs : V1 (type double) et Z - * (type double), l'adapter permet de substituer V& \xE0 Z. Ainsi toutes les - * requ\xEAtes sur Z seront redirig\xE9es sur V1. - * Les deux attributs doivent pr\xE9alablement exist\xE9s, avoir des types de valeur - * identique et \xEAtre de m\xEAme niveau (global ou atomique). - * A not\xE9 que se ne sont que les valeurs qui sont substituer. En cas d'appelle - * \xE0 la m\xE9thod getAttribut sur l'attribut substituer, sont GISAttributInterface - * sera toujours renvoy\xE9 comme avant. - * @author Emmanuel MARTIN - * @version $Id:$ - */ -public class GISDataModelAttributSubstitution implements GISDataModel { - - private final GISDataModel model_; - /** - * Table contenant les substitutions d'attributs \xE0 faire sur le model. - * Pour des raisons de performence, la substitution est m\xE9moris\xE9 par - * l'index des attributs. - */ - private final HashMap<Integer, Integer> substitutionTable_; - - /** - * Cette adapter permet de substituer des attributs existant par d'autre. Par - * exemple, me model poss\xE8de deux attributs : V1 (type double) et Z (type - * double), l'adapter permet de substituer V1 \xE0 Z. Ainsi toutes les requ\xEAtes - * sur Z seront redirig\xE9es sur V1. Les deux attributs doivent pr\xE9alablement - * exist\xE9s et avoir des types de valeur identique. Si les attributs sont de - * niveau (global ou atomique) diff\xE9rent, l'adapter converti les valeurs - * en utilisant la m\xE9thod createDataForGeom. - * A not\xE9 que se ne sont que les valeurs qui sont substituer. En - * cas d'appelle \xE0 la m\xE9thod getAttribut sur l'attribut substituer, sont - * GISAttributInterface sera toujours renvoy\xE9 comme avant. - * - * - * @param _model - * le model \xE0 adaoter - * @param _substitutionTable - * cette table contient les substitutions \xE0 faire. Une substitution - * est un tableau \xE0 deux \xE9l\xE9ments : le premier l'attribut a - * substituer et le second l'attribut par lequel le substituer. - * _substitutionTable est donc un tableau de tableau \xE0 deux \xE9l\xE9ments. - */ - public GISDataModelAttributSubstitution(GISDataModel _model, GISAttributeInterface[][] _substitutionTable){ - if(_substitutionTable==null||_model==null) - throw new IllegalArgumentException("_substitutionTable et _model ne doivent pas \xEAtre null."); - model_=_model; - substitutionTable_=new HashMap<Integer, Integer>(); - // Verification des substitutions - for(int i=0;i<_substitutionTable.length;i++){ - if(_substitutionTable[i].length!=2) - throw new IllegalArgumentException("Une substitution est un tableau \xE0 deux \xE9l\xE9ments, ni plus, ni moins."); - if(_substitutionTable[i][0].getDataClass()!=_substitutionTable[i][1].getDataClass()) - throw new IllegalArgumentException("Les deux substitutions doivent avoir des valeurs de m\xEAme type."); - if(model_.getIndiceOf(_substitutionTable[i][0])==-1) - throw new IllegalArgumentException(_substitutionTable[i][0].getID() + "n'est pas dans le model."); - if(model_.getIndiceOf(_substitutionTable[i][1])==-1) - throw new IllegalArgumentException(_substitutionTable[i][1].getID() + "n'est pas dans le model."); - // Ajout de la substitution - substitutionTable_.put(model_.getIndiceOf(_substitutionTable[i][0]), model_.getIndiceOf(_substitutionTable[i][1])); - } - } - - /** - * Cette adapter permet de substituer des attributs existant par d'autre. Par - * exemple, me model poss\xE8de deux attributs : V1 (type double) et Z (type - * double), l'adapter permet de substituer V& \xE0 Z. Ainsi toutes les requ\xEAtes - * sur Z seront redirig\xE9es sur V1. Les deux attributs doivent pr\xE9alablement - * exist\xE9s, avoir des types de valeur identique et \xEAtre de m\xEAme niveau (global - * ou atomique). - * A not\xE9 que se ne sont que les valeurs qui sont substituer. En - * cas d'appelle \xE0 la m\xE9thod getAttribut sur l'attribut substituer, sont - * GISAttributInterface sera toujours renvoy\xE9 comme avant. - * - * - * @param _model - * le model \xE0 adaoter - * @param _substitutionTable - * cette map contient les substitutions \xE0 faire. Le premier l'attribut - * a substituer et le second l'attribut par lequel le substituer. - */ - public GISDataModelAttributSubstitution(GISDataModel _model, Map<GISAttributeInterface, GISAttributeInterface> _substitutionTable){ - if(_substitutionTable==null||_model==null) - throw new IllegalArgumentException("_substitutionTable et _model ne doivent pas \xEAtre null."); - model_=_model; - substitutionTable_=new HashMap<Integer, Integer>(); - // Verification des substitutions - for(Map.Entry<GISAttributeInterface, GISAttributeInterface> entry:_substitutionTable.entrySet()){ - if(entry.getKey().getDataClass()!=entry.getValue().getDataClass()) - throw new IllegalArgumentException("Les deux substitutions doivent avoir des valeurs de m\xEAme type."); - if(model_.getIndiceOf(entry.getKey())==-1) - throw new IllegalArgumentException(entry.getKey().getID() + "n'est pas dans le model."); - if(model_.getIndiceOf(entry.getValue())==-1) - throw new IllegalArgumentException(entry.getValue().getID() + "n'est pas dans le model."); - // Ajout de la substitution - substitutionTable_.put(model_.getIndiceOf(entry.getKey()), model_.getIndiceOf(entry.getValue())); - } - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#getAttribute(int) - */ - public GISAttributeInterface getAttribute(int _att) { - return model_.getAttribute(_att); - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#getDoubleValue(int, int) - */ - public double getDoubleValue(int _att, int _geom) { - if (substitutionTable_.containsKey(_att)) - return model_.getDoubleValue(substitutionTable_.get(_att), _geom); - else - return model_.getDoubleValue(_att, _geom); - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#getEnvelopeInternal() - */ - public Envelope getEnvelopeInternal() { - return model_.getEnvelopeInternal(); - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#getGeometry(int) - */ - public Geometry getGeometry(int _geom) { - return model_.getGeometry(_geom); - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#getIndiceOf(org.fudaa.ctulu.gis.GISAttributeInterface) - */ - public int getIndiceOf(GISAttributeInterface _att) { - return model_.getIndiceOf(_att); - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#getNbAttributes() - */ - public int getNbAttributes() { - return model_.getNbAttributes(); - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#getNumGeometries() - */ - public int getNumGeometries() { - return model_.getNumGeometries(); - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#getValue(int, int) - */ - public Object getValue(int _att, int _geom) { - if (substitutionTable_.containsKey(_att)) - if (getAttribute(_att).isAtomicValue()!=getAttribute(substitutionTable_.get(_att)).isAtomicValue()) { - Object value; - if (getAttribute(substitutionTable_.get(_att)).isAtomicValue()) - value=((GISAttributeModel)model_.getValue(substitutionTable_.get(_att), _geom)).getAverage(); - else - value=model_.getValue(substitutionTable_.get(_att), _geom); - return model_.getAttribute(_att).createDataForGeom(value, model_.getGeometry(_geom).getNumPoints()); - } - else - return model_.getValue(substitutionTable_.get(_att), _geom); - else - return model_.getValue(_att, _geom); - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#preload(org.fudaa.ctulu.gis.GISAttributeInterface[], org.fudaa.ctulu.ProgressionInterface) - */ - public void preload(GISAttributeInterface[] _att, ProgressionInterface _prog) { - model_.preload(_att, _prog); - } - -} Copied: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributeAdapter.java (from rev 4061, branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributAdapter.java) =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributeAdapter.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributeAdapter.java 2008-10-16 14:01:02 UTC (rev 4073) @@ -0,0 +1,227 @@ +/* + * @creation 7 oct. 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.ctulu.gis; + +import java.util.ArrayList; +import java.util.List; + +import org.fudaa.ctulu.CtuluLibArray; +import org.fudaa.ctulu.ProgressionInterface; + +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.geom.Geometry; + +/** + * Cet Adapter permet l'ajout d'attributs au DataModel. + * @author Emmanuel MARTIN + * @version $Id$ + */ +public class GISDataModelAttributeAdapter implements GISDataModel{ + + // Le model adapt\xE9 + private GISDataModel dataModel_; + // Les nouveaux attributs + private List<GISAttributeInterface> newAttr_; + private List<Object[]> newValues_; + + public GISDataModelAttributeAdapter(GISDataModel _dataModel){ + dataModel_ = _dataModel; + newAttr_ = new ArrayList<GISAttributeInterface>(1); + newValues_ = new ArrayList<Object[]>(1); + } + + /** + * Ajout un attribut pour tout les \xE9l\xE9ments si cet attribut n'existe pas d\xE9j\xE0. + * L'atomicit\xE9 (ou la globalit\xE9) de l'attribut est respect\xE9. + * @param _attr l'attribut a ajouter + * @param _value une valeur unique qui sera dupliquer pour toutes les g\xE9om\xE9tries + * @return 0 si l'attribut existe d\xE9j\xE0 (il n'est pas remplac\xE9) + * -2 si _attr ou _value sont null + */ + public int addAttribut(GISAttributeInterface _attr, Object _value){ + if(_attr==null||_value==null) + return -2; + if (dataModel_.getIndiceOf(_attr)==-1 && !newAttr_.contains(_attr)) { + newAttr_.add(_attr); + // Attribut atomique + if (_attr.isAtomicValue()) { + Object[] tmp=new Object[dataModel_.getNumGeometries()]; + for (int i=0; i<tmp.length; i++) + tmp[i]=_attr.createDataForGeom(_value, dataModel_.getGeometry(i).getNumPoints()); + newValues_.add(tmp); + } + // Attribut global + else { + Object[] tmp=new Object[dataModel_.getNumGeometries()]; + for (int i=0; i<tmp.length; i++) + tmp[i]=_value; + newValues_.add(tmp); + } + return 1; + } + else + return 0; + } + + /** + * Ajout un attribut pour tout les \xE9l\xE9ments si cet attribut n'existe pas d\xE9j\xE0. + * si _attr est un attribut atomique, chaque valeur sera dupliqu\xE9 pour + * chaque sommet de la g\xE9om\xE9trie. + * @param _attr l'attribut a ajouter + * @param _values une valeur pour chaque g\xE9om\xE9trie. + * @return 0 si l'attribut existe d\xE9j\xE0 (il n'est pas remplac\xE9) + * -1 en cas de tableau _values de mauvaise taille + * -2 si _attr ou _values sont null + */ + public int addAttribut(GISAttributeInterface _attr, Object[] _values){ + if(_attr==null||_values==null) + return -2; + if(dataModel_.getIndiceOf(_attr) == -1 && !newAttr_.contains(_attr)){ + if(_values.length != dataModel_.getNumGeometries()) + return -1; + // Attribut atomique + if (_attr.isAtomicValue()) { + Object[] tmp=new Object[dataModel_.getNumGeometries()]; + for (int i=0; i<tmp.length; i++) + tmp[i]=_attr.createDataForGeom(_values[i], dataModel_.getGeometry(i).getNumPoints()); + newAttr_.add(_attr); + newValues_.add(tmp); + } + // Attribut global + else { + newAttr_.add(_attr); + newValues_.add(_values); + } + return 1; + } + else + return 0; + } + + /** + * Ajout un attribut pour tout les \xE9l\xE9ments si cet attribut n'existe pas d\xE9j\xE0. + * Cette m\xE9thode n'est d\xE9finie que pour les attributs atomiques. + * @param _attr l'attribut a ajouter + * @param _values une valeur pour chaque sommet de chaque g\xE9om\xE9trie. + * @return 0 si l'attribut existe d\xE9j\xE0 (il n'est pas remplac\xE9) + * -1 en cas de tableau _values de mauvaise taille + * -2 si _attr ou _values sont null + * -3 si l'attribut n'est pas atomique + */ + public int addAttribut(GISAttributeInterface _attr, Object[][] _values){ + if(_attr==null||_values==null) + return -2; + if (_attr.isAtomicValue()) + if (dataModel_.getIndiceOf(_attr)==-1 && !newAttr_.contains(_attr)) { + if (_values.length!=dataModel_.getNumGeometries()) + return -1; + // Attribut atomique + Object[] tmp=new Object[dataModel_.getNumGeometries()]; + for (int i=0; i<tmp.length; i++){ + if(_values[i].length != dataModel_.getGeometry(i).getNumPoints()) + return -1; + tmp[i]=_attr.createDataForGeom(_values[i], _values[i].length); + } + newAttr_.add(_attr); + newValues_.add(tmp); + return 1; + } + else + return 0; + else + return -3; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getAttribute(int) + */ + public GISAttributeInterface getAttribute(int att) { + if(att<0) + return null; + if (dataModel_.getNbAttributes() > att) + return dataModel_.getAttribute(att); + else if(newAttr_.size() > att - dataModel_.getNbAttributes()) + return newAttr_.get(att - dataModel_.getNbAttributes()); + else return null; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getDoubleValue(int, int) + */ + public double getDoubleValue(int att, int geom) { + if(att>=0&&geom>=0){ + if (dataModel_.getNbAttributes() > att) + return dataModel_.getDoubleValue(att, geom); + else if(newAttr_.size() > att - dataModel_.getNbAttributes()) + return (Double)newValues_.get(att)[geom]; + else return 0; + } + return 0; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getEnvelopeInternal() + */ + public Envelope getEnvelopeInternal() { + return dataModel_.getEnvelopeInternal(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getGeometry(int) + */ + public Geometry getGeometry(int geom) { + if(geom<0||geom>=getNumGeometries()) + return null; + return dataModel_.getGeometry(geom); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getIndiceOf(org.fudaa.ctulu.gis.GISAttributeInterface) + */ + public int getIndiceOf(GISAttributeInterface _att) { + if(dataModel_.getIndiceOf(_att) != -1) + return dataModel_.getIndiceOf(_att); + else if(CtuluLibArray.findObjectEgalEgal(newAttr_, _att)!=-1) + return dataModel_.getNbAttributes()+CtuluLibArray.findObjectEgalEgal(newAttr_, _att); + else return -1; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getNbAttributes() + */ + public int getNbAttributes() { + return dataModel_.getNbAttributes()+newAttr_.size(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getNumGeometries() + */ + public int getNumGeometries() { + return dataModel_.getNumGeometries(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getValue(int, int) + */ + public Object getValue(int att, int geom) { + if (att<0||geom<0) + return null; + if (dataModel_.getNbAttributes()>att&&geom<dataModel_.getNumGeometries()) + return dataModel_.getValue(att, geom); + else if (newAttr_.size()>att-dataModel_.getNbAttributes()&&geom<dataModel_.getNumGeometries()) + return newValues_.get(att-dataModel_.getNbAttributes())[geom]; + return null; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#preload(org.fudaa.ctulu.gis.GISAttributeInterface[], org.fudaa.ctulu.ProgressionInterface) + */ + public void preload(GISAttributeInterface[] _att, ProgressionInterface _prog) { + dataModel_.preload(_att, _prog); + } +} Copied: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributeSubstitutionAdapter.java (from rev 4061, branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributSubstitution.java) =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributeSubstitutionAdapter.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributeSubstitutionAdapter.java 2008-10-16 14:01:02 UTC (rev 4073) @@ -0,0 +1,196 @@ +/* + * @creation 14 oct. 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.ctulu.gis; + +import java.util.HashMap; +import java.util.Map; + +import org.fudaa.ctulu.ProgressionInterface; + +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.geom.Geometry; + +/** + * Cette adapter permet de substituer des attributs existant par d'autre. + * Par exemple, me model poss\xE8de deux attributs : V1 (type double) et Z + * (type double), l'adapter permet de substituer V& \xE0 Z. Ainsi toutes les + * requ\xEAtes sur Z seront redirig\xE9es sur V1. + * Les deux attributs doivent pr\xE9alablement exist\xE9s, avoir des types de valeur + * identique et \xEAtre de m\xEAme niveau (global ou atomique). + * A not\xE9 que se ne sont que les valeurs qui sont substituer. En cas d'appelle + * \xE0 la m\xE9thod getAttribut sur l'attribut substituer, sont GISAttributInterface + * sera toujours renvoy\xE9 comme avant. + * @author Emmanuel MARTIN + * @version $Id$ + */ +public class GISDataModelAttributeSubstitutionAdapter implements GISDataModel { + + private final GISDataModel model_; + /** + * Table contenant les substitutions d'attributs \xE0 faire sur le model. + * Pour des raisons de performence, la substitution est m\xE9moris\xE9 par + * l'index des attributs. + */ + private final HashMap<Integer, Integer> substitutionTable_; + + /** + * Cette adapter permet de substituer des attributs existant par d'autre. Par + * exemple, me model poss\xE8de deux attributs : V1 (type double) et Z (type + * double), l'adapter permet de substituer V1 \xE0 Z. Ainsi toutes les requ\xEAtes + * sur Z seront redirig\xE9es sur V1. Les deux attributs doivent pr\xE9alablement + * exist\xE9s et avoir des types de valeur identique. Si les attributs sont de + * niveau (global ou atomique) diff\xE9rent, l'adapter converti les valeurs + * en utilisant la m\xE9thod createDataForGeom. + * A not\xE9 que se ne sont que les valeurs qui sont substituer. En + * cas d'appelle \xE0 la m\xE9thod getAttribut sur l'attribut substituer, sont + * GISAttributInterface sera toujours renvoy\xE9 comme avant. + * + * + * @param _model + * le model \xE0 adaoter + * @param _substitutionTable + * cette table contient les substitutions \xE0 faire. Une substitution + * est un tableau \xE0 deux \xE9l\xE9ments : le premier l'attribut a + * substituer et le second l'attribut par lequel le substituer. + * _substitutionTable est donc un tableau de tableau \xE0 deux \xE9l\xE9ments. + */ + public GISDataModelAttributeSubstitutionAdapter(GISDataModel _model, GISAttributeInterface[][] _substitutionTable){ + if(_substitutionTable==null||_model==null) + throw new IllegalArgumentException("_substitutionTable et _model ne doivent pas \xEAtre null."); + model_=_model; + substitutionTable_=new HashMap<Integer, Integer>(); + // Verification des substitutions + for(int i=0;i<_substitutionTable.length;i++){ + if(_substitutionTable[i].length!=2) + throw new IllegalArgumentException("Une substitution est un tableau \xE0 deux \xE9l\xE9ments, ni plus, ni moins."); + if(_substitutionTable[i][0].getDataClass()!=_substitutionTable[i][1].getDataClass()) + throw new IllegalArgumentException("Les deux substitutions doivent avoir des valeurs de m\xEAme type."); + if(model_.getIndiceOf(_substitutionTable[i][0])==-1) + throw new IllegalArgumentException(_substitutionTable[i][0].getID() + "n'est pas dans le model."); + if(model_.getIndiceOf(_substitutionTable[i][1])==-1) + throw new IllegalArgumentException(_substitutionTable[i][1].getID() + "n'est pas dans le model."); + // Ajout de la substitution + substitutionTable_.put(model_.getIndiceOf(_substitutionTable[i][0]), model_.getIndiceOf(_substitutionTable[i][1])); + } + } + + /** + * Cette adapter permet de substituer des attributs existant par d'autre. Par + * exemple, me model poss\xE8de deux attributs : V1 (type double) et Z (type + * double), l'adapter permet de substituer V& \xE0 Z. Ainsi toutes les requ\xEAtes + * sur Z seront redirig\xE9es sur V1. Les deux attributs doivent pr\xE9alablement + * exist\xE9s, avoir des types de valeur identique et \xEAtre de m\xEAme niveau (global + * ou atomique). + * A not\xE9 que se ne sont que les valeurs qui sont substituer. En + * cas d'appelle \xE0 la m\xE9thod getAttribut sur l'attribut substituer, sont + * GISAttributInterface sera toujours renvoy\xE9 comme avant. + * + * + * @param _model + * le model \xE0 adaoter + * @param _substitutionTable + * cette map contient les substitutions \xE0 faire. Le premier l'attribut + * a substituer et le second l'attribut par lequel le substituer. + */ + public GISDataModelAttributeSubstitutionAdapter(GISDataModel _model, Map<GISAttributeInterface, GISAttributeInterface> _substitutionTable){ + if(_substitutionTable==null||_model==null) + throw new IllegalArgumentException("_substitutionTable et _model ne doivent pas \xEAtre null."); + model_=_model; + substitutionTable_=new HashMap<Integer, Integer>(); + // Verification des substitutions + for(Map.Entry<GISAttributeInterface, GISAttributeInterface> entry:_substitutionTable.entrySet()){ + if(entry.getKey().getDataClass()!=entry.getValue().getDataClass()) + throw new IllegalArgumentException("Les deux substitutions doivent avoir des valeurs de m\xEAme type."); + if(model_.getIndiceOf(entry.getKey())==-1) + throw new IllegalArgumentException(entry.getKey().getID() + "n'est pas dans le model."); + if(model_.getIndiceOf(entry.getValue())==-1) + throw new IllegalArgumentException(entry.getValue().getID() + "n'est pas dans le model."); + // Ajout de la substitution + substitutionTable_.put(model_.getIndiceOf(entry.getKey()), model_.getIndiceOf(entry.getValue())); + } + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getAttribute(int) + */ + public GISAttributeInterface getAttribute(int _att) { + return model_.getAttribute(_att); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getDoubleValue(int, int) + */ + public double getDoubleValue(int _att, int _geom) { + if (substitutionTable_.containsKey(_att)) + return model_.getDoubleValue(substitutionTable_.get(_att), _geom); + else + return model_.getDoubleValue(_att, _geom); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getEnvelopeInternal() + */ + public Envelope getEnvelopeInternal() { + return model_.getEnvelopeInternal(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getGeometry(int) + */ + public Geometry getGeometry(int _geom) { + return model_.getGeometry(_geom); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getIndiceOf(org.fudaa.ctulu.gis.GISAttributeInterface) + */ + public int getIndiceOf(GISAttributeInterface _att) { + return model_.getIndiceOf(_att); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getNbAttributes() + */ + public int getNbAttributes() { + return model_.getNbAttributes(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getNumGeometries() + */ + public int getNumGeometries() { + return model_.getNumGeometries(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getValue(int, int) + */ + public Object getValue(int _att, int _geom) { + if (substitutionTable_.containsKey(_att)) + if (getAttribute(_att).isAtomicValue()!=getAttribute(substitutionTable_.get(_att)).isAtomicValue()) { + Object value; + if (getAttribute(substitutionTable_.get(_att)).isAtomicValue()) + value=((GISAttributeModel)model_.getValue(substitutionTable_.get(_att), _geom)).getAverage(); + else + value=model_.getValue(substitutionTable_.get(_att), _geom); + return model_.getAttribute(_att).createDataForGeom(value, model_.getGeometry(_geom).getNumPoints()); + } + else + return model_.getValue(substitutionTable_.get(_att), _geom); + else + return model_.getValue(_att, _geom); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#preload(org.fudaa.ctulu.gis.GISAttributeInterface[], org.fudaa.ctulu.ProgressionInterface) + */ + public void preload(GISAttributeInterface[] _att, ProgressionInterface _prog) { + model_.preload(_att, _prog); + } + +} Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelFilterAdapter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelFilterAdapter.java 2008-10-16 13:40:50 UTC (rev 4072) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelFilterAdapter.java 2008-10-16 14:01:02 UTC (rev 4073) @@ -179,9 +179,8 @@ public Object getValue(final int _idxAtt, final int _idxGeom) { final int idx = getRealAttributIndex(_idxAtt); - if (idx < 0 || idx >= model_.getNbAttributes()) { + if (idx < 0 || idx >= model_.getNbAttributes()) return null; - } return model_.getValue(idx, getRealGeometryIndex(_idxGeom)); } Deleted: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelMultiPointToPolyligne.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelMultiPointToPolyligne.java 2008-10-16 13:40:50 UTC (rev 4072) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelMultiPointToPolyligne.java 2008-10-16 14:01:02 UTC (rev 4073) @@ -1,125 +0,0 @@ -/* - * @creation 14 oct. 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.ctulu.gis; - -import java.util.ArrayList; -import java.util.HashMap; - -import org.fudaa.ctulu.ProgressionInterface; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Envelope; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.LinearRing; -import com.vividsolutions.jts.geom.MultiPoint; - -/** - * Cette classe convertie les mulitpoints en polyligne. Les g\xE9om\xE9tries faisant - * partie du model ne pouvant \xEAtre converties (soit parce que se ne sont pas des - * multipoint soit parce qu'il n'y a pas assez de points pour faire la conversion) - * deviennent invisible. - * - * @author Emmanuel MARTIN - * @version $Id:$ - */ -public class GISDataModelMultiPointToPolyligne implements GISDataModel { - - private final GISDataModel model_; - /** Table de translation d'indices des g\xE9om\xE9tries. */ - private final ArrayList<Integer> translationTable_; - /** Table cache des polylignes cr\xE9es.*/ - private final HashMap<Integer, LineString> cachePolyligne_; - - public GISDataModelMultiPointToPolyligne(GISDataModel _model){ - if(_model==null) - throw new IllegalArgumentException("_model ne doit pas \xEAtre null."); - translationTable_=new ArrayList<Integer>(); - cachePolyligne_=new HashMap<Integer, LineString>(); - model_=_model; - // Construction de la table de translation - for(int i=0;i<model_.getNumGeometries();i++) - if(model_.getGeometry(i) instanceof MultiPoint && model_.getGeometry(i).getNumPoints() >= 2) - translationTable_.add(i); - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#getAttribute(int) - */ - public GISAttributeInterface getAttribute(int _att) { - return model_.getAttribute(_att); - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#getDoubleValue(int, int) - */ - public double getDoubleValue(int _att, int _geom) { - if(_geom>0&&_geom<translationTable_.size()) - return getDoubleValue(_att, translationTable_.get(_geom)); - return 0; - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#getEnvelopeInternal() - */ - public Envelope getEnvelopeInternal() { - return model_.getEnvelopeInternal(); - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#getGeometry(int) - */ - public Geometry getGeometry(int _geom) { - if (_geom>=0&&_geom<translationTable_.size()) { - if (!cachePolyligne_.containsKey(_geom)) { - Coordinate[] coordinates=model_.getGeometry(translationTable_.get(_geom)).getCoordinates(); - // Cr\xE9ation de la polyligne - cachePolyligne_.put(_geom, GISGeometryFactory.INSTANCE.createLineString(coordinates)); - } - return cachePolyligne_.get(_geom); - } - return null; - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#getIndiceOf(org.fudaa.ctulu.gis.GISAttributeInterface) - */ - public int getIndiceOf(GISAttributeInterface _att) { - return model_.getIndiceOf(_att); - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#getNbAttributes() - */ - public int getNbAttributes() { - return model_.getNbAttributes(); - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#getNumGeometries() - */ - public int getNumGeometries() { - return translationTable_.size(); - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#getValue(int, int) - */ - public Object getValue(int _att, int _geom) { - if(_geom>0&&_geom<translationTable_.size()) - return model_.getValue(_att, translationTable_.get(_geom)); - return null; - } - - /* (non-Javadoc) - * @see org.fudaa.ctulu.gis.GISDataModel#preload(org.fudaa.ctulu.gis.GISAttributeInterface[], org.fudaa.ctulu.ProgressionInterface) - */ - public void preload(GISAttributeInterface[] _att, ProgressionInterface _prog) { - model_.preload(_att, _prog); - } -} Copied: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelMultiPointToPolyligneAdapter.java (from rev 4061, branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelMultiPointToPolyligne.java) =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelMultiPointToPolyligneAdapter.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelMultiPointToPolyligneAdapter.java 2008-10-16 14:01:02 UTC (rev 4073) @@ -0,0 +1,121 @@ +/* + * @creation 14 oct. 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.ctulu.gis; + +import java.util.ArrayList; +import java.util.HashMap; + +import org.fudaa.ctulu.ProgressionInterface; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.MultiPoint; + +/** + * Cette classe convertie les mulitpoints en polylignes. Les g\xE9om\xE9tries faisant + * partie du model ne pouvant \xEAtre converties (soit parce que se ne sont pas des + * multipoints soit parce qu'il n'y a pas assez de points pour faire la conversion) + * deviennent invisibles. + * + * @author Emmanuel MARTIN + * @version $Id$ + */ +public class GISDataModelMultiPointToPolyligneAdapter implements GISDataModel { + + private final GISDataModel model_; + /** Table de translation d'indices des g\xE9om\xE9tries. */ + private final ArrayList<Integer> translationTable_; + /** Table cache des polylignes cr\xE9es.*/ + private final HashMap<Integer, GISPolyligne> cachePolyligne_; + + public GISDataModelMultiPointToPolyligneAdapter(GISDataModel _model){ + if(_model==null) + throw new IllegalArgumentException("_model ne doit pas \xEAtre null."); + translationTable_=new ArrayList<Integer>(); + cachePolyligne_=new HashMap<Integer, GISPolyligne>(); + model_=_model; + // Construction de la table de translation + for(int i=0;i<model_.getNumGeometries();i++) + if(model_.getGeometry(i) instanceof GISMultiPoint && model_.getGeometry(i).getNumPoints() >= 2) + translationTable_.add(i); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getAttribute(int) + */ + public GISAttributeInterface getAttribute(int _att) { + return model_.getAttribute(_att); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getDoubleValue(int, int) + */ + public double getDoubleValue(int _att, int _geom) { + if(_geom>0&&_geom<translationTable_.size()) + return getDoubleValue(_att, translationTable_.get(_geom)); + return 0; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getEnvelopeInternal() + */ + public Envelope getEnvelopeInternal() { + return model_.getEnvelopeInternal(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getGeometry(int) + */ + public Geometry getGeometry(int _geom) { + if (_geom>=0&&_geom<translationTable_.size()) { + if (!cachePolyligne_.containsKey(_geom)) + cachePolyligne_.put(_geom, GISLib.toPolyligne(((GISMultiPoint) model_.getGeometry(translationTable_.get(_geom))).getCoordinateSequence())); + return cachePolyligne_.get(_geom); + } + return null; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getIndiceOf(org.fudaa.ctulu.gis.GISAttributeInterface) + */ + public int getIndiceOf(GISAttributeInterface _att) { + return model_.getIndiceOf(_att); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getNbAttributes() + */ + public int getNbAttributes() { + return model_.getNbAttributes(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getNumGeometries() + */ + public int getNumGeometries() { + return translationTable_.size(); + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#getValue(int, int) + */ + public Object getValue(int _att, int _geom) { + if(_geom>=0&&_geom<translationTable_.size()) + return model_.getValue(_att, translationTable_.get(_geom)); + return null; + } + + /* (non-Javadoc) + * @see org.fudaa.ctulu.gis.GISDataModel#preload(org.fudaa.ctulu.gis.GISAttributeInterface[], org.fudaa.ctulu.ProgressionInterface) + */ + public void preload(GISAttributeInterface[] _att, ProgressionInterface _prog) { + model_.preload(_att, _prog); + } +} Deleted: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPointMultiPointAdapter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPointMultiPointAdapter.java 2008-10-16 13:40:50 UTC (rev 4072) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPointMultiPointAdapter.java 2008-10-16 14:01:02 UTC (rev 4073) @@ -1,141 +0,0 @@ -/* - * @creation 8 juin 2005 - * @modification $Date: 2007-04-16 16:33:52 $ - * @license GNU General Public License 2 - * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne - * @mail de...@fu... - */ -package org.fudaa.ctulu.gis; - -import java.util.ArrayList; -import java.util.HashMap; - -import com.vividsolutions.jts.geom.Envelope; -import com.vividsolutions.jts.geom.Geometry; -import com.vividsolutions.jts.geom.Point; - -import org.fudaa.ctulu.CtuluLib; -import org.fudaa.ctulu.CtuluLibArray; -import org.fudaa.ctulu.ProgressionInterface; - -/** - * Un mod\xE8le pour adapter un modele de points vers un mod\xE8le de multipoints. - * Lors de ce passage, si l'attribut ATT_NUM_BLOC existe, alors il est utilis\xE9 pour g\xE9n\xE9rer les multipoints. - * Sinon, un seul multipoint est cr\xE9\xE9. - * A priori, tous les attributs des points sont globaux. Ils deviennent atomiques. - * - * @author Bertrand Marchand - * @version $Id: GISDataModelListPtAdapter.java,v 1.8 2007-04-16 16:33:52 deniger Exp $ - */ -public class GISDataModelPointMultiPointAdapter implements GISDataModel { - - /** Un attribut num\xE9ro de bloc, pour faire des groupes de points. */ - public static final GISAttributeInterface ATT_NUM_BLOC=new GISAttributeInteger("numbloc"); - - // Cache. - GISMultiPoint[] multi_=null; - Object[][] datas_=null; - - - int idxAttNumBloc_; - HashMap<Integer,ArrayList<Integer>> hibloc2ListPts_=new HashMap<Integer, ArrayList<Integer>>(); - GISDataModel initmd_; - - /** - * Constructeur. On ne controle pas que le modele contient bien des points. - */ - public GISDataModelPointMultiPointAdapter(final GISDataModel _mdpts) { - super(); - initmd_=_mdpts; - - idxAttNumBloc_=initmd_.getIndiceOf(ATT_NUM_BLOC); - // Pas de blocs, 1 seul multipoint. - if (idxAttNumBloc_==-1) { - ArrayList<Integer> idxpts=new ArrayList<Integer>(initmd_.getNumGeometries()); - for (int i=0; i<initmd_.getNumGeometries(); i++) idxpts.add(i); - hibloc2ListPts_.put(0,idxpts); - } - // Plusieurs blocs. - else { - for (int i=0; i<initmd_.getNumGeometries(); i++) { - Integer ibloc=(Integer)_mdpts.getValue(idxAttNumBloc_,i); - ArrayList<Integer> idxpts=hibloc2ListPts_.get(ibloc); - if (idxpts==null) { - idxpts=new ArrayList<Integer>(); - hibloc2ListPts_.put(ibloc, idxpts); - } - idxpts.add(i); - } - } - } - - /** - * Attention : L'attribut retourn\xE9 est non atomic (puisque issu du mod\xE8le initial), alors que pour les - * multipoints, il est atomique. - * @todo Modifier l'atomicit\xE9. - */ - public GISAttributeInterface getAttribute(final int _idxAtt){ - return initmd_.getAttribute(_idxAtt); - } - - public void preload(final GISAttributeInterface[] _att, final ProgressionInterface _prog) { - - } - - public Envelope getEnvelopeInternal() { - return initmd_.getEnvelopeInternal(); - } - -// public Object[] getDataModelForGeom(final int _idxGeom){ -// final Object[] r = new Object[getNbAttributes()]; -// for (int i = r.length - 1; i >= 0; i--) { -// r[i] = getValue(i, _idxGeom); -// } -// return r; -// } - - public double getDoubleValue(final int _idxAtt,final int _idxGeom){ - throw new IllegalAccessError("This method can't be accessed."); - } - - public Geometry getGeometry(final int _idxGeom){ - if (multi_==null) multi_=new GISMultiPoint[getNumGeometries()]; - if (multi_[_idxGeom]==null) { - ArrayList<Integer> idxpts=hibloc2ListPts_.get(_idxGeom); - Point[] pts=new Point[idxpts.size()]; - for (int i=0; i<idxpts.size(); i++) { - pts[i]=(Point)initmd_.getGeometry(idxpts.get(i)); - } - multi_[_idxGeom]=(GISMultiPoint)GISGeometryFactory.INSTANCE.createMultiPoint(pts); - } - return multi_[_idxGeom]; - } - - public int getIndiceOf(final GISAttributeInterface _att){ - return initmd_.getIndiceOf(_att); - } - - public int getNbAttributes(){ - return initmd_.getNbAttributes(); - } - - public int getNumGeometries(){ - return hibloc2ListPts_.size(); - } - - /** - * Retourne un tableau de valeurs atomiques (Z par exemple). - */ - public Object getValue(final int _idxAtt,final int _idxGeom){ - if (datas_==null) datas_=new Object[getNbAttributes()][]; - if (datas_[_idxAtt]==null) datas_[_idxAtt]=new Object[getNumGeometries()]; - - if (datas_[_idxAtt][_idxGeom]==null) { - ArrayList<Integer> idxpts=hibloc2ListPts_.get(_idxGeom); - Object[] vals=new Object[idxpts.size()]; - for (int i=0; i<idxpts.size(); i++) vals[i]=initmd_.getValue(_idxAtt,idxpts.get(i)); - datas_[_idxAtt][_idxGeom]=getAttribute(_idxAtt).createDataForGeom(vals, vals.length); - } - return datas_[_idxAtt][_idxGeom]; - } -} Copied: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPointToMultiPointAdapter.java (from rev 4061, branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPointMultiPointAdapter.java) =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPointToMultiPointAdapter.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPointToMultiPointAdapter.java 2008-10-16 14:01:02 UTC (rev 4073) @@ -0,0 +1,127 @@ +/* + * @creation 8 juin 2005 + * @modification $Date: 2007-04-16 16:33:52 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.ctulu.gis; + +import java.util.ArrayList; +import java.util.HashMap; + +import org.fudaa.ctulu.ProgressionInterface; + +import com.vividsolutions.jts.geom.Envelope; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.Point; + +/** + * Un mod\xE8le pour adapter un modele de points vers un mod\xE8le de multip... [truncated message content] |
From: <emm...@us...> - 2008-10-17 08:09:01
|
Revision: 4078 http://fudaa.svn.sourceforge.net/fudaa/?rev=4078&view=rev Author: emmanuel_martin Date: 2008-10-17 08:08:51 +0000 (Fri, 17 Oct 2008) Log Message: ----------- Ajout de la lecture des natures dans lors de l'import de fichiers sinusx Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxReader.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImportStepDestination.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dTrace.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dCloud.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dConstraintLine.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dContour.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dDirectionLine.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLevel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dProfile.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dZone.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigResource.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2008-10-16 20:35:47 UTC (rev 4077) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2008-10-17 08:08:51 UTC (rev 4078) @@ -39,6 +39,23 @@ /** Une valeur d'attribut valant False */ public final static String ATT_VAL_FALSE="F"; + /** Nature Semis */ + public final static String ATT_NATURE_SM="SM"; + /** Nature Courbe niveau */ + public final static String ATT_NATURE_CN="CN"; + /** Nature Profil */ + public final static String ATT_NATURE_PF="PF"; + /** Nature Ligne directrice */ + public final static String ATT_NATURE_LD="LD"; + /** Nature Ligne de contrainte */ + public final static String ATT_NATURE_LC="LC"; + /** Nature Trace de profil */ + public final static String ATT_NATURE_TP="TP"; + /** Nature Zone */ + public final static String ATT_NATURE_ZN="ZN"; + /** Nature Contour d'\xE9tude */ + public final static String ATT_NATURE_CE="CE"; + /** * Un attribut nom, global. */ Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxReader.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxReader.java 2008-10-16 20:35:47 UTC (rev 4077) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxReader.java 2008-10-17 08:08:51 UTC (rev 4078) @@ -12,15 +12,8 @@ import java.io.EOFException; import java.io.File; import java.io.IOException; -import java.util.ArrayList; import java.util.Arrays; -import java.util.List; -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.Geometry; - -import com.memoire.fu.FuLog; - import org.fudaa.ctulu.CtuluActivity; import org.fudaa.ctulu.CtuluLibFile; import org.fudaa.ctulu.CtuluLibString; @@ -36,10 +29,12 @@ import org.fudaa.ctulu.gis.GISZoneCollectionPoint; import org.fudaa.ctulu.gis.GISZoneCollectionPolygone; import org.fudaa.ctulu.gis.GISZoneCollectionPolyligne; - import org.fudaa.dodico.fortran.FileOpReadCharSimpleAbstract; import org.fudaa.dodico.h2d.resource.H2dResource; +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; + /** * @version $Id: SinusxReader.java,v 1.22.6.1 2008-04-01 17:12:05 bmarchan Exp $ * @author Fred Deniger @@ -114,11 +109,11 @@ GISZoneCollectionPolygone polygones = null; GISZoneCollectionPolyligne polylignes = null; -// GISAttribute[] atts=new GISAttribute[]{GISAttributeConstants.BATHY,GISAttributeConstants.TITRE}; GISAttributeInterface[] attPts=new GISAttributeInterface[]{ GISAttributeConstants.BATHY, GISAttributeConstants.TITRE, - GISDataModelPointToMultiPointAdapter.ATT_NUM_BLOC + GISDataModelPointToMultiPointAdapter.ATT_NUM_BLOC, + GISAttributeConstants.NATURE }; // Geometry geom; @@ -134,6 +129,7 @@ TDoubleArrayList polyligneXyz = null; boolean ferme = false; boolean niveau = false; + String type = null; try { int lu = 0; boolean afficheAvance = false; @@ -157,7 +153,6 @@ mapInfo = true; } } while (key.isBlocCommentaire(bloc)); - String type = null; // MNTEntite ent = null; // approximation lu += 150; @@ -281,7 +276,11 @@ } if (estPoint(bloc)) { if (pt != null) { - pt.add(Double.parseDouble(bloc), in_.doubleField(1), in_.doubleField(2),Arrays.asList(new Object[]{null,name,idx-1}),null); + if(key.isTypeSemis(type)) + type=GISAttributeConstants.ATT_NATURE_SM; + else + type=""; + pt.add(Double.parseDouble(bloc), in_.doubleField(1), in_.doubleField(2),Arrays.asList(new Object[]{null,name,idx-1, type}),null); } else if (polyligneXyz != null) { polyligneXyz.add(Double.parseDouble(bloc)); polyligneXyz.add(in_.doubleField(1)); @@ -297,40 +296,8 @@ } } // Fin de lecture des points du bloc => Si polyligne ou polygone, cr\xE9ation et ajout des points. - if (polyligneXyz != null) { - addLigne(defZone, polyligneXyz, name, polygones, polylignes, ferme, niveau); -// if (!ferme) { -// ferme = isClosed(polyligneXyz); -// } -// if (ferme) { -// if (polygones == null) { -// polygones = defZone.createPolygoneContainer(); -// polygones.setAttributes(atts, null); -// } -// polyligneXyz.add(polyligneXyz.getQuick(0)); -// polyligneXyz.add(polyligneXyz.getQuick(1)); -// polyligneXyz.add(polyligneXyz.getQuick(2)); -// if (niveau) { -// geom=GISGeometryFactory.INSTANCE.createLinearRingNiveau(new GISCoordinateSequence(polyligneXyz)); -// } else { -// geom=GISGeometryFactory.INSTANCE.createLinearRing(new GISCoordinateSequence(polyligneXyz)); -// } -// polygones.addGeometry(geom, new Object[]{null,name}, null); -// } else { -// if (polylignes == null) { -// polylignes = defZone.createPolyligneContainer(); -// polylignes.setAttributes(atts, null); -// } -// if (niveau) { -// geom=GISGeometryFactory.INSTANCE.createLineStringNiveau(new GISCoordinateSequence(polyligneXyz)); -// } else { -// geom=GISGeometryFactory.INSTANCE.createLineString(new GISCoordinateSequence(polyligneXyz)); -// } -// polylignes.addGeometry(geom, new Object[]{null,name}, null); -// } -// ferme = false; -// niveau = false; - } + if (polyligneXyz != null) + addLigne(defZone, polyligneXyz, name, type, polygones, polylignes, ferme, niveau); ferme = false; niveau = false; } @@ -339,41 +306,10 @@ } catch (final NumberFormatException e) { analyze_.manageException(e); } - if (stop_) { + if (stop_) return null; - } - if (polyligneXyz != null) { - addLigne(defZone, polyligneXyz, name, polygones, polylignes, ferme, niveau); -// if (!ferme) { -// ferme = isClosed(polyligneXyz); -// } -// if (ferme) { -// if (polygones == null) { -// polygones = defZone.createPolygoneContainer(); -// polygones.setAttributes(atts, null); -// } -// polyligneXyz.add(polyligneXyz.getQuick(0)); -// polyligneXyz.add(polyligneXyz.getQuick(1)); -// polyligneXyz.add(polyligneXyz.getQuick(2)); -// if (niveau) { -// geom=GISGeometryFactory.INSTANCE.createLinearRingNiveau(new GISCoordinateSequence(polyligneXyz)); -// } else { -// geom=GISGeometryFactory.INSTANCE.createLinearRing(new GISCoordinateSequence(polyligneXyz)); -// } -// polygones.addGeometry(geom, new Object[]{null,name}, null); -// } else { -// if (polylignes == null) { -// polylignes = defZone.createPolyligneContainer(); -// polylignes.setAttributes(atts, null); -// } -// if (niveau) { -// geom=GISGeometryFactory.INSTANCE.createLineStringNiveau(new GISCoordinateSequence(polyligneXyz)); -// } else { -// geom=GISGeometryFactory.INSTANCE.createLineString(new GISCoordinateSequence(polyligneXyz)); -// } -// polylignes.addGeometry(geom, new Object[]{null,name}, null); -// } - } + if (polyligneXyz != null) + addLigne(defZone, polyligneXyz, name, type, polygones, polylignes, ferme, niveau); for(int i=0;i<defZone.getPointCollections().length;i++) defZone.getPointCollections()[i].setAttributeIsZ(GISAttributeConstants.BATHY); @@ -387,7 +323,7 @@ return defZone; } - private void addLigne(GISZone _defZone, TDoubleArrayList _polyligneXyz, String _name, GISZoneCollection _polygones, GISZoneCollection _polylignes, + private void addLigne(GISZone _defZone, TDoubleArrayList _polyligneXyz, String _name, String _type, GISZoneCollection _polygones, GISZoneCollection _polylignes, boolean _ferme, boolean _niveau) { if (_polyligneXyz.size()<=3) { // Une polyligne ne peut pas contenir moins de 2 points. @@ -395,7 +331,21 @@ return; } - GISAttribute[] atts=new GISAttribute[]{GISAttributeConstants.BATHY,GISAttributeConstants.TITRE}; + // D\xE9termination de la nature + String nature=""; + final SinusxKeyWord key = new SinusxKeyWord(); + if (key.isTypeCourbe(_type)) + nature=""; + else if (key.isTypeCourbeNiveau(_type)) + nature=GISAttributeConstants.ATT_NATURE_CN; + else if (key.isTypeProfil(_type)) + nature=GISAttributeConstants.ATT_NATURE_PF; + + GISAttribute[] atts=new GISAttribute[]{ + GISAttributeConstants.BATHY, + GISAttributeConstants.TITRE, + GISAttributeConstants.NATURE + }; Geometry geom; if (!_ferme) { @@ -411,14 +361,11 @@ _polyligneXyz.add(_polyligneXyz.getQuick(0)); _polyligneXyz.add(_polyligneXyz.getQuick(1)); _polyligneXyz.add(_polyligneXyz.getQuick(2)); - if (_niveau) { + if (_niveau) geom=GISGeometryFactory.INSTANCE.createLinearRingNiveau(new GISCoordinateSequence(_polyligneXyz)); -// polygones.addPolygoneNiveau(new GISCoordinateSequence(polyligneXyz), null); - } else { + else geom=GISGeometryFactory.INSTANCE.createLinearRing(new GISCoordinateSequence(_polyligneXyz)); -// polygones.addPolygone(new GISCoordinateSequence(polyligneXyz), null); - } - _polygones.addGeometry(geom, new Object[]{null,_name}, null); + _polygones.addGeometry(geom, new Object[]{null,_name, nature}, null); } else { if (_polylignes == null) { _polylignes = _defZone.createPolyligneContainer(); @@ -426,14 +373,11 @@ if(_polylignes.getAttributeIsZ()!=null) _polylignes.setAttributeIsZ(GISAttributeConstants.BATHY); } - if (_niveau) { + if (_niveau) geom=GISGeometryFactory.INSTANCE.createLineStringNiveau(new GISCoordinateSequence(_polyligneXyz)); -// polylignes.addPolyligneNiveau(new GISCoordinateSequence(polyligneXyz), null); - } else { + else geom=GISGeometryFactory.INSTANCE.createLineString(new GISCoordinateSequence(_polyligneXyz)); -// polylignes.addPolyligne(new GISCoordinateSequence(polyligneXyz), null); - } - _polylignes.addGeometry(geom, new Object[]{null,_name}, null); + _polylignes.addGeometry(geom, new Object[]{null,_name, nature}, null); } _ferme = false; _niveau = false; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImportStepDestination.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImportStepDestination.java 2008-10-16 20:35:47 UTC (rev 4077) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImportStepDestination.java 2008-10-17 08:08:51 UTC (rev 4078) @@ -504,13 +504,13 @@ int indexNature=source[j].getIndiceOf(GISAttributeConstants.NATURE); if (nature==""&&indexNature==-1) concernedGeom.add(source[j]); - else if (nature!=""&&indexNature!=-1) { + else if (indexNature!=-1) { boolean correctNature=false; int k=-1; while (!correctNature&&++k<source[j].getNumGeometries()) correctNature=(String)source[j].getValue(indexNature, k)==nature; if (correctNature) - concernedGeom.add(data_.getPoints()[j]); + concernedGeom.add(source[j]); } } // 3 : r\xE9cup\xE9ration des attributs disponibles dans les g\xE9om\xE9tries Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dTrace.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dTrace.java 2008-10-16 20:35:47 UTC (rev 4077) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel1dTrace.java 2008-10-17 08:08:51 UTC (rev 4078) @@ -38,6 +38,6 @@ // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. getGeomData().setAttributes(attrs, null); getGeomData().setAttributeIsZ(null); - getGeomData().setFixedAttributeValue(GISAttributeConstants.NATURE, FSigResource.ATT_NATURE_TP); + getGeomData().setFixedAttributeValue(GISAttributeConstants.NATURE, GISAttributeConstants.ATT_NATURE_TP); } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dCloud.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dCloud.java 2008-10-16 20:35:47 UTC (rev 4077) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dCloud.java 2008-10-17 08:08:51 UTC (rev 4078) @@ -47,6 +47,6 @@ // 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, FSigResource.ATT_NATURE_SM); + getGeomData().setFixedAttributeValue(GISAttributeConstants.NATURE, GISAttributeConstants.ATT_NATURE_SM); } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dConstraintLine.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dConstraintLine.java 2008-10-16 20:35:47 UTC (rev 4077) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dConstraintLine.java 2008-10-17 08:08:51 UTC (rev 4078) @@ -38,6 +38,6 @@ // 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, FSigResource.ATT_NATURE_LC); + getGeomData().setFixedAttributeValue(GISAttributeConstants.NATURE, GISAttributeConstants.ATT_NATURE_LC); } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dContour.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dContour.java 2008-10-16 20:35:47 UTC (rev 4077) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dContour.java 2008-10-17 08:08:51 UTC (rev 4078) @@ -37,6 +37,6 @@ // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. getGeomData().setAttributes(attrs, null); getGeomData().setAttributeIsZ(null); - getGeomData().setFixedAttributeValue(GISAttributeConstants.NATURE, FSigResource.ATT_NATURE_CE); + getGeomData().setFixedAttributeValue(GISAttributeConstants.NATURE, GISAttributeConstants.ATT_NATURE_CE); } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dDirectionLine.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dDirectionLine.java 2008-10-16 20:35:47 UTC (rev 4077) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dDirectionLine.java 2008-10-17 08:08:51 UTC (rev 4078) @@ -40,6 +40,6 @@ // 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, FSigResource.ATT_NATURE_LD); + getGeomData().setFixedAttributeValue(GISAttributeConstants.NATURE, GISAttributeConstants.ATT_NATURE_LD); } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLevel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLevel.java 2008-10-16 20:35:47 UTC (rev 4077) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dLevel.java 2008-10-17 08:08:51 UTC (rev 4078) @@ -43,6 +43,6 @@ // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. getGeomData().setAttributes(attrs, null); getGeomData().setAttributeIsZ(zglob); - getGeomData().setFixedAttributeValue(GISAttributeConstants.NATURE, FSigResource.ATT_NATURE_CN); + getGeomData().setFixedAttributeValue(GISAttributeConstants.NATURE, GISAttributeConstants.ATT_NATURE_CN); } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dProfile.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dProfile.java 2008-10-16 20:35:47 UTC (rev 4077) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dProfile.java 2008-10-17 08:08:51 UTC (rev 4078) @@ -39,6 +39,6 @@ // 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, FSigResource.ATT_NATURE_PF); + getGeomData().setFixedAttributeValue(GISAttributeConstants.NATURE, GISAttributeConstants.ATT_NATURE_PF); } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dZone.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dZone.java 2008-10-16 20:35:47 UTC (rev 4077) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/layer/MdlModel2dZone.java 2008-10-17 08:08:51 UTC (rev 4078) @@ -37,6 +37,6 @@ // Pas de container de commande pour cette op\xE9ration, sinon conserv\xE9 en undo/redo. getGeomData().setAttributes(attrs, null); getGeomData().setAttributeIsZ(null); - getGeomData().setFixedAttributeValue(GISAttributeConstants.NATURE, FSigResource.ATT_NATURE_ZN); + getGeomData().setFixedAttributeValue(GISAttributeConstants.NATURE, GISAttributeConstants.ATT_NATURE_ZN); } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigResource.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigResource.java 2008-10-16 20:35:47 UTC (rev 4077) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigResource.java 2008-10-17 08:08:51 UTC (rev 4078) @@ -17,25 +17,7 @@ * @author Fred Deniger */ public final class FSigResource extends FudaaResource { - - /** Nature Semis */ - public final static String ATT_NATURE_SM="SM"; - /** Nature Courbe niveau */ - public final static String ATT_NATURE_CN="CN"; - /** Nature Profil */ - public final static String ATT_NATURE_PF="PF"; - /** Nature Ligne directrice */ - public final static String ATT_NATURE_LD="LD"; - /** Nature Ligne de contrainte */ - public final static String ATT_NATURE_LC="LC"; - /** Nature Trace de profil */ - public final static String ATT_NATURE_TP="TP"; - /** Nature Zone */ - public final static String ATT_NATURE_ZN="ZN"; - /** Nature Contour d'\xE9tude */ - public final static String ATT_NATURE_CE="CE"; - public final static FSigResource FSIG = new FSigResource(FudaaResource.FUDAA); private FSigResource(final BuResource _b) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java 2008-10-16 20:35:47 UTC (rev 4077) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java 2008-10-17 08:08:51 UTC (rev 4078) @@ -204,13 +204,13 @@ else { GISDataModel mdl=GISDataModelFilterAdapter.buildAdapter(_filter.getCollect(_filter.polyCq_.get(i)), new GISAttributeInterface[]{GISAttributeConstants.TITRE,GISAttributeConstants.NATURE}); - if (FSigResource.ATT_NATURE_CN.equals(col.getValue(idxAtt,0))) { + if (GISAttributeConstants.ATT_NATURE_CN.equals(col.getValue(idxAtt,0))) { mdlniv.add(mdl); } - else if (FSigResource.ATT_NATURE_PF.equals(col.getValue(idxAtt,0))) { + else if (GISAttributeConstants.ATT_NATURE_PF.equals(col.getValue(idxAtt,0))) { mdlprofs.add(mdl); } - else if (FSigResource.ATT_NATURE_LD.equals(col.getValue(idxAtt,0))) { + else if (GISAttributeConstants.ATT_NATURE_LD.equals(col.getValue(idxAtt,0))) { mdlligdir.add(mdl); } else { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2008-10-17 15:17:36
|
Revision: 4079 http://fudaa.svn.sourceforge.net/fudaa/?rev=4079&view=rev Author: emmanuel_martin Date: 2008-10-17 15:17:26 +0000 (Fri, 17 Oct 2008) Log Message: ----------- ajout des natures dans les fichier st et changement mineur dans l'aspect du tableau d'importation dans la wizard Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImportStepDestination.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java 2008-10-17 08:08:51 UTC (rev 4078) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java 2008-10-17 15:17:26 UTC (rev 4079) @@ -118,7 +118,7 @@ if (str != null) { lignes.add(str); if ("".equals(name)) { - names.add(CtuluLib.getS(isSt_?"_P":"_N")+((GISGeometry)str).getId()); + names.add(CtuluLib.getS(isSt_?"P":"_N")+((GISGeometry)str).getId()); } else { names.add(name); @@ -135,7 +135,7 @@ if (str != null) { lignes.add(str); if ("".equals(name)) { - names.add(CtuluLib.getS("_P")+((GISGeometry)str).getId()); + names.add(CtuluLib.getS("P")+((GISGeometry)str).getId()); } else { names.add(name); @@ -147,7 +147,7 @@ if (lignes.size() > 0) { final GISZoneCollectionLigneBrisee zligs = new GISZoneCollectionLigneBrisee(null); zligs.addAllLineStringClosedOrNode((LineString[]) lignes.toArray(new LineString[lignes.size()]), null); - zligs.setAttributes(new GISAttributeInterface[] { GISAttributeConstants.BATHY, GISAttributeConstants.TITRE}, null); + zligs.setAttributes(new GISAttributeInterface[] { GISAttributeConstants.BATHY, GISAttributeConstants.TITRE, GISAttributeConstants.NATURE}, null); if(zligs.getAttributeIsZ()!=null) zligs.setAttributeIsZ(GISAttributeConstants.BATHY); zligs.postImport(0); @@ -157,6 +157,11 @@ for (int i=0; i<names.size(); i++) { attmod.setObject(i,attmod.getAttribute().createDataForGeom(names.get(i),1),null); } + // Affectation de l'attribut nature + attmod=zligs.getModel(GISAttributeConstants.NATURE); + for (int i=0; i<attmod.getSize(); i++) { + attmod.setObject(i,attmod.getAttribute().createDataForGeom(GISAttributeConstants.ATT_NATURE_PF,1),null); + } ret[0]=zligs; } @@ -171,7 +176,7 @@ } zdirs.addAllLineStringClosedOrNode(ldirs, null); - zdirs.setAttributes(new GISAttributeInterface[] { GISAttributeConstants.BATHY, GISAttributeConstants.TITRE}, null); + zdirs.setAttributes(new GISAttributeInterface[] { GISAttributeConstants.BATHY, GISAttributeConstants.TITRE, GISAttributeConstants.NATURE}, null); if(zdirs.getAttributeIsZ()!=null) zdirs.setAttributeIsZ(GISAttributeConstants.BATHY); zdirs.postImport(0); @@ -181,6 +186,11 @@ for (int i=0; i<namedirs.length; i++) { attmod.setObject(i,attmod.getAttribute().createDataForGeom(namedirs[i],1),null); } + // Affectation de l'attribut nature + attmod=zdirs.getModel(GISAttributeConstants.NATURE); + for (int i=0; i<attmod.getSize(); i++) { + attmod.setObject(i,attmod.getAttribute().createDataForGeom(GISAttributeConstants.ATT_NATURE_LD,1),null); + } ret[1]=zdirs; } return ret; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImportStepDestination.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImportStepDestination.java 2008-10-17 08:08:51 UTC (rev 4078) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImportStepDestination.java 2008-10-17 15:17:26 UTC (rev 4079) @@ -208,10 +208,23 @@ String value=_value.toString(); if (_value==ModelTableImport.NEW_CALQUE||_value==ModelTableImport.NO_CALQUE) value=FSigLib.getS(value); - return new BuLabel(value); + BuLabel lbl =new BuLabel(value); + lbl.setHorizontalAlignment(BuLabel.CENTER); + return lbl; } - else - return new BuLabel(_value.toString()); + else if (_column==1){ + BuLabel lbl =new BuLabel(_value.toString()); + lbl.setHorizontalAlignment(BuLabel.CENTER); + return lbl; + } + else { + BuLabel lbl =new BuLabel(_value.toString()); + lbl.setHorizontalAlignment(BuLabel.CENTER); + if(_isSelected){ + lbl.setText("<html><b>"+lbl.getText()+"</b></html>"); + } + return lbl; + } } } @@ -456,6 +469,8 @@ pnInfo_.setSrc(data_); // Update du panel d'import table_.setModel(new ModelTableImport(generateTitleColumnTable(), generateDataTable())); + table_.getColumnModel().getColumn(0).setCellRenderer(new ImportTableRenderer()); + table_.getColumnModel().getColumn(1).setCellRenderer(new ImportTableRenderer()); table_.getColumnModel().getColumn(2).setCellRenderer(new ImportTableRenderer()); table_.getColumnModel().getColumn(3).setCellRenderer(new ImportTableRenderer()); ImportTableEditorForBCalqueSelection editor=new ImportTableEditorForBCalqueSelection(); @@ -531,7 +546,7 @@ } protected void fillAttributsPanel(){ - // Si rien n'est selectionn\xE9, on iter sur les lignes jusqu'\xE0 en trouver une ayant des truc amapper mapper + // Si rien n'est selectionn\xE9, on iter sur les lignes jusqu'\xE0 en trouver une ayant des truc a mapper if(table_.getSelectedRow()!=-1) generateMappingAttribute(table_.getSelectedRow()); else{ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2008-10-17 16:14:39
|
Revision: 4080 http://fudaa.svn.sourceforge.net/fudaa/?rev=4080&view=rev Author: emmanuel_martin Date: 2008-10-17 16:14:29 +0000 (Fri, 17 Oct 2008) Log Message: ----------- La boite d'edition de g?\195?\169om?\195?\169trie est acc?\195?\169ssible d?\195?\168s qu'une g?\195?\169om?\195?\169trie est selectionn?\195?\169e, m?\195?\170me si celle ci est dans un calque diff?\195?\169rent de celui selectionn?\195?\169. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java 2008-10-17 15:17:26 UTC (rev 4079) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java 2008-10-17 16:14:29 UTC (rev 4080) @@ -13,10 +13,9 @@ import java.awt.Graphics2D; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; -import java.awt.event.KeyListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import java.util.Vector; +import java.util.ArrayList; import javax.swing.AbstractButton; import javax.swing.Action; @@ -36,6 +35,7 @@ import org.fudaa.ctulu.gui.CtuluLibSwing; import org.fudaa.ebli.calque.BCalque; import org.fudaa.ebli.calque.ZCalqueAffichageDonnees; +import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; import org.fudaa.ebli.calque.ZCalqueClickInteraction; import org.fudaa.ebli.calque.ZCalqueClikInteractionListener; import org.fudaa.ebli.calque.ZEbliCalquesPanel; @@ -53,6 +53,9 @@ import org.fudaa.ebli.trace.TraceIcon; import com.memoire.bu.BuDesktop; +import com.memoire.bu.BuInternalFrame; +import com.memoire.bu.BuLabel; +import com.memoire.bu.BuPopupWindow; import com.memoire.bu.BuResource; import com.memoire.fu.Fu; import com.memoire.fu.FuLog; @@ -723,38 +726,50 @@ } } + /** + * Contrairement \xE0 ce que laisse penser le prototype, cette fonction lance + * l'\xE9dition des g\xE9om\xE9tries quelque soit le calque dans lequel les g\xE9om\xE9tries + * sont selectionn\xE9. Le param\xE8tre _target, n'est pas utilis\xE9. + */ public String edit(final Object _target) { - if (!isEditable(_target)) { - return EbliLib.getS("Non \xE9ditable"); - } - final ZCalqueEditable ed = (ZCalqueEditable) _target; - if (ed.isSelectionEmpty()) { + // R\xE9cup\xE9ration des calques contenant des g\xE9om\xE9tries selectionn\xE9es \\ + ZCalqueAffichageDonneesInterface[] calques=panel_.getScene().getAllLayers(); + ArrayList<ZCalqueAffichageDonneesInterface> claquesWithSelectedObjects=new ArrayList<ZCalqueAffichageDonneesInterface>(); + for (int i=0; i<calques.length; i++) + if (!calques[i].isSelectionEmpty()&&calques[i] instanceof ZCalqueEditable) + claquesWithSelectedObjects.add(calques[i]); + // Verification du le nombre de calques contenant des selections + if (claquesWithSelectedObjects.size()==0) return EbliLib.getS("La s\xE9lection courante est vide"); + else if (claquesWithSelectedObjects.size()>1){ + ui_.warn("Information", "La selection dans plusieurs calques n'est pas g\xE9r\xE9e par la fen\xEAtre d'\xE9dition.", false); + /*BuInternalFrame i = new BuInternalFrame("Information", false, true, false, false); + i.add(new BuLabel("La selection dans plusieurs calques n'est pas g\xE9r\xE9e par la fen\xEAtre d'\xE9dition.")); + i.setVisible(true); + i.*/ + return EbliLib.getS("La selection dans plusieurs calques n'est pas g\xE9r\xE9e par la fen\xEAtre d'\xE9dition."); } - if (ed.isAtomicMode()) { - editVertexObject(ed); - return null; - } - final ZCalqueAffichageDonnees calque = (ZCalqueAffichageDonnees) ed; - if (calque.isOnlyOneObjectSelected()) { - editSingleObject(ed); - } else { - - CtuluDialogPanel pn = null; - if (ed.getModelEditable().getGeomData() instanceof GISZoneCollectionPoint) { - - pn = GISGuiBuilder.buildFor((GISZoneCollectionPoint) ed.getModelEditable().getGeomData(), ed - .getLayerSelection().getSelectedIndex(), getMng()); - } else { - pn = GISGuiBuilder.buildForGlobAtt(ed.getModelEditable().getGeomData(), ed.getLayerSelection() + ZCalqueEditable calque=(ZCalqueEditable)claquesWithSelectedObjects.get(0); + + // G\xE9n\xE9ration d'une boite d'\xE9dition selon le type de selection et d'\xE9dition \\ + if (((ZCalqueEditable)calque).isAtomicMode()) + editVertexObject((ZCalqueEditable)calque); + else if (calque.isOnlyOneObjectSelected()) + // Une seule g\xE9om\xE9trie est \xE0 \xE9diter + editSingleObject((ZCalqueEditable)claquesWithSelectedObjects.get(0)); + else { + // Plusieurs g\xE9om\xE9tries sont \xE0 \xE9diter + CtuluDialogPanel pn=null; + if (calque.getModelEditable().getGeomData() instanceof GISZoneCollectionPoint) + pn=GISGuiBuilder.buildFor((GISZoneCollectionPoint)calque.getModelEditable().getGeomData(), calque.getLayerSelection() .getSelectedIndex(), getMng()); - } - if (pn == null) { - getUi().message(ed.getTitle(), EbliLib.getS("Aucune donn\xE9e \xE0 \xE9diter"), true); - } else { - pn.afficheModale(getFrame(), ed.getTitle()); - } - + else + pn=GISGuiBuilder.buildForGlobAtt(calque.getModelEditable().getGeomData(), calque.getLayerSelection().getSelectedIndex(), + getMng()); + if (pn==null) + getUi().message(calque.getTitle(), EbliLib.getS("Aucune donn\xE9e \xE0 \xE9diter"), true); + else + pn.afficheModale(getFrame(), calque.getTitle()); } return null; } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java 2008-10-17 15:17:26 UTC (rev 4079) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java 2008-10-17 16:14:29 UTC (rev 4080) @@ -10,6 +10,7 @@ import java.awt.Frame; import java.awt.event.ActionEvent; import java.io.File; +import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -330,9 +331,13 @@ if (Fu.DEBUG && FuLog.isDebug()) { FuLog.debug("FTR gis target= " + FSigEditor.this.getTarget()); } - final BCalque cq = getSupport().getCalqueActif(); - super.setEnabled(FSigEditor.this.isEditable(cq) && (cq instanceof ZCalqueAffichageDonneesInterface) && - !((ZCalqueAffichageDonneesInterface)cq).isSelectionEmpty()); + // R\xE9cup\xE9ration des calques contenant des g\xE9om\xE9tries selectionn\xE9es \\ + ZCalqueAffichageDonneesInterface[] calques=getSupport().getAllLayers(); + ArrayList<ZCalqueAffichageDonneesInterface> claquesWithSelectedObjects=new ArrayList<ZCalqueAffichageDonneesInterface>(); + for (int i=0; i<calques.length; i++) + if (!calques[i].isSelectionEmpty()&&calques[i] instanceof ZCalqueEditable) + claquesWithSelectedObjects.add(calques[i]); + super.setEnabled(claquesWithSelectedObjects.size()>0); } public String getEnableCondition() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2008-10-20 09:52:21
|
Revision: 4082 http://fudaa.svn.sourceforge.net/fudaa/?rev=4082&view=rev Author: emmanuel_martin Date: 2008-10-20 09:47:19 +0000 (Mon, 20 Oct 2008) Log Message: ----------- am?\195?\169lioration mineur et correction de bugs dans le wizard d'import du modeleur Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/collection/CtuluListObject.java branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/reflux/io/ReflucadBERReader.java branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/reflux/io/ReflucadPROReader.java branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/reflux/io/ReflucadSEMReader.java branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxReader.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImportStepDestination.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigExportImportAttributesMapper.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/collection/CtuluListObject.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/collection/CtuluListObject.java 2008-10-17 17:12:25 UTC (rev 4081) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/collection/CtuluListObject.java 2008-10-20 09:47:19 UTC (rev 4082) @@ -386,19 +386,20 @@ public final boolean addAll(final Object[] _obj, final List _o, final CtuluCommandContainer _cmd) { if (canAdd(_obj)) { - final int idx = list_.size(); - list_.addAll(Arrays.asList(_obj)); - CtuluCommandCompositeInverse cmd = null; - if (_cmd != null) { - cmd = new CtuluCommandCompositeInverse(); + if (_obj.length>0) { + final int idx=list_.size(); + list_.addAll(Arrays.asList(_obj)); + CtuluCommandCompositeInverse cmd=null; + if (_cmd!=null) { + cmd=new CtuluCommandCompositeInverse(); + } + internActionPointAdded(_o, cmd, _obj.length); + if (_cmd!=null&&cmd!=null) { + cmd.addCmd(new CommandAddAll(idx, _obj)); + _cmd.addCmd(cmd.getSimplify()); + } + fireObjectAdded(); } - internActionPointAdded(_o, cmd, _obj.length); - if (_cmd != null && cmd != null) { - cmd.addCmd(new CommandAddAll(idx, _obj)); - _cmd.addCmd(cmd.getSimplify()); - } - - fireObjectAdded(); return true; } return false; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/reflux/io/ReflucadBERReader.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/reflux/io/ReflucadBERReader.java 2008-10-17 17:12:25 UTC (rev 4081) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/reflux/io/ReflucadBERReader.java 2008-10-20 09:47:19 UTC (rev 4082) @@ -70,7 +70,7 @@ private synchronized GISZoneCollectionLigneBrisee readBerges() { GISZoneCollectionLigneBrisee polys = new GISZoneCollectionLigneBrisee(); polys.setAttributes(new GISAttribute[]{GISAttributeConstants.BATHY}, null); - if(polys.getAttributeIsZ()!=null) + if(polys.getAttributeIsZ()==null) polys.setAttributeIsZ(GISAttributeConstants.BATHY); polys.setTitle(name_, null); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/reflux/io/ReflucadPROReader.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/reflux/io/ReflucadPROReader.java 2008-10-17 17:12:25 UTC (rev 4081) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/reflux/io/ReflucadPROReader.java 2008-10-20 09:47:19 UTC (rev 4082) @@ -73,7 +73,7 @@ private synchronized GISZoneCollectionLigneBrisee readProfils() { GISZoneCollectionLigneBrisee polys = new GISZoneCollectionLigneBrisee(); polys.setAttributes(new GISAttribute[]{GISAttributeConstants.BATHY, GISAttributeConstants.TITRE}, null); - if(polys.getAttributeIsZ()!=null) + if(polys.getAttributeIsZ()==null) polys.setAttributeIsZ(GISAttributeConstants.BATHY); polys.setTitle(name_, null); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/reflux/io/ReflucadSEMReader.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/reflux/io/ReflucadSEMReader.java 2008-10-17 17:12:25 UTC (rev 4081) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/reflux/io/ReflucadSEMReader.java 2008-10-20 09:47:19 UTC (rev 4082) @@ -68,7 +68,7 @@ private synchronized GISZoneCollectionPoint readSemis() { GISZoneCollectionPoint pts = new GISZoneCollectionPoint(); pts.setAttributes(new GISAttribute[]{GISAttributeConstants.BATHY}, null); - if(pts.getAttributeIsZ()!=null) + if(pts.getAttributeIsZ()==null) pts.setAttributeIsZ(GISAttributeConstants.BATHY); pts.setTitle(name_, null); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java 2008-10-17 17:12:25 UTC (rev 4081) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStReader.java 2008-10-20 09:47:19 UTC (rev 4082) @@ -148,7 +148,7 @@ final GISZoneCollectionLigneBrisee zligs = new GISZoneCollectionLigneBrisee(null); zligs.addAllLineStringClosedOrNode((LineString[]) lignes.toArray(new LineString[lignes.size()]), null); zligs.setAttributes(new GISAttributeInterface[] { GISAttributeConstants.BATHY, GISAttributeConstants.TITRE, GISAttributeConstants.NATURE}, null); - if(zligs.getAttributeIsZ()!=null) + if(zligs.getAttributeIsZ()==null) zligs.setAttributeIsZ(GISAttributeConstants.BATHY); zligs.postImport(0); @@ -177,7 +177,7 @@ zdirs.addAllLineStringClosedOrNode(ldirs, null); zdirs.setAttributes(new GISAttributeInterface[] { GISAttributeConstants.BATHY, GISAttributeConstants.TITRE, GISAttributeConstants.NATURE}, null); - if(zdirs.getAttributeIsZ()!=null) + if(zdirs.getAttributeIsZ()==null) zdirs.setAttributeIsZ(GISAttributeConstants.BATHY); zdirs.postImport(0); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxReader.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxReader.java 2008-10-17 17:12:25 UTC (rev 4081) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxReader.java 2008-10-20 09:47:19 UTC (rev 4082) @@ -216,7 +216,7 @@ analyze_.addWarn(H2dResource.getS("Profils non g\xE9r\xE9s"), in_.getLineNumber()); pt = defZone.createPointContainer(); pt.setAttributes(attPts, null); - if(pt.getAttributeIsZ()!=null) + if(pt.getAttributeIsZ()==null) pt.setAttributeIsZ(GISAttributeConstants.BATHY); idx++; // pt.setTitle("profil", null); @@ -226,13 +226,13 @@ ptDefZone = defZone.createPointContainer(); pt = ptDefZone; pt.setAttributes(attPts, null); - if(pt.getAttributeIsZ()!=null) + if(pt.getAttributeIsZ()==null) pt.setAttributeIsZ(GISAttributeConstants.BATHY); idx++; } else { pt = defZone.createPointContainer(); pt.setAttributes(attPts, null); - if(pt.getAttributeIsZ()!=null) + if(pt.getAttributeIsZ()==null) pt.setAttributeIsZ(GISAttributeConstants.BATHY); idx++; // pt.setTitle(name_ + " " + (idx++), null); @@ -242,7 +242,7 @@ analyze_.addWarn(H2dResource.getS("TYPE inconnu : assimil\xE9 a un semis"), in_.getLineNumber()); pt = defZone.createPointContainer(); pt.setAttributes(attPts, null); - if(pt.getAttributeIsZ()!=null) + if(pt.getAttributeIsZ()==null) pt.setAttributeIsZ(GISAttributeConstants.BATHY); idx++; // pt.setTitle(H2dResource.getS("type inconnu"), null); @@ -254,14 +254,14 @@ ptDefZone = defZone.createPointContainer(); pt = ptDefZone; pt.setAttributes(attPts, null); - if(pt.getAttributeIsZ()!=null) + if(pt.getAttributeIsZ()==null) pt.setAttributeIsZ(GISAttributeConstants.BATHY); idx++; name=name_+" "+(idx); } else { pt = defZone.createPointContainer(); pt.setAttributes(attPts, null); - if(pt.getAttributeIsZ()!=null) + if(pt.getAttributeIsZ()==null) pt.setAttributeIsZ(GISAttributeConstants.BATHY); idx++; name=name_+" "+(idx); @@ -355,7 +355,7 @@ if (_polygones == null) { _polygones = _defZone.createPolygoneContainer(); _polygones.setAttributes(atts, null); - if(_polygones.getAttributeIsZ()!=null) + if(_polygones.getAttributeIsZ()==null) _polygones.setAttributeIsZ(GISAttributeConstants.BATHY); } _polyligneXyz.add(_polyligneXyz.getQuick(0)); @@ -370,7 +370,7 @@ if (_polylignes == null) { _polylignes = _defZone.createPolyligneContainer(); _polylignes.setAttributes(atts, null); - if(_polylignes.getAttributeIsZ()!=null) + if(_polylignes.getAttributeIsZ()==null) _polylignes.setAttributeIsZ(GISAttributeConstants.BATHY); } if (_niveau) Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java 2008-10-17 17:12:25 UTC (rev 4081) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java 2008-10-20 09:47:19 UTC (rev 4082) @@ -52,7 +52,6 @@ import org.fudaa.fudaa.sig.FSigGeomSrcData; import org.fudaa.fudaa.sig.FSigLib; import org.fudaa.fudaa.sig.wizard.FSigFileLoaderPanel; -import org.fudaa.fudaa.sig.wizard.FSigWizardImportHelper; import com.memoire.bu.BuButtonPanel; import com.memoire.bu.BuGlassPaneStop; @@ -283,14 +282,17 @@ } public String getStepText() { - if (super.current_ == 0) { - final StringBuffer r = new StringBuffer(); - r.append(CtuluLibString.LINE_SEP + FSigLib.getS("Les formats des fichiers sont choisis en fonction des extensions.")); - r.append(CtuluLibString.LINE_SEP + FSigLib.getS("Il est possible de les modifier dans la colonne 'Format'.")); - r.append(CtuluLibString.LINE_SEP + FSigLib.getS("La derni\xE8re colonne permet de sp\xE9cifier la tra\xE7abilit\xE9 des fichiers.")); - return r.toString(); + final StringBuffer r=new StringBuffer(); + if (super.current_==0) { + r.append(FSigLib.getS("Les formats des fichiers sont choisis en fonction des extensions.")); + r.append(CtuluLibString.LINE_SEP+FSigLib.getS("Il est possible de les modifier dans la colonne 'Format'.")); + r.append(CtuluLibString.LINE_SEP+FSigLib.getS("La derni\xE8re colonne permet de sp\xE9cifier la tra\xE7abilit\xE9 des fichiers.")); } - return FSigLib.getS("Pr\xE9ciser les calques et les attributs \xE0 modifier"); + else if (super.current_==1) { + r.append(FSigLib.getS("Pr\xE9ciser les calques et les attributs \xE0 modifier")); + r.append(CtuluLibString.LINE_SEP+FSigLib.getS("Le cadre 'Attributs' permet de mapper les attributs lus avec les attributs permis par le calque choisi dans le tableau.")); + } + return r.toString(); } public String getStepTitle() { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImportStepDestination.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImportStepDestination.java 2008-10-17 17:12:25 UTC (rev 4081) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImportStepDestination.java 2008-10-20 09:47:19 UTC (rev 4082) @@ -22,6 +22,7 @@ import javax.swing.AbstractCellEditor; import javax.swing.JPanel; import javax.swing.JTable; +import javax.swing.UIManager; import javax.swing.event.CellEditorListener; import javax.swing.event.ChangeEvent; import javax.swing.event.ListSelectionEvent; @@ -195,12 +196,20 @@ public class ImportTableRenderer implements TableCellRenderer { public Component getTableCellRendererComponent(JTable _table, Object _value, boolean _isSelected, boolean _hasFocus, int _row, int _column) { + Color selectionBackground = UIManager.getColor("Table.selectionBackground"); + JPanel pn=new JPanel(); + pn.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); + if(_isSelected) + pn.setBackground(selectionBackground); + else + pn.setBackground(Color.WHITE); + if (_column==2) { - JPanel pn=new JPanel(); - pn.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); - pn.setBackground(Color.WHITE); BuCheckBox cb=new BuCheckBox("", (Boolean)_value); - cb.setBackground(Color.WHITE); + if(_isSelected) + cb.setBackground(selectionBackground); + else + cb.setBackground(Color.WHITE); pn.add(cb); return pn; } @@ -210,20 +219,26 @@ value=FSigLib.getS(value); BuLabel lbl =new BuLabel(value); lbl.setHorizontalAlignment(BuLabel.CENTER); - return lbl; + if(_isSelected) + lbl.setBackground(selectionBackground); + pn.add(lbl); + return pn; } else if (_column==1){ BuLabel lbl =new BuLabel(_value.toString()); lbl.setHorizontalAlignment(BuLabel.CENTER); - return lbl; + if(_isSelected) + lbl.setBackground(selectionBackground); + pn.add(lbl); + return pn; } else { BuLabel lbl =new BuLabel(_value.toString()); lbl.setHorizontalAlignment(BuLabel.CENTER); - if(_isSelected){ - lbl.setText("<html><b>"+lbl.getText()+"</b></html>"); - } - return lbl; + if(_isSelected) + lbl.setBackground(selectionBackground); + pn.add(lbl); + return pn; } } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigExportImportAttributesMapper.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigExportImportAttributesMapper.java 2008-10-17 17:12:25 UTC (rev 4081) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigExportImportAttributesMapper.java 2008-10-20 09:47:19 UTC (rev 4082) @@ -169,7 +169,7 @@ t_.getColumnModel().getColumn(1).setCellEditor(new ComboCellEditor(renderer)); } - final String ignoreObject_ = FSigLib.getS("Ignorer"); + final String ignoreObject_ = FSigLib.getS("< Ignorer >"); /** * @return la table utilisee pour editer les correspondance source->destination @@ -207,10 +207,10 @@ final GISAttributeInterface[] attributes = (GISAttributeInterface[]) srcClassDestValid_.get(src_[_row] .getDataClass()); cbModel_.removeAllElements(); + cbModel_.addElement(ignoreObject_); if (_value != null && !_value.equals(ignoreObject_)) { cbModel_.addElement(_value); } - cbModel_.addElement(ignoreObject_); if (attributes != null) { for (int i = 0; i < attributes.length; i++) { if (CtuluLibArray.findObjectEgalEgal(FSigExportImportAttributesMapper.this.model_.selectedAttributes_, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bma...@us...> - 2008-10-20 13:23:36
|
Revision: 4083 http://fudaa.svn.sourceforge.net/fudaa/?rev=4083&view=rev Author: bmarchan Date: 2008-10-20 13:23:25 +0000 (Mon, 20 Oct 2008) Log Message: ----------- Edition possible sur tout objet selectionn?\195?\169, m?\195?\170me quand l'objet selectionn?\195?\169 n'est pas dans le calque selectionn?\195?\169. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueSelectionInteractionAbstract.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueSelectionInteractionSimple.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquesPanel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalquePointEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorInterface.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigVisuPanel.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueSelectionInteractionAbstract.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueSelectionInteractionAbstract.java 2008-10-20 09:47:19 UTC (rev 4082) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueSelectionInteractionAbstract.java 2008-10-20 13:23:25 UTC (rev 4083) @@ -31,6 +31,7 @@ import org.fudaa.ctulu.CtuluLib; +import org.fudaa.ebli.calque.edition.ZEditorDefault; import org.fudaa.ebli.commun.EbliActionMap; import org.fudaa.ebli.commun.EbliEnum; import org.fudaa.ebli.commun.EbliLib; @@ -126,6 +127,9 @@ /** La scene */ private ZScene scene_=null; + + /** L'editeur par defaut (pour la commande Edit notamment) */ + protected ZEditorDefault editor_=null; public final ZSelectionTrace getTrace() { return trace_; @@ -342,6 +346,10 @@ protected boolean editionAsked() { return false; } + + public void setEditor(ZEditorDefault _editor) { + editor_=_editor; + } /** * Methode invoquee quand on lache un bouton de la souris. <br> Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueSelectionInteractionSimple.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueSelectionInteractionSimple.java 2008-10-20 09:47:19 UTC (rev 4082) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueSelectionInteractionSimple.java 2008-10-20 13:23:25 UTC (rev 4083) @@ -16,6 +16,7 @@ import org.fudaa.ctulu.gis.GISGeometryFactory; +import org.fudaa.ebli.calque.edition.ZEditorDefault; import org.fudaa.ebli.commun.EbliSelectionMode; import org.fudaa.ebli.commun.EbliSelectionState; import org.fudaa.ebli.geometrie.GrBoite; @@ -30,7 +31,7 @@ public class ZCalqueSelectionInteractionSimple extends ZCalqueSelectionInteractionAbstract { // private ZCalqueAffichageDonneesInterface zcalquesActif_; - + /** * Cr\xE9ation d'un calque de s\xE9lection sans objets s\xE9lectionnables. */ @@ -40,7 +41,7 @@ protected boolean editionAsked() { // if (getScene() != null) { - return internalGetScene().editSelected(); + return editor_.edit()!=null; // return true; // } // return false; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquesPanel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquesPanel.java 2008-10-20 09:47:19 UTC (rev 4082) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquesPanel.java 2008-10-20 13:23:25 UTC (rev 4083) @@ -390,11 +390,14 @@ } controller_ = _controller; controller_.setView(this); - + scene_=new ZScene(gcDonnees_,controller_.getCqSelectionI()); scene_.setRestrictedToCalqueActif(true); scene_.addSelectionListener(this); modelArbre_.addTreeModelListener(scene_); + + gisEditor_=createGisEditor(); + controller_.getCqSelectionI().setEditor(gisEditor_); } protected ZEditorDefault createGisEditor() { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java 2008-10-20 09:47:19 UTC (rev 4082) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java 2008-10-20 13:23:25 UTC (rev 4083) @@ -642,15 +642,6 @@ } } - public boolean editSelected() { - FuLog.warning("ZScene.editSelected() bad implementation"); - if (cqActif_ != null && cqActif_ instanceof ZCalqueAffichageDonneesInterface) { - ((ZCalqueAffichageDonneesInterface)cqActif_).editSelected(); - return true; - } - return false; - } - /** * Peut \xEAtre de taille = 0. Pas null. * @return Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java 2008-10-20 09:47:19 UTC (rev 4082) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueLigneBriseeEditable.java 2008-10-20 13:23:25 UTC (rev 4083) @@ -48,7 +48,7 @@ } public String editSelected() { - return editor_ == null ? EbliLib.getS("Edition impossible") : editor_.edit(this); + return editor_ == null ? EbliLib.getS("Edition impossible") : editor_.edit(); } private void addPoint(final int _ligneIdx, final int _idxBefore, final double _x, final double _y, final CtuluCommandContainer _cmd) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java 2008-10-20 09:47:19 UTC (rev 4082) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueMultiPointEditable.java 2008-10-20 13:23:25 UTC (rev 4083) @@ -50,7 +50,7 @@ } public String editSelected() { - return editor_ == null ? EbliLib.getS("Edition impossible") : editor_.edit(this); + return editor_ == null ? EbliLib.getS("Edition impossible") : editor_.edit(); } // /** Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalquePointEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalquePointEditable.java 2008-10-20 09:47:19 UTC (rev 4082) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalquePointEditable.java 2008-10-20 13:23:25 UTC (rev 4083) @@ -127,7 +127,7 @@ } public String editSelected() { - return editor_ == null ? EbliLib.getS("Edition impossible") : editor_.edit(this); + return editor_ == null ? EbliLib.getS("Edition impossible") : editor_.edit(); } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java 2008-10-20 09:47:19 UTC (rev 4082) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java 2008-10-20 13:23:25 UTC (rev 4083) @@ -720,18 +720,7 @@ sceneEditor_.setMng(_mng); } - public void editSelectedLayer() { - if (isEditable(getSupport().getCalqueActif())) { - edit(getSupport().getCalqueActif()); - } - } - - /** - * Contrairement \xE0 ce que laisse penser le prototype, cette fonction lance - * l'\xE9dition des g\xE9om\xE9tries quelque soit le calque dans lequel les g\xE9om\xE9tries - * sont selectionn\xE9. Le param\xE8tre _target, n'est pas utilis\xE9. - */ - public String edit(final Object _target) { + public String edit() { // R\xE9cup\xE9ration des calques contenant des g\xE9om\xE9tries selectionn\xE9es \\ ZCalqueAffichageDonneesInterface[] calques=panel_.getScene().getAllLayers(); ArrayList<ZCalqueAffichageDonneesInterface> claquesWithSelectedObjects=new ArrayList<ZCalqueAffichageDonneesInterface>(); @@ -743,20 +732,16 @@ return EbliLib.getS("La s\xE9lection courante est vide"); else if (claquesWithSelectedObjects.size()>1){ ui_.warn("Information", "La selection dans plusieurs calques n'est pas g\xE9r\xE9e par la fen\xEAtre d'\xE9dition.", false); - /*BuInternalFrame i = new BuInternalFrame("Information", false, true, false, false); - i.add(new BuLabel("La selection dans plusieurs calques n'est pas g\xE9r\xE9e par la fen\xEAtre d'\xE9dition.")); - i.setVisible(true); - i.*/ return EbliLib.getS("La selection dans plusieurs calques n'est pas g\xE9r\xE9e par la fen\xEAtre d'\xE9dition."); } ZCalqueEditable calque=(ZCalqueEditable)claquesWithSelectedObjects.get(0); // G\xE9n\xE9ration d'une boite d'\xE9dition selon le type de selection et d'\xE9dition \\ if (((ZCalqueEditable)calque).isAtomicMode()) - editVertexObject((ZCalqueEditable)calque); + editVertexObject(calque); else if (calque.isOnlyOneObjectSelected()) // Une seule g\xE9om\xE9trie est \xE0 \xE9diter - editSingleObject((ZCalqueEditable)claquesWithSelectedObjects.get(0)); + editSingleObject(calque); else { // Plusieurs g\xE9om\xE9tries sont \xE0 \xE9diter CtuluDialogPanel pn=null; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorInterface.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorInterface.java 2008-10-20 09:47:19 UTC (rev 4082) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorInterface.java 2008-10-20 13:23:25 UTC (rev 4083) @@ -27,11 +27,10 @@ boolean isEditable(final Object _target); /** - * Edition pour la cible donn\xE9e. L'edition peutr concerner la cible elle m\xEAme ou ce qu'elle contient. - * @param _target La cible editable. + * Edition pour la selection quelque soit le calque selectionn\xE9. * @return Une information sur le deroulement de l'op\xE9ration d'edition. Si null, tout s'est bien pass\xE9. */ - String edit(final Object _target); + String edit(); /** * @param _o la cible * @param _palette la palette associ\xE9e Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java 2008-10-20 09:47:19 UTC (rev 4082) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigEditor.java 2008-10-20 13:23:25 UTC (rev 4083) @@ -324,7 +324,7 @@ } public void actionPerformed(final ActionEvent _e) { - editSelectedLayer(); + edit(); } public void updateStateBeforeShow() { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigVisuPanel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigVisuPanel.java 2008-10-20 09:47:19 UTC (rev 4082) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigVisuPanel.java 2008-10-20 13:23:25 UTC (rev 4083) @@ -70,7 +70,6 @@ mng_ = new CtuluCommandManager(); setModeVisible(true); setEbliFormatter(new EbliFormatter()); - gisEditor_ = createGisEditor(); gisEditor_.setUi(getImpl()); // Le calque des infos. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2008-10-21 12:36:33
|
Revision: 4087 http://fudaa.svn.sourceforge.net/fudaa/?rev=4087&view=rev Author: emmanuel_martin Date: 2008-10-21 12:36:25 +0000 (Tue, 21 Oct 2008) Log Message: ----------- mise en place de l'architecture permettant de de modifier les valeurs dans le tableau d'information. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluTableCellEditorProxy.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/BGroupeCalque.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesAbstract.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/palette/BPaletteInfo.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluTableCellEditorProxy.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluTableCellEditorProxy.java 2008-10-21 09:05:18 UTC (rev 4086) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluTableCellEditorProxy.java 2008-10-21 12:36:25 UTC (rev 4087) @@ -24,20 +24,20 @@ * map. * * tableau : le tableau doit avoir le m\xEAme nombre de case que le nombre de ligne - * dans le tableau \xE0 \xE9diter. Si se n'est pas le cas, les cellules - * suppl\xE9mentaires seront consid\xE9r\xE9es comme non \xE9ditable. Il est possible que + * dans le tableau \xE0 \xE9diter. Si ce n'est pas le cas, les cellules + * suppl\xE9mentaires seront consid\xE9r\xE9es comme non \xE9ditable. Il est possible de * donner des valeurs null dans le tableau, il sera alors consid\xE9r\xE9 que la * cellule n'est pas \xE9ditable. * * map : l'avantage de la map par rapport au tableau est de ne renseigner que - * les lignes voulus. Il est possible de donner un index par defaut. Cette index + * les lignes voulues. Il est possible de donner un index par defaut. Cet index * servira \xE0 retourner l'editeur par defaut si il n'y en a pas de d\xE9fini \xE0 - * l'index demand\xE9. Si aucune instance n'est renseign\xE9 pour l'index par defaut, + * l'index demand\xE9. Si aucune instance n'est renseign\xE9e pour l'index par defaut, * les cases seront consid\xE9r\xE9es comme non \xE9ditable. Comme le tableau, la valeur * null pour un \xE9diteur signifie que la cellule n'est pas \xE9ditable. * * @author Emmanuel MARTIN - * @version $Id:$ + * @version $Id$ */ public class CtuluTableCellEditorProxy extends AbstractCellEditor implements TableCellEditor, CellEditorListener { @@ -47,6 +47,12 @@ private final int defaultIndex_; /** L'index utilis\xE9 actuellement. */ private int currentIndex_; + /** + * Vrai si la valeur courant est \xE9ditable. On ne peut pas se passer de cette + * variable en donnant une valeur sp\xE9ciale \xE0 currentIndex_ car defaultIndex_ + * peut prendre toutes les valeurs possibles. + */ + private boolean editable_; /** * Si le tableau n'est pas assez grand, null sera retourn\xE9 par la method @@ -65,6 +71,7 @@ mapEditors_=new HashMap<Integer, TableCellEditor>(); defaultIndex_=-1; currentIndex_=-1; + editable_=false; for (int i=0; i<_editors.length; i++) mapEditors_.put(i, _editors[i]); } @@ -87,6 +94,7 @@ throw new IllegalArgumentException("_editors de doit pas \xEAtre null."); defaultIndex_=_defaultChoice; currentIndex_=-1; + editable_=false; mapEditors_=_editors; } @@ -95,43 +103,60 @@ */ public Component getTableCellEditorComponent(JTable _table, Object _value, boolean _isSelected, int _row, int _column) { // Suppression de l'\xE9coute d'\xE9venement sur l'ancien editeur - if(currentIndex_!=-1) + if (editable_) mapEditors_.get(currentIndex_).removeCellEditorListener(this); + editable_=true; // Actualisation de currentIndex_ - if(mapEditors_.containsKey(_row)) - if(mapEditors_.get(_row)!=null) + if (mapEditors_.containsKey(_row)) + if (mapEditors_.get(_row)!=null) // Cas normal currentIndex_=_row; - else{ + else // Cas o\xF9 la cellule n'est pas \xE9ditable - currentIndex_=-1; - return null; - } - else if(mapEditors_.containsKey(defaultIndex_)) + editable_=false; + else if (mapEditors_.containsKey(defaultIndex_)) // Cas o\xF9 l'editeur n'est pas renseign\xE9 : on utilise la valeur par defaut - if(mapEditors_.get(defaultIndex_)!=null) + if (mapEditors_.get(defaultIndex_)!=null) // Cas normal de l'utilisation de l'editeur par defaut currentIndex_=defaultIndex_; - else{ + else // Cas o\xF9 l'index par defaut pointe sur null - currentIndex_=-1; - return null; - } - else{ + editable_=false; + else // Cas o\xF9 la valeur par defaut n'existe pas : la case est non \xE9ditable - currentIndex_=-1; + editable_=false; + if (editable_) { + // Ajout de l'\xE9coute d'\xE9venement sur le nouvel \xE9diteur et transfert + // d'appelle + mapEditors_.get(currentIndex_).addCellEditorListener(this); + return mapEditors_.get(currentIndex_).getTableCellEditorComponent(_table, _value, _isSelected, _row, _column); + } + else return null; + } + + /** + * Permet d'ajouter ou de remplacer un des \xE9diteurs utilis\xE9. Le remplacement + * ne peut se faire que si l'ancien \xE9diteur n'est pas en cours d'utilisation. + * + * @param _indexRow : l'index de la ligne \xE0 ajouter ou remplacer + * @param _editor : le nouvel \xE9diteur + * @return vrai si l'ajout/ remplacement a \xE9t\xE9 effectu\xE9, faux sinon + */ + public boolean putEditor(Integer _indexRow, TableCellEditor _editor){ + if(!editable_||_indexRow!=currentIndex_){ + mapEditors_.put(_indexRow, _editor); + return true; } - // Ajout de l'\xE9coute d'\xE9venement sur le nouvel \xE9diteur et transfert d'appelle - mapEditors_.get(currentIndex_).addCellEditorListener(this); - return mapEditors_.get(currentIndex_).getTableCellEditorComponent(_table, _value, _isSelected, _row, _column); + else + return false; } - + /* (non-Javadoc) * @see javax.swing.CellEditor#cancelCellEditing() */ public void cancelCellEditing() { - if(currentIndex_!=-1) + if(editable_) mapEditors_.get(currentIndex_).cancelCellEditing(); } @@ -139,7 +164,7 @@ * @see javax.swing.CellEditor#getCellEditorValue() */ public Object getCellEditorValue() { - if(currentIndex_!=-1) + if(editable_) return mapEditors_.get(currentIndex_).getCellEditorValue(); return null; } @@ -148,7 +173,7 @@ * @see javax.swing.CellEditor#isCellEditable(java.util.EventObject) */ public boolean isCellEditable(EventObject _anEvent) { - if(currentIndex_!=-1) + if(editable_) return mapEditors_.get(currentIndex_).isCellEditable(_anEvent); return true; } @@ -157,7 +182,7 @@ * @see javax.swing.CellEditor#shouldSelectCell(java.util.EventObject) */ public boolean shouldSelectCell(EventObject _anEvent) { - if(currentIndex_!=-1) + if(editable_) return mapEditors_.get(currentIndex_).shouldSelectCell(_anEvent); return true; } @@ -166,7 +191,7 @@ * @see javax.swing.CellEditor#stopCellEditing() */ public boolean stopCellEditing() { - if(currentIndex_!=-1) + if(editable_) return mapEditors_.get(currentIndex_).stopCellEditing(); return true; } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/BGroupeCalque.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/BGroupeCalque.java 2008-10-21 09:05:18 UTC (rev 4086) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/BGroupeCalque.java 2008-10-21 12:36:25 UTC (rev 4087) @@ -111,7 +111,7 @@ public void fillWithInfo(final InfoData _m) { if (_m != null) { final BCalque[] cqs = getCalques(); - _m.setTitle(getTitle()); + _m.setTitle(EbliLib.getS("Calque : ") + getTitle()); _m.put(EbliLib.getS("Nombre de calques"), cqs == null ? CtuluLibString.ZERO : CtuluLibString .getString(cqs.length)); } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesAbstract.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesAbstract.java 2008-10-21 09:05:18 UTC (rev 4086) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesAbstract.java 2008-10-21 12:36:25 UTC (rev 4087) @@ -227,7 +227,7 @@ if (modeleDonnees() != null) { modeleDonnees().fillWithInfo(_d, this); if (!_d.isTitleSet()) { - _d.setTitle(getTitle()); + _d.setTitle(EbliLib.getS("Calque : ") + getTitle()); } } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/palette/BPaletteInfo.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/palette/BPaletteInfo.java 2008-10-21 09:05:18 UTC (rev 4086) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/palette/BPaletteInfo.java 2008-10-21 12:36:25 UTC (rev 4087) @@ -12,8 +12,9 @@ import java.awt.Font; import java.awt.FontMetrics; import java.util.ArrayList; -import java.util.List; +import java.util.HashMap; +import javax.swing.DefaultCellEditor; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; @@ -21,15 +22,17 @@ import javax.swing.SwingConstants; import javax.swing.table.AbstractTableModel; import javax.swing.table.DefaultTableCellRenderer; -import javax.swing.table.TableColumnModel; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; +import org.fudaa.ctulu.gui.CtuluTableCellEditorProxy; +import org.fudaa.ebli.commun.EbliLib; + import com.memoire.bu.BuBorderLayout; import com.memoire.bu.BuPanel; import com.memoire.bu.BuScrollPane; import com.memoire.bu.BuTextField; -import org.fudaa.ebli.commun.EbliLib; - /** * Un panel affichant les infos envoyes. * @@ -44,30 +47,116 @@ */ public interface InfoData { + /** + * Permet d'ajouter une propri\xE9t\xE9 non \xE9ditable. + * @param _key le nom de la propri\xE9t\xE9 + * @param _value la valeur de la propri\xE9t\xE9 + */ void put(String _key, String _value); + /** + * Permet d'ajouter une information \xE9ditable au tableau. + * @param _key le nom de la propri\xE9t\xE9, doit \xEAtre non vide + * @param _value la valeur de la propri\xE9t\xE9, doit \xEAtre non null + * @param _editor l'\xE9diteur, si null l'\xE9diteur par defaut sera utilis\xE9 + * @param _renderer le renderer, si null le renderer par defaut sera utilis\xE9 + * @param _owner l'object qui sera appel\xE9 (via modifyProperty) pour que + * la modification soit prise en compte. Si null l'attribut est + * consid\xE9r\xE9 comme non modifiable. + */ + void put(String _key, Object _value, TableCellEditor _editor, TableCellRenderer _renderer, ModifyPropertyInfo _owner); + void setTitle(String _title); boolean isTitleSet(); } /** - * @author Fred Deniger + * Interface allant de pair avec InfoData. Elle indique que la m\xE9thode modifyProperty + * est impl\xE9ment\xE9, permettant ainsi de r\xE9percuter les modification du tableau sur + * l'objet concern\xE9. + * @author Emmanuel MARTIN + * @version $Id:$ + */ + public interface ModifyPropertyInfo { + /** + * M\xE9thode appell\xE9e lors de la modification de la valeur de la propri\xE9t\xE9 + * fournie \xE0 InfoData. + * @param _key le nom de la propri\xE9t\xE9 + * @param _newValue la nouvelle valeur de la prorpi\xE9t\xE9 + */ + void modifyProperty(String _key, Object _newValue); + } + + /** + * @author Fred Deniger, Emmanuel Martin * @version $Id: BPaletteInfo.java,v 1.9 2006-09-19 14:55:51 deniger Exp $ */ public final class PanelTableModel extends AbstractTableModel implements InfoData { - private List<String> name_; - private List<String> value_; - + /** + * Chaque ligne est organis\xE9 suivant ce model : nom (string), valeur + * (object), editeor (TableCellEditor), renderer (TableCellRenderer), owner + * (ModifyPropertyInfo). + */ + private ArrayList<ArrayList<Object>> rows_; + /** L'editor du tableau. */ + private CtuluTableCellEditorProxy editor_; + + private class PanelTableRenderer extends DefaultTableCellRenderer { + /* (non-Javadoc) + * @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int) + */ + public Component getTableCellRendererComponent(JTable _table, Object _value, boolean _isSelected, boolean _hasFocus, int _row, + int _column) { + if(rows_.get(_row).get(3)!=null) + return ((TableCellRenderer) rows_.get(_row).get(3)).getTableCellRendererComponent(_table, _value, _isSelected, _hasFocus, _row, _column); + else + return super.getTableCellRendererComponent(_table, _value, _isSelected, _hasFocus, _row, _column); + } + } + + public TableCellRenderer getRenderer(){ + return new PanelTableRenderer(); + } + + public TableCellEditor getEditor(){ + if (editor_==null) { + HashMap<Integer, TableCellEditor> editors=new HashMap<Integer, TableCellEditor>(); + // R\xE9cup\xE9ration des \xE9ditors + for (int i=0; i<rows_.size(); i++) + // Si owner est renseign\xE9 + if (rows_.get(i).get(4)!=null) { + // Si l'editor est renseign\xE9 + if (rows_.get(i).get(3)!=null) + editors.put(i, (TableCellEditor)rows_.get(i).get(3)); + } + else + editors.put(i, null); + // Ajout du choix par defaut + editors.put(-1, new DefaultCellEditor(new BuTextField())); + // Construction de l'editor mandataire + editor_=new CtuluTableCellEditorProxy(editors, -1); + } + return editor_; + } + + /* (non-Javadoc) + * @see javax.swing.table.AbstractTableModel#isCellEditable(int, int) + */ + public boolean isCellEditable(int rowIndex, int columnIndex) { + if(columnIndex==1) + return true; + else + return false; + } + public PanelTableModel() { - name_ = new ArrayList<String>(); - value_ = new ArrayList<String>(); + rows_=new ArrayList<ArrayList<Object>>(); } public void clear() { - name_.clear(); - value_.clear(); + rows_.clear(); } public int getColumnCount() { @@ -75,38 +164,73 @@ } public String getColumnName(final int _column) { - if (_column == 0) { + if (_column==0) { return EbliLib.getS("Nom"); } return EbliLib.getS("Valeur"); } - - public String getLine(final int _row) { - return (String) name_.get(_row) + ": " + (String) tableModel_.value_.get(_row); - } - + public int getRowCount() { - return name_.size(); + return rows_.size(); } public Object getValueAt(final int _row, final int _col) { - if (_col == 0) { - return name_.get(_row); - } - return value_.get(_row); + if (_row<0||_col<0||_row>=rows_.size()||_col>getColumnCount()) + return null; + else + return rows_.get(_row).get(_col); } - public void put(final String _n, final String _v) { - name_.add(_n); - value_.add(_v); + public void put(final String _name, final String _value) { + ArrayList<Object> row=new ArrayList<Object>(); + row.add(0, _name); + row.add(1, _value); + row.add(2, null); + row.add(3, null); + row.add(4, null); + rows_.add(row); + editor_.putEditor(rows_.size()-1, null); } + /* + * (non-Javadoc) + * + * @see org.fudaa.ebli.palette.BPaletteInfo.InfoData#put(java.lang.String, + * java.lang.Object, javax.swing.table.TableCellEditor, + * javax.swing.table.TableCellRenderer, + * org.fudaa.ebli.palette.BPaletteInfo.ModifyPropertyInfo) + */ + public void put(String _key, Object _value, TableCellEditor _editor, TableCellRenderer _renderer, ModifyPropertyInfo _owner) { + if (_key==null||_value==null) + throw new IllegalArgumentException("_key et _value doivent \xEAtre non null."); + ArrayList<Object> row=new ArrayList<Object>(); + row.add(0, _key); + row.add(1, _value); + row.add(2, _editor); + row.add(3, _renderer); + row.add(4, _owner); + rows_.add(row); + editor_.putEditor(rows_.size()-1, _editor); + } + public void setTitle(final String _title) { txtTitle_.setText(_title); } + /* (non-Javadoc) + * @see javax.swing.table.AbstractTableModel#setValueAt(java.lang.Object, int, int) + */ + public void setValueAt(Object _value, int _rowIndex, int _columnIndex) { + if(_rowIndex<0||_rowIndex>=rows_.size()||_columnIndex<0||_columnIndex>getColumnCount()) + return; + if (rows_.get(_rowIndex).get(_columnIndex)!=_value&&rows_.get(_rowIndex).get(4)!=null) { + rows_.get(_rowIndex).set(_columnIndex, _value); + ((ModifyPropertyInfo)rows_.get(_rowIndex).get(4)).modifyProperty((String)rows_.get(_rowIndex).get(0), _value); + } + } + public boolean isTitleSet() { - return txtTitle_.getText() != null && txtTitle_.getText().trim().length() > 0; + return txtTitle_.getText()!=null&&txtTitle_.getText().trim().length()>0; } } @@ -128,23 +252,13 @@ setPreferredSize(new Dimension(300, 200)); tableModel_ = new PanelTableModel(); table_ = new JTable(tableModel_); + table_.getColumnModel().getColumn(1).setCellRenderer(tableModel_.getRenderer()); + table_.getColumnModel().getColumn(1).setCellEditor(tableModel_.getEditor()); table_.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); final JScrollPane sp = new BuScrollPane(table_); sp.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); sp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); add(sp, BuBorderLayout.CENTER); - final DefaultTableCellRenderer render = new DefaultTableCellRenderer() { - - public Component getTableCellRendererComponent(final JTable _table, final Object _value, - final boolean _isSelected, final boolean _hasFocus, final int _row, final int _column) { - Component r = super.getTableCellRendererComponent(_table, _value, _isSelected, _hasFocus, _row, _column); - setToolTipText(tableModel_.getLine(_row)); - return r; - } - }; - final TableColumnModel colModel = table_.getColumnModel(); - colModel.getColumn(0).setCellRenderer(render); - colModel.getColumn(1).setCellRenderer(render); } protected final void updateSize() { @@ -190,7 +304,7 @@ } public final void setAvailable(final boolean _isAvailable) { - isAvailable_ = _isAvailable; + isAvailable_=_isAvailable; } public abstract void updateState(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2008-10-23 10:37:10
|
Revision: 4090 http://fudaa.svn.sourceforge.net/fudaa/?rev=4090&view=rev Author: emmanuel_martin Date: 2008-10-23 09:39:33 +0000 (Thu, 23 Oct 2008) Log Message: ----------- Ajout de donn?\195?\169es dans le panel d'information (renomm?\195?\169 en panel de propri?\195?\169t?\195?\169s), certaines de ces propri?\195?\169t?\195?\169s sont ?\195?\169ditables. Ces modifications ne concernent que les calques du modeleur. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLib.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluTableCellEditorProxy.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorChoice.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorDouble.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorI.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorInteger.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorString.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueTimeEditor.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/BCalquePaletteInfo.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleGeometryDefault.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeDefault.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/palette/BPaletteInfo.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/palette/BPaletteInfoAbstractAction.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/telemac/TrTelemacFrontierNumberIteratorAbstract.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLib.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLib.java 2008-10-22 17:30:54 UTC (rev 4089) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLib.java 2008-10-23 09:39:33 UTC (rev 4090) @@ -689,21 +689,17 @@ FuLog.trace("toPolygone : Nombre de point minimum non respect\xE9."); return null; } - boolean ferme = coord.getCoordinate(0)==seq.getCoordinate(coord.size()-1); + boolean ferme = coord.getCoordinate(0).equals(seq.getCoordinate(coord.size()-1)); if(ferme&&seq.size()==2){ FuLog.trace("toPolygone : Nombre de point minimum non respect\xE9."); return null; } - if(!ferme){ - seq=new CoordinateArraySequence(seq.size()+1); + if(ferme){ + seq=new CoordinateArraySequence(seq.size()-1); // recopie - for(int i=0;i<coord.size();i++) + for(int i=0;i<coord.size()-1;i++) for(int j=0;j<3;j++) seq.setOrdinate(i, j, coord.getOrdinate(i, j)); - // Fermeture - for(int i=0;i<3;i++) - seq.setOrdinate(seq.size()-1, i, seq.getOrdinate(0, i)); - } return GISGeometryFactory.INSTANCE.createLineString(seq); } @@ -720,7 +716,7 @@ FuLog.trace("toPolygone : Nombre de point minimum non respect\xE9."); return null; } - boolean ferme = coord.getCoordinate(0)==seq.getCoordinate(coord.size()-1); + boolean ferme = coord.getCoordinate(0).equals(seq.getCoordinate(coord.size()-1)); if(ferme&&seq.size()==3){ FuLog.trace("toPolygone : Nombre de point minimum non respect\xE9."); return null; @@ -734,7 +730,6 @@ // Fermeture for(int i=0;i<3;i++) seq.setOrdinate(seq.size()-1, i, seq.getOrdinate(0, i)); - } return GISGeometryFactory.INSTANCE.createLinearRing(seq); } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluTableCellEditorProxy.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluTableCellEditorProxy.java 2008-10-22 17:30:54 UTC (rev 4089) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluTableCellEditorProxy.java 2008-10-23 09:39:33 UTC (rev 4090) @@ -152,6 +152,22 @@ return false; } + /** + * Supprime tout les editeurs. + */ + public void clear(){ + mapEditors_.clear(); + editable_=false; + } + + /** + * Supprime si il est d\xE9fini l'editeur situ\xE9 \xE0 l'index _rowIndex + * @param _rowIndex : l'index de l'\xE9diteur \xE0 supprimer + */ + public void remove(int _rowIndex){ + mapEditors_.remove(_rowIndex); + } + /* (non-Javadoc) * @see javax.swing.CellEditor#cancelCellEditing() */ Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorChoice.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorChoice.java 2008-10-22 17:30:54 UTC (rev 4089) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorChoice.java 2008-10-23 09:39:33 UTC (rev 4090) @@ -11,15 +11,15 @@ import java.util.Arrays; import javax.swing.DefaultCellEditor; -import javax.swing.JComboBox; import javax.swing.JComponent; +import javax.swing.JTable; import javax.swing.table.TableCellEditor; -import com.memoire.bu.BuComboBox; - import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.CtuluLibArray; +import com.memoire.bu.BuComboBox; + /** * @author fred deniger * @version $Id: CtuluValueEditorChoice.java,v 1.5 2007-03-23 17:16:16 deniger Exp $ @@ -42,6 +42,7 @@ private String[] reelChoices_; private boolean useInteger_; + private final String undefineValue_="< " + CtuluLib.getS("Ind\xE9fini") + " >"; /** * Dans le cas o\xF9 dChoices est null, reelChoices sera \xE9galement affich\xE9. @@ -79,11 +80,11 @@ public JComponent createCommonEditorComponent() { String[] elements; if(displayChoices_!=null) - elements = displayChoices_; + elements=displayChoices_; else elements=reelChoices_; final String[] extendedChoices = new String[elements.length + 1]; - extendedChoices[elements.length] = "< " + CtuluLib.getS("Ind\xE9fini") + " >"; + extendedChoices[elements.length] = undefineValue_; System.arraycopy(elements, 0, extendedChoices, 0, elements.length); BuComboBox bu = new BuComboBox(extendedChoices); bu.setSelectedIndex(elements.length); @@ -106,12 +107,54 @@ else { return new DefaultCellEditor(cb) { public Object getCellEditorValue() { - return reelChoices_[cb.getSelectedIndex()]; + if(cb.getSelectedIndex()==-1) + return null; + else + return reelChoices_[cb.getSelectedIndex()]; } }; } } + public TableCellEditor createCommonTableEditorComponent() { + final BuComboBox cb = (BuComboBox) createCommonEditorComponent(); + if (useInteger_) { + return new DefaultCellEditor(cb) { + public Object getCellEditorValue() { + return new Integer(cb.getSelectedIndex()); + } + }; + } + else { + return new DefaultCellEditor(cb) { + /* (non-Javadoc) + * @see javax.swing.DefaultCellEditor#getTableCellEditorComponent(javax.swing.JTable, java.lang.Object, boolean, int, int) + */ + @Override + public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { + if(displayChoices_!=null){ + // R\xE9cup\xE9ration de l'index de la valeur dans reelChoices_ + boolean found=false; + int i=-1; + while(!found&&++i<reelChoices_.length) + found=reelChoices_[i].equals(value); + if(found) + value=displayChoices_!=null?displayChoices_[i]:value; + else + value=undefineValue_; + } + return super.getTableCellEditorComponent(table, value, isSelected, row, column); + } + public Object getCellEditorValue() { + if(cb.getSelectedIndex()<0||cb.getSelectedIndex()>=reelChoices_.length) + return cb.getSelectedItem(); + else + return reelChoices_[cb.getSelectedIndex()]; + } + }; + } + } + public int getSelectedIdx(final Component _c) { return ((BuComboBox) _c).getSelectedIndex(); } @@ -154,7 +197,10 @@ } public boolean isValid(final Object _o) { - return true; + if(_o instanceof String&&!_o.equals(undefineValue_)) + return true; + else + return false; } public String getValidationMessage() { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorDouble.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorDouble.java 2008-10-22 17:30:54 UTC (rev 4089) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorDouble.java 2008-10-23 09:39:33 UTC (rev 4090) @@ -105,6 +105,10 @@ public TableCellEditor createTableEditorComponent() { return new BuTableCellEditor((BuTextField) createEditorComponent()); } + + public TableCellEditor createCommonTableEditorComponent() { + return new BuTableCellEditor((BuTextField) createCommonEditorComponent()); + } public final CtuluNumberFormatI getFormatter() { return formatter_; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorI.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorI.java 2008-10-22 17:30:54 UTC (rev 4089) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorI.java 2008-10-23 09:39:33 UTC (rev 4090) @@ -42,6 +42,8 @@ JComponent createCommonEditorComponent(); TableCellEditor createTableEditorComponent(); + + TableCellEditor createCommonTableEditorComponent(); boolean isValueValidFromComponent(Component _comp); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorInteger.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorInteger.java 2008-10-22 17:30:54 UTC (rev 4089) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorInteger.java 2008-10-23 09:39:33 UTC (rev 4090) @@ -83,6 +83,10 @@ return new BuTableCellEditor((BuTextField) createEditorComponent()); } + public TableCellEditor createCommonTableEditorComponent() { + return new BuTableCellEditor((BuTextField) createCommonEditorComponent()); + } + public Class getDataClass() { return String.class; } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorString.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorString.java 2008-10-22 17:30:54 UTC (rev 4089) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueEditorString.java 2008-10-23 09:39:33 UTC (rev 4090) @@ -66,8 +66,6 @@ return isValid(_o.toString()); } - - public JComponent createCommonEditorComponent() { return createEditorComponent(); } @@ -88,6 +86,10 @@ return new BuTableCellEditor((BuTextField) createEditorComponent()); } + public TableCellEditor createCommonTableEditorComponent(){ + return new BuTableCellEditor((BuTextField) createCommonEditorComponent()); + } + public JComponent createEditorComponent(){ final BuTextField r = new BuTextField(); r.setColumns(10); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueTimeEditor.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueTimeEditor.java 2008-10-22 17:30:54 UTC (rev 4089) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluValueTimeEditor.java 2008-10-23 09:39:33 UTC (rev 4090) @@ -104,7 +104,34 @@ }; } + + public TableCellEditor createCommonTableEditorComponent() { + return new BuTableCellEditor((BuTextField) createCommonEditorComponent()) { + public Component getTableCellEditorComponent(final JTable _table, final Object _value, final boolean _selected, + final int _row, final int _column) { + final Component r = super.getTableCellEditorComponent(_table, _value, _selected, _row, _column); + r.requestFocusInWindow(); + return r; + } + + public boolean isCellEditable(final EventObject _evt) { + if (_evt instanceof MouseEvent) { + return ((MouseEvent) _evt).getClickCount() >= 2; + } + return true; + } + + public boolean stopCellEditing() { + if (getCellEditorValue() == null) { + return false; + } + return super.stopCellEditing(); + } + + }; + } + public String getFinalString(final double _s) { if (fmt_ == null) { return Integer.toString((int) _s); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/BCalquePaletteInfo.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/BCalquePaletteInfo.java 2008-10-22 17:30:54 UTC (rev 4089) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/BCalquePaletteInfo.java 2008-10-23 09:39:33 UTC (rev 4090) @@ -87,14 +87,15 @@ tableModel_.fireTableDataChanged(); break; default: - tableModel_.setTitle(EbliLib.getS("Selection Multicalque")); + tableModel_.setTitle(EbliLib.getS("Selection Multiple")); } updateSize(); } public void selectionChanged(final ZSelectionEvent _evt) { if (isAvailable()) { - if (_evt.getSource().getLayerSelection()!=null&&_evt.getSource().getLayerSelection().getNbSelectedIndex()>0) { + if (_evt.getSource().getLayerSelection()!=null&&_evt.getSource().getLayerSelection().getNbSelectedIndex()>0 + ||_evt.getSource().getLayerSelectionMulti()!=null&&_evt.getSource().getLayerSelectionMulti().getNbSelectedItem()>0) { if (!calqueWithGeometriesSelected_.contains(_evt.getSource())) calqueWithGeometriesSelected_.add(_evt.getSource()); } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleGeometryDefault.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleGeometryDefault.java 2008-10-22 17:30:54 UTC (rev 4089) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleGeometryDefault.java 2008-10-23 09:39:33 UTC (rev 4090) @@ -7,18 +7,27 @@ */ package org.fudaa.ebli.calque.edition; +import java.awt.Component; + +import javax.swing.JTable; +import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; + import org.fudaa.ctulu.gis.GISAttributeConstants; +import org.fudaa.ctulu.gis.GISAttributeInterface; import org.fudaa.ctulu.gis.GISCoordinateSequenceContainerInterface; import org.fudaa.ctulu.gis.GISZoneCollection; import org.fudaa.ctulu.gis.GISZoneCollectionGeometry; import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; import org.fudaa.ebli.calque.ZModeleGeometry; +import org.fudaa.ebli.commun.EbliLib; import org.fudaa.ebli.geometrie.GrBoite; import org.fudaa.ebli.geometrie.GrPoint; import org.fudaa.ebli.palette.BPaletteInfo.InfoData; +import org.fudaa.ebli.palette.BPaletteInfo.ModifyPropertyInfo; import com.memoire.bu.BuTable; -import com.memoire.fu.FuLog; import com.vividsolutions.jts.geom.CoordinateSequence; import com.vividsolutions.jts.geom.Envelope; import com.vividsolutions.jts.geom.Geometry; @@ -29,7 +38,7 @@ * @author Bertrand Marchand * @version $Id$ */ -public class ZModeleGeometryDefault implements ZModeleGeometry { +public class ZModeleGeometryDefault implements ZModeleGeometry, ModifyPropertyInfo { protected GISZoneCollectionGeometry geometries_; /** @@ -106,7 +115,111 @@ return null; } - public void fillWithInfo(InfoData _d, ZCalqueAffichageDonneesInterface _layer) {} + public void fillWithInfo(InfoData _d, ZCalqueAffichageDonneesInterface _layer) { + // Selection en mode geom\xE9trie + if (_layer.getLayerSelection()!=null&&_layer.getLayerSelection().getNbSelectedIndex()>0) { + if (_layer.getLayerSelection().getNbSelectedIndex()==1) { + _d.setOnlyOneGeometry(true); + _d.setTitle(EbliLib.getS("G\xE9om\xE9trie")); + // Informations sur le calque + _d.put(EbliLib.getS("Calque"), _layer.getTitle()); + // Ajout des attributs et des valeurs de la g\xE9om\xE9trie selectionn\xE9e + int geometrySelected=_layer.getLayerSelection().getSelectedIndex()[0]; + for (int i=0; i<geometries_.getNbAttributes(); i++) { + GISAttributeInterface attr=geometries_.getAttribute(i); + // Si l'attribut nom est d\xE9fini, il est utilis\xE9 pour le titre et + // remplace celui pr\xE9c\xE9dement d\xE9fini + if (attr==GISAttributeConstants.TITRE) + _d.setTitle(EbliLib.getS("Objet")+" : "+geometries_.getValue(i, geometrySelected).toString()); + // Ajout de l'information au tableau + if (!attr.isAtomicValue()&&attr.isUserVisible()) + if (attr.isEditable()) + _d.put(attr.getLongName(), geometries_.getValue(i, geometrySelected), attr.getEditor(), + null, this, new int[]{geometrySelected}); + else + _d.put(attr.getLongName(), geometries_.getValue(i, geometrySelected).toString()); + } + } + else { + _d.setOnlyOneGeometry(false); + // Informations sur les g\xE9om\xE9tries selectionn\xE9es + _d.setTitle(EbliLib.getS("Selection Multiple")); + // Informations sur le calque + _d.put(EbliLib.getS("Calque"), _layer.getTitle()); + // Ajout des attributs et des valeurs de la g\xE9om\xE9trie selectionn\xE9e + int[] geometriesSelected=_layer.getLayerSelection().getSelectedIndex(); + for (int i=0; i<geometries_.getNbAttributes(); i++) { + GISAttributeInterface attr=geometries_.getAttribute(i); + // Ajout de l'information au tableau + if (!attr.isAtomicValue()&&attr.isUserVisible()){ + // D\xE9termine la valeur commune aux g\xE9om\xE9tries selectionn\xE9es + Object value; + boolean sameValues=true; + int j=0; + while(sameValues&&++j<geometriesSelected.length) + sameValues=geometries_.getValue(i, geometriesSelected[j-1]).equals(geometries_.getValue(i, geometriesSelected[j])); + if(sameValues) + value=geometries_.getValue(i, geometriesSelected[0]); + else + value=null; + // Ajout de cette valeur + if (attr.isEditable()){ + TableCellRenderer renderer=new DefaultTableCellRenderer(){ + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, + int row, int column) { + if(value==null) + value="< "+EbliLib.getS("Ind\xE9fini")+" >"; + return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); + } + }; + _d.put(attr.getLongName(), value, attr.getEditor(), renderer, this, new Object[]{attr.getID(), geometriesSelected}); + } + else + _d.put(attr.getLongName(), value==null?"< "+EbliLib.getS("Ind\xE9fini")+" >":value.toString()); + } + } + } + } + // Selection en mode sommet + else if (_layer.getLayerSelectionMulti()!=null&&_layer.getLayerSelectionMulti().getNbSelectedItem()>0) { + if (_layer.getLayerSelectionMulti().getNbSelectedItem()==1) { + _d.setTitle(EbliLib.getS("Sommet")); + // Informations sur le calque + _d.put(EbliLib.getS("Calque"), _layer.getTitle()); + } + else { + // Informations sur les g\xE9om\xE9tries selectionn\xE9es + _d.setTitle(EbliLib.getS("Calque")+" : "+_layer.getTitle()); + // Informations sur le calque + _d.put(EbliLib.getS("Calque"), _layer.getTitle()); + } + } + // Pas de selection + else + // Informations sur le calque + _d.setTitle(EbliLib.getS("Calque")+" : "+_layer.getTitle()); + } + + /* (non-Javadoc) + * @see org.fudaa.ebli.palette.BPaletteInfo.ModifyPropertyInfo#modifyProperty(java.lang.String, java.lang.Object) + */ + public void modifyProperty(String _key, Object _value, Object _data) { + if (_data!=null) { + if (_data instanceof int[]) { + // Recherche de l'attribut d\xE9fini par _key + boolean found=false; + int i=-1; + while (!found&&++i<geometries_.getNbAttributes()) + found=geometries_.getAttribute(i).getLongName().equals(_key); + // Modification de cet attribut + if (found) { + int[] geometries=(int[]) _data; + for (int j=0; j<geometries.length; j++) + geometries_.getModel(i).setObject(geometries[j], _value, null); + } + } + } + } public GrBoite getDomaine() { if (geometries_ == null || geometries_.getNumGeometries() == 0) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeDefault.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeDefault.java 2008-10-22 17:30:54 UTC (rev 4089) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeDefault.java 2008-10-23 09:39:33 UTC (rev 4090) @@ -21,14 +21,17 @@ import org.fudaa.ctulu.collection.CtuluCollection; import org.fudaa.ctulu.gis.GISAttributeInterface; import org.fudaa.ctulu.gis.GISAttributeModel; +import org.fudaa.ctulu.gis.GISCoordinateSequenceContainerInterface; import org.fudaa.ctulu.gis.GISLib; import org.fudaa.ctulu.gis.GISZoneCollection; import org.fudaa.ctulu.gis.GISZoneCollectionGeometry; import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; import org.fudaa.ctulu.gui.CtuluTable; +import org.fudaa.ctulu.gui.CtuluValueEditorChoice; import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; import org.fudaa.ebli.calque.ZCalqueLigneBrisee; import org.fudaa.ebli.calque.ZModeleLigneBrisee; +import org.fudaa.ebli.calque.dessin.DeForme; import org.fudaa.ebli.commun.EbliLib; import org.fudaa.ebli.palette.BPaletteInfo.InfoData; @@ -266,69 +269,109 @@ } public void fillWithInfo(final InfoData _d, final ZCalqueAffichageDonneesInterface _layer) { - _d.setTitle(_layer.getTitle()); - if (_layer.isSelectionEmpty()) { + // Selection vide : information sur le calque + if (_layer.isSelectionEmpty()) _d.put(EbliLib.getS("Nombre de lignes"), CtuluLibString.getString(getNombre())); - return; - } - - final int nbLigneTotal = getNombre(); - final ZCalqueLigneBrisee layer = (ZCalqueLigneBrisee) _layer; - if (layer.isAtomicMode()) { - final int nb = layer.getLayerSelectionMulti().getNbListSelected(); - - _d.put(EbliLib.getS("Nombre de lignes s\xE9lectionn\xE9es"), CtuluLibString.getString(nb) + '/' + nbLigneTotal); - if (nb == 1) { - final TIntObjectIterator it = layer.getLayerSelectionMulti().getIterator(); - it.advance(); - final int idxPoly = it.key(); - final CtuluListSelectionInterface list = (CtuluListSelectionInterface) it.value(); - _d.setTitle(EbliLib.getS("Ligne bris\xE9e {0}", CtuluLibString.getString(idxPoly + 1))); - final int nbPoint = list.getNbSelectedIndex(); - _d.put(EbliLib.getS("Nombre de sommets s\xE9lectionn\xE9s"), CtuluLibString.getString(nbPoint) + '/' - + getGeomData().getGeometry(idxPoly).getNumPoints()); - // filleWithInfo(idxPoly, _d); - if (nbPoint == 1) { - final int idxPt = list.getMaxIndex(); - _d.put(EbliLib.getS("Indice du sommet s\xE9lectionn\xE9"), CtuluLibString.getString(idxPt + 1)); - final Coordinate c = ((LineString) getGeomData().getGeometry(idxPoly)).getCoordinateSequence().getCoordinate( - idxPt); - _d.put("X:", Double.toString(c.x)); - _d.put("Y:", Double.toString(c.y)); - fillWithAtomicInfo(idxPoly, idxPoly, _d); + // Selection non vide : information relative \xE0 la selection + else { + final ZCalqueLigneBrisee layer=(ZCalqueLigneBrisee)_layer; + if (layer.isAtomicMode()) { + final int nb=layer.getLayerSelectionMulti().getNbListSelected(); + _d.put(EbliLib.getS("Nombre de lignes s\xE9lectionn\xE9es"), CtuluLibString.getString(nb)+'/'+getNombre()); + super.fillWithInfo(_d, _layer); + if (nb==1) { + final TIntObjectIterator it=layer.getLayerSelectionMulti().getIterator(); + it.advance(); + final int idxPoly=it.key(); + final CtuluListSelectionInterface list=(CtuluListSelectionInterface)it.value(); + final int nbPoint=list.getNbSelectedIndex(); + _d.put(EbliLib.getS("Nombre de sommets s\xE9lectionn\xE9s"), CtuluLibString.getString(nbPoint)+'/' + +getGeomData().getGeometry(idxPoly).getNumPoints()); + if (nbPoint==1) { + final int idxPt=list.getMaxIndex(); + _d.put(EbliLib.getS("Indice du sommet s\xE9lectionn\xE9"), CtuluLibString.getString(idxPt+1)); + final Coordinate c=((LineString)getGeomData().getGeometry(idxPoly)).getCoordinateSequence().getCoordinate(idxPt); + _d.put("X:", Double.toString(c.x)); + _d.put("Y:", Double.toString(c.y)); + fillWithAtomicInfo(idxPoly, idxPoly, _d); + } } } - } else { - final int nb = layer.getLayerSelection().getNbSelectedIndex(); - _d.put(EbliLib.getS("Nombre de lignes s\xE9lectionn\xE9es"), CtuluLibString.getString(nb) + '/' + nbLigneTotal); - if (nb == 1) { - final int idxPoly = layer.getLayerSelection().getMaxIndex(); - _d.setTitle(EbliLib.getS("Ligne bris\xE9e {0}", CtuluLibString.getString(idxPoly + 1))); - _d.put(CtuluLib.getS("Ferm\xE9"), isGeometryFermee(idxPoly) ? CtuluLib.getS("vrai") : CtuluLib.getS("faux")); - _d.put(CtuluLib.getS("Valid"), getGeomData().getGeometry(idxPoly).isValid() ? CtuluLib.getS("vrai") : CtuluLib - .getS("faux")); - fillWithInfo(idxPoly, _d); - } else if (nb > 1) { - double length = 0; - double area = 0; - final int max = layer.getLayerSelection().getMaxIndex(); - for (int i = layer.getLayerSelection().getMinIndex(); i <= max; i++) { - if (layer.getLayerSelection().isSelected(i)) { - final LineString s = (LineString) getGeomData().getGeometry(i); - length += s.getLength(); - if (s.isClosed()) { - area += s.getArea(); - } + else { + final int nb=layer.getLayerSelection().getNbSelectedIndex(); + _d.put(EbliLib.getS("Nombre de lignes s\xE9lectionn\xE9es"), CtuluLibString.getString(nb)+'/'+getNombre()); + super.fillWithInfo(_d, _layer); + if (nb==1) { + final int idxPoly=layer.getLayerSelection().getMaxIndex(); + if (_layer.isEditable()&&((ZCalqueEditable)_layer).canAddForme(DeForme.LIGNE_BRISEE)&&((ZCalqueEditable)_layer).canAddForme(DeForme.POLYGONE)) + _d.put(CtuluLib.getS("Ferm\xE9"), isGeometryFermee(idxPoly) ? CtuluLib.getS("vrai"):CtuluLib.getS("faux"), + new CtuluValueEditorChoice(new String[]{CtuluLib.getS("vrai"), CtuluLib.getS("faux")}, null), null, this, + new int[]{idxPoly}); + else + _d.put(CtuluLib.getS("Ferm\xE9"), isGeometryFermee(idxPoly) ? CtuluLib.getS("vrai"):CtuluLib.getS("faux")); + _d.put(CtuluLib.getS("Valide"), getGeomData().getGeometry(idxPoly).isValid() ? CtuluLib.getS("vrai"):CtuluLib + .getS("faux")); + fillWithInfo(idxPoly, _d); + } + else if (nb>1) { + double length=0; + double area=0; + final int[] selectedIdx=layer.getLayerSelection().getSelectedIndex(); + // Propri\xE9t\xE9 ferm\xE9 + Object value; + boolean sameValues=true; + int j=0; + while (sameValues&&++j<selectedIdx.length) + sameValues=isGeometryFermee(selectedIdx[j])==isGeometryFermee(selectedIdx[j-1]); + if (sameValues) + value=isGeometryFermee(selectedIdx[0]) ? CtuluLib.getS("vrai"):CtuluLib.getS("faux"); + else + value=null; + if (_layer.isEditable()&&((ZCalqueEditable)_layer).canAddForme(DeForme.LIGNE_BRISEE)&&((ZCalqueEditable)_layer).canAddForme(DeForme.POLYGONE)) + _d.put(CtuluLib.getS("Ferm\xE9"), value, new CtuluValueEditorChoice(new String[]{CtuluLib.getS("vrai"), + CtuluLib.getS("faux")}, null), null, this, selectedIdx); + else + _d.put(CtuluLib.getS("Ferm\xE9"), value!=null ? value.toString():"< "+CtuluLib.getS("Ind\xE9fini")+" >"); + // Calcul de la longueur et de l'aire + for (int i=0; i<selectedIdx.length; i++) { + final LineString s=(LineString)getGeomData().getGeometry(selectedIdx[i]); + length+=s.getLength(); + if (s.isClosed()) + area+=s.getArea(); } + _d.put(EbliLib.getS("Longueur cumul\xE9e"), Double.toString(length)); + if (area>0) + _d.put(EbliLib.getS("Surface cumul\xE9e"), Double.toString(area)); } - _d.put(EbliLib.getS("Longueur cumul\xE9e"), Double.toString(length)); - if (area > 0) { - _d.put(EbliLib.getS("Surface cumul\xE9e"), Double.toString(area)); - } } } } + /* (non-Javadoc) + * @see org.fudaa.ebli.palette.BPaletteInfo.ModifyPropertyInfo#modifyProperty(java.lang.String, java.lang.Object) + */ + public void modifyProperty(String _key, Object _value, final Object _data) { + super.modifyProperty(_key, _value, _data); + if (_data!=null&&_value!=null&&_key==CtuluLib.getS("Ferm\xE9")&&_data instanceof int[]) { + // Modification de la propri\xE9t\xE9 + int[] indexPolylines=(int[])_data; + for (int i=0; i<indexPolylines.length; i++) { + int indexPolyligne=indexPolylines[i]; + // Cr\xE9ation de la nouvelle g\xE9om\xE9trie + Geometry newGeom=null; + if (_value==CtuluLib.getS("vrai")) + newGeom=GISLib.toPolygone(((GISCoordinateSequenceContainerInterface)geometries_.getGeometry(indexPolyligne)).getCoordinateSequence()); + else if (_value==CtuluLib.getS("faux")) + newGeom=GISLib.toPolyligne(((GISCoordinateSequenceContainerInterface)geometries_.getGeometry(indexPolyligne)).getCoordinateSequence()); + else + FuLog.error("ZModeleLigneBriseeDefault.modifyProperty : la valeur pour la propri\xE9t\xE9 'ferm\xE9' est inconnue donc intraitable."); + // Remplacement de l'ancienne g\xE9om\xE9trie par la nouvelle + geometries_.setGeometry(indexPolyligne, newGeom, null); + } + } + } + + public final GISZoneCollectionLigneBrisee getGeomData() { return (GISZoneCollectionLigneBrisee)geometries_; } @@ -382,21 +425,13 @@ } protected void fillWithInfo(final int _idxLigne, final InfoData _d) { - final GISZoneCollection model = getGeomData(); final LineString s = (LineString) getGeomData().getGeometry(_idxLigne); - _d.put(EbliLib.getS("Nombre de sommets"), CtuluLibString.getString(s.isClosed() ? s.getNumPoints() - 1 : s - .getNumPoints())); _d.put(CtuluLib.getS("Longueur"), Double.toString(s.getLength())); - if (s.isClosed()) { + if (s.isClosed()){ + _d.put(EbliLib.getS("Nombre de sommets"), CtuluLibString.getString(s.getNumPoints() - 1)); _d.put(CtuluLib.getS("Surface"), Double.toString(s.getArea())); } - final int nbAtt = model.getNbAttributes(); - for (int i = 0; i < nbAtt; i++) { - if (model.getAttribute(i).isUserVisible() && !model.getAttribute(i).isAtomicValue() - && model.getDataModel(i) != null && model.getDataModel(i).getObjectValueAt(_idxLigne) != null) { - _d.put(model.getAttribute(i).getName(), model.getDataModel(i).getObjectValueAt(_idxLigne).toString()); - } - } - + else + _d.put(EbliLib.getS("Nombre de sommets"), CtuluLibString.getString(s.getNumPoints())); } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-10-22 17:30:54 UTC (rev 4089) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleMultiPointEditable.java 2008-10-23 09:39:33 UTC (rev 4090) @@ -245,48 +245,44 @@ } public void fillWithInfo(final InfoData _d, final ZCalqueAffichageDonneesInterface _layer) { - _d.setTitle(_layer.getTitle()); - if (_layer.isSelectionEmpty()) { + // Selection vide : information sur le calque + if (_layer.isSelectionEmpty()) _d.put(EbliLib.getS("Nombre de semis"), CtuluLibString.getString(getNombre())); - return; - } - - final int nbLigneTotal = getNombre(); - final ZCalqueMultiPointEditable layer = (ZCalqueMultiPointEditable) _layer; - if (layer.isAtomicMode()) { - final int nb = layer.getLayerSelectionMulti().getNbListSelected(); - - _d.put(EbliLib.getS("Nombre de semis s\xE9lectionn\xE9es"), CtuluLibString.getString(nb) + '/' + nbLigneTotal); - if (nb == 1) { - final TIntObjectIterator it = layer.getLayerSelectionMulti().getIterator(); - it.advance(); - final int idxPoly = it.key(); - final CtuluListSelectionInterface list = (CtuluListSelectionInterface) it.value(); - _d.setTitle(EbliLib.getS("Semis {0}", CtuluLibString.getString(idxPoly + 1))); - final int nbPoint = list.getNbSelectedIndex(); - _d.put(EbliLib.getS("Nombre de sommets s\xE9lectionn\xE9s"), CtuluLibString.getString(nbPoint) + '/' - + getGeomData().getGeometry(idxPoly).getNumPoints()); - // filleWithInfo(idxPoly, _d); - if (nbPoint == 1) { - final int idxPt = list.getMaxIndex(); - _d.put(EbliLib.getS("Indice du sommet s\xE9lectionn\xE9"), CtuluLibString.getString(idxPt + 1)); - final Coordinate c = ((GISMultiPoint) getGeomData().getGeometry(idxPoly)).getCoordinates()[idxPt]; - _d.put("X:", Double.toString(c.x)); - _d.put("Y:", Double.toString(c.y)); - fillWithAtomicInfo(idxPoly, idxPoly, _d); + // Selection non vide : information relative \xE0 la selection + else { + final ZCalqueMultiPointEditable layer=(ZCalqueMultiPointEditable)_layer; + if (layer.isAtomicMode()) { + final int nb=layer.getLayerSelectionMulti().getNbListSelected(); + _d.put(EbliLib.getS("Nombre de semis s\xE9lectionn\xE9es"), CtuluLibString.getString(nb)+'/'+getNombre()); + super.fillWithInfo(_d, _layer); + if (nb==1) { + final TIntObjectIterator it=layer.getLayerSelectionMulti().getIterator(); + it.advance(); + final int idxPoly=it.key(); + final CtuluListSelectionInterface list=(CtuluListSelectionInterface)it.value(); + final int nbPoint=list.getNbSelectedIndex(); + _d.put(EbliLib.getS("Nombre de sommets s\xE9lectionn\xE9s"), CtuluLibString.getString(nbPoint)+'/' + +getGeomData().getGeometry(idxPoly).getNumPoints()); + if (nbPoint==1) { + final int idxPt=list.getMaxIndex(); + _d.put(EbliLib.getS("Indice du sommet s\xE9lectionn\xE9"), CtuluLibString.getString(idxPt+1)); + final Coordinate c=((GISMultiPoint)getGeomData().getGeometry(idxPoly)).getCoordinates()[idxPt]; + _d.put("X:", Double.toString(c.x)); + _d.put("Y:", Double.toString(c.y)); + fillWithAtomicInfo(idxPoly, idxPoly, _d); + } } } - } - else { - final int nb = layer.getLayerSelection().getNbSelectedIndex(); - _d.put(EbliLib.getS("Nombre de semis s\xE9lectionn\xE9es"), CtuluLibString.getString(nb) + '/' + nbLigneTotal); - if (nb == 1) { - final int idxPoly = layer.getLayerSelection().getMaxIndex(); - _d.setTitle(EbliLib.getS("Semis {0}", CtuluLibString.getString(idxPoly + 1))); - _d.put(CtuluLib.getS("Valid"), getGeomData().getGeometry(idxPoly).isValid() ? CtuluLib.getS("vrai") : CtuluLib - .getS("faux")); - fillWithInfo(idxPoly, _d); - } else if (nb > 1) { + else { + final int nb=layer.getLayerSelection().getNbSelectedIndex(); + _d.put(EbliLib.getS("Nombre de semis s\xE9lectionn\xE9es"), CtuluLibString.getString(nb)+'/'+getNombre()); + super.fillWithInfo(_d, _layer); + if (nb==1) { + final int idxPoly=layer.getLayerSelection().getMaxIndex(); + _d.setTitle(EbliLib.getS("Semis {0}", CtuluLibString.getString(idxPoly+1))); + _d.put(CtuluLib.getS("Valid"), getGeomData().getGeometry(idxPoly).isValid() ? CtuluLib.getS("vrai"):CtuluLib.getS("faux")); + fillWithInfo(idxPoly, _d); + } } } } @@ -333,16 +329,8 @@ } protected void fillWithInfo(final int _idxLigne, final InfoData _d) { - final GISZoneCollection model = getGeomData(); final Geometry s = (Geometry) getGeomData().getGeometry(_idxLigne); _d.put(EbliLib.getS("Nombre de sommets"), CtuluLibString.getString(s.getNumPoints())); - final int nbAtt = model.getNbAttributes(); - for (int i = 0; i < nbAtt; i++) { - if (model.getAttribute(i).isUserVisible() && !model.getAttribute(i).isAtomicValue() - && model.getDataModel(i) != null && model.getDataModel(i).getObjectValueAt(_idxLigne) != null) { - _d.put(model.getAttribute(i).getName(), model.getDataModel(i).getObjectValueAt(_idxLigne).toString()); - } - } } /** Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/palette/BPaletteInfo.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/palette/BPaletteInfo.java 2008-10-22 17:30:54 UTC (rev 4089) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/palette/BPaletteInfo.java 2008-10-23 09:39:33 UTC (rev 4090) @@ -26,6 +26,7 @@ import javax.swing.table.TableCellRenderer; import org.fudaa.ctulu.gui.CtuluTableCellEditorProxy; +import org.fudaa.ctulu.gui.CtuluValueEditorI; import org.fudaa.ebli.commun.EbliLib; import com.memoire.bu.BuBorderLayout; @@ -57,17 +58,28 @@ /** * Permet d'ajouter une information \xE9ditable au tableau. * @param _key le nom de la propri\xE9t\xE9, doit \xEAtre non vide - * @param _value la valeur de la propri\xE9t\xE9, doit \xEAtre non null + * @param _value la valeur de la propri\xE9t\xE9, peut \xEAtre null * @param _editor l'\xE9diteur, si null l'\xE9diteur par defaut sera utilis\xE9 * @param _renderer le renderer, si null le renderer par defaut sera utilis\xE9 * @param _owner l'object qui sera appel\xE9 (via modifyProperty) pour que * la modification soit prise en compte. Si null l'attribut est * consid\xE9r\xE9 comme non modifiable. + * @param _data autorise \xE0 passer une information (ou un tableau d'informations) + * qui sera redonn\xE9 \xE0 modifyProperty. */ - void put(String _key, Object _value, TableCellEditor _editor, TableCellRenderer _renderer, ModifyPropertyInfo _owner); + void put(String _key, Object _value, CtuluValueEditorI _editor, TableCellRenderer _renderer, ModifyPropertyInfo _owner, Object _data); void setTitle(String _title); + /** + * Indique si le tableau contient des valeurs agr\xE9g\xE9es (donc + * venant de plusieurs g\xE9om\xE9tries) ou des valeurs unique (venant + * d'une seul g\xE9om\xE9trie). Selon le cas createCommonEditorComponent + * ou createEditorComponent sera appell\xE9. + * @param _value + */ + public void setOnlyOneGeometry(boolean _value); + boolean isTitleSet(); } @@ -84,8 +96,9 @@ * fournie \xE0 InfoData. * @param _key le nom de la propri\xE9t\xE9 * @param _newValue la nouvelle valeur de la prorpi\xE9t\xE9 + * @param _data l'information pass\xE9 en param\xE8tre du put */ - void modifyProperty(String _key, Object _newValue); + void modifyProperty(String _key, Object _newValue, Object _data); } /** @@ -96,12 +109,14 @@ /** * Chaque ligne est organis\xE9 suivant ce model : nom (string), valeur - * (object), editeor (TableCellEditor), renderer (TableCellRenderer), owner - * (ModifyPropertyInfo). + * (object), editor (TableCellEditor), renderer (TableCellRenderer), owner + * (ModifyPropertyInfo), data (Object). */ private ArrayList<ArrayList<Object>> rows_; /** L'editor du tableau. */ private CtuluTableCellEditorProxy editor_; + /** vrai si le model ne d\xE9crit qu'une seul g\xE9om\xE9trie en ce moment. */ + private boolean onlyOneGeometry_; private class PanelTableRenderer extends DefaultTableCellRenderer { /* (non-Javadoc) @@ -111,8 +126,15 @@ int _column) { if(rows_.get(_row).get(3)!=null) return ((TableCellRenderer) rows_.get(_row).get(3)).getTableCellRendererComponent(_table, _value, _isSelected, _hasFocus, _row, _column); - else - return super.getTableCellRendererComponent(_table, _value, _isSelected, _hasFocus, _row, _column); + else{ + Component comp=super.getTableCellRendererComponent(_table, _value, _isSelected, _hasFocus, _row, _column); + // Si la ligne n'est pas \xE9ditable, elle est gris\xE9e. + if(rows_.get(_row).get(4)==null) + comp.setEnabled(false); + else + comp.setEnabled(true); + return comp; + } } } @@ -123,13 +145,16 @@ public TableCellEditor getEditor(){ if (editor_==null) { HashMap<Integer, TableCellEditor> editors=new HashMap<Integer, TableCellEditor>(); - // R\xE9cup\xE9ration des \xE9ditors + // R\xE9cup\xE9ration des \xE9diteurs for (int i=0; i<rows_.size(); i++) // Si owner est renseign\xE9 if (rows_.get(i).get(4)!=null) { // Si l'editor est renseign\xE9 if (rows_.get(i).get(3)!=null) - editors.put(i, (TableCellEditor)rows_.get(i).get(3)); + if(onlyOneGeometry_) + editors.put(i, ((CtuluValueEditorI)rows_.get(i).get(2)).createTableEditorComponent()); + else + editors.put(i, ((CtuluValueEditorI)rows_.get(i).get(2)).createCommonTableEditorComponent()); } else editors.put(i, null); @@ -150,11 +175,34 @@ else return false; } - + public PanelTableModel() { rows_=new ArrayList<ArrayList<Object>>(); + onlyOneGeometry_=false; } - + + public void setOnlyOneGeometry(boolean _value){ + if(onlyOneGeometry_!=_value){ + onlyOneGeometry_=_value; + editor_.clear(); + // R\xE9g\xE9n\xE9ration de l'editeur + for (int i=0; i<rows_.size(); i++) + // Si owner est renseign\xE9 + if (rows_.get(i).get(4)!=null) { + // Si l'editor est renseign\xE9 + if (rows_.get(i).get(3)!=null) + if(onlyOneGeometry_) + editor_.putEditor(i, ((CtuluValueEditorI)rows_.get(i).get(2)).createTableEditorComponent()); + else + editor_.putEditor(i, ((CtuluValueEditorI)rows_.get(i).get(2)).createCommonTableEditorComponent()); + } + else + editor_.putEditor(i, null); + // Ajout du choix par defaut + editor_.putEditor(-1, new DefaultCellEditor(new BuTextField())); + } + } + public void clear() { rows_.clear(); } @@ -188,6 +236,7 @@ row.add(2, null); row.add(3, null); row.add(4, null); + row.add(5, null); rows_.add(row); editor_.putEditor(rows_.size()-1, null); } @@ -200,8 +249,8 @@ * javax.swing.table.TableCellRenderer, * org.fudaa.ebli.palette.BPaletteInfo.ModifyPropertyInfo) */ - public void put(String _key, Object _value, TableCellEditor _editor, TableCellRenderer _renderer, ModifyPropertyInfo _owner) { - if (_key==null||_value==null) + public void put(String _key, Object _value, CtuluValueEditorI _editor, TableCellRenderer _renderer, ModifyPropertyInfo _owner, Object _data) { + if (_key==null) throw new IllegalArgumentException("_key et _value doivent \xEAtre non null."); ArrayList<Object> row=new ArrayList<Object>(); row.add(0, _key); @@ -209,8 +258,12 @@ row.add(2, _editor); row.add(3, _renderer); row.add(4, _owner); + row.add(5, _data); rows_.add(row); - editor_.putEditor(rows_.size()-1, _editor); + if(onlyOneGeometry_) + editor_.putEditor(rows_.size()-1, _editor.createTableEditorComponent()); + else + editor_.putEditor(rows_.size()-1, _editor.createCommonTableEditorComponent()); } public void setTitle(final String _title) { @@ -225,7 +278,9 @@ return; if (rows_.get(_rowIndex).get(_columnIndex)!=_value&&rows_.get(_rowIndex).get(4)!=null) { rows_.get(_rowIndex).set(_columnIndex, _value); - ((ModifyPropertyInfo)rows_.get(_rowIndex).get(4)).modifyProperty((String)rows_.get(_rowIndex).get(0), _value); + // Si la nouvelle valeur est consid\xE9r\xE9e comme valide par l'editeur, on appelle la m\xE9thode de callback + if(rows_.get(_rowIndex).get(2)!=null&&((CtuluValueEditorI)rows_.get(_rowIndex).get(2)).isValid(_value)) + ((ModifyPropertyInfo)rows_.get(_rowIndex).get(4)).modifyProperty((String)rows_.get(_rowIndex).get(0), _value, rows_.get(_rowIndex).get(5)); } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/palette/BPaletteInfoAbstractAction.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/palette/BPaletteInfoAbstractAction.java 2008-10-22 17:30:54 UTC (rev 4089) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/palette/BPaletteInfoAbstractAction.java 2008-10-23 09:39:33 UTC (rev 4090) @@ -24,9 +24,9 @@ public abstract class BPaletteInfoAbstractAction extends EbliActionPaletteAbstract { public BPaletteInfoAbstractAction() { - super(EbliLib.getS("Information"), EbliResource.EBLI.getIcon("info"), "INFOS"); + super(EbliLib.getS("Propri\xE9t\xE9s"), EbliResource.EBLI.getIcon("info"), "INFOS"); setPaletteResizable(true); - putValue(Action.SHORT_DESCRIPTION, EbliLib.getS("Informations sur les objets s\xE9lectionn\xE9s")); + putValue(Action.SHORT_DESCRIPTION, EbliLib.getS("Propri\xE9t\xE9s des les objets s\xE9lectionn\xE9s")); putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke('i')); putValue(EbliActionInterface.SECOND_KEYSTROKE, KeyStroke.getKeyStroke(KeyEvent.VK_F7, 0)); } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/telemac/TrTelemacFrontierNumberIteratorAbstract.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/telemac/TrTelemacFrontierNumberIteratorAbstract.java 2008-10-22 17:30:54 UTC (rev 4089) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/telemac/TrTelemacFrontierNumberIteratorAbstract.java 2008-10-23 09:39:33 UTC (rev 4090) @@ -108,6 +108,10 @@ public final TableCellEditor createTableEditorComponent() { return null; } + + public final TableCellEditor createCommonTableEditorComponent() { + return null; + } public final String currentLabel() { super.currentLabel(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |