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. |