From: <bma...@us...> - 2009-02-23 16:32:41
|
Revision: 4490 http://fudaa.svn.sourceforge.net/fudaa/?rev=4490&view=rev Author: bmarchan Date: 2009-02-23 16:32:31 +0000 (Mon, 23 Feb 2009) Log Message: ----------- Implementation de la recherche sur des atomiques. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonnees.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesInterface.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesMulti.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/ZCalqueLigneBrisee.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/CalqueGISEditionAction.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/BPaletteEdition.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/find/CalqueFindActionAbstract.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindComponentPolygone.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindFlecheExpression.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindPointExpression.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/EbliListeSelectionMulti.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/EbliListeSelectionMultiInterface.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindActionAbstract.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindActionInterface.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindComponentComposite.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindComponentExpr.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindDialog.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionComposite.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionContainerInterface.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionDefault.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindableItem.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/model/MvExpressionSupplierElement.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/model/MvExpressionSupplierFrNode.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/model/MvExpressionSupplierNode.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrAreteExprSupplier.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrExpressionSupplierForData.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/post/TrPostExprDataSupplier.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/post/TrPostExprFlecheSupplier.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/reflux/TrRefluxBcNodeLayer.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/rubar/TrRubarLimniModel.java Added Paths: ----------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/CalqueAtomicSelectionAction.java Property Changed: ---------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/CalqueGISEditionAction.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/BPaletteEdition.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/find/CalqueFindActionAbstract.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindComponentPolygone.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindFlecheExpression.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindPointExpression.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/EbliListeSelectionMultiInterface.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindActionAbstract.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindActionInterface.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindComponentComposite.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindComponentExpr.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindDialog.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionComposite.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionContainerInterface.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionDefault.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindable.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindableItem.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/model/MvExpressionSupplierElement.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/model/MvExpressionSupplierFrNode.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/model/MvExpressionSupplierNode.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrAreteExprSupplier.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrExpressionSupplierForData.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/post/TrPostExprDataSupplier.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/post/TrPostExprFlecheSupplier.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/reflux/TrRefluxBcNodeLayer.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/rubar/TrRubarLimniModel.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonnees.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonnees.java 2009-02-20 19:27:45 UTC (rev 4489) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonnees.java 2009-02-23 16:32:31 UTC (rev 4490) @@ -11,6 +11,7 @@ import org.fudaa.ctulu.CtuluListSelectionInterface; import org.fudaa.ebli.calque.find.CalqueFindActionDefault; import org.fudaa.ebli.calque.find.CalqueFindExpression; +import org.fudaa.ebli.commun.EbliListeSelectionMultiInterface; import org.fudaa.ebli.commun.EbliSelectionState; import org.fudaa.ebli.find.EbliFindActionInterface; import org.fudaa.ebli.find.EbliFindExpressionContainerInterface; @@ -272,6 +273,10 @@ return r; } + public boolean changeSelection(final EbliListeSelectionMultiInterface _selection, int _action) { + return changeSelection(_selection.getIdxSelection(),_action); + } + /** * Selectionne l'objet suivant de l'objet en cours. * @return true si la selection a \xE9t\xE9 modifi\xE9e. Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesInterface.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesInterface.java 2009-02-20 19:27:45 UTC (rev 4489) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesInterface.java 2009-02-23 16:32:31 UTC (rev 4490) @@ -127,6 +127,14 @@ boolean changeSelection(LinearRing _p, int _action, int _mode); boolean changeSelection(LinearRing[] _p, int _action, int _mode); + + /** + * Change la selection a partir d'une liste de selection. + * @param _selection La liste de selection. + * @param _action voir les action de ZCalqueSelectionInteraction + * @return true si la selection a \xE9t\xE9 modifi\xE9e. + */ + boolean changeSelection(EbliListeSelectionMultiInterface _selection, int _action); /** * Retourne les indices de selection des sous objets selectionn\xE9s pour le point donn\xE9, sous la forme d'une liste de selection. Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesMulti.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesMulti.java 2009-02-20 19:27:45 UTC (rev 4489) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesMulti.java 2009-02-23 16:32:31 UTC (rev 4490) @@ -68,7 +68,7 @@ } } - protected boolean changeSelection(final EbliListeSelectionMulti _s, final int _action) { + public boolean changeSelection(final EbliListeSelectionMultiInterface _s, final int _action) { // Si la selection de modif est nulle, seule l'action de remplacement // est concernee. if (selection_ == null) { 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 2009-02-20 19:27:45 UTC (rev 4489) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueGeometry.java 2009-02-23 16:32:31 UTC (rev 4490) @@ -7,6 +7,7 @@ */ package org.fudaa.ebli.calque; +import gnu.trove.TDoubleArrayList; import gnu.trove.TIntArrayList; import gnu.trove.TIntObjectIterator; import gnu.trove.TObjectIntHashMap; @@ -16,6 +17,11 @@ import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.Rectangle2D; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.StringTokenizer; import org.fudaa.ctulu.CtuluExpr; import org.fudaa.ctulu.CtuluLib; @@ -28,6 +34,10 @@ 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.CalqueFindActionAtomic; +import org.fudaa.ebli.calque.find.CalqueFindActionDefault; +import org.fudaa.ebli.calque.find.CalqueFindComponentPolygone; import org.fudaa.ebli.calque.find.CalqueFindExpression; import org.fudaa.ebli.commun.EbliLib; import org.fudaa.ebli.commun.EbliListeSelectionMulti; @@ -35,7 +45,10 @@ import org.fudaa.ebli.commun.EbliSelectionMode; import org.fudaa.ebli.commun.EbliSelectionState; import org.fudaa.ebli.commun.EbliUIProperties; +import org.fudaa.ebli.find.EbliFindActionInterface; import org.fudaa.ebli.find.EbliFindExpressionContainerInterface; +import org.fudaa.ebli.find.EbliFindExpressionDefault; +import org.fudaa.ebli.find.EbliFindable; import org.fudaa.ebli.geometrie.GrBoite; import org.fudaa.ebli.geometrie.GrMorphisme; import org.fudaa.ebli.geometrie.GrPoint; @@ -70,50 +83,114 @@ * @author Fred Deniger * @version $Id$ */ - private class VariableNonAtomicFindExpression extends CalqueFindExpression { + private class VariableFindExpression extends CalqueFindExpression { - TObjectIntHashMap varAtt_; + Map<Variable,Integer> vars_; + Variable varX_; + Variable varY_; + List<Double> ord_=new ArrayList<Double>(50); - public VariableNonAtomicFindExpression() { + public VariableFindExpression() { super(ZCalqueGeometry.this.modeleDonnees()); } public void initialiseExpr(final CtuluExpr _expr) { + if (isAtomicMode_) { + initialiseExprWhenAtomic(_expr); + return; + } + super.initialiseExpr(_expr); - final GISZoneCollection coll = ((ZModeleGeometry) super.data_).getGeomData(); + final GISZoneCollection coll = ((ZModeleEditable) super.data_).getGeomData(); final int nb = coll.getNbAttributes(); if (nb > 0) { - if (varAtt_ == null) { - varAtt_ = new TObjectIntHashMap(nb); + if (vars_ == null) { + vars_ = new HashMap<Variable,Integer>(nb); } else { - varAtt_.clear(); + vars_.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); + if (!att.isAtomicValue() /*&& Number.class.isAssignableFrom(att.getDataClass())*/) { + vars_.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 = ((ZModeleGeometry) super.data_).getGeomData(); + public void majVariable(final int _idx, final Variable[] _varToUpdate, final Object[] _values) { + if (isAtomicMode_) { + majVariableWhenAtomic(_idx, _varToUpdate, _values); + return; + } + + super.majVariable(_idx, _varToUpdate, _values); + if (vars_ != 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())); + if (vars_.containsKey(_varToUpdate[i])) { + _values[i]=coll.getDataModel(vars_.get(_varToUpdate[i])).getObjectValueAt(_idx); } } } } + public void initialiseExprWhenAtomic(CtuluExpr _expr) { + _expr.initVar(); + _expr.getParser().getFunctionTable().remove("str"); + + + // Indice, ajout\xE9 par defaut. + _expr.removeVar("i"); + + final GISZoneCollection coll = modeleDonnees().getGeomData(); + final int nb = coll.getNbAttributes(); + if (nb > 0) { + if (vars_ == null) { + vars_ = new HashMap<Variable,Integer>(nb); + } else { + vars_.clear(); + } + for (int i = 0; i < nb; i++) { + final GISAttributeInterface att = coll.getAttribute(i); + if (att.isAtomicValue() /*&& Number.class.isAssignableFrom(att.getDataClass())*/) { + vars_.put(_expr.addVar(att.getName(), att.getLongName()),i); + } + } + } + + varX_=_expr.addVar("x","L'abscisse des sommets"); + varY_=_expr.addVar("y","L'ordonn\xE9e des sommets"); + } + + public void majVariableWhenAtomic(int _idx, Variable[] _varToUpdate, Object[] _values) { + + final GISZoneCollection coll = modeleDonnees().getGeomData(); + int ivar; + if ((ivar=CtuluLibArray.getIndex(varX_, _varToUpdate))!=-1) + _values[ivar]=getOrdinate(_idx, 0); + if ((ivar=CtuluLibArray.getIndex(varY_, _varToUpdate))!=-1) + _values[ivar]=getOrdinate(_idx, 1); + + for (int i=0; i<_varToUpdate.length; i++) { + if ((vars_.containsKey(_varToUpdate[i]))) { + _values[i]= + ((GISAttributeModel)coll.getDataModel(vars_.get(_varToUpdate[i])).getObjectValueAt(_idx)).getObjectValues(); + } + } + } + + private Double[] getOrdinate(int _idxGeom, int _ordonnee) { + CoordinateSequence seq=((GISCoordinateSequenceContainerInterface)modeleDonnees().getObject(_idxGeom)).getCoordinateSequence(); + ord_.clear(); + for (int i=0; i<seq.size(); i++) + ord_.add(seq.getOrdinate(i, _ordonnee)); + + return ord_.toArray(new Double[0]); + } } - /** true si edition de sommets */ + /** true si selection en mode sommets */ transient private boolean isAtomicMode_; /** Le mod\xE8le des g\xE9om\xE9tries */ protected ZModeleGeometry modele_; @@ -125,6 +202,8 @@ protected TraceSurfaceModel surfModel_; /** L'attribut utilis\xE9 pour afficher les labels */ protected GISAttributeInterface attrLabels_=null; + /** Le finder pour une recherche sur le calque */ + protected CalqueFindActionAtomic finder_; /** * Le seul constructeur, avec le mod\xE8le. @@ -138,6 +217,10 @@ surfModel_=new TraceSurfaceModel(TraceSurface.INVISIBLE, Color.BLACK,null); } +// public EbliFindActionInterface getFinder() { +// return new CalqueGISFind(this); +// } + protected EbliListeSelectionMulti creeSelectionMulti() { return new EbliListeSelectionMulti(modeleDonnees().getNombre() / 2); } @@ -225,8 +308,31 @@ } return super.changeSelection(_poly, _action, _mode); } + + public boolean changeSelection(final LinearRing[] _p, final int _action, final int _mode) { + if (!isSelectable()) return false; + + if (isAtomicMode_) { + if (_p==null) { + return false; + } + final EbliListeSelectionMulti l=new EbliListeSelectionMulti(0); + for (int i=_p.length-1; i>=0; i--) { + final EbliListeSelectionMulti li=selectionMulti(_p[i]); + l.add(li); + } + changeSelection(l, _action); + if (l.isEmpty()) { + return false; + } + return true; + } + else { + return super.changeSelection(_p, _action, _mode); + } + } - private void changeSelectionMulti(final EbliListeSelectionMulti _s, final int _action) { + public boolean changeSelectionMulti(final EbliListeSelectionMultiInterface _s, final int _action) { // Si la selection de modif est nulle, seule l'action de remplacement // est concernee. if (selectionMulti_ == null) { @@ -253,6 +359,7 @@ if (sentEvent) { fireSelectionEvent(); } + return sentEvent; } public void clearSelection() { @@ -270,12 +377,17 @@ } } - public EbliFindExpressionContainerInterface getExpressionContainer() { - if (isAtomicMode_) { - return new CalqueFindExpression(modele_); + public EbliFindActionInterface getFinder() { + // Le finder est unique pour le calque, car il ecoute les changements de propri\xE9t\xE9s du calque. + if (finder_==null) { + finder_=new CalqueFindActionAtomic(this); } - return new VariableNonAtomicFindExpression(); + return finder_; } + + public EbliFindExpressionContainerInterface getExpressionContainer() { + return new VariableFindExpression(); + } public EbliListeSelectionMultiInterface getLayerSelectionMulti() { return selectionMulti_; @@ -975,6 +1087,18 @@ return false; } + public boolean changeSelection(EbliListeSelectionMultiInterface _selection, int _action) { + if (!isSelectable()) return false; + + // Aucun controle n'est fait sur la visibilit\xE9 ou non des objets d'indices pass\xE9s. + if (isAtomicMode_) { + return changeSelectionMulti(_selection, _action); + } + else { + return super.changeSelection(_selection.getIdxSelection(),_action); + } + } + public boolean selectNext() { if (!isAtomicMode_) { return super.selectNext(); 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 2009-02-20 19:27:45 UTC (rev 4489) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java 2009-02-23 16:32:31 UTC (rev 4490) @@ -97,14 +97,14 @@ } - public void majVariable(final int _idx, final Variable[] _varToUpdate) { - super.majVariable(_idx, _varToUpdate); + public void majVariable(final int _idx, final Variable[] _varToUpdate, final Object[] _values) { + super.majVariable(_idx, _varToUpdate, _values); 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())); + _values[i]=CtuluLib.getDouble(((Number) coll.getDataModel(varAtt_.get(_varToUpdate[i])) + .getObjectValueAt(_idx)).doubleValue()); } } } Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/CalqueAtomicSelectionAction.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/CalqueAtomicSelectionAction.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/CalqueAtomicSelectionAction.java 2009-02-23 16:32:31 UTC (rev 4490) @@ -0,0 +1,46 @@ +/* + * @creation 11 sept. 06 + * @modification $Date: 2008-05-13 12:10:48 $ + * @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.action; + +import javax.swing.event.TreeSelectionEvent; +import javax.swing.event.TreeSelectionListener; + +import org.fudaa.ebli.calque.ZScene; +import org.fudaa.ebli.commun.EbliActionChangeState; +import org.fudaa.ebli.commun.EbliLib; +import org.fudaa.ebli.ressource.EbliResource; + +/** + * Une action de selection atomique. + * @author Bertrand Marchand + * @version $Id$ + */ +public class CalqueAtomicSelectionAction extends EbliActionChangeState implements TreeSelectionListener { + + private final transient ZScene scene_; + + /** + * Cr\xE9ation de l'action. + */ + public CalqueAtomicSelectionAction(final ZScene _scn) { + super(EbliLib.getS("S\xE9lection mode sommet"),EbliResource.EBLI.getToolIcon("draw-atom") , "MODE_ATOME"); + scene_ = _scn; + } + + public void changeAction() { + scene_.setAtomicMode(isSelected()); + } + + + /** + * Changement de calque selectionn\xE9. + */ + public void valueChanged(TreeSelectionEvent e) { + setEnabled(scene_.canUseAtomicMode()); + } +} \ No newline at end of file Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/CalqueAtomicSelectionAction.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/CalqueGISEditionAction.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/CalqueGISEditionAction.java 2009-02-20 19:27:45 UTC (rev 4489) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/CalqueGISEditionAction.java 2009-02-23 16:32:31 UTC (rev 4490) @@ -30,7 +30,7 @@ /** * Une action pour afficher une palette d'outils GIS, reagissant au changement de calque selectionn\xE9. * @author Fred Deniger - * @version $Id: CalqueGISEditionAction.java,v 1.6.6.2 2008-05-13 12:10:47 emartin Exp $ + * @version $Id$ */ public class CalqueGISEditionAction extends EbliActionPaletteTreeModel implements PropertyChangeListener, ZSelectionListener { @@ -140,7 +140,7 @@ } protected BPalettePanelInterface buildPaletteContent() { - return new BPaletteEdition(); + return new BPaletteEdition(scene_); } /** Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/action/CalqueGISEditionAction.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/BPaletteEdition.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/BPaletteEdition.java 2009-02-20 19:27:45 UTC (rev 4489) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/BPaletteEdition.java 2009-02-23 16:32:31 UTC (rev 4490) @@ -24,7 +24,10 @@ import javax.swing.JToggleButton; import javax.swing.border.EtchedBorder; +import org.fudaa.ebli.calque.ZScene; +import org.fudaa.ebli.calque.action.CalqueAtomicSelectionAction; import org.fudaa.ebli.commun.BPalettePanelInterface; +import org.fudaa.ebli.commun.EbliComponentFactory; import org.fudaa.ebli.commun.EbliLib; import org.fudaa.ebli.ressource.EbliResource; @@ -33,6 +36,7 @@ import com.memoire.bu.BuInsets; import com.memoire.bu.BuLib; import com.memoire.bu.BuPanel; +import com.memoire.bu.BuToolButton; import com.memoire.bu.BuToolToggleButton; import com.memoire.bu.BuVerticalLayout; @@ -41,7 +45,7 @@ * de l'utilisateur. Elle inclu un panneau de parametre de l'outil selectionn\xE9. * * @author Fred Deniger - * @version $Id: BPaletteEdition.java,v 1.2.6.4 2008-05-13 12:10:23 bmarchan Exp $ + * @version $Id$ */ public class BPaletteEdition extends BuPanel implements ActionListener, BuInsets, BPalettePanelInterface { @@ -65,6 +69,7 @@ BPaletteEditionClientInterface target_; BuPanel editorPanel_; + ZScene scene_; public void paletteDeactivated() { if (editorPanel_ != null) { @@ -81,9 +86,10 @@ } - public BPaletteEdition() { + public BPaletteEdition(ZScene _scene) { super(); setLayout(new BuVerticalLayout(0, true, true)); + scene_=_scene; buildGlobalsActions(this); editorPanel_ = new BuPanel(); editorPanel_.setLayout(new BuBorderLayout()); @@ -223,12 +229,10 @@ } } }; - BuToolToggleButton bt = new BuToolToggleButton(); - bt.setActionCommand(ATOM_ACTION); - bt.setIcon(EbliResource.EBLI.getToolIcon("draw-atom")); - bt.setToolTipText(EbliLib.getS("Mode <SOMMET>")); - decoreButton(bt); - _target.add(bt); + BuToolToggleButton bt; + + CalqueAtomicSelectionAction act=new CalqueAtomicSelectionAction(scene_); + _target.add(act.buildToolButton(EbliComponentFactory.INSTANCE)); /* * bt = new BuToolToggleButton(); bt.setActionCommand("MODE_EDIT"); * bt.setIcon(EbliResource.EBLI.getToolIcon("draw-edit")); decoreButton(bt); group.add(bt); _target.add(bt); @@ -437,7 +441,7 @@ } public boolean isAtomicMode() { - final BuToolToggleButton bt = (BuToolToggleButton) getGlobalButton(ATOM_ACTION); + final AbstractButton bt=(AbstractButton)getGlobalButton(ATOM_ACTION); return bt.isEnabled() && bt.isSelected(); } @@ -446,7 +450,7 @@ } public void setAtomeEnable(final boolean _enable, final boolean _isSelected) { - final BuToolToggleButton bt = (BuToolToggleButton) getGlobalButton(ATOM_ACTION); + final AbstractButton bt = (AbstractButton) getGlobalButton(ATOM_ACTION); bt.setEnabled(_enable); if (_enable) { bt.setSelected(_isSelected); Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/BPaletteEdition.java ___________________________________________________________________ Added: svn:keywords + Id 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 2009-02-20 19:27:45 UTC (rev 4489) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalquePointEditable.java 2009-02-23 16:32:31 UTC (rev 4490) @@ -39,13 +39,13 @@ /** * @author Fred Deniger - * @version $Id: ZCalquePointEditable.java,v 1.14.6.4 2008-03-26 16:46:43 bmarchan Exp $ + * @version $Id$ */ public class ZCalquePointEditable extends ZCalquePoint implements ZCalqueEditable { /** * @author Fred Deniger - * @version $Id: ZCalquePointEditable.java,v 1.14.6.4 2008-03-26 16:46:43 bmarchan Exp $ + * @version $Id$ */ private class VariableFindExpression extends CalqueFindPointExpression { @@ -75,14 +75,14 @@ } - public void majVariable(final int _idx, final Variable[] _varToUpdate) { - super.majVariable(_idx, _varToUpdate); + public void majVariable(final int _idx, final Variable[] _varToUpdate, Object[] _values) { + super.majVariable(_idx, _varToUpdate, _values); if (varAtt_ != null && !CtuluLibArray.isEmpty(_varToUpdate)) { final GISZoneCollection coll = ((ZModelePointEditable) 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())); + _values[i]=CtuluLib.getDouble(((Number) coll.getDataModel(varAtt_.get(_varToUpdate[i])) + .getObjectValueAt(_idx)).doubleValue()); } } } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalquePointEditable.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindActionAbstract.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindActionAbstract.java 2009-02-20 19:27:45 UTC (rev 4489) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindActionAbstract.java 2009-02-23 16:32:31 UTC (rev 4490) @@ -39,7 +39,7 @@ /** * @author deniger - * @version $Id: CalqueFindActionAbstract.java,v 1.5 2007-05-04 13:49:46 deniger Exp $ + * @version $Id$ */ public abstract class CalqueFindActionAbstract extends EbliFindActionAbstract { @@ -69,7 +69,7 @@ public final EbliFindComponent createFindComponent(final EbliFindable _parent) { buildExpr(); - final CalqueFindComponentPolygone poly = new CalqueFindComponentPolygone(((ZEbliCalquesPanel) _parent).getDonneesCalque()); + final EbliFindComponent poly = buildPolygoneComponent(_parent); final EbliFindComponent first = (expr_ == null) ? buildSimpleComp() : buildExprComp(); if (layer_ instanceof ZCalqueSondeInterface) { final EbliFindComponent[] cmp = new EbliFindComponent[] { first, poly, new EbliFindComponentSonde() }; @@ -89,6 +89,11 @@ BuResource.BU.getToolIcon("rechercher"), getPolygonIcon() }); } + protected EbliFindComponent buildPolygoneComponent(final EbliFindable _parent) { + final CalqueFindComponentPolygone poly = new CalqueFindComponentPolygone(((ZEbliCalquesPanel) _parent).getDonneesCalque()); + return poly; + } + private String getPolygonStr() { return EbliLib.getS("Lignes ferm\xE9es"); } @@ -150,7 +155,7 @@ } - public final boolean find(final Object _idx, final String _action, final int _selOption, final EbliFindable _parent) { + public boolean find(final Object _idx, final String _action, final int _selOption, final EbliFindable _parent) { if (_action.startsWith(CalqueFindComponentPolygone.getID())) { return findPolygone(_idx, _action, _selOption, _parent); } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindActionAbstract.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindComponentPolygone.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindComponentPolygone.java 2009-02-20 19:27:45 UTC (rev 4489) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindComponentPolygone.java 2009-02-23 16:32:31 UTC (rev 4490) @@ -38,14 +38,16 @@ /** * @author fred deniger - * @version $Id: CalqueFindComponentPolygone.java,v 1.2 2007-05-04 13:49:46 deniger Exp $ + * @version $Id$ */ public class CalqueFindComponentPolygone implements EbliFindComponent { private final CalqueGISTreeModel model_; TreeSelectionModel selection_; JPanel pn_; BuComboBox cb_; - + BuLabel lbOptionSel_; + BuPanel pnCb; + public CalqueFindComponentPolygone(final ZEbliCalquesPanel _panel) { this(_panel.getDonneesCalque()); } @@ -57,9 +59,14 @@ EbliLib.getS("Au moins un sommet est s\xE9lectionn\xE9"), EbliLib.getS("le barycentre est s\xE9lectionn\xE9"), }); + builComponent(); } public JComponent getComponent() { + return pn_; + } + + private void builComponent() { if (pn_ == null) { pn_ = new BuPanel(new BuBorderLayout(0, 5)); pn_.setBorder(BuBorders.EMPTY3333); @@ -69,14 +76,13 @@ sc.setPreferredHeight(80); sc.setPreferredWidth(60); pn_.add(sc, BuBorderLayout.CENTER); - final BuPanel pnCb = new BuPanel(new BuVerticalLayout(1)); - pnCb.add(new BuLabel(EbliLib.getS("Une ligne est s\xE9lectionn\xE9e si:"))); + pnCb = new BuPanel(new BuVerticalLayout(1)); + pnCb.add(lbOptionSel_=new BuLabel(EbliLib.getS("Une ligne est s\xE9lectionn\xE9e si:"))); pnCb.add(cb_); pn_.add(pnCb, BuBorderLayout.SOUTH); } - return pn_; } - + public String getSearchId() { return getID() + CtuluLibString.getString(cb_.getSelectedIndex()); } @@ -98,5 +104,14 @@ public static String getID() { return ID; } + + /** + * Pour ne rechercher que sur des atomiques. + * @param _b true : Grise certaines options. + */ + public void setFindOnAtomic(boolean _b) { + cb_.setEnabled(!_b); + lbOptionSel_.setEnabled(!_b); + } } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindComponentPolygone.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindFlecheExpression.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindFlecheExpression.java 2009-02-20 19:27:45 UTC (rev 4489) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindFlecheExpression.java 2009-02-23 16:32:31 UTC (rev 4490) @@ -7,10 +7,13 @@ */ package org.fudaa.ebli.calque.find; +import java.util.List; + import org.nfunk.jep.Variable; import org.fudaa.ctulu.CtuluExpr; import org.fudaa.ctulu.CtuluLib; +import org.fudaa.ctulu.CtuluLibArray; import org.fudaa.ebli.calque.ZModeleSegment; import org.fudaa.ebli.commun.EbliLib; @@ -21,7 +24,7 @@ * Fournisseur d'expression pour les vecteurs. * * @author Fred Deniger - * @version $Id: CalqueFindFlecheExpression.java,v 1.5 2007-04-16 16:35:08 deniger Exp $ + * @version $Id$ */ public class CalqueFindFlecheExpression extends CalqueFindExpression { @@ -58,19 +61,25 @@ norm_ = _expr.addVar("vectNorm", EbliLib.getS("La norme du vecteur")); } - public void majVariable(final int _idx, final Variable[] _varToUpdate) { - super.majVariable(_idx, _varToUpdate); + public void majVariable(final int _idx, final Variable[] _varToUpdate, Object[] _values) { + super.majVariable(_idx, _varToUpdate, _values); final GrSegment seg = new GrSegment(new GrPoint(), new GrPoint()); ((ZModeleSegment) super.data_).segment(seg, _idx, true); double x = seg.o_.x_; double y = seg.o_.y_; - x_.setValue(CtuluLib.getDouble(x)); - y_.setValue(CtuluLib.getDouble(y)); + int ivar; + if ((ivar=CtuluLibArray.getIndex(x_,_varToUpdate))!=-1) + _values[ivar]=CtuluLib.getDouble(x); + if ((ivar=CtuluLibArray.getIndex(y_,_varToUpdate))!=-1) + _values[ivar]=CtuluLib.getDouble(y); x = seg.e_.x_ - x; y = seg.e_.y_ - y; - vx_.setValue(CtuluLib.getDouble(x)); - vy_.setValue(CtuluLib.getDouble(y)); - norm_.setValue(CtuluLib.getDouble(Math.sqrt(x * x + y * y))); + if ((ivar=CtuluLibArray.getIndex(vx_,_varToUpdate))!=-1) + _values[ivar]=CtuluLib.getDouble(x); + if ((ivar=CtuluLibArray.getIndex(vy_,_varToUpdate))!=-1) + _values[ivar]=CtuluLib.getDouble(y); + if ((ivar=CtuluLibArray.getIndex(norm_,_varToUpdate))!=-1) + _values[ivar]=CtuluLib.getDouble(Math.sqrt(x * x + y * y)); } } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindFlecheExpression.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindPointExpression.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindPointExpression.java 2009-02-20 19:27:45 UTC (rev 4489) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindPointExpression.java 2009-02-23 16:32:31 UTC (rev 4490) @@ -16,7 +16,7 @@ /** * @author Fred Deniger - * @version $Id: CalqueFindPointExpression.java,v 1.6 2007-04-16 16:35:08 deniger Exp $ + * @version $Id$ */ public class CalqueFindPointExpression extends CalqueFindExpression { @@ -42,16 +42,17 @@ } - public void majVariable(final int _idx, final Variable[] _varToUpdate) { - super.majVariable(_idx, _varToUpdate); - if (CtuluLibArray.containsObject(_varToUpdate, x_)) { - x_.setValue(CtuluLib.getDouble(((ZModelePoint) super.data_).getX(_idx))); + public void majVariable(final int _idx, final Variable[] _varToUpdate, Object[] _values) { + super.majVariable(_idx, _varToUpdate, _values); + int ivar; + if ((ivar=CtuluLibArray.getIndex(x_,_varToUpdate))!=-1) { + _values[ivar]=CtuluLib.getDouble(((ZModelePoint) super.data_).getX(_idx)); } - if (CtuluLibArray.containsObject(_varToUpdate, y_)) { - y_.setValue(CtuluLib.getDouble(((ZModelePoint) super.data_).getY(_idx))); + if ((ivar=CtuluLibArray.getIndex(y_,_varToUpdate))!=-1) { + _values[ivar]=CtuluLib.getDouble(((ZModelePoint) super.data_).getY(_idx)); } - if (CtuluLibArray.containsObject(_varToUpdate, z_)) { - z_.setValue(CtuluLib.getDouble(((ZModelePoint.ThreeDim) super.data_).getZ(_idx))); + if ((ivar=CtuluLibArray.getIndex(z_,_varToUpdate))!=-1) { + _values[ivar]=CtuluLib.getDouble(((ZModelePoint.ThreeDim) super.data_).getZ(_idx)); } } } \ No newline at end of file Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/find/CalqueFindPointExpression.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/EbliListeSelectionMulti.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/EbliListeSelectionMulti.java 2009-02-20 19:27:45 UTC (rev 4489) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/EbliListeSelectionMulti.java 2009-02-23 16:32:31 UTC (rev 4490) @@ -31,7 +31,7 @@ idxListSelection_ = new TIntObjectHashMap(_n); } - public boolean intersection(final EbliListeSelectionMulti _selection) { + public boolean intersection(final EbliListeSelectionMultiInterface _selection) { if ((_selection == null) || _selection.isEmpty()) { final boolean r = !isEmpty(); clear(); @@ -43,7 +43,7 @@ it.advance(); final int idx = it.key(); final CtuluListSelection thisSelection = (CtuluListSelection) it.value(); - final CtuluListSelection selection = _selection.get(idx); + final CtuluListSelection selection = (CtuluListSelection)_selection.getSelection(idx); r |= thisSelection.intersection(selection); if (thisSelection.remove((CtuluListSelection) it.value())) { r = true; @@ -113,13 +113,13 @@ return true; } - public boolean xor(final EbliListeSelectionMulti _m) { + public boolean xor(final EbliListeSelectionMultiInterface _m) { if ((_m == null) || _m.isEmpty()) { return false; } boolean r = false; - final TIntObjectIterator itxor = _m.idxListSelection_.iterator(); - for (int i = _m.idxListSelection_.size(); i-- > 0;) { + final TIntObjectIterator itxor = _m.getIterator(); + for (int i = _m.getNbListSelected(); i-- > 0;) { itxor.advance(); final int idx = itxor.key(); final CtuluListSelection e = (CtuluListSelection) itxor.value(); @@ -142,13 +142,13 @@ return r; } - public boolean add(final EbliListeSelectionMulti _m) { + public boolean add(final EbliListeSelectionMultiInterface _m) { if ((_m == null) || _m.isEmpty()) { return false; } boolean r = false; - final TIntObjectIterator it = _m.idxListSelection_.iterator(); - for (int i = _m.idxListSelection_.size(); i-- > 0;) { + final TIntObjectIterator it = _m.getIterator(); + for (int i = _m.getNbListSelected(); i-- > 0;) { it.advance(); final int idx = it.key(); final CtuluListSelection e = (CtuluListSelection) it.value(); @@ -182,13 +182,13 @@ return r; } - public boolean remove(final EbliListeSelectionMulti _m) { + public boolean remove(final EbliListeSelectionMultiInterface _m) { if ((_m == null) || _m.isEmpty()) { return false; } boolean r = false; - final TIntObjectIterator it = _m.idxListSelection_.iterator(); - for (int i = _m.idxListSelection_.size(); i-- > 0;) { + final TIntObjectIterator it = _m.getIterator(); + for (int i = _m.getNbListSelected(); i-- > 0;) { it.advance(); final int idx = it.key(); final CtuluListSelection thisSelection = get(idx); @@ -203,13 +203,13 @@ return r; } - public boolean setSelection(final EbliListeSelectionMulti _m) { + public boolean setSelection(final EbliListeSelectionMultiInterface _m) { clear(); if (_m == null) { return true; } - final TIntObjectIterator it = _m.idxListSelection_.iterator(); - for (int i = _m.idxListSelection_.size(); i-- > 0;) { + final TIntObjectIterator it = _m.getIterator(); + for (int i = _m.getNbListSelected(); i-- > 0;) { it.advance(); final CtuluListSelection newS = new CtuluListSelection((CtuluListSelection) it.value()); if (!newS.isEmpty()) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/EbliListeSelectionMultiInterface.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/EbliListeSelectionMultiInterface.java 2009-02-20 19:27:45 UTC (rev 4489) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/EbliListeSelectionMultiInterface.java 2009-02-23 16:32:31 UTC (rev 4490) @@ -13,15 +13,15 @@ import org.fudaa.ctulu.CtuluListSelection; /** - * Un tableau permettant d'associer plusieurs listes de selections et de faire des op\xE9rations dessus. - * On acc\xE8de aux diff\xE9rentes listes par leur indice. + * Une liste de selection. Cette liste associe a chaque geometrie selectionn\xE9e une liste de sous objets selectionn\xE9s. + * On acc\xE8de aux diff\xE9rentes listes de sous objets par l'indice de la geometrie selectionnee. * * @author deniger - * @version $Id: EbliListeSelectionMultiInterface.java,v 1.11.6.1 2008-02-05 17:02:26 bmarchan Exp $ + * @version $Id$ */ public interface EbliListeSelectionMultiInterface { /** - * @return le nombre de listes de selections gerees par cette interface + * @return le nombre de geometries selectionn\xE9es */ int getNbListSelected(); @@ -29,30 +29,34 @@ * @return L'iterateur sur les listes de selections. */ TIntObjectIterator getIterator(); + /** - * @param _i l'indice demande [0,getNbList[ - * @return la liste de selection pour cet indice + * @param _i l'indice de geometrie. + * @return la liste de selection pour cette geometrie */ - CtuluListSelectionInterface getSelection(int _i); + CtuluListSelectionInterface getSelection(int _idxGeom); /** - * @return Les indices des listes de selections, stock\xE9s sous la forme d'un tableau. + * @return Les indices de geometries, stock\xE9s sous la forme d'un tableau. */ int[] getIdxSelected(); + /** - * @return Les indices des listes de selections stock\xE9s sous la forme d'une liste de selection. + * @return Les indices de g\xE9ometries stock\xE9s sous la forme d'une liste de selection. */ CtuluListSelection getIdxSelection(); /** - * @return true si toutes les listes de selection sont vides. + * @return true si aucune g\xE9om\xE9trie selectionn\xE9e. */ boolean isEmpty(); + /** - * @return l'indice de la seule selection non vide. sinon -1. + * @return l'indice de la seule g\xE9ometrie selectionn\xE9e. sinon -1. */ int isSelectionInOneBloc(); + /** - * @return le nombre total de point selectionne + * @return le nombre total de sous objets selectionnes. */ int getNbSelectedItem(); } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/EbliListeSelectionMultiInterface.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindActionAbstract.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindActionAbstract.java 2009-02-20 19:27:45 UTC (rev 4489) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindActionAbstract.java 2009-02-23 16:32:31 UTC (rev 4490) @@ -10,6 +10,9 @@ import gnu.trove.TIntHashSet; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import java.util.StringTokenizer; import org.nfunk.jep.Variable; @@ -25,7 +28,7 @@ /** * @author deniger - * @version $Id: EbliFindActionAbstract.java,v 1.8 2007-05-04 13:49:44 deniger Exp $ + * @version $Id$ */ public abstract class EbliFindActionAbstract implements EbliFindActionInterface { @@ -82,7 +85,7 @@ protected EbliFindableItem layer_; protected CtuluExpr expr_; - EbliFindExpressionContainerInterface exprFiller_; + protected EbliFindExpressionContainerInterface exprFiller_; public EbliFindActionAbstract(final EbliFindableItem _layer) { layer_ = _layer; @@ -129,7 +132,8 @@ } final int nb = getNbValuesToTest(); selection = new CtuluListSelection(nb); - final Variable[] v = expr_.findUsedVar(); + final Variable[] vars =expr_.findUsedVar(); + final Object[] values=new Object[vars.length]; CtuluListSelection old = null; if (_selOption == EbliSelectionState.ACTION_AND || _selOption == EbliSelectionState.ACTION_DEL) { old = getOldSelection(); @@ -138,8 +142,11 @@ final int max = old == null ? nb - 1 : old.getMaxIndex(); for (int i = max; i >= min; i--) { if (old == null || old.isSelected(i)) { - if (v != null) { - exprFiller_.majVariable(i, v); + if (vars != null) { + exprFiller_.majVariable(i, vars, values); + for (int j=0; j<vars.length; j++) { + vars[j].setValue(values[j]); + } } final int val = (int) expr_.getParser().getValue(); if (val == 1) { Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindActionAbstract.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindActionInterface.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindActionInterface.java 2009-02-20 19:27:45 UTC (rev 4489) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindActionInterface.java 2009-02-23 16:32:31 UTC (rev 4490) @@ -11,12 +11,15 @@ import org.fudaa.ebli.geometrie.GrBoite; /** + * Une action de recherche. Cette action de recherche est associ\xE9e \xE0 un calque. + * Elle construit les composants panneaux de recherche. * @author deniger - * @version $Id: EbliFindActionInterface.java,v 1.2 2006-12-06 09:03:36 deniger Exp $ + * @version $Id$ */ public interface EbliFindActionInterface { /** + * Recherche et effectue la selection. * @param _s la chaine a chercher * @param _findId l'action * @param _selOption l'option pour la selection Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindActionInterface.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindComponentComposite.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindComponentComposite.java 2009-02-20 19:27:45 UTC (rev 4489) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindComponentComposite.java 2009-02-23 16:32:31 UTC (rev 4490) @@ -14,8 +14,9 @@ import javax.swing.event.ChangeListener; /** + * Un composant de recherche composite, pouvant gerer plusieurs panneaux de recherche. * @author Fred Deniger - * @version $Id: EbliFindComponentComposite.java,v 1.4 2006-12-06 09:03:36 deniger Exp $ + * @version $Id$ */ public class EbliFindComponentComposite extends JTabbedPane implements EbliFindComponent { Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindComponentComposite.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindComponentExpr.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindComponentExpr.java 2009-02-20 19:27:45 UTC (rev 4489) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindComponentExpr.java 2009-02-23 16:32:31 UTC (rev 4490) @@ -39,8 +39,9 @@ import org.fudaa.ebli.ressource.EbliResource; /** + * Un panneau pour la recherche suivant une expression (formule). * @author deniger - * @version $Id: EbliFindComponentExpr.java,v 1.9 2007-05-04 13:49:44 deniger Exp $ + * @version $Id$ */ public class EbliFindComponentExpr extends BuPanel implements EbliFindComponent, ActionListener { @@ -157,4 +158,21 @@ return btIdx_.isSelected() ? "IDX" : "EXPR"; } + /** + * Redefinit l'expression. L'expression conditionne les variables utilisables dans le panneau. + * @param _expr L'expression. + */ + public void setExpr(CtuluExpr _expr) { + expr_=_expr; + txtFind_.setText(""); + } + + /** + * Pour une recherche uniquement sur des atomiques. Certaines options sont gris\xE9es. + * @param _b True : Recherche sur des atomiques. + */ + public void setFindOnAtomic(boolean _b) { + btIdx_.setEnabled(!_b); + if (_b) btExpr_.setSelected(true); + } } \ No newline at end of file Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindComponentExpr.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindDialog.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindDialog.java 2009-02-20 19:27:45 UTC (rev 4489) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindDialog.java 2009-02-23 16:32:31 UTC (rev 4490) @@ -39,7 +39,7 @@ /** * @author deniger - * @version $Id: EbliFindDialog.java,v 1.16 2007-06-05 08:58:39 deniger Exp $ + * @version $Id$ */ public class EbliFindDialog extends BuPanel implements ActionListener, ItemListener, PropertyChangeListener { @@ -200,6 +200,9 @@ add(btpn, BuBorderLayout.SOUTH); } + /** + * Appel\xE9 quand il y a eu changement de calque de recherche. + */ private void updateAll() { pnCenter_.remove(active_); final Object cq = cbSelectModeModel_.getSelectedItem(); @@ -319,7 +322,7 @@ final Dimension dialogSize = dial_.getSize(); final Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); dial_.setLocation((screenSize.width - dialogSize.width) / 2, (screenSize.height - dialogSize.height) / 2); - dial_.show(); + dial_.setVisible(true); } public void afficheInutileTest() { Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindDialog.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionComposite.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionComposite.java 2009-02-20 19:27:45 UTC (rev 4489) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionComposite.java 2009-02-23 16:32:31 UTC (rev 4490) @@ -13,7 +13,7 @@ /** * @author Fred Deniger - * @version $Id: EbliFindExpressionComposite.java,v 1.3 2006-07-13 13:35:47 deniger Exp $ + * @version $Id$ */ public class EbliFindExpressionComposite implements EbliFindExpressionContainerInterface { @@ -37,9 +37,9 @@ } - public void majVariable(final int _idx,final Variable[] _varToUpdate){ - normalSupplier_.majVariable(_idx, _varToUpdate); - postSupplier_.majVariable(_idx, _varToUpdate); + public void majVariable(final int _idx,final Variable[] _varToUpdate, Object[] _values){ + normalSupplier_.majVariable(_idx, _varToUpdate, _values); + postSupplier_.majVariable(_idx, _varToUpdate, _values); } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionComposite.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionContainerInterface.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionContainerInterface.java 2009-02-20 19:27:45 UTC (rev 4489) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionContainerInterface.java 2009-02-23 16:32:31 UTC (rev 4490) @@ -12,12 +12,24 @@ import org.fudaa.ctulu.CtuluExpr; /** + * Une classe a implementer pour chaque calque qui autorise une recherche par la boite de dialogue rechercher. * @author Fred Deniger - * @version $Id: EbliFindExpressionContainerInterface.java,v 1.2 2006-04-12 15:28:02 deniger Exp $ + * @version $Id$ */ public interface EbliFindExpressionContainerInterface { + /** + * Initialise le container d'expression avec les variables pouvant \xEAtre trait\xE9es par le calque. + * @param _exp Le container d'expression + */ void initialiseExpr(CtuluExpr _exp); - void majVariable(int _idx,Variable[] _varToUpdate); - + + /** + * Initialise la valeur de chaque variable pour l'indice d'objet donn\xE9. Cette m\xE9thode est appel\xE9e pour chaque objet lors du + * lancement de la selection. + * @param _idx L'indice de l'objet dans le calque. + * @param _varToUpdate Les variables dont la valeur est a intialiser. + * @param _values Les valeurs pour les variables, dans le m\xEAme ordre. + */ + void majVariable(int _idx,Variable[] _varToUpdate, Object[] _values); } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionContainerInterface.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionDefault.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionDefault.java 2009-02-20 19:27:45 UTC (rev 4489) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionDefault.java 2009-02-23 16:32:31 UTC (rev 4490) @@ -7,16 +7,15 @@ */ package org.fudaa.ebli.find; -import org.nfunk.jep.Variable; - import org.fudaa.ctulu.CtuluExpr; import org.fudaa.ctulu.CtuluLib; - +import org.fudaa.ctulu.CtuluLibArray; import org.fudaa.ebli.commun.EbliLib; +import org.nfunk.jep.Variable; /** * @author Fred Deniger - * @version $Id: EbliFindExpressionDefault.java,v 1.5 2007-04-16 16:35:08 deniger Exp $ + * @version $Id$ */ public class EbliFindExpressionDefault implements EbliFindExpressionContainerInterface { @@ -45,8 +44,11 @@ } - public void majVariable(final int _idx, final Variable[] _varToUpdate) { - i_.setValue(CtuluLib.getDouble(_idx + 1)); + public void majVariable(final int _idx, final Variable[] _varToUpdate, Object[] _values) { + int i=CtuluLibArray.getIndex(i_,_varToUpdate); + if (i!=-1) + _values[i]=CtuluLib.getDouble(_idx + 1); +// i_.setValue(CtuluLib.getDouble(_idx + 1)); } } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindExpressionDefault.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindable.java 2009-02-20 19:27:45 UTC (rev 4489) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/find/EbliFindable.java 2009-02-23 16:32:31 UTC (rev 4490) @@ -13,8 +13,9 @@ import org.fudaa.ebli.geometrie.GrBoite; /** + * Un ZEbliCalquesPanel permettant la recherche sur des calques. * @author Fred Deniger - * @version $Id: Ebli... [truncated message content] |