You can subscribe to this list here.
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(46) |
Jul
(37) |
Aug
(154) |
Sep
(140) |
Oct
(132) |
Nov
(104) |
Dec
(67) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2009 |
Jan
(113) |
Feb
(73) |
Mar
(102) |
Apr
(106) |
May
(114) |
Jun
(67) |
Jul
(116) |
Aug
(48) |
Sep
(108) |
Oct
(296) |
Nov
(56) |
Dec
(53) |
2010 |
Jan
(95) |
Feb
(31) |
Mar
(40) |
Apr
(12) |
May
(10) |
Jun
(27) |
Jul
(19) |
Aug
(81) |
Sep
(48) |
Oct
(45) |
Nov
(40) |
Dec
(7) |
2011 |
Jan
(16) |
Feb
(32) |
Mar
(55) |
Apr
(38) |
May
(24) |
Jun
(37) |
Jul
(12) |
Aug
(16) |
Sep
(97) |
Oct
(90) |
Nov
(101) |
Dec
(89) |
2012 |
Jan
(18) |
Feb
(2) |
Mar
(54) |
Apr
(69) |
May
(97) |
Jun
(131) |
Jul
(70) |
Aug
(48) |
Sep
(48) |
Oct
(119) |
Nov
(194) |
Dec
(60) |
2013 |
Jan
(73) |
Feb
(35) |
Mar
(42) |
Apr
(28) |
May
(7) |
Jun
(17) |
Jul
(27) |
Aug
(10) |
Sep
(38) |
Oct
(12) |
Nov
(4) |
Dec
(16) |
2014 |
Jan
(33) |
Feb
(37) |
Mar
(19) |
Apr
(3) |
May
(47) |
Jun
(26) |
Jul
(22) |
Aug
|
Sep
(10) |
Oct
(30) |
Nov
(24) |
Dec
(19) |
2015 |
Jan
(13) |
Feb
(16) |
Mar
(36) |
Apr
(19) |
May
(5) |
Jun
(5) |
Jul
(3) |
Aug
(11) |
Sep
(22) |
Oct
(7) |
Nov
(14) |
Dec
|
2016 |
Jan
|
Feb
(26) |
Mar
(13) |
Apr
(61) |
May
|
Jun
|
Jul
(4) |
Aug
|
Sep
|
Oct
(27) |
Nov
(14) |
Dec
(21) |
2017 |
Jan
(30) |
Feb
(4) |
Mar
(3) |
Apr
(5) |
May
(69) |
Jun
(29) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <emm...@us...> - 2009-01-27 14:45:48
|
Revision: 4405 http://fudaa.svn.sourceforge.net/fudaa/?rev=4405&view=rev Author: emmanuel_martin Date: 2009-01-27 14:45:39 +0000 (Tue, 27 Jan 2009) Log Message: ----------- Tache #136 : "Pouvoir r?\195?\169ordonner un point d'une polyligne par une fonction monter/descendre dans la fen?\195?\170tre du tableau d'?\195?\169dition" Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliSingleObjectEditorPanel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java Added Paths: ----------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/TableModelModeleAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/TableModelModeleAdapterErrorListener.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliSingleObjectEditorPanel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliSingleObjectEditorPanel.java 2009-01-26 22:59:34 UTC (rev 4404) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/EbliSingleObjectEditorPanel.java 2009-01-27 14:45:39 UTC (rev 4405) @@ -11,7 +11,10 @@ import java.awt.Color; import java.awt.Container; import java.awt.Dimension; +import java.awt.FlowLayout; import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.HashMap; @@ -25,6 +28,8 @@ import javax.swing.JTabbedPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.event.TableModelEvent; @@ -32,7 +37,6 @@ import javax.swing.table.AbstractTableModel; import javax.swing.table.TableModel; -import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ctulu.CtuluCommandComposite; import org.fudaa.ctulu.CtuluCommandContainer; import org.fudaa.ctulu.CtuluCommandManager; @@ -55,6 +59,8 @@ import org.fudaa.ebli.commun.EbliComponentFactory; import org.fudaa.ebli.commun.EbliFormatterInterface; import org.fudaa.ebli.commun.EbliLib; +import org.fudaa.ebli.commun.TableModelModeleAdapter; +import org.fudaa.ebli.commun.TableModelModeleAdapterErrorListener; import org.fudaa.ebli.courbe.EGAxeHorizontal; import org.fudaa.ebli.courbe.EGAxeVertical; import org.fudaa.ebli.courbe.EGCourbeModelProfile; @@ -64,9 +70,12 @@ import org.fudaa.ebli.courbe.EGGrapheSimpleModel; import com.memoire.bu.BuBorderLayout; +import com.memoire.bu.BuButton; +import com.memoire.bu.BuCheckBox; import com.memoire.bu.BuGridLayout; import com.memoire.bu.BuLabel; import com.memoire.bu.BuPanel; +import com.memoire.bu.BuResource; import com.memoire.bu.BuScrollPane; import com.memoire.bu.BuSplit2Pane; import com.memoire.fu.FuLog; @@ -95,14 +104,16 @@ */ public class TableRepresentation extends BuPanel { - // Repr\xE9sentation graphique dans le cas o\xF9 on a un point unique \xE0 repr\xE9senter + /** Repr\xE9sentation graphique dans le cas o\xF9 on a un point unique \xE0 repr\xE9senter. */ private JComponent tfX_, tfY_; - // Repr\xE9sentation graphique dans le cas o\xF9 on plusieurs points \xE0 repr\xE9senter + /** Repr\xE9sentation graphique dans le cas o\xF9 on plusieurs points \xE0 repr\xE9senter. */ private JTable table_; - // Vrai si l'objet est en mode repr\xE9sentation par tableau + /** Vrai si l'objet est en mode repr\xE9sentation par tableau. */ private boolean isTableStat_; - // Formateur g\xE9rant le format des informations \xE0 afficher + /** Formateur g\xE9rant le format des informations \xE0 afficher. */ private final EbliFormatterInterface xyFormatter_; + /** Le checkBox indiquant le mode d'application des changements. */ + protected BuCheckBox modeChangement_; /** * @param _editAttribut @@ -156,22 +167,74 @@ setLayout(new BuBorderLayout()); // Construction de la table table_=new CtuluTable(); - table_.setModel(model_); - model_.updateCellEditor(table_); + table_.setModel(modelData_); + modelData_.updateEditorAndRenderer(table_); + // Gestion des erreurs + setErrorText(modelData_.getErrorMessage()); + modelData_.addTableModelModeleAdapterErrorListener(new TableModelModeleAdapterErrorListener() { + public void modeleAdapterError(String _message) { + setErrorText(_message); + } + public void modeleAdpaterNoError() { + setErrorText(""); + } + }); + // Container des \xE9l\xE9ments en dessous du tableau + Container footCont=new Container(); + footCont.setLayout(new BorderLayout()); + // Construction des boutons de d\xE9placement des points + Container btCont=new Container(); + btCont.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0)); + BuButton btUp_=new BuButton(BuResource.BU.getIcon(EbliLib.getS("monter"))); + btUp_.setToolTipText(EbliLib.getS("D\xE9cr\xE9menter l'index du point")); + BuButton btDown_=new BuButton(BuResource.BU.getIcon(EbliLib.getS("descendre"))); + btDown_.setToolTipText(EbliLib.getS("Incr\xE9menter l'index du point")); + btUp_.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + int[] newSelection=modelData_.movePoints(table_.getSelectedRows(), -1); + // R\xE9tablissement de la selection dans le tableau + table_.getSelectionModel().clearSelection(); + for(int i=0;i<newSelection.length;i++) + table_.getSelectionModel().addSelectionInterval(newSelection[i], newSelection[i]); + } + }); + btDown_.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + int[] newSelection=modelData_.movePoints(table_.getSelectedRows(), 1); + // R\xE9tablissement de la selection dans le tableau + table_.getSelectionModel().clearSelection(); + for(int i=0;i<newSelection.length;i++) + table_.getSelectionModel().addSelectionInterval(newSelection[i], newSelection[i]); + } + }); + btCont.add(new BuLabel(EbliLib.getS("Changement de l'ordre des points selection\xE9s : "))); + btCont.add(btUp_); + btCont.add(btDown_); + footCont.add(btCont, BuBorderLayout.WEST); + // CheckBox permettant de changer le mode d'application des changements + modeChangement_=new BuCheckBox(EbliLib.getS("Mode diff\xE9r\xE9")); + modeChangement_.setToolTipText(EbliLib.getS("<html>En mode diff\xE9r\xE9 : les actions ne sont appliqu\xE9es qu'\xE0 la fin.<br>En mode imm\xE9diat : les actions sont appliqu\xE9es imm\xE9diatement.</html>")); + modeChangement_.addChangeListener(new ChangeListener() { + public void stateChanged(ChangeEvent e) { + if(modeChangement_.isSelected()) + modelData_.setDeferedModifications(true); + else + modelData_.setDeferedModifications(false); + } + }); + footCont.add(modeChangement_, BuBorderLayout.EAST); + add(footCont, BuBorderLayout.SOUTH); // Ajout des \xE9l\xE9ments \xE0 l'interface add(new BuScrollPane(table_), BuBorderLayout.CENTER); } } - + /** * @return la s\xE9quence des coordonn\xE9es modifi\xE9es. */ protected CoordinateSequence getNewCoordinate() { - // Cas o\xF9 on a repr\xE9sent\xE9 un ensemble de points - if (isTableStat_) - return ((EbliAtomicCoordinatesTableModel.Line)model_).getNewCoordinateSequence(); // Cas o\xF9 on a repr\xE9sent\xE9 un point unique - else if (zone_.isGeomModifiable()) { + if (zone_.isGeomModifiable()) { Double newX=null, newY=null; if (!xyFormatter_.isEmpty(tfX_)&&!xyFormatter_.isEmpty(tfY_)) newX=(Double)xyFormatter_.getValue(tfX_); @@ -185,30 +248,28 @@ /** * Enregistre les modifications effectu\xE9es. */ - public void apply() { + public void apply(CtuluCommandContainer cmd) { boolean modification=false; // true si une modification a \xE9t\xE9 faite - // Cr\xE9ation d'une nouvelle commande - final CtuluCommandComposite cmp=(cmd_==null ? null:new CtuluCommandComposite()); // Application des modifications des attributs globaux for (int i=globalAttr_.length-1; i>=0; i--) { final Object val=globalAttrEditor_[i].getValue(globalComp_[i]); // Si une modificatin a \xE9t\xE9 faite, modification est mis \xE0 true, sauf si // cette modification est faite sur ETAT_GEOM modification = modification||(!val.equals(globalAttr_[i].getObjectValueAt(idx_))&&globalAttr_[i].getAttribute()!=GISAttributeConstants.ETAT_GEOM); - globalAttr_[i].setObject(idx_, val, cmp); - + if(!globalAttr_[i].getObjectValueAt(idx_).equals(val)&&globalAttr_[i].getAttribute()!=GISAttributeConstants.ETAT_GEOM) + globalAttr_[i].setObject(idx_, val, cmd); } // Cas du tableau modifi\xE9 - if (isTableStat_){ - if(model_.isModified()){ - modification = true; - model_.apply(cmp); - } + if (isTableStat_) { + CtuluCommandContainer c=modelData_.getUndoRedoContainer(); + modelData_.setUndoRedoContainer(cmd); + modelData_.flushData(); + modelData_.setUndoRedoContainer(c); } // Cas du point unique modifi\xE9 else if (zone_.isGeomModifiable()&&!zone_.getCoordinateSequence(idx_).equals(getNewCoordinate())){ modification=true; - zone_.setCoordinateSequence(idx_, getNewCoordinate(), cmp); + zone_.setCoordinateSequence(idx_, getNewCoordinate(), cmd); } // Si une modification a \xE9t\xE9 faite, l'attribut 'Etat' de la g\xE9om\xE9trie passe \xE0 modifi\xE9 if (modification) { @@ -217,11 +278,8 @@ while (!found&&++i<globalAttr_.length) found=globalAttr_[i].getAttribute()==GISAttributeConstants.ETAT_GEOM; if(found) - globalAttr_[i].setObject(idx_, GISAttributeConstants.ATT_VAL_ETAT_MODI, cmp); + globalAttr_[i].setObject(idx_, GISAttributeConstants.ATT_VAL_ETAT_MODI, cmd); } - // Ajout de la nouvelle commande \xE0 cmd_ - if (cmd_!=null) - cmd_.addCmd(cmp.getSimplify()); } /** @@ -259,32 +317,17 @@ */ public LimitedTableRepresentation(EbliFormatterInterface _xyFormatter){ xyFormatter_=_xyFormatter; - model_.addTableModelListener(this); + modelData_.addTableModelListener(this); } - /* - * (non-Javadoc) - * - * @see javax.swing.table.TableModel#getColumnCount() - */ public int getColumnCount() { return 2; } - /* - * (non-Javadoc) - * - * @see javax.swing.table.TableModel#getRowCount() - */ public int getRowCount() { - return model_.getRowCount(); + return modelData_.getRowCount(); } - /* - * (non-Javadoc) - * - * @see javax.swing.table.TableModel#getValueAt(int, int) - */ public Object getValueAt(int _rowIndex, int _columnIndex) { switch (_columnIndex) { case 0: @@ -299,7 +342,7 @@ public boolean isCellEditable(final int _rowIndex, final int _columnIndex) { if (_columnIndex == 0) return false; - return model_.isCellEditable(_rowIndex, _columnIndex); + return modelData_.isCellEditable(_rowIndex, _columnIndex); } public void setValueAt(final Object _value, final int _rowIndex, final int _columnIndex) { @@ -312,15 +355,12 @@ case 0: return EbliLib.getS(EbliLib.getS("Abscisse")); case 1: - return model_.getColumnName(zCol_); + return modelData_.getColumnName(zCol_); default: return null; } } - /* (non-Javadoc) - * @see javax.swing.event.TableModelListener#tableChanged(javax.swing.event.TableModelEvent) - */ public void tableChanged(TableModelEvent _e) { int col=_e.getColumn(); if (_e.getColumn()==zCol_) @@ -348,10 +388,13 @@ private CtuluTable tableauVue_; // Selection update private boolean disable; + /** Indice de la colonne z. */ + protected int zCol_; public CourbeRepresentation() { disable = false; - model_.addTableModelListener(this); + zCol_=zone_.getIndiceOf(zone_.getAttributeIsZ())+3; // l'index + les colonnes index, x et y + modelData_.addTableModelListener(this); // Construction de la courbe \\ setPreferredSize(new Dimension(650,450)); EGGrapheSimpleModel grapheModel=new EGGrapheSimpleModel(); @@ -365,7 +408,7 @@ // Axe des Y axeY_=new EGAxeVertical(); axeY_.setGraduations(true); - axeY_.setTitre(EbliLib.getS("Ordonn\xE9e") + " : " + model_.getColumnName(zCol_)); + axeY_.setTitre(EbliLib.getS("Ordonn\xE9e") + " : " + modelData_.getColumnName(zCol_)); axeY_.setUnite(EbliLib.getS("m\xE8tre")); DecimalFormat df=CtuluLib.getDecimalFormat(); df.setMaximumFractionDigits(2); @@ -400,13 +443,13 @@ } } // Construction du tableau \\ - LimitedTableRepresentation tableau = new LimitedTableRepresentation(model_.xyFormatter_); + LimitedTableRepresentation tableau = new LimitedTableRepresentation(modelData_.getFormatter()); tableauVue_ = new CtuluTable(); tableauVue_.setModel(tableau); tableauVue_.getSelectionModel().addListSelectionListener(this); // Met le bon \xE9diteurs dans le tableau pour l'attribut z tableauVue_.getColumnModel().getColumn(1) - .setCellEditor(model_.modeles_[zInd_].getAttribute().getEditor().createTableEditorComponent()); + .setCellEditor(zone_.getAttributeIsZ().getEditor().createTableEditorComponent()); // Ajout au panel \\ BuScrollPane scrollPane = new BuScrollPane(tableauVue_); BuPanel left = new BuPanel(); @@ -421,7 +464,7 @@ } public int getNbValues() { - return model_.getRowCount(); + return modelData_.getRowCount(); } public double getX(int _id) { @@ -429,11 +472,11 @@ } public double getY(int _id) { - return (Double)model_.getValueAt(_id, zCol_); + return (Double)modelData_.getValueAt(_id, zCol_); } public void setY(int _id, double _value, CtuluCommandContainer _cmd) { - model_.setValueAt(new Double(_value), _id, zCol_); + modelData_.setValueAt(new Double(_value), _id, zCol_); } /** @@ -451,36 +494,32 @@ double oldLengthPolyligne = lengthPolyligne_; double oldMaxZ = maxZ_; lengthPolyligne_=0; - courbeModelIndCoordX_=new HashMap<Integer, Double>(model_.getRowCount()); - double lastX=Double.parseDouble((String)model_.getValueAt(0, 1)); - double lastY=Double.parseDouble((String)model_.getValueAt(0, 2)); - double currentX, currentY; - // Remplissage et construction des attributs - courbeModelIndCoordX_.put(0, lengthPolyligne_); - maxZ_=getY(0); // Le Y de getY (y de la courbe) est le Z du model - for (int i=1; i<model_.getRowCount(); i++) { - currentX=Double.parseDouble((String)model_.getValueAt(i, 1)); - currentY=Double.parseDouble((String)model_.getValueAt(i, 2)); - lengthPolyligne_+=Math.sqrt(Math.pow(lastX-currentX, 2)+Math.pow(lastY-currentY, 2)); - courbeModelIndCoordX_.put(i, lengthPolyligne_); - maxZ_=Math.max(maxZ_, (Double)model_.getValueAt(i, 3)); - lastX=currentX; - lastY=currentY; + courbeModelIndCoordX_=new HashMap<Integer, Double>(modelData_.getRowCount()); + if (modelData_.getRowCount()>0) { + double lastX=(Double)modelData_.getValueAt(0, 1); + double lastY=(Double)modelData_.getValueAt(0, 2); + double currentX, currentY; + // Remplissage et construction des attributs + courbeModelIndCoordX_.put(0, lengthPolyligne_); + maxZ_=getY(0); // Le Y de getY (y de la courbe) est le Z du model + for (int i=1; i<modelData_.getRowCount(); i++) { + currentX=(Double)modelData_.getValueAt(i, 1); + currentY=(Double)modelData_.getValueAt(i, 2); + lengthPolyligne_+=Math.sqrt(Math.pow(lastX-currentX, 2)+Math.pow(lastY-currentY, 2)); + courbeModelIndCoordX_.put(i, lengthPolyligne_); + maxZ_=Math.max(maxZ_, (Double)modelData_.getValueAt(i, 3)); + lastX=currentX; + lastY=currentY; + } + if (oldLengthPolyligne!=lengthPolyligne_) + axeX_.setBounds(0, lengthPolyligne_); + if (grapheVue_.isAutoRestore()) { + if (oldMaxZ!=maxZ_) + axeY_.setBounds(0, maxZ_); + } } - if(oldLengthPolyligne != lengthPolyligne_) - axeX_.setBounds(0, lengthPolyligne_); - if(grapheVue_.isAutoRestore()){ - if(oldMaxZ != maxZ_) - axeY_.setBounds(0, maxZ_); - } } - /* - * (non-Javadoc) - * - * @seejavax.swing.event.TableModelListener#tableChanged(javax.swing.event. - * TableModelEvent) - */ public void tableChanged(TableModelEvent e) { generateCoordX(); if(grapheVue_.isAutoRestore()) @@ -489,9 +528,6 @@ grapheVue_.fullRepaint(); } - /* (non-Javadoc) - * @see org.fudaa.ctulu.CtuluListSelectionListener#listeSelectionChanged(org.fudaa.ctulu.CtuluListSelectionEvent) - */ public void listeSelectionChanged(CtuluListSelectionEvent _e) { // Un changement de selection a \xE9t\xE9 effectu\xE9 dans la courbe \\ if (!disable) { @@ -508,9 +544,6 @@ } } - /* (non-Javadoc) - * @see javax.swing.event.ListSelectionListener#valueChanged(javax.swing.event.ListSelectionEvent) - */ public void valueChanged(ListSelectionEvent _e) { // Un changement de selection a \xE9t\xE9 effectu\xE9 dans le tableau \\ if (!disable) { @@ -542,10 +575,8 @@ private TableRepresentation tableRep_; // Onglet repr\xE9sentant une information sous forme de courbe private CourbeRepresentation courbeRep_; - // Model central pour les deux repr\xE9sentations - private EbliAtomicCoordinatesTableModel model_; - private int zCol_; // Num\xE9ro de la colonne contenant les z dans le model - private int zInd_; // Num\xE9ro de l'index des z dans model_.modeles_ + /** Le modele de donn\xE9es \xE0 utiliser comme model de tabelau */ + protected TableModelModeleAdapter modelData_; // Tableau des attributs globaux private GISAttributeModel[] globalAttr_; // Tableau des editeurs d'attributs, cr\xE9e en utilisant globalAttr_ @@ -561,13 +592,11 @@ * @param _editAttribut * @param _xyFormatter */ - public EbliSingleObjectEditorPanel(final ZModeleEditable _zone, final int _idx, final boolean _editAttribut, + public EbliSingleObjectEditorPanel(final ZModeleEditable _model, final int _idx, final boolean _editAttribut, final boolean _editVertexAttribut, final EbliFormatterInterface _xyFormatter) { - super(); idx_=_idx; - zone_=_zone.getGeomData(); - modeleSrc_=_zone; - zInd_ = -1; + zone_=_model.getGeomData(); + modeleSrc_=_model; // Construction de la table des attributs globaux (globalAttr_) \\ setLayout(new BuBorderLayout()); if (_editAttribut) { @@ -608,33 +637,19 @@ // Contruction du model de donn\xE9es commun aux deux repr\xE9sentations GISAttributeDouble zAttr=zone_.getAttributeIsZ(); if (!(zone_.getGeometry(idx_) instanceof GISPoint)&&zAttr!=null&&zAttr.isAtomicValue()) { - model_=new EbliAtomicCoordinatesTableModel.Line(_xyFormatter, modeleSrc_.getGeomData(), idx_, null, _editVertexAttribut, - modeleSrc_); - boolean found=false; - // Construction de zInd_ - int k=0; - while (!found&&k<model_.modeles_.length) { - found=model_.modeles_[k].getAttribute()==zAttr; - k++; - } - if (found){ // forc\xE9ment vrai parce que zAttr est non null - zInd_=--k; - // construction de zCol_ - zCol_=zInd_+3; // zInd_ + colonne index, x et y - // Gestionnaire d'onglet - tabbedPane_=new JTabbedPane(); - // Les onglets - tableRep_=new TableRepresentation(_editAttribut, _editVertexAttribut, _xyFormatter); - courbeRep_=new CourbeRepresentation(); - // Ajout - tabbedPane_.add(EbliLib.getS("Table"), tableRep_); - tabbedPane_.add(EbliLib.getS("Courbe"), courbeRep_); - add(tabbedPane_, BuBorderLayout.CENTER); - } + modelData_=new TableModelModeleAdapter(modeleSrc_, idx_, _xyFormatter, new CtuluCommandComposite(), _editVertexAttribut); + // Gestionnaire d'onglet + tabbedPane_=new JTabbedPane(); + // Les onglets + tableRep_=new TableRepresentation(_editAttribut, _editVertexAttribut, _xyFormatter); + courbeRep_=new CourbeRepresentation(); + // Ajout + tabbedPane_.add(EbliLib.getS("Table"), tableRep_); + tabbedPane_.add(EbliLib.getS("Courbe"), courbeRep_); + add(tabbedPane_, BuBorderLayout.CENTER); } - if(zInd_ == -1) { - model_=new EbliAtomicCoordinatesTableModel.Line(_xyFormatter, modeleSrc_.getGeomData(), idx_, null, _editVertexAttribut, - modeleSrc_); + if (zone_.getIndiceOf(zAttr)==-1) { + modelData_=new TableModelModeleAdapter(modeleSrc_, idx_, _xyFormatter, new CtuluCommandComposite(), _editVertexAttribut); tableRep_=new TableRepresentation(_editAttribut, _editVertexAttribut, _xyFormatter); add(tableRep_, BuBorderLayout.CENTER); } @@ -662,22 +677,29 @@ public boolean hasTab(){ return tabbedPane_!=null; } - - /** - * @return la s\xE9quence des coordonn\xE9es modifi\xE9es. - */ - protected CoordinateSequence getNewCoordinate() { - return tableRep_.getNewCoordinate(); - } /** * Enregistre les modifications effectu\xE9es. Cette m\xE9thode est automatiquement * appell\xE9e lors du click sur le bouton 'Valider' */ public void apply() { + CtuluCommandComposite cmd=new CtuluCommandComposite("Modifications de la g\xE9om\xE9trie"); if (tableRep_!=null) - tableRep_.apply(); + tableRep_.apply(cmd); + cmd.addCmd(((CtuluCommandComposite) modelData_.getUndoRedoContainer()).getSimplify()); + if(getCmd()!=null) + getCmd().addCmd(cmd.getSimplify()); + // D\xE9active le model + modelData_.setSource(null, -1); } + + @Override + public void cancel() { + super.cancel(); + // D\xE9active le model + modelData_.setSource(null, -1); + ((CtuluCommandComposite) modelData_.getUndoRedoContainer()).undo(); + } public final CtuluCommandContainer getCmd() { return cmd_; @@ -689,20 +711,13 @@ /** * Appell\xE9 lors du click sur le bouton 'valider' pour sortir de la fen\xEAtre. - * Retourne vrai si toutes les modification sont valides. + * Retourne vrai si toutes les modifications sont valides. */ public boolean valide() { if (tableRep_!=null) { tableRep_.stopCellEditing(); - final CoordinateSequence s=getNewCoordinate(); - if (s!=null) { - final CtuluAnalyze ana=new CtuluAnalyze(); - final boolean valide=modeleSrc_.isCoordinateValid(s, ana); - if (!valide) { - setErrorText(ana.getFatalError().getMessage()); - } - return valide; - } + if(modelData_.getErrorMessage()!=null) + return false; } return true; } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java 2009-01-26 22:59:34 UTC (rev 4404) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditorDefault.java 2009-01-27 14:45:39 UTC (rev 4405) @@ -783,9 +783,8 @@ */ protected void editSingleObject(final ZCalqueEditable _target) { final int idxSelected = ((ZCalqueAffichageDonnees) _target).getLayerSelection().getMaxIndex(); - final boolean editAttribute = true; final EbliSingleObjectEditorPanel ed = new EbliSingleObjectEditorPanel(_target.getModelEditable(), idxSelected, - true, editAttribute, getXYFormatter()); + true, true, getXYFormatter()); ed.setCmd(getMng()); if(ed.hasTab()) ed.setSelectedTab(SingleObjectEditorPanel_selectedTab_); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2009-01-26 22:59:34 UTC (rev 4404) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleLigneBriseeEditable.java 2009-01-27 14:45:39 UTC (rev 4405) @@ -523,8 +523,8 @@ s = GISGeometryFactory.INSTANCE.createLineString(_seq); } if (!s.isValid()) { - _analyze.addFatalError(CtuluLib.getS("La nouvelle ligne bris\xE9e n'est pas valide", - CtuluLibString.TROIS)); + if (_analyze!=null) + _analyze.addFatalError(CtuluLib.getS("La nouvelle ligne bris\xE9e n'est pas valide", CtuluLibString.TROIS)); return false; } return true; Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/TableModelModeleAdapter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/TableModelModeleAdapter.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/TableModelModeleAdapter.java 2009-01-27 14:45:39 UTC (rev 4405) @@ -0,0 +1,819 @@ +/* + * @creation 23 janv. 2009 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2009 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.ebli.commun; + +import java.awt.Component; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import javax.swing.JTable; +import javax.swing.event.TableModelEvent; +import javax.swing.event.TableModelListener; +import javax.swing.table.DefaultTableCellRenderer; +import javax.swing.table.TableColumnModel; +import javax.swing.table.TableModel; + +import org.fudaa.ctulu.CtuluAnalyze; +import org.fudaa.ctulu.CtuluCommandComposite; +import org.fudaa.ctulu.CtuluCommandContainer; +import org.fudaa.ctulu.gis.GISAttributeConstants; +import org.fudaa.ctulu.gis.GISAttributeInterface; +import org.fudaa.ctulu.gis.GISAttributeModel; +import org.fudaa.ctulu.gis.GISCoordinateSequenceFactory; +import org.fudaa.ctulu.gis.GISZoneCollection; +import org.fudaa.ctulu.gui.CtuluValueEditorI; +import org.fudaa.ebli.calque.ZModelGeometryListener; +import org.fudaa.ebli.calque.ZModeleGeometry; +import org.fudaa.ebli.calque.edition.ZModeleEditable; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.CoordinateSequence; +import com.vividsolutions.jts.geom.Geometry; + +/** + * Cette classe permet d'adapter l'interface d'un ZModeleGeometry sur une + * g\xE9om\xE9trie sp\xE9cifique. C'est \xE0 dire que que l'adapter se greffe sur le mod\xE8le + * et selectionne une des g\xE9om\xE9tries. Toutes les m\xE9thodes propos\xE9 par cette + * interface seront r\xE9alis\xE9 sur cette g\xE9om\xE9trie. + * + * Ce model contient : + * en premi\xE8re colonne : index + * en seconde colonne : x + * en troisi\xE8me colonne : y en + * quatri\xE8me colonne : z (si il existe et qu'il est atomique) + * les autres attributs atomiques dans l'ordre de la GISZoneCollection + * etc... + * + * Deux modes d'application des modifications sont pr\xE9sents : + * - un mode imm\xE9diate : les modifications sont imm\xE9diatements appliqu\xE9s \xE0 la gis. + * - un mode diff\xE9r\xE9 : les modifications sont mises en cache et aplliqu\xE9 quand flushData() est appel\xE9. + * + * Le model se charge de mettre la g\xE9o\xE9mtrie \xE0 'Modifi\xE9' lorsque celle-ci l'est. + * + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class TableModelModeleAdapter implements TableModel { + + /** + * Le renderer des cellules du tableau. + */ + protected class Renderer extends DefaultTableCellRenderer { + + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, + int column) { + if(value instanceof Double) + return super.getTableCellRendererComponent(table, formatter_.getXYFormatter().format((Double) value), isSelected, hasFocus, row, column); + if(value instanceof Boolean) + return table.getDefaultRenderer(Boolean.class).getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); + return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); + } + } + + /** + * Classe interface permettant de faire le lien entre la classe m\xE8re et les + * classes g\xE9rant les \xE9tats sp\xE9cifiques. + * Utilisation du design pattern Stat. + * + * @author Emmanuel MARTIN + * @version $Id:$ + */ + protected interface TableModelModeleAdapterEtat { + + public Object getValueAt(int rowIndex, int columnIndex); + public void setValueAt(Object value, int rowIndex, int columnIndex); + + /** + * Inverse la position de deux des points de la g\xE9om\xE9trie. + */ + public void switchPoints(int _idx1, int _idx2, CtuluCommandContainer _cmd); + + /** + * Met \xE0 jour les caches utilis\xE9s dans l'instance. Cette m\xE9thode est + * g\xE9n\xE9ralement utilis\xE9 lors d'une modification de mod\xE8le. + */ + public void updateFromModele(); + + /** + * Applique si n\xE9c\xE9ssaire les modifications en attentes. + */ + public void flushData(); + } + + /** + * R\xE9alise les op\xE9rations imm\xE9diatement sur le Modele. + * + * @author Emmanuel MARTIN + * @version $Id:$ + */ + protected class ModificationOnTheFly implements TableModelModeleAdapterEtat { + + public ModificationOnTheFly() { + } + + public Object getValueAt(int rowIndex, int columnIndex) { + switch (columnIndex) { + case 0: + return rowIndex; + case 1: + return coordSeq_.getOrdinate(rowIndex, 0); + case 2: + return coordSeq_.getOrdinate(rowIndex, 1); + default: + return mapColonne_.get(columnIndex).modele.getObjectValueAt(rowIndex); + } + } + + public void setValueAt(Object value, int rowIndex, int columnIndex) { + CtuluCommandComposite cmd=new CtuluCommandComposite(EbliLib.getS("Modification d'une g\xE9om\xE9trie")); + if (columnIndex==1||columnIndex==2) { + putGeomModified(cmd); + clearError(); + // Si la g\xE9om\xE9trie est valide avant et invalide apr\xE8s, on ne fait pas la modif + boolean validBefore=modele_.isCoordinateValid(coordSeq_, null); + double oldValue=coordSeq_.getOrdinate(rowIndex, columnIndex-1); + coordSeq_.setOrdinate(rowIndex, columnIndex-1, (Double) value); + boolean validAfter=modele_.isCoordinateValid(coordSeq_, analyzer_); + if (!validAfter) + fireTableModelModeleAdapterError(); + if(!validAfter&&validBefore) + coordSeq_.setOrdinate(rowIndex, columnIndex-1, oldValue); + else { + zone_.setCoordinateSequence(idxSelected_, coordSeq_, cmd); + coordSeq_=new GISCoordinateSequenceFactory().create(zone_.getCoordinateSequence(idxSelected_)); + } + } + else { + mapColonne_.get(columnIndex).modele.setObject(rowIndex, value, cmd); + // Ce fire ne devrait pas \xEAtre utile, mais il semble que pour certains + // models d'attributs ne sont pas \xE9cout\xE9s par leur GISZoneCollection. + fireTableModelListeners(); + } + if(cmd_!=null) + cmd_.addCmd(cmd.getSimplify()); + } + + public void switchPoints(int _idx1, int _idx2, CtuluCommandContainer _cmd) { + putGeomModified(_cmd); + Coordinate tmp=coordSeq_.getCoordinate(_idx1); + coordSeq_.setOrdinate(_idx1, 0, coordSeq_.getOrdinate(_idx2, 0)); + coordSeq_.setOrdinate(_idx1, 1, coordSeq_.getOrdinate(_idx2, 1)); + coordSeq_.setOrdinate(_idx1, 2, coordSeq_.getOrdinate(_idx2, 2)); + coordSeq_.setOrdinate(_idx2, 0, tmp.x); + coordSeq_.setOrdinate(_idx2, 1, tmp.y); + coordSeq_.setOrdinate(_idx2, 2, tmp.z); + zone_.setCoordinateSequence(idxSelected_, coordSeq_, _cmd); + coordSeq_=new GISCoordinateSequenceFactory().create(zone_.getCoordinateSequence(idxSelected_)); + // Inversion des attributs atomiques + for(Map.Entry<Integer, AttributeInformation> entry:mapColonne_.entrySet()) { + Object value=entry.getValue().modele.getObjectValueAt(_idx1); + entry.getValue().modele.setObject(_idx1, entry.getValue().modele.getObjectValueAt(_idx2), _cmd); + entry.getValue().modele.setObject(_idx2, value, _cmd); + } + } + + public void flushData() {} + + public void updateFromModele() {} + } + + /** + * R\xE9alise les op\xE9rations en diff\xE9r\xE9es sur le Modele. + * + * @author Emmanuel MARTIN + * @version $Id:$ + */ + protected class ModificationDefered implements TableModelModeleAdapterEtat { + + // Caches \\ + /** M\xE9morisation des index modifi\xE9s. List (colonnes>1) HashMap (ligne -> value). */ + protected List<HashMap<Integer, Object>> modif_=new ArrayList<HashMap<Integer, Object>>(); + /** CoordinateSequence contenant les valeurs temporaires des x et y. */ + protected CoordinateSequence coordSequenceCache_; + /** Crai si il y a eu une modification. */ + protected boolean modificationDone_; + + public ModificationDefered() { + for(int i=0;i<getColumnCount();i++) + modif_.add(new HashMap<Integer, Object>()); + coordSequenceCache_=new GISCoordinateSequenceFactory().create(coordSeq_); + } + + /** + * Retourne vrai si la valeur est en cache. + */ + private boolean isCache(int _idxRow, int _idxCol) { + if(_idxCol==0||_idxCol==1) + return true; + return modif_.get(_idxCol).containsKey(_idxRow); + } + + /** + * Retourne la valeur si elle est en cache, null sinon. + */ + private Object getCacheValue(int _idxRow, int _idxCol) { + switch (_idxCol) { + case 0: + return coordSequenceCache_.getOrdinate(_idxRow, 0); + case 1: + return coordSequenceCache_.getOrdinate(_idxRow, 1); + default: + return modif_.get(_idxCol).get(_idxRow); + } + } + + /** + * Permet d'enregistrer simplement une valeur en cache. + */ + private void setCacheValue(int _idxRow, int _idxCol, Object _value) { + if (_idxCol==1||_idxCol==2) { + modificationDone_=true; + clearError(); + // Si la g\xE9om\xE9trie est valide avant et invalide apr\xE8s, on annule l'\xE9dition + boolean validBefore=modele_.isCoordinateValid(coordSequenceCache_, null); + double oldValue=coordSequenceCache_.getOrdinate(_idxRow, _idxCol-1); + coordSequenceCache_.setOrdinate(_idxRow, _idxCol-1, (Double) _value); + boolean validAfter=modele_.isCoordinateValid(coordSequenceCache_, analyzer_); + if (!validAfter) + fireTableModelModeleAdapterError(); + if(!validAfter&&validBefore) + coordSequenceCache_.setOrdinate(_idxRow, _idxCol-1, oldValue); + } + else if(_idxCol>2) + modif_.get(_idxCol).put(_idxRow, _value); + } + + public void flushData() { + if (modificationDone_) { + CtuluCommandComposite cmd=new CtuluCommandComposite("Modification d'une g\xE9om\xE9trie"); + zone_.setCoordinateSequence(idxSelected_, coordSequenceCache_, cmd); + coordSeq_=new GISCoordinateSequenceFactory().create(zone_.getCoordinateSequence(idxSelected_)); + coordSequenceCache_=(CoordinateSequence) coordSeq_.clone(); + // Flush les attributs atomiques + for (int i=3; i<modif_.size(); i++) + for (Map.Entry<Integer, Object> entry : modif_.get(i).entrySet()) + mapColonne_.get(i).modele.setObject(entry.getKey(), entry.getValue(), cmd); + putGeomModified(cmd); + modificationDone_=false; + if (cmd_!=null) + cmd_.addCmd(cmd.getSimplify()); + } + } + + public Object getValueAt(int rowIndex, int columnIndex) { + switch (columnIndex) { + case 0: + return rowIndex; + case 1: + return coordSequenceCache_.getOrdinate(rowIndex, 0); + case 2: + return coordSequenceCache_.getOrdinate(rowIndex, 1); + default: + if (isCache(rowIndex, columnIndex)) + return getCacheValue(rowIndex, columnIndex); + return mapColonne_.get(columnIndex).modele.getObjectValueAt(rowIndex); + } + } + + public void setValueAt(Object value, int rowIndex, int columnIndex) { + setCacheValue(rowIndex, columnIndex, value); + fireTableModelListeners(); + } + + public void switchPoints(int _idx1, int _idx2, CtuluCommandContainer _cmd) { + modificationDone_=true; + Coordinate tmp=new Coordinate((Double) getValueAt(_idx1, 1), (Double) getValueAt(_idx1, 2)); + setValueAt(getValueAt(_idx2, 1), _idx1, 1); + setValueAt(getValueAt(_idx2, 2), _idx1, 2); + setValueAt(tmp.x, _idx2, 1); + setValueAt(tmp.y, _idx2, 2); + // Inversion des attributs atomiques + for(Map.Entry<Integer, AttributeInformation> entry:mapColonne_.entrySet()) { + Object valueTmp=getValueAt(_idx1, entry.getKey()); + setValueAt(getValueAt(_idx2, entry.getKey()), _idx1, entry.getKey()); + setValueAt(valueTmp, _idx2, entry.getKey()); + } + fireTableModelListeners(); + } + + public void updateFromModele() { + if(mapColonne_.size()!=modif_.size()-3) { + modif_.clear(); + for(int i=0;i<getColumnCount();i++) + modif_.add(new HashMap<Integer, Object>()); + } + } + } + + /** La ZModeleGeometry contenant la g\xE9om\xE9trie. */ + protected ZModeleEditable modele_; + /** La g\xE9om\xE9trie selectionn\xE9e. */ + protected int idxSelected_; + /** Le CtuluCommandContainer pour g\xE9rer l'undo/redo. */ + protected CtuluCommandContainer cmd_; + /** Le container de listener pour le tableau. */ + protected Set<TableModelListener> listenersTable_=new HashSet<TableModelListener>(); + /** Le container de listener pour les erreurs. */ + protected Set<TableModelModeleAdapterErrorListener> listenersError_=new HashSet<TableModelModeleAdapterErrorListener>(); + /** Le listener de la zone. */ + protected ZModeleGeometryListener modeleListener_=new ZModeleGeometryListener(); + /** Le formatter */ + protected EbliFormatterInterface formatter_; + /** L'\xE9tat actuel de l'instance. */ + protected TableModelModeleAdapterEtat stat_; + /** Container d'erreurs. */ + protected CtuluAnalyze analyzer_; + /** Si \xE0 faux les attributs atomiques ne doivent pas \xEAtre visible. */ + protected boolean showAttributes_; + //Caches \\ + /** La GISZoneCollection contenue dans le mod\xE8le. */ + protected GISZoneCollection zone_; + /** Map contenant pour chaque index de colonne une instance de AttributeInformation. */ + protected Map<Integer, AttributeInformation> mapColonne_=new HashMap<Integer, AttributeInformation>(); + /** La CoordinateSequence de la g\xE9om\xE9trie. */ + protected CoordinateSequence coordSeq_; + /** Vrai si la g\xE9om\xE9trie est d\xE9j\xE0 en 'modifi\xE9'. */ + protected boolean alreadyModified_=false; + /** Nombre de lignes dans le tableau */ + protected int nbRow_; + + /** + * Classe servant simplement \xE0 contenir un AttributeInterface et son indice dans la zone. + */ + protected class AttributeInformation { + public GISAttributeInterface attribute; + public GISAttributeModel modele; + public int index; + public AttributeInformation() {}; + public AttributeInformation(GISAttributeInterface _attribute, GISAttributeModel _modele, int _index) { + attribute=_attribute; + modele=_modele; + index=_index; + } + } + + /** + * L'\xE9couteur de la GISZoneCollection. En cas de modification dans celle-ci, + * les caches sont mises \xE0 jour et un fire est lanc\xE9. + */ + protected class ZModeleGeometryListener implements ZModelGeometryListener { + public void attributeAction(Object _source, int att, GISAttributeInterface _att, int _action) { + updateCaches(); + fireTableModelListeners(); + } + public void attributeValueChangeAction(Object _source, int att, GISAttributeInterface _att, int geom, Object value) { + if(_att==GISAttributeConstants.ETAT_GEOM) + alreadyModified_=false; + updateCaches(); + fireTableModelListeners(); + } + public void geometryAction(Object _source, int geom, Geometry _geom, int _action) { + updateCaches(); + fireTableModelListeners(); + } + } + + /** + * @param _modele + * le modele contenant la g\xE9om\xE9trie. Peut \xEAtre null. + * @param _idxSelected + * l'index de la g\xE9om\xE9trie selectionn\xE9. -1 si aucune de selectionn\xE9. + * @param _formatter + * le formatter des valeurs x et y. Peut \xEAtre null. + * @param _cmd + * le gestionnaire d'undo/redo. Peut \xEAtre null + * @param _showAttributes + * Si faux les attributs atomiques ne seront pas visibles. + * @exception IllegalArgumentException + * si _idxSelected n'appartient pas \xE0 _zone. + */ + public TableModelModeleAdapter(ZModeleEditable _modele, int _idxSelected, EbliFormatterInterface _formatter, CtuluCommandContainer _cmd, boolean _showAttributes) { + if ((_modele==null&&_idxSelected!=-1)||(_modele!=null&&_idxSelected!=-1&&(_idxSelected<0||_idxSelected>=_modele.getNombre()))) + throw new IllegalArgumentException(EbliLib.getS("L'index de g\xE9om\xE9trie n'appartient pas \xE0 la zone.")); + modele_=_modele; + idxSelected_=_idxSelected; + formatter_=_formatter; + cmd_=_cmd; + showAttributes_=_showAttributes; + analyzer_=new CtuluAnalyze(); + if (modele_!=null) + modele_.addModelListener(modeleListener_); + stat_=new ModificationOnTheFly(); + updateCaches(); + } + + /** + * Bloque ou d\xE9bloque la visibilit\xE9 des attributs atomiques. + */ + public void setShowAttributesAtomics(boolean _b) { + if(showAttributes_!=_b) { + showAttributes_=_b; + updateCaches(); + fireTableModelListeners(); + } + } + + /** + * Retourne vrai si les attributs atomiques sont visibles. + */ + public boolean isAtomicsAttributesShowed() { + return showAttributes_; + } + + /** + * Permet de changer la source des donn\xE9es. + * + * @param _modele + * le nouveau modele + * @param _idxSelected + * le nouvelle index + * @exception IllegalArgumentException + * si _idxSelected n'appartient pas \xE0 _zone. + */ + public void setSource(ZModeleEditable _modele, int _idxSelected) { + if ((_modele==null&&_idxSelected!=-1)||(_modele!=null&&_idxSelected!=-1&&(_idxSelected<0||_idxSelected>=modele_.getNombre()))) + throw new IllegalArgumentException(EbliLib.getS("L'index de g\xE9om\xE9trie n'appartient pas \xE0 la zone.")); + if (modele_!=_modele||idxSelected_!=_idxSelected) { + if (modele_!=null) + modele_.removeModelListener(modeleListener_); + modele_=_modele; + if (modele_!=null) + modele_.addModelListener(modeleListener_); + idxSelected_=_idxSelected; + updateCaches(); + fireTableModelListeners(); + } + } + + /** + * Active les modifications en diff\xE9r\xE9es. + * Les modifications en cours sont effetu\xE9es. + */ + public void setDeferedModifications(boolean _active) { + if(_active&&!(stat_ instanceof ModificationDefered)) { + stat_.flushData(); + stat_=new ModificationDefered(); + } + else if(!_active&&!(stat_ instanceof ModificationOnTheFly)) { + stat_.flushData(); + stat_=new ModificationOnTheFly(); + } + } + + /** + * Provoque l'\xE9criture des op\xE9rations en cours. + * Inutile si en mode simultan\xE9. + */ + public void flushData() { + stat_.flushData(); + } + + /** + * Changement de la g\xE9om\xE9trie selectionn\xE9e. + * + * @param _idxselected + * l'index de la g\xE9om\xE9trie + * @exception IllegalArgumentException + * si _idxSelected n'appartient pas \xE0 _zone. + */ + public void setSelectionGeometry(int _idxSelected) { + if (_idxSelected!=-1&&(_idxSelected<0||_idxSelected>=modele_.getNombre())) + throw new IllegalArgumentException(EbliLib.getS("L'index de g\xE9om\xE9trie n'appartient pas \xE0 la zone.")); + if (idxSelected_!=_idxSelected) { + idxSelected_=_idxSelected; + fireTableModelListeners(); + } + } + + /** + * Retourne le formatter utilis\xE9. + */ + public EbliFormatterInterface getFormatter() { + return formatter_; + } + + /** + * Change le formatter utilis\xE9. + */ + public void setFormatter(EbliFormatterInterface _formatter) { + if (formatter_!=_formatter) { + formatter_=_formatter; + fireTableModelListeners(); + } + } + + /** + * Retourne le mod\xE8le contenant les g\xE9o\xE9mtries. + */ + public ZModeleGeometry getModeleDonnees() { + return modele_; + } + + /** + * Retourne l'index de la g\xE9om\xE9trie selectionn\xE9e. + */ + public int getSelectedGeometry() { + return idxSelected_; + } + + /** + * Changement du gestionnaire d'undo/redo. + */ + public void setUndoRedoContainer(CtuluCommandContainer _cmd) { + cmd_=_cmd; + } + + /** + * Retourne le gestionnaire d'undo/redo. + */ + public CtuluCommandContainer getUndoRedoContainer() { + return cmd_; + } + + public void addTableModelListener(TableModelListener l) { + if (l!=null&&!listenersTable_.contains(l)) + listenersTable_.add(l); + } + + public void addTableModelModeleAdapterErrorListener(TableModelModeleAdapterErrorListener l) { + if (l!=null&&!listenersError_.contains(l)) + listenersError_.add(l); + } + + public Class<?> getColumnClass(int columnIndex) { + switch (columnIndex) { + case 0: + return Integer.class; + case 1: + return Double.class; + case 2: + return Double.class; + default: + if(mapColonne_!=null) + return mapColonne_.get(columnIndex).attribute.getDataClass(); + else + return null; + } + } + + public int getColumnCount() { + if(mapColonne_!=null) + // index, x, y et les attributs atomiques + return 3+mapColonne_.size(); + else + return 3; + } + + public String getColumnName(int columnIndex) { + switch (columnIndex) { + case 0: + return EbliLib.getS("Index"); + case 1: + return "x"; + case 2: + return "y"; + default: + if(mapColonne_!=null) + return mapColonne_.get(columnIndex).attribute.getLongName(); + else + return null; + } + } + + public int getRowCount() { + if(zone_!=null&&idxSelected_!=-1) + return nbRow_; + else + return 0; + } + + public Object getValueAt(int rowIndex, int columnIndex) { + if(modele_==null||idxSelected_==-1) + throw new IllegalArgumentException(EbliLib.getS("Aucun modele ou aucune g\xE9om\xE9trie selectionn\xE9e.")); + // Colonne index + if(columnIndex==0) + return rowIndex+1; + // Les autres colonnes + return stat_.getValueAt(rowIndex, columnIndex); + } + + public boolean isCellEditable(int rowIndex, int columnIndex) { + if(modele_==null||idxSelected_==-1) + throw new IllegalArgumentException(EbliLib.getS("Aucun modele ou aucune g\xE9om\xE9trie selectionn\xE9e.")); + switch (columnIndex) { + case 0: + return false; + case 1: + return true; + case 2: + return true; + default: + return mapColonne_.get(columnIndex).attribute.isEditable(); + } + } + + public void removeTableModelListener(TableModelListener l) { + if (l!=null&&listenersTable_.contains(l)) + listenersTable_.remove(l); + } + + public void removeTableModelModeleAdapterErrorListener(TableModelModeleAdapterErrorListener l) { + if (l!=null&&listenersError_.contains(l)) + listenersError_.remove(l); + } + + public void setValueAt(Object value, int rowIndex, int columnIndex) { + if(modele_==null||idxSelected_==-1) + throw new IllegalArgumentException(EbliLib.getS("Aucun modele ou aucune g\xE9om\xE9trie selectionn\xE9e.")); + if(!getValueAt(rowIndex, columnIndex).equals(value)&&value!=null) + stat_.setValueAt(value, rowIndex, columnIndex); + } + + /** + * Incr\xE9mente de n les index donn\xE9s. + * Pour d\xE9cr\xE9menter donner un indice n\xE9gatif. + * _idx est modifi\xE9 dans l'op\xE9ration + * @return le tableau des nouveaux index. + */ + public int[] movePoints(int[] _idx, int n) { + if(_idx==null) + throw new IllegalArgumentException(EbliLib.getS("_idx ne doit pas \xEAtre null")); + for (int i=0; i<_idx.length; i++) + if (_idx[i]<0||_idx[i]>=getRowCount()) + throw new IllegalArgumentException(EbliLib.getS("Au moins un des index n'est pas valide.")); + CtuluCommandComposite cmd=new CtuluCommandComposite("Switch points"); + // Tir du tableau en fonction du type d'incr\xE9ment + Arrays.sort(_idx); + if (n>0) + reverse(_idx); + // Incr\xE9ment de chaque index + for (int i=0; i<_idx.length; i++) { + int idx=_idx[i]; + // Si on peut le d\xE9placer + if (idx+n>=0&&idx+n<getRowCount()&&!in(idx+n, _idx)) { + _idx[i]=idx+n; + stat_.switchPoints(idx, idx+n, cmd); + } + } + if (cmd_!=null) + cmd_.addCmd(cmd.getSimplify()); + return _idx; + } + + /** + * Inverse la position de deux des points de la g\xE9om\xE9trie. + */ + public void switchPoints(int _idx1, int _idx2) { + if (_idx1<0||_idx1>=getRowCount()||_idx2<0||_idx2>=getRowCount()) + throw new IllegalArgumentException(EbliLib.getS("Au moins un des deux index n'est pas valide.")); + CtuluCommandComposite cmd=new CtuluCommandComposite(EbliLib.getS("Switch de deux points")); + stat_.switchPoints(_idx1, _idx2, cmd); + if(cmd_!=null) + cmd_.addCmd(cmd.getSimplify()); + } + + /** + * Met \xE0 jour les caches utilis\xE9s dans l'instance. Cette m\xE9thode est + * g\xE9n\xE9ralement utilis\xE9 lors d'une modification de mod\xE8le. + */ + private void updateCaches() { + // Vide les buffers + zone_=null; + mapColonne_.clear(); + coordSeq_=null; + nbRow_=0; + // Mise \xE0 jours des buffers \\ + if (modele_!=null) { + // Mise \xE0 jour de zone_ \\ + zone_=modele_.getGeomData(); + // Mise \xE0 jour du nombre de lignes \\ + nbRow_=zone_.getGeometry(idxSelected_).getNumPoints(); + if (showAttributes_) { + // Mise \xE0 jour de mapColonne \\ + int idxColonne=3; + GISAttributeInterface attrZ=zone_.getAttributeIsZ(); + // Cas particulier : attribut z atomique + if (attrZ!=null&&attrZ.isAtomicValue()) { + int idxAttr=zone_.getIndiceOf(attrZ); + mapColonne_.put(idxColonne++, new AttributeInformation(attrZ, (GISAttributeModel)zone_.getValue(idxAttr, idxSelected_), + idxAttr)); + } + // Le reste des attributs + for (int i=0; i<zone_.getNbAttributes(); i++) { + GISAttributeInterface attribute=zone_.getAttribute(i); + if (attribute.isAtomicValue()&&(attrZ==null||attrZ!=attribute)) { + int idxAttr=zone_.getIndiceOf(attribute); + mapColonne_.put(idxColonne++, new AttributeInformation(attribute, (GISAttributeModel)zone_.getValue(idxAttr, + idxSelected_), idxAttr)); + } + } + } + // Mise \xE0 jour du coordinate sequence + coordSeq_=new GISCoordinateSequenceFactory().create(zone_.getCoordinateSequence(idxSelected_)); + } + stat_.updateFromModele(); + } + + /** + * Met les editors et les renderer correcte sur le JTable. + */ + public void updateEditorAndRenderer(JTable _table) { + TableColumnModel cols=_table.getColumnModel(); + Renderer renderer=new Renderer(); + // Renderer \\ + for(int i=0;i<cols.getColumnCount();i++) + cols.getColumn(i).setCellRenderer(renderer); + // Editors \\ + // Colonnes des attributs + if (modele_!=null) { + for (int i=0; i<mapColonne_.size(); i++) { + CtuluValueEditorI editor=mapColonne_.get(3+i).attribute.getEditor(); + if (editor!=null) + cols.getColumn(3+i).setCellEditor(editor.createTableEditorComponent()); + } + } + } + + /** + * Vide le container d'erreur et envoie un \xE9v\xE9nemen si besoin. + */ + private void clearError() { + if(analyzer_.containsFatalError()) { + analyzer_.clear(); + fireTableModelModeleAdapterNoError(); + } + } + + /** + * Retourne un message d'erreur si la g\xE9o\xE9mtrie en cours de cr\xE9ation est + * invalide. + */ + public String getErrorMessage() { + if(modele_.isCoordinateValid(coordSeq_, analyzer_)) + return null; + else + return analyzer_.getFatalError().getMessage(); + } + + protected void fireTableModelListeners() { + for (TableModelListener listener : listenersTable_) + listener.tableChanged(new TableModelEvent(this)); + } + + protected void fireTableModelModeleAdapterNoError() { + for (TableModelModeleAdapterErrorListener listener : listenersError_) + listener.modeleAdpaterNoError(); + } + + protected void fireTableModelModeleAdapterError() { + for (TableModelModeleAdapterErrorListener listener : listenersError_) + listener.modeleAdapterError(analyzer_.getFatalError().getMessage()); + } + + /** + * Met l'\xE9tat de la g\xE9om\xE9trie (GISAttributeConstants.ETAT_GEOM) \xE0 modifi\xE9. + */ + private void putGeomModified(CtuluCommandContainer _cmd) { + if (!alreadyModified_) { + int idxEtatGeom=zone_.getIndiceOf(GISAttributeConstants.ETAT_GEOM); + if (idxEtatGeom!=-1) + zone_.setAttributValue(idxEtatGeom, idxSelected_, GISAttributeConstants.ATT_VAL_ETAT_MODI, _cmd); + alreadyModified_=true; + } + } + + /** + * Retourne vrai si _value est dans _table + * @param _value + * @param _table + * @return + */ + private boolean in(int _value, int[] _table){ + boolean found=false; + int i=-1; + while(!found&&++i<_table.length) + found=_table[i]==_value; + return found; + } + + /** + * Reverse the table. + */ + private void reverse(int[] _table) { + for(int i=0;i<_table.length/2;i++) { + int tmp=_table[i]; + _table[i]=_table[_table.length-i-1]; + _table[_table.length-i-1]=tmp; + } + } +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/TableModelModeleAdapter.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/TableModelModeleAdapterErrorListener.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/TableModelModeleAdapterErrorListener.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/TableModelModeleAdapterErrorListener.java 2009-01-27 14:45:39 UTC (rev 4405) @@ -0,0 +1,26 @@ +/* + * @creation 26 janv. 2009 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2009 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.ebli.commun; + +/** + * Interface d'\xE9coute des erreurs g\xE9n\xE9r\xE9es par TableModelModeleAdapter. + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public interface TableModelModeleAdapterErrorListener { + + /** + * Appel\xE9 quand une erreur est d\xE9tect\xE9 dans les donn\xE9es. + */ + public void modeleAdapterError(String _message); + + /** + * Appel\xE9 quand l'erreur n'a plus de raison d'\xEAtre affich\xE9e. + */ + public void modeleAdpaterNoError(); +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/TableModelModeleAdapterErrorListener.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2009-01-26 22:59:38
|
Revision: 4404 http://fudaa.svn.sourceforge.net/fudaa/?rev=4404&view=rev Author: deniger Date: 2009-01-26 22:59:34 +0000 (Mon, 26 Jan 2009) Log Message: ----------- Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MVProfileCourbeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostBuilderSuiteCalcul.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostLayoutPanelController.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostMinPaletteTableModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjet.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSource.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceAbstract.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceComparator.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceComparatorBuilder.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceDefault.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceFromReader.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceOneTimeStep.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceProjected.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceReaderComposite.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceReaderInterface.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceReaderReflux.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceReaderSerafin.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceRubar.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceRubarZFN.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceSerafin.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceTelemac3D.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostUserVariableSaver.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/actions/TrPostActionChooseAndCreateCalque.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/persist/TrPostPersistenceManager.java Added Paths: ----------- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceAbstractFromIdx.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceReaderCommonAbstract.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceReaderFromFileAbstract.java Removed Paths: ------------- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceReaderAbstract.java Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MVProfileCourbeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MVProfileCourbeModel.java 2009-01-26 18:36:56 UTC (rev 4403) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MVProfileCourbeModel.java 2009-01-26 22:59:34 UTC (rev 4404) @@ -32,7 +32,7 @@ import org.fudaa.fudaa.tr.post.TrPostCommonImplementation; import org.fudaa.fudaa.tr.post.TrPostProjet; import org.fudaa.fudaa.tr.post.TrPostSource; -import org.fudaa.fudaa.tr.post.TrPostSourceAbstract; +import org.fudaa.fudaa.tr.post.TrPostSourceAbstractFromIdx; import org.fudaa.fudaa.tr.post.TrPostVisuPanel; import org.fudaa.fudaa.tr.post.TrReplayCurvesData; import org.fudaa.fudaa.tr.post.actions.TrPostProfileAction; @@ -151,7 +151,7 @@ if (this.data_ instanceof TrPostSource) { _table.put(TrResource.getS("Type"), "Profil spatial"); TrPostSource src = (TrPostSource) this.data_; - TrPostSourceAbstract.fillWithSourceInfo(_table, src); + TrPostSourceAbstractFromIdx.fillWithSourceInfo(_table, src); if (this.time_ != -1 && this.time_ < src.getNbTimeStep()) pdt += ": " + src.getTime().getTimeListModel().getElementAt(this.time_); } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostBuilderSuiteCalcul.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostBuilderSuiteCalcul.java 2009-01-26 18:36:56 UTC (rev 4403) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostBuilderSuiteCalcul.java 2009-01-26 22:59:34 UTC (rev 4404) @@ -1,9 +1,10 @@ package org.fudaa.fudaa.tr.post; +import gnu.trove.TDoubleArrayList; + import java.awt.event.ActionEvent; import java.io.File; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Comparator; @@ -14,291 +15,261 @@ import javax.swing.Icon; -import org.fudaa.ctulu.CtuluLibString; -import org.fudaa.ctulu.CtuluVariable; -import org.fudaa.ctulu.collection.CtuluArrayDouble; import org.fudaa.dodico.ef.EfGridInterface; import org.fudaa.dodico.h2d.type.H2dVariableType; -import org.fudaa.ebli.calque.ZEbliCalquesPanel; import org.fudaa.ebli.commun.EbliActionSimple; import org.fudaa.ebli.visuallibrary.EbliNode; import org.fudaa.ebli.visuallibrary.calque.CalqueLegendeWidgetAdapter; -import org.fudaa.fudaa.commun.impl.FudaaCommonImplementation; import org.fudaa.fudaa.tr.common.TrResource; import org.fudaa.fudaa.tr.post.TrPostSourceReaderComposite.CoupleTimeStepData; - - - /** * Builder qui construit les suites de calcul. + * * @author Adrien Hadoux - * */ public class TrPostBuilderSuiteCalcul { + /** + * Action qui r\xE9alise la suite de calcul. + * + * @author Adrien Hadoux + */ + public static class ActionBuildSuite extends EbliActionSimple { - /** - * Action qui r\xE9alise la suite de calcul. - * @author Adrien Hadoux - * - */ - public static class ActionBuildSuite extends EbliActionSimple{ + TrPostSource src_; + TrPostCommonImplementation impl_; + public ActionBuildSuite(TrPostSource src, String _name, Icon _ic, String _ac, TrPostCommonImplementation impl) { + super(_name, _ic, _ac); + // TODO Auto-generated constructor stub + src_ = src; + src_ = src; + impl_ = impl; + } - TrPostSource src_; - TrPostCommonImplementation impl_; - public ActionBuildSuite(TrPostSource src,String _name, Icon _ic, String _ac,TrPostCommonImplementation impl) { - super(_name, _ic, _ac); - // TODO Auto-generated constructor stub - src_= src; - src_=src; - impl_=impl; - } + public void actionPerformed(ActionEvent _e) { + // -- test de comptabilit\xE9 de fichier source --// + if (!isCompatibleSuiteCalcul(src_)) { + impl_.error(TrResource.getS("Le fichier n'est pas valide.")); + return; + } - public void actionPerformed(ActionEvent _e) { + // -- on lance la dialog de choix des fichiers sources --// + final TrPostSource srcChoisie = impl_.getCurrentProject().getChooserMultiSources(-1); + if (srcChoisie == null) { + impl_.error(TrResource.getS(TrResource.getS("Aucune source choisie"))); + return; + } + if (!isCompatibleSuiteCalcul(srcChoisie)) { + impl_.error(TrResource.getS("Le fichier n'est pas valide.")); + return; + } - //-- test de comptabilit\xE9 de fichier source --// - if(!isCompatibleSuiteCalcul(src_)){ - impl_.error(TrResource.getS("Le fichier n'est pas valide.")); - return; - } + List<String> error = new ArrayList<String>(); - //-- on lance la dialog de choix des fichiers sources --// - final TrPostSource srcChoisie = impl_.getCurrentProject().getChooserMultiSources(-1); - if (srcChoisie == null) { - impl_.error(TrResource.getS(TrResource.getS("Aucune source choisie"))); - return; - } + // -- creation de la suite de calcul --// + TrPostSource suiteCalcul = createSuiteCalcul((TrPostSourceFromReader) src_, impl_, + (TrPostSourceFromReader) srcChoisie, error); - if(!isCompatibleSuiteCalcul(srcChoisie)){ - impl_.error(TrResource.getS("Le fichier n'est pas valide.")); - return; - } + if (suiteCalcul == null) { + // -- il se passe des choses \xE9tranges.... --// + String maxiStringLeo = ""; + for (String err : error) + maxiStringLeo += err + "\n"; + impl_.error(maxiStringLeo); + return; + } - List<String> error=new ArrayList<String>(); + // -- on ajoute la nouvelle src r\xE9sultat comme \xE9tant une suite de calcul --// - //-- creation de la suite de calcul --// - TrPostSource suiteCalcul=createSuiteCalcul((TrPostSourceFromReader)src_, impl_, (TrPostSourceFromReader)srcChoisie, error); + impl_.c_.ajouterSource(suiteCalcul); - if(suiteCalcul==null){ - //-- il se passe des choses \xE9tranges.... --// - String maxiStringLeo=""; - for(String err:error) - maxiStringLeo+=err+"\n"; + // -- on cree la vue 2d correspondante --// - impl_.error(maxiStringLeo); - return; - } + TrPostProjet projet = impl_.getCurrentProject(); + TrPostLayoutPanelController controller = impl_.getCurrentLayoutFille().controller_; + final CalqueLegendeWidgetAdapter legendeCalque = new CalqueLegendeWidgetAdapter(controller.getSceneCourante(), + null); + final TrPostVisuPanel pnVisu = new TrPostVisuPanel(projet.getImpl(), projet, legendeCalque, suiteCalcul); + final EbliNode node = controller.addCalque(TrResource.getS("Calque") + + (controller.getSceneCourante().getAllVue2d().size() + 1), pnVisu.getLocation(), pnVisu.getPreferredSize(), + pnVisu, legendeCalque); + // -- ajout de l INFO de la source utilis\xE9e --// + node.getWidget().getController().setDescription("Source: " + projet.formatInfoSource(srcChoisie)); + // -- ajout des infos de cr\xE9ation --// - //-- on ajoute la nouvelle src r\xE9sultat comme \xE9tant une suite de calcul --// + TrPostSourceReaderComposite.fillInfosWithComposite(pnVisu.infosCreation_, + (TrPostSourceReaderComposite) ((TrPostSourceFromReader) suiteCalcul).getReader()); - impl_.c_.ajouterSource(suiteCalcul); + } - - //-- on cree la vue 2d correspondante --// - - TrPostProjet projet=impl_.getCurrentProject(); - TrPostLayoutPanelController controller=impl_.getCurrentLayoutFille().controller_; - final CalqueLegendeWidgetAdapter legendeCalque = new CalqueLegendeWidgetAdapter(controller.getSceneCourante(), null); - final TrPostVisuPanel pnVisu = new TrPostVisuPanel(projet.getImpl(), projet, legendeCalque, suiteCalcul); - final EbliNode node = controller.addCalque(TrResource.getS("Calque") - + (controller.getSceneCourante().getAllVue2d().size() + 1), pnVisu.getLocation(), pnVisu.getPreferredSize(), - pnVisu, legendeCalque); - // -- ajout de l INFO de la source utilis\xE9e --// - node.getWidget().getController().setDescription("Source: " + projet.formatInfoSource(srcChoisie)); + } - // -- ajout des infos de cr\xE9ation --// - - TrPostSourceReaderComposite.fillInfosWithComposite(pnVisu.infosCreation_,(TrPostSourceReaderComposite)((TrPostSourceFromReader)suiteCalcul).getReader()); - - + /** + * R\xE9cup\xE9rer l'interface \xE0 partir du fichier + * + * @param _f + * @param _impl + * @return + */ + public static TrPostSourceFromReader createSourceFromeFile(File _f, TrPostCommonImplementation _impl) { + TrPostSource src = TrPostSourceBuilder.activeSourceAction(_f, _impl, _impl.getMainProgression()); + if (src != null && src instanceof TrPostSourceFromReader) return ((TrPostSourceFromReader) src); + return null; + } - } + public static TrPostSource createSuiteCalcul(File _f, TrPostCommonImplementation _impl, + TrPostSourceFromReader _reader, List<String> error) { + // -- lecture de l'interface \xE0 ajouter --// + TrPostSourceFromReader srcToConcat = createSourceFromeFile(_f, _impl); + return createSuiteCalcul(_reader, _impl, srcToConcat, error); + } + /** + * Algorithme de construction d'une suite de calcul. + * + * @param srcToConcat + * @param _impl + * @param _reader + * @param error + * @return + */ + public static TrPostSource createSuiteCalcul(TrPostSourceFromReader srcToConcat, TrPostCommonImplementation _impl, + TrPostSourceFromReader _reader, List<String> error) { + TrPostSource suiteCalcul = null; + if (srcToConcat == null) { + error.add(TrResource.getS("Le fichier n'est pas valide.")); + return null; + } - } + if (_reader.isRubar() || srcToConcat.isRubar()) { + error.add(TrResource.getS("Format Rubar non g\xE9r\xE9")); + return null; + } + // -- comparaison des grilles --// + EfGridInterface grille = srcToConcat.getGrid(); + if (!grille.isSameStrict(_reader.getGrid(), _impl.getMainProgression(), 0.01)) { + error.add(TrResource.getS("Les grilles ne sont pas identiques")); + return null; + } - /** - * R\xE9cup\xE9rer l'interface \xE0 partir du fichier - * @param _f - * @param _impl - * @return - */ - public static TrPostSourceFromReader createSourceFromeFile(File _f, TrPostCommonImplementation _impl){ - TrPostSource src= TrPostSourceBuilder.activeSourceAction(_f, _impl, _impl.getMainProgression()); - if(src!=null && src instanceof TrPostSourceFromReader) return ((TrPostSourceFromReader)src); - return null; + // -- comparaison des pas de temps d\xE9but et finaux --// + double[] time1 = TrPostSourceFromReader.getTimes(_reader.getReader()); + double[] time2 = TrPostSourceFromReader.getTimes(srcToConcat.getReader()); - } + if (time1[time1.length - 1] != time2[0] && time2[time2.length - 1] != time1[0]) { + error.add(TrResource + .getS("Le dernier pas de temps de l'un doit \xEAtre \xE9quivalent au premier pas de temps de l'autre.")); + return null; + } - public static TrPostSource createSuiteCalcul(File _f, TrPostCommonImplementation _impl, TrPostSourceFromReader _reader,List<String> error){ - //-- lecture de l'interface \xE0 ajouter --// - TrPostSourceFromReader srcToConcat=createSourceFromeFile(_f, _impl); - return createSuiteCalcul(_reader, _impl, srcToConcat, error); - } + // -- recuperation des pas de temps et des variables --// + // double[] timeTotal= new double[time1.length+time2.length-1]; + // if(time1[0]>time2[0]){ + // //-- on permute pour garder l'ordre --// + // double[] temp=time1; + // time1=time2; + // time2=temp; + // } + // for(int i=0;i<time1.length;i++) + // timeTotal[i]=time1[i]; + // for(int i=0;i<time2.length-1;i++) + // timeTotal[time1.length+i]=time2[i+1]; + HashSet<H2dVariableType> listeVar = new HashSet<H2dVariableType>(); + H2dVariableType[] var = null; + for (int i = 0; i < _reader.getAvailableVar().length; i++) + listeVar.add(_reader.getVariable(i)); + for (int i = 0; i < srcToConcat.getAvailableVar().length; i++) + listeVar.add(srcToConcat.getVariable(i)); + var = new H2dVariableType[listeVar.size()]; + int k = 0; + for (H2dVariableType v : listeVar) + var[k++] = v; - /** - * Algorithme de construction d'une suite de calcul. - * @param srcToConcat - * @param _impl - * @param _reader - * @param error - * @return - */ - public static TrPostSource createSuiteCalcul(TrPostSourceFromReader srcToConcat, TrPostCommonImplementation _impl, TrPostSourceFromReader _reader,List<String> error){ - TrPostSource suiteCalcul=null; - if(srcToConcat==null){ - error.add(TrResource.getS("Le fichier n'est pas valide.")); - return null; - } + // var=srcToConcat.variable_; + // -- initialisation de la liste de source --// + List<TrPostSourceReaderInterface> listeSourceInterface_ = new ArrayList<TrPostSourceReaderInterface>(); + // -- on ajoute \xE0 la liste des interfaces l'interface 1 et l'intrface 2 --// + TrPostSourceReaderInterface interface1 = _reader.reader_; + TrPostSourceReaderInterface interface2 = srcToConcat.reader_; - if(_reader.isRubar() || srcToConcat.isRubar()){ - error.add(TrResource.getS("Format Rubar non g\xE9r\xE9")); - return null; - } + // -- attetion au cas particulier: si une interface1 est deja une suite, il faut ajouter toutes ses interfaces --// + if (interface1 instanceof TrPostSourceReaderComposite) listeSourceInterface_ + .addAll(((TrPostSourceReaderComposite) interface1).listeSourceInterface_); + else listeSourceInterface_.add(interface1); - //-- comparaison des grilles --// - EfGridInterface grille=srcToConcat.getGrid(); - if(!grille.isSameStrict(_reader.getGrid(), _impl.getMainProgression(),0.01)){ - error.add(TrResource.getS("Les grilles ne sont pas identiques")); - return null; - } + if (interface2 instanceof TrPostSourceReaderComposite) listeSourceInterface_ + .addAll(((TrPostSourceReaderComposite) interface2).listeSourceInterface_); + else listeSourceInterface_.add(interface2); - //-- comparaison des pas de temps d\xE9but et finaux --// - double[] time1=TrPostSourceFromReader.getTimes(_reader.getReader()); - double[] time2=TrPostSourceFromReader.getTimes(srcToConcat.getReader()); + // -- ajout de tous les fichiers dans la collection --// + final Collection<File> file_ = new HashSet<File>(interface1.getFiles());; + file_.addAll(interface2.getFiles()); - if(time1[time1.length-1]!=time2[0] && time2[time2.length-1]!=time1[0]){ - error.add(TrResource.getS("Le dernier pas de temps de l'un doit \xEAtre \xE9quivalent au premier pas de temps de l'autre.")); - return null; - } + // -- on trie les listes dans l'ordre des timestep --// + Collections.sort(listeSourceInterface_, new ComparateurTrPostSourceReaderInterface()); + // - ajout des correspondances timestep/source avec nouveau timestep --// + Map<Integer, CoupleTimeStepData> mapTimeStep_ = new HashMap<Integer, CoupleTimeStepData>(); + // TODO utilise TDoubleArrayList + TDoubleArrayList times = new TDoubleArrayList(); + // int cpt = 0; + for (TrPostSourceReaderInterface data : listeSourceInterface_) { + for (int i = 0; i < data.getNbTimeStep(); i++) { + // LOGIquement, il faudrait prendre en compte les erreurs d'arrondi + // -- ICI, pour cet algo, on doit degager tout les doublons et ne conserver que des valeurs uniques --// + if (!times.contains(data.getTimeStep(i))) { + // le cpt vaut la taille des times + mapTimeStep_.put(times.size(), new CoupleTimeStepData(data, i)); + times.add(data.getTimeStep(i)); + // cpt++; + } + } + } - //-- recuperation des pas de temps et des variables --// - // double[] timeTotal= new double[time1.length+time2.length-1]; - // if(time1[0]>time2[0]){ - // //-- on permute pour garder l'ordre --// - // double[] temp=time1; - // time1=time2; - // time2=temp; - // } - // for(int i=0;i<time1.length;i++) - // timeTotal[i]=time1[i]; - // for(int i=0;i<time2.length-1;i++) - // timeTotal[time1.length+i]=time2[i+1]; + double[] timeTotal = times.toNativeArray(); + // -- creation de la suite de calcul + TrPostSourceReaderComposite suite = new TrPostSourceReaderComposite(timeTotal, var, mapTimeStep_, + listeSourceInterface_, file_); - HashSet<H2dVariableType> listeVar=new HashSet<H2dVariableType>(); - H2dVariableType[] var=null; - for(int i=0;i<_reader.getAvailableVar().length;i++) - listeVar.add(_reader.getVariable(i)); - for(int i=0;i<srcToConcat.getAvailableVar().length;i++) - listeVar.add(srcToConcat.getVariable(i)); - var=new H2dVariableType[listeVar.size()]; - int k=0; - for(H2dVariableType v:listeVar) - var[k++]=v; + // -- creation du source Reader --// + return new TrPostSourceFromReader(suite, TrResource.getS("Suite de calcul"), grille, _impl); + } + /** + * Methode appelee pour v\xE9rifier que ceci est bien compatible avec la suite de calcul. + * + * @param src + * @return + */ + public static boolean isCompatibleSuiteCalcul(TrPostSource src) { - //var=srcToConcat.variable_; + if (src != null && src instanceof TrPostSourceFromReader) return true; + return false; + } - //-- initialisation de la liste de source --// - List<TrPostSourceReaderInterface> listeSourceInterface_=new ArrayList<TrPostSourceReaderInterface>(); + public static class ComparateurTrPostSourceReaderInterface implements Comparator<TrPostSourceReaderInterface> { - //-- on ajoute \xE0 la liste des interfaces l'interface 1 et l'intrface 2 --// - TrPostSourceReaderInterface interface1=_reader.reader_; - TrPostSourceReaderInterface interface2=srcToConcat.reader_; + public int compare(TrPostSourceReaderInterface o1, TrPostSourceReaderInterface o2) { + // -- on compare selon la valeur des timesteps -- + if (o1.getTimeStep(0) > o2.getTimeStep(0)) return 1; - //-- attetion au cas particulier: si une interface1 est deja une suite, il faut ajouter toutes ses interfaces --// - if(interface1 instanceof TrPostSourceReaderComposite) - listeSourceInterface_.addAll(((TrPostSourceReaderComposite)interface1).listeSourceInterface_); - else - listeSourceInterface_.add(interface1); + if (o1.getTimeStep(0) < o2.getTimeStep(0)) return -1; - if(interface2 instanceof TrPostSourceReaderComposite) - listeSourceInterface_.addAll(((TrPostSourceReaderComposite)interface2).listeSourceInterface_); - else - listeSourceInterface_.add(interface2); + return 0; + } - //-- ajout de tous les fichiers dans la collection --// - final Collection<File> file_=new HashSet<File>(interface1.getFiles());; - file_.addAll(interface2.getFiles()); + } - - //-- on trie les listes dans l'ordre des timestep --// - Collections.sort(listeSourceInterface_,new ComparateurTrPostSourceReaderInterface()); - - //- ajout des correspondances timestep/source avec nouveau timestep --// - Map<Integer, CoupleTimeStepData> mapTimeStep_=new HashMap<Integer, CoupleTimeStepData>(); - ArrayList<Double> times=new ArrayList<Double>(); - int cpt=0; - for(TrPostSourceReaderInterface data:listeSourceInterface_){ - for(int i=0;i<data.getNbTimeStep();i++){ - - //-- ICI, pour cet algo, on doit degager tout les doublons et ne conserver que des valeurs uniques --// - if(!times.contains(data.getTimeStep(i))){ - mapTimeStep_.put(cpt,new CoupleTimeStepData(data,i)); - times.add(data.getTimeStep(i)); - cpt++; - } - } - } - - double[] timeTotal=new double[times.size()]; - for(int i=0;i<times.size();i++) - timeTotal[i]=times.get(i); - - //-- creation de la suite de calcul - TrPostSourceReaderComposite suite=null; - - suite=new TrPostSourceReaderComposite(timeTotal,var,mapTimeStep_,listeSourceInterface_,file_); - - //-- creation du source Reader --// - suiteCalcul=new TrPostSourceFromReader(suite,TrResource.getS("Suite de calcul"),grille,_impl); - - return suiteCalcul; - } - - - /** - * Methode appelee pour v\xE9rifier que ceci est bien compatible avec la suite de calcul. - * @param src - * @return - */ - public static boolean isCompatibleSuiteCalcul(TrPostSource src){ - - if(src!=null && src instanceof TrPostSourceFromReader) - return true; - return false; - } - - public static class ComparateurTrPostSourceReaderInterface implements Comparator<TrPostSourceReaderInterface>{ - - @Override - public int compare(TrPostSourceReaderInterface o1, - TrPostSourceReaderInterface o2) { - - //-- on compare selon la valeur des timesteps -- - if(o1.getTimeStep(0)>o2.getTimeStep(0)) - return 1; - - if(o1.getTimeStep(0)<o2.getTimeStep(0)) - return -1; - - - return 0; - } - - } - } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeModel.java 2009-01-26 18:36:56 UTC (rev 4403) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeModel.java 2009-01-26 22:59:34 UTC (rev 4404) @@ -401,7 +401,7 @@ public void fillWithInfo(InfoData _table, CtuluListSelectionInterface _selectedPt) { if(EbliWidget.AMELIO_LOT_VISIBLE){ _table.put(TrResource.getS("Type"),"Evolution temporelle"); - TrPostSourceAbstract.fillWithSourceInfo(_table, source_); + TrPostSourceAbstractFromIdx.fillWithSourceInfo(_table, source_); _table.put(TrResource.getS("Titre Fichier r\xE9sultat"),this.source_.getTitle()); _table.put(TrResource.getS("Infos Point initial"),this.getInfosPoint()); _table.put(TrResource.getS("Variable"),this.getVar().getName()+" en "+this.getVar().getCommonUnitString()); Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostLayoutPanelController.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostLayoutPanelController.java 2009-01-26 18:36:56 UTC (rev 4403) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostLayoutPanelController.java 2009-01-26 22:59:34 UTC (rev 4404) @@ -328,19 +328,19 @@ // -- ajout du rectangle --// final EbliNodeDefault nodeFleche = new EbliNodeDefault(); nodeFleche.setTitle("Fleche simple"); - //nodeFleche.setCreator(new EbliWidgetCreatorShape(new ShapeCreatorFlecheSimple())); - + // nodeFleche.setCreator(new EbliWidgetCreatorShape(new ShapeCreatorFlecheSimple())); + nodeFleche.setCreator(new EbliWidgetCreatorArrowEditor(new EbliEditorArrow())); - + nodeFleche.setPreferedSize(new Dimension(200, 150)); nodeFleche.setPreferedLocation(new Point(350, 125)); // ajout du node au layout addNode(nodeFleche); - //nodeFleche.getWidget().repaint(); - //((EbliWidgetArrowEditor)nodeFleche.getWidget()).editor_.creationFlecheClassique(); - + // nodeFleche.getWidget().repaint(); + // ((EbliWidgetArrowEditor)nodeFleche.getWidget()).editor_.creationFlecheClassique(); + return nodeFleche; } @@ -432,8 +432,8 @@ }); // -- palette fleche simple--// - _l.add(new EbliActionSimple(EbliResource.EBLI.getString("Editeur Fleche"), - EbliResource.EBLI.getToolIcon("crystal_bu_link"), "WIDGETFLECHESIMPLE") { + _l.add(new EbliActionSimple(EbliResource.EBLI.getString("Editeur Fleche"), EbliResource.EBLI + .getToolIcon("crystal_bu_link"), "WIDGETFLECHESIMPLE") { @Override public void actionPerformed(final ActionEvent _evt) { addFlecheSimple(); Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostMinPaletteTableModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostMinPaletteTableModel.java 2009-01-26 18:36:56 UTC (rev 4403) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostMinPaletteTableModel.java 2009-01-26 22:59:34 UTC (rev 4404) @@ -24,9 +24,9 @@ H2dVariableType[] vs_; boolean[] activated_; Double[] value_; - TrPostSourceAbstract s_; + TrPostSource s_; - TrPostMinPaletteTableModel(final TrPostSourceAbstract _s) { + TrPostMinPaletteTableModel(final TrPostSource _s) { s_ = _s; vs_ = _s.getVarToDefinedMinPalette(); activated_ = _s.getMinPaletteActived(vs_); Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjet.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjet.java 2009-01-26 18:36:56 UTC (rev 4403) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjet.java 2009-01-26 22:59:34 UTC (rev 4404) @@ -9,6 +9,7 @@ import java.awt.Component; import java.awt.Dimension; +import java.awt.EventQueue; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -400,7 +401,7 @@ } } - + public TrPostSource findSource(final String _file) { return findSource(new File(_file)); } @@ -432,9 +433,9 @@ private boolean isOpenedIn(Collection<File> files, TrPostSource _in) { if (_in == null) return false; - boolean sourceGetAllFiles=true; + boolean sourceGetAllFiles = true; for (File file : files) { - if (!_in.isOpened(file)) sourceGetAllFiles=false;; + if (!_in.isOpened(file)) sourceGetAllFiles = false;; } return sourceGetAllFiles; @@ -609,9 +610,9 @@ ic, TrPostProjet.this)); menuSimul.addSeparator(); - - - listSousMenus.add(menuSimul.addMenuItem(new TrPostBuilderSuiteCalcul.ActionBuildSuite(_src,TrResource.getS("Suite de calcul"),EbliResource.EBLI.getIcon(""),"SUITECALCUL",impl_))); + + listSousMenus.add(menuSimul.addMenuItem(new TrPostBuilderSuiteCalcul.ActionBuildSuite(_src, TrResource + .getS("Suite de calcul"), EbliResource.EBLI.getIcon(""), "SUITECALCUL", impl_))); listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Comparer..."), "COMPARE", ic, TrPostProjet.this)); listSousMenus.get(listSousMenus.size() - 1).setToolTipText( TrResource.getS("Comparer les r\xE9sultats avec ceux d'un autre projet")); @@ -890,7 +891,7 @@ // -- ajout des infos de cr\xE9ation --// // TODO centralise tout cela \xFC!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - TrPostSourceAbstract.fillWithSourceInfo(CtuluLibString.EMPTY_STRING, pnVisu.infosCreation_, projection); + TrPostSourceAbstractFromIdx.fillWithSourceInfo(CtuluLibString.EMPTY_STRING, pnVisu.infosCreation_, projection); pnVisu.infosCreation_.put(ZEbliCalquesPanel.TITRE_FIC, projection.getTitle()); // creation de l internalframe qui contient le panel de visu @@ -1168,11 +1169,13 @@ } // -- lancement du thread d'ouverture du layout avec els widgets calque - new CtuluTaskOperationGUI(impl_, TrResource.getS("Ouverture vue 2D...")) { + // TODO pourquoi faire un thread pour des operation graphiques !!!!!!!!!!!!!!!!!!!!!!!! + // new CtuluTaskOperationGUI(impl_, TrResource.getS("Ouverture vue 2D...")) { - @Override - public void act() { + Runnable r = new Runnable() { + public void run() { + // -- si il y a deja une source de pr\xE9charg\xE9e --// if (listeSrc_.size() > 0) { final TrPostLayoutFille filleLayout = new TrPostLayoutFille(TrPostProjet.this); @@ -1185,7 +1188,7 @@ // -- ajout des infos de cr\xE9ation --// // TODO Adrien centralise tout cela !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // c'est la source qui doit donner ces info: modifier TrPostSource ! - TrPostSourceAbstract.fillWithSourceInfo(CtuluLibString.EMPTY_STRING, pnVisu.infosCreation_, source); + TrPostSourceAbstractFromIdx.fillWithSourceInfo(CtuluLibString.EMPTY_STRING, pnVisu.infosCreation_, source); // -- ajout du visuPanel au layout --// final Point location = pnVisu.getLocation(); @@ -1206,9 +1209,11 @@ // -- creation du menu POST de base --// setMenuPost(); + changedMainFrameState(); } - }.start(Thread.MAX_PRIORITY); - changedMainFrameState(); + }; + EventQueue.invokeLater(r); + } public void changedMainFrameState() { Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSource.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSource.java 2009-01-26 18:36:56 UTC (rev 4403) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSource.java 2009-01-26 22:59:34 UTC (rev 4404) @@ -49,12 +49,10 @@ */ public interface TrPostSource extends EfGridData, FudaaSavable { - public String getId(); - + public void setId(String id); - - + public void activate(); EfGridDataInterpolator getInterpolator(); @@ -70,11 +68,11 @@ void buildDefaultVarUpdateLists(); -// TrPostInspectorReader createWatcher(TrPostProjet _proj, boolean _auto); + // TrPostInspectorReader createWatcher(TrPostProjet _proj, boolean _auto); -// boolean isInspectable(); + // boolean isInspectable(); -// void setInspected(boolean _b); + // void setInspected(boolean _b); boolean isInspected(); @@ -302,8 +300,6 @@ void updateUserValue(final H2dVariableTypeCreated _old, final H2dVariableTypeCreated _new, final TrPostDataCreated _newData, final CtuluCommandContainer _cmd); - - /** * @param _analyze permet d'initialise la base temporaire. */ @@ -312,4 +308,28 @@ void addSpecificItemInMainMenu(final BuMenu _m, TrPostCommonImplementation _impl); TrPostVisuPanel buildVisuPanel(TrPostProjet _parent, BCalqueLegende _legende); + + /** + * @return + */ + H2dVariableType[] getVarToDefinedMinPalette(); + + /** + * @param _v + * @return + */ + boolean[] getMinPaletteActived(H2dVariableType[] _v); + + /** + * @param _v + * @return + */ + double[] getMinPaletteValues(H2dVariableType[] _v); + + /** + * @param _v + * @param _actived + * @param _d + */ + void setDefaultPaletteMinPalette(H2dVariableType[] _v, boolean[] _actived, double[] _d); } \ No newline at end of file Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceAbstract.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceAbstract.java 2009-01-26 18:36:56 UTC (rev 4403) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceAbstract.java 2009-01-26 22:59:34 UTC (rev 4404) @@ -7,9 +7,6 @@ */ package org.fudaa.fudaa.tr.post; -import gnu.trove.TObjectIntHashMap; -import gnu.trove.TObjectIntIterator; - import java.io.File; import java.io.IOException; import java.util.ArrayList; @@ -92,11 +89,15 @@ */ public abstract class TrPostSourceAbstract implements TrPostSource { + public boolean isRubar() { + return false; + } + public TrPostVisuPanel buildVisuPanel(final TrPostProjet _parent, final BCalqueLegende _legende) { return new TrPostVisuPanel(_parent.getImpl(), _parent, _legende, this); } - - public static Collection<File> getFiles(File _file){ + + public static Collection<File> getFiles(File _file) { return Collections.unmodifiableCollection(Arrays.asList(_file)); } @@ -207,8 +208,6 @@ TrPostDataInfoDoc info_; - TObjectIntHashMap initVarIdx_; - protected boolean inspected_; EfGridDataInterpolator interpolator_; @@ -238,6 +237,8 @@ InterpolationVectorContainer vectors_; + Collection<H2dVariableType> initVar_; + protected TrPostSourceAbstract(final String _titre, final EfGridInterface _g, final double[] _time, final H2dVariableType[] _v, final CtuluUI _impl) { title_ = _titre; @@ -248,6 +249,7 @@ time_.setTimeSteps(_time); g_ = _g; impl_ = _impl; + setInitVar(_v); } @@ -256,9 +258,9 @@ protected final void addFroud(final Map _l) { if (getInitDataIndex("FROUDE") != null) { return; } // les variables h,u et v doivent etre d\xE9finies - if ((getInitDataIndex(H2dVariableType.HAUTEUR_EAU) >= 0 || _l.containsKey(H2dVariableType.HAUTEUR_EAU)) - && (getInitDataIndex(H2dVariableType.VITESSE_U) >= 0 || _l.containsKey(H2dVariableType.VITESSE_U)) - && (getInitDataIndex(H2dVariableType.VITESSE_V) >= 0 || _l.containsKey(H2dVariableType.VITESSE_V))) { + if ((isInitVar(H2dVariableType.HAUTEUR_EAU) || _l.containsKey(H2dVariableType.HAUTEUR_EAU)) + && (isInitVar(H2dVariableType.VITESSE_U) || _l.containsKey(H2dVariableType.VITESSE_U)) + && (isInitVar(H2dVariableType.VITESSE_V) || _l.containsKey(H2dVariableType.VITESSE_V))) { final H2dVariableTypeCreated c = H2dVariableType.createTempVar(H2dResource.getS("Nombre de Froude"), "froude", shortNameCreateVar_); _l.put(c, new TrPostDataCreatedFroud(this)); @@ -271,28 +273,27 @@ * * @param _map */ - final void addInitData(final TObjectIntHashMap _map) { - if (_map == null || _map.size() == 0) { return; } - if (initVarIdx_ == null) { - initVarIdx_ = new TObjectIntHashMap(_map.size()); - } - final TObjectIntIterator it = _map.iterator(); - final Set l = new HashSet(_map.size()); - for (int i = _map.size(); i-- > 0;) { - it.advance(); - final Object var = it.key(); - if (!initVarIdx_.containsKey(var)) { - l.add(var); - initVarIdx_.put(var, it.value()); - } - } - // pas de modif - if (l.size() == 0) { return; } - buildDefaultVectors(); - updateVarList(); - fireFlecheListModelChanged(); - } - + // final void addInitData(final TObjectIntHashMap _map) { + // if (_map == null || _map.size() == 0) { return; } + // if (initVarIdx_ == null) { + // initVarIdx_ = new TObjectIntHashMap(_map.size()); + // } + // final TObjectIntIterator it = _map.iterator(); + // final Set l = new HashSet(_map.size()); + // for (int i = _map.size(); i-- > 0;) { + // it.advance(); + // final Object var = it.key(); + // if (!initVarIdx_.containsKey(var)) { + // l.add(var); + // initVarIdx_.put(var, it.value()); + // } + // } + // // pas de modif + // if (l.size() == 0) { return; } + // buildDefaultVectors(); + // updateVarList(); + // fireFlecheListModelChanged(); + // } protected void addOtherVariables(final Map _l, final Map _fleche) { addFroud(_l); } @@ -384,52 +385,42 @@ final Map nameFleche = new HashMap(); varCreateData_ = new HashMap(); // par defaut vitesse et debit - int idx = getInitDataIndex(H2dVariableType.VITESSE_U); - if (idx >= 0) { - final int idxY = getInitDataIndex(H2dVariableType.VITESSE_V); - if (idxY >= 0) { + if (isInitVar(H2dVariableType.VITESSE_U)) { + if (isInitVar(H2dVariableType.VITESSE_V)) { final TrPostFlecheContent vec = createSimpleVecteurContent(H2dVariableType.VITESSE, H2dVariableType.VITESSE_U, H2dVariableType.VITESSE_V, isRubar()); nameFleche.put(H2dVariableType.VITESSE, vec); - if (getInitDataIndex(H2dVariableType.VITESSE) < 0) { + if (!isInitVar(H2dVariableType.VITESSE)) { varCreateData_.put(H2dVariableType.VITESSE, vec); } } } - idx = getInitDataIndex(H2dVariableType.DEBIT_X); - if (idx >= 0) { - final int idxY = getInitDataIndex(H2dVariableType.DEBIT_Y); - if (idxY >= 0) { + if (isInitVar(H2dVariableType.DEBIT_X)) { + if (isInitVar(H2dVariableType.DEBIT_Y)) { final TrPostFlecheContent vec = createSimpleVecteurContent(H2dVariableType.DEBIT, H2dVariableType.DEBIT_X, H2dVariableType.DEBIT_Y, isRubar()); nameFleche.put(H2dVariableType.DEBIT, vec); - if (getInitDataIndex(H2dVariableType.DEBIT) < 0) { + if (!isInitVar(H2dVariableType.DEBIT)) { varCreateData_.put(H2dVariableType.DEBIT, vec); } } } - idx = getInitDataIndex(H2dVariableType.COTE_EAU); - final int idxBath = getInitDataIndex(H2dVariableType.BATHYMETRIE); - final int idxH = getInitDataIndex(H2dVariableType.HAUTEUR_EAU); - if (idx < 0) { - if (idxBath >= 0 && idxH >= 0) { + if (!isInitVar(H2dVariableType.COTE_EAU)) { + if (isInitVar(H2dVariableType.BATHYMETRIE) && isInitVar(H2dVariableType.HAUTEUR_EAU)) { varCreateData_.put(H2dVariableType.COTE_EAU, new TrPostDataCreatedPlus(this, H2dVariableType.BATHYMETRIE, H2dVariableType.HAUTEUR_EAU)); } } // sinon on cree la hauteur d'eau - else if (idxH < 0 && idxBath >= 0) { + else if (!isInitVar(H2dVariableType.HAUTEUR_EAU) && isInitVar(H2dVariableType.BATHYMETRIE)) { varCreateData_.put(H2dVariableType.HAUTEUR_EAU, new TrPostDataCreatedMoins(this, H2dVariableType.COTE_EAU, H2dVariableType.BATHYMETRIE)); } - if (initVarIdx_ != null) { - final TObjectIntIterator it = initVarIdx_.iterator(); - for (int i = initVarIdx_.size(); i-- > 0;) { - it.advance(); - // int idxInit = it.value(); - final H2dVariableType vi = (H2dVariableType) it.key(); + Collection<H2dVariableType> vars = getInitVar(); + if (vars != null) { + for (H2dVariableType vi : vars) { final String name = vi.getName(); if (name.endsWith("X") && vi != H2dVariableType.DEBIT_X && vi != H2dVariableType.SXX) { final H2dVariableType idxY = getInitDataIndex(name.substring(0, name.length() - 1) + 'Y'); @@ -498,8 +489,7 @@ } } - protected TrPostDataMinMaxGlobalItem computeMinMax(final H2dVariableType _variable, - final ProgressionInterface _prog) { + protected TrPostDataMinMaxGlobalItem computeMinMax(final H2dVariableType _variable, final ProgressionInterface _prog) { final ProgressionUpdater up = createUpdaterForMinMax(_variable); final TrPostExtremVisitor visitor = new TrPostExtremVisitor(isRubar() ? getGrid().getEltNb() : getGrid().getPtsNb()); for (int i = getNbTimeStep() - 1; i >= 0; i--) { @@ -534,6 +524,10 @@ return up; } + protected Collection<H2dVariableType> getInitVar() { + return initVar_; + } + protected final InterpolationVectorContainer createVectorInterpolation() { if (vectors_ == null) { vectors_ = new InterpolationVectorContainer(); @@ -669,18 +663,15 @@ public EfData getData(final H2dVariableType _variable, final int _timeStep) { if (_timeStep < 0) { return null; } - final int init = getInitDataIndex(_variable); - if (init >= 0) { return getInitData(init, _timeStep); } + if (isInitVar(_variable)) return getInitData(_variable, _timeStep); if (isCreatedVar(_variable)) { return ((TrPostDataCreated) varCreateData_.get(_variable)).getDataFor(_timeStep); } if (isUserCreatedVar(_variable)) { return ((TrPostDataCreated) varUserCreateData_.get(_variable)) .getDataFor(_timeStep); } return null; } - public double getData(final H2dVariableType _variable, final int _timeStep, final int _idxPt) - throws IOException { - final int init = getInitDataIndex(_variable); - if (init >= 0) { return getInitData(init, _timeStep, _idxPt); } + public double getData(final H2dVariableType _variable, final int _timeStep, final int _idxPt) throws IOException { + if (isInitVar(_variable)) return getInitData(_variable, _timeStep, _idxPt); if (isCreatedVar(_variable)) { return ((TrPostDataCreated) varCreateData_.get(_variable)).getValue(_timeStep, _idxPt); } if (isUserCreatedVar(_variable)) { return ((TrPostDataCreated) varUserCreateData_.get(_variable)).getValue( @@ -850,21 +841,24 @@ return g_; } - public abstract EfData getInitData(int _varIdx, int _timeIdx); + public abstract EfData getInitData(H2dVariableType _varIdx, int _timeIdx); - public abstract double getInitData(int _varIdx, int _timeIdx, int _ptIdx) throws IOException; + public abstract double getInitData(H2dVariableType _varIdx, int _timeIdx, int _ptIdx) throws IOException; - protected final int getInitDataIndex(final H2dVariableType _t) { - if (initVarIdx_ != null && _t != null && initVarIdx_.contains(_t)) { return initVarIdx_.get(_t); } - return -1; + protected final boolean isInitVar(final H2dVariableType _t) { + return getInitVar().contains(_t); } + // protected final int getInitDataIndex(final H2dVariableType _t) { + // if (initVarIdx_ != null && _t != null && initVarIdx_.contains(_t)) { return initVarIdx_.get(_t); } + // return -1; + // } + protected final H2dVariableType getInitDataIndex(final String _varName) { - if (initVarIdx_ != null) { - final TObjectIntIterator it = initVarIdx_.iterator(); - for (int i = initVarIdx_.size(); i-- > 0;) { - it.advance(); - if (((H2dVariableType) it.key()).getName().equals(_varName)) { return (H2dVariableType) it.key(); } + Collection<H2dVariableType> vars = getInitVar(); + if (vars != null) { + for (H2dVariableType variableType : vars) { + if (variableType.getName().equals(_varName)) { return variableType; } } } return null; @@ -989,15 +983,6 @@ return variable_.length; } - public final H2dVariableType getVariableWithInitIdx(final int _idx) { - final TObjectIntIterator it = initVarIdx_.iterator(); - for (int i = initVarIdx_.size(); i-- > 0;) { - it.advance(); - if (it.value() == _idx) { return (H2dVariableType) it.key(); } - } - return null; - } - /** * @return un model representant les pas de temps */ @@ -1091,9 +1076,7 @@ } public final boolean isDefined(final H2dVariableType _variable) { - final int init = getInitDataIndex(_variable); - if (init >= 0) { return true; } - return isCreatedVar(_variable) || isUserCreatedVar(_variable); + return isInitVar(_variable) || isCreatedVar(_variable) || isUserCreatedVar(_variable); } public final boolean isElementVar(final CtuluVariable _idxVar) { @@ -1156,8 +1139,8 @@ return -1; } - public boolean openDatas(final ProgressionInterface _int, final CtuluAnalyze _analyze, - final ObjectContainer _db, final CtuluUI _ui) { + public boolean openDatas(final ProgressionInterface _int, final CtuluAnalyze _analyze, final ObjectContainer _db, + final CtuluUI _ui) { if (_db == null) { return false; } if (tmpContainer_ != null) { FuLog.error("the database is already opened", new Throwable()); @@ -1327,17 +1310,12 @@ } } - protected final void setInitVar(final H2dVariableType[] _v) { + protected void setInitVar(final H2dVariableType[] _v) { + initVar_ = Collections.unmodifiableCollection(Arrays.asList(_v)); variable_ = _v; if (variable_ == null) { variable_ = new H2dVariableType[0]; } - if (variable_.length > 0) { - initVarIdx_ = new TObjectIntHashMap(variable_.length); - for (int i = variable_.length - 1; i >= 0; i--) { - initVarIdx_.put(variable_[i], i); - } - } } @@ -1400,7 +1378,7 @@ } protected void updateVarList() { - final Set r = initVarIdx_ == null ? new HashSet() : new HashSet(Arrays.asList(initVarIdx_.keys())); + final Set r = initVar_ == null ? new HashSet() : new HashSet(initVar_); if (FuLog.isDebug()) { FuLog.debug("nb var creee auto " + varCreateData_.size()); } @@ -1442,32 +1420,33 @@ idx++; } } - public static void fillWithSourceInfo(String _pref,Map _table, TrPostSource src) { - + + public static void fillWithSourceInfo(String _pref, Map _table, TrPostSource src) { + Collection<File> files = src.getFiles(); int idx = 1; - String pref=_pref==null?CtuluLibString.EMPTY_STRING:_pref; + String pref = _pref == null ? CtuluLibString.EMPTY_STRING : _pref; for (File file : files) { String suffixe = files.size() > 1 ? CtuluLibString.getEspaceString(idx) : CtuluLibString.EMPTY_STRING; - _table.put(pref+TrResource.getS("Fichier r\xE9sultat") + suffixe, file.getName()); - _table.put(pref+TrResource.getS("Chemin complet") + suffixe, file.getAbsolutePath()); - _table.put(pref+TrResource.getS("Titre Fichier r\xE9sultat") + suffixe, src.getTitle()); + _table.put(pref + TrResource.getS("Fichier r\xE9sultat") + suffixe, file.getName()); + _table.put(pref + TrResource.getS("Chemin complet") + suffixe, file.getAbsolutePath()); + _table.put(pref + TrResource.getS("Titre Fichier r\xE9sultat") + suffixe, src.getTitle()); idx++; } } - - public static void fillWithSourceInfo(String _pref,Map _table, TrPostSourceReaderInterface src) { - - Collection<File> files = src.getFiles(); - int idx = 1; - String pref=_pref==null?CtuluLibString.EMPTY_STRING:_pref; - for (File file : files) { - String suffixe = files.size() > 1 ? CtuluLibString.getEspaceString(idx) : CtuluLibString.EMPTY_STRING; - _table.put(pref+TrResource.getS("Fichier r\xE9sultat") + suffixe, file.getName()); - _table.put(pref+TrResource.getS("Chemin complet") + suffixe, file.getAbsolutePath()); - // _table.put(pref+TrResource.getS("Titre Fichier r\xE9sultat") + suffixe, s); - idx++; - } - } - + + public static void fillWithSourceInfo(String _pref, Map _table, TrPostSourceReaderInterface src) { + + Collection<File> files = src.getFiles(); + int idx = 1; + String pref = _pref == null ? CtuluLibString.EMPTY_STRING : _pref; + for (File file : files) { + String suffixe = files.size() > 1 ? CtuluLibString.getEspaceString(idx) : CtuluLibString.EMPTY_STRING; + _table.put(pref + TrResource.getS("Fichier r\xE9sultat") + suffixe, file.getName()); + _table.put(pref + TrResource.getS("Chemin complet") + suffixe, file.getAbsolutePath()); + // _table.put(pref+TrResource.getS("Titre Fichier r\xE9sultat") + suffixe, s); + idx++; + } + } + } \ No newline at end of file Copied: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceAbstractFromIdx.java (from rev 4403, branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceAbstract.java) =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceAbstractFromIdx.java (rev 0) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceAbstractFromIdx.java 2009-01-26 22:59:34 UTC (rev 4404) @@ -0,0 +1,82 @@ +/* + * @creation 24 mars 2004 + * @modification $Date: 2007-06-28 09:28:18 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.fudaa.tr.post; + +import gnu.trove.TObjectIntHashMap; +import gnu.trove.TObjectIntIterator; + +import java.io.IOException; + +import org.fudaa.ctulu.CtuluUI; +import org.fudaa.dodico.ef.EfData; +import org.fudaa.dodico.ef.EfGridInterface; +import org.fudaa.dodico.h2d.type.H2dVariableType; + +/** + * @author Fred Deniger + * @version $Id: TrPostSourceAbstract.java,v 1.52 2007-06-28 09:28:18 deniger Exp $ + */ +public abstract class TrPostSourceAbstractFromIdx extends TrPostSourceAbstract { + + TObjectIntHashMap initVarIdx_; + + protected TrPostSourceAbstractFromIdx(final String _titre, final EfGridInterface _g, final double[] _time, + final H2dVariableType[] _v, final CtuluUI _impl) { + super(_titre, _g, _time, _v, _impl); + setInitVar(_v); + } + + public void activate() {} + + + + public abstract EfData getInitData(int _varIdx, int _timeIdx); + + public abstract double getInitData(int _varIdx, int _timeIdx, int _ptIdx) throws IOException; + + protected final int getInitDataIndex(final H2dVariableType _t) { + if (initVarIdx_ != null && _t != null && initVarIdx_.contains(_t)) { return initVarIdx_.get(_t); } + return -1; + } + + protected final void setInitVar(final H2dVariableType[] _v) { + super.setInitVar(_v); + if (variable_.length > 0) { + initVarIdx_ = new TObjectIntHashMap(variable_.length); + for (int i = variable_.length - 1; i >= 0; i--) { + initVarIdx_.put(variable_[i], i); + } + } + + } + + public final H2dVariableType getVariableWithInitIdx(final int _idx) { + final TObjectIntIterator it = initVarIdx_.iterator(); + for (int i = initVarIdx_.size(); i-- > 0;) { + it.advance(); + if (it.value() == _idx) { return (H2dVariableType) it.key(); } + } + return null; + } + + @Override + public double getInitData(H2dVariableType _varIdx, int _timeIdx, int _ptIdx) throws IOException { + final int init = getInitDataIndex(_varIdx); + if (init >= 0) { return getInitData(init, _timeIdx, _ptIdx); } + return 0; + } + + @Override + public EfData getInitData(H2dVariableType _varIdx, int _timeIdx) { + final int init = getInitDataIndex(_varIdx); + if (init >= 0) { return getInitData(init, _timeIdx); } + return null; + } + + +} \ No newline at end of file Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceComparator.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceComparator.java 2009-01-26 18:36:56 UTC (rev 4403) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceComparator.java 2009-01-26 22:59:34 UTC (rev 4404) @@ -37,7 +37,7 @@ * @author Fred Deniger * @version $Id: TrPostSourceComparator.java,v 1.12 2007-06-05 09:01:14 deniger Exp $ */ -public final class TrPostSourceComparator extends TrPostSourceAbstract { +public final class TrPostSourceComparator extends TrPostSourceAbstractFromIdx { private H2dVariableType[] srcVariable_; Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceComparatorBuilder.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceComparatorBuilder.java 2009-01-26 18:36:56 UTC (rev 4403) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceComparatorBuilder.java 2009-01-26 22:59:34 UTC (rev 4404) @@ -187,10 +187,10 @@ // -- ajout des infos de cr\xE9ation --// String pref = TrResource.getS("Source") + " "; infosCreation_.put(pref + ZEbliCalquesPanel.TITRE_FIC, src.getTitle()); - TrPostSourceAbstract.fillWithSourceInfo(pref, infosCreation_, src); + TrPostSourceAbstractFromIdx.fillWithSourceInfo(pref, infosCreation_, src); pref = TrResource.getS("Projet\xE9") + " "; infosCreation_.put(pref + ZEbliCalquesPanel.TITRE_FIC, proj.getTitle()); - TrPostSourceAbstract.fillWithSourceInfo(pref, infosCreation_, proj); + TrPostSourceAbstractFromIdx.fillWithSourceInfo(pref, infosCreation_, proj); if (isOnImpGrid) infosCreation_.put(ZEbliCalquesPanel.MAILLAGE_FIC, proj.getTitle()); else infosCreation_.put(ZEbliCalquesPanel.MAILLAGE_FIC, src.getTitle()); Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceDefault.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceDefault.java 2009-01-26 18:36:56 UTC (rev 4403) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceDefault.java 2009-01-26 22:59:34 UTC (rev 4404) @@ -20,7 +20,7 @@ * @author Fred Deniger * @version $Id: TrPostSourceDefault.java,v 1.16 2006-10-27 10:24:42 deniger Exp $ */ -public final class TrPostSourceDefault extends TrPostSourceAbstract { +public final class TrPostSourceDefault extends TrPostSourceAbstractFromIdx { private final EfData[][] datas_; Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceFromReader.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceFromReader.java 2009-01-26 18:36:56 UTC (rev 4403) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceFromReader.java 2009-01-26 22:59:34 UTC (rev 4404) @@ -18,7 +18,7 @@ /** * @author deniger */ -public class TrPostSourceFromReader extends TrPostSourceAbstract { +public class TrPostSourceFromReader extends TrPostSourceAbstract{ TrPostSourceReaderInterface reader_; @@ -54,24 +54,6 @@ - @Override - public EfData getInitData(int _varIdx, int _timeIdx) { - return reader_.getInitData(_varIdx, _timeIdx); - } - - @Override - public double getInitData(int _varIdx, int _timeIdx, int _ptIdx) throws IOException { - return reader_.getInitData(_varIdx, _timeIdx, _ptIdx); - } - -// public TrPostInspectorReader createWatcher(TrPostProjet _proj, boolean _auto) { -// return reader_.createWatcher(_proj, _auto); -// } - - public boolean isRubar() { - return false; - } - public Collection<File> getFiles() { return reader_.getFiles(); } @@ -90,4 +72,19 @@ reader_ = _reader; } + @Override + public EfData getInitData(H2dVariableType _varIdx, int _timeIdx) { + return reader_.getInitData(_varIdx, _timeIdx); + } + + @Override + public double getInitData(H2dVariableType _varIdx, int _timeIdx, int _ptIdx) throws IOException { + return reader_.getInitData(_varIdx, _timeIdx, _ptIdx); + } + + + public boolean isRubar() { + return false; + } + } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceOneTimeStep.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceOneTimeStep.java 2009-01-26 18:36:56 UTC (rev 4403) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceOneTimeStep.java 2009-01-26 22:59:34 UTC (rev 4404) @@ -21,7 +21,7 @@ * @author fred deniger * @version $Id: TrPostSourceOneTimeStep.java,v 1.4 2007-06-05 09:01:14 deniger Exp $ */ -public class TrPostSourceOneTimeStep extends TrPostSourceAbstract { +public class TrPostSourceOneTimeStep extends TrPostSourceAbstractFromIdx { final int timeStep_; final TrPostSource init_; Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceProjected.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceProjected.java 2009-01-26 18:36:56 UTC (rev 4403) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceProjected.java 2009-01-26 22:59:34 UTC (rev 4404) @@ -42,7 +42,7 @@ * @author Fred Deniger * @version $Id: TrPostSourceProjected.java,v 1.14 2007-06-28 09:28:18 deniger Exp $ */ -public class TrPostSourceProjected extends TrPostSourceAbstract { +public class TrPostSourceProjected extends TrPostSourceAbstractFromIdx { final boolean destIsRubar_; Deleted: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceReaderAbstract.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceReaderAbstract.java 2009-01-26 18:36:56 UTC (rev 4403) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceReaderAbstract.java 2009-01-26 22:59:34 UTC (rev 4404) @@ -1,74 +0,0 @@ -/** - * @creation 24 mars 2004 - * @modification $Date: 2007-05-04 14:01:52 $ - * @license GNU General Public License 2 - * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne - * @mail de...@fu... - */ -package org.fudaa.fudaa.tr.post; - -import java.io.File; -import java.io.IOException; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -import org.fudaa.dodico.ef.EfData; -import org.fudaa.dodico.ef.EfDataNode; -import org.fudaa.dodico.h2d.type.H2dVariableType; -import org.fudaa.dodico.telemac.io.SerafinNewReaderInfo; - -import com.memoire.fu.FuLog; - -/** - * @author Fred Deniger - * @version $Id: TrPostSourceSerafin.java,v 1.15 2007-05-04 14:01:52 deniger Exp $ - */ -public abstract class TrPostSourceReaderAbstract implements TrPostSourceReaderInterface { - - Collection<File> file_; - final double[] times_; - final List<H2dVariableType> initVar_; - - protected TrPostSourceReaderAbstract(final File _file, final double[] _time, H2dVariableType[] _initVar) { - file_ = Collections.unmodifiableCollection(Arrays.asList(_file)); - times_ = _time; - initVar_ = Collections.unmodifiableList(Arrays.asList(_initVar)); - } - - protected TrPostSourceReaderAbstract(Collection<File> _file, final double[] _time, H2dVariableType[] _initVar) { - file_ = _file; - times_ = _time; - initVar_ = Collections.unmo... [truncated message content] |
From: <had...@us...> - 2009-01-26 18:37:01
|
Revision: 4403 http://fudaa.svn.sourceforge.net/fudaa/?rev=4403&view=rev Author: hadouxad Date: 2009-01-26 18:36:56 +0000 (Mon, 26 Jan 2009) Log Message: ----------- fonction suite de calcul Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostBuilderSuiteCalcul.java Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostBuilderSuiteCalcul.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostBuilderSuiteCalcul.java 2009-01-26 18:35:58 UTC (rev 4402) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostBuilderSuiteCalcul.java 2009-01-26 18:36:56 UTC (rev 4403) @@ -209,7 +209,7 @@ var[k++]=v; - var=srcToConcat.variable_; + //var=srcToConcat.variable_; //-- initialisation de la liste de source --// List<TrPostSourceReaderInterface> listeSourceInterface_=new ArrayList<TrPostSourceReaderInterface>(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <had...@us...> - 2009-01-26 18:36:04
|
Revision: 4402 http://fudaa.svn.sourceforge.net/fudaa/?rev=4402&view=rev Author: hadouxad Date: 2009-01-26 18:35:58 +0000 (Mon, 26 Jan 2009) Log Message: ----------- fonction suite de calcul Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/ctulu/src/com/memoire/bu/BuMenu.java branches/Prepro-0.92-SNAPSHOT/ctulu/src/com/memoire/bu/BuMenuItem.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/common/tr_en.fr_txt branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjet.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSource.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceAbstract.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceBuilder.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceComparator.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceComparatorBuilder.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceFromReader.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceReaderAbstract.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceReaderInterface.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceReaderReflux.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceReaderSerafin.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/actions/TrPostActionChooseAndCreateCalque.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/persist/TrPostPersistenceManager.java Added Paths: ----------- branches/Prepro-0.92-SNAPSHOT/fudaa/.metadata/.plugins/ branches/Prepro-0.92-SNAPSHOT/fudaa/.metadata/.plugins/org.eclipse.mylyn.bugzilla.core/ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostBuilderSuiteCalcul.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceReaderComposite.java Modified: branches/Prepro-0.92-SNAPSHOT/ctulu/src/com/memoire/bu/BuMenu.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ctulu/src/com/memoire/bu/BuMenu.java 2009-01-25 22:20:21 UTC (rev 4401) +++ branches/Prepro-0.92-SNAPSHOT/ctulu/src/com/memoire/bu/BuMenu.java 2009-01-26 18:35:58 UTC (rev 4402) @@ -23,6 +23,7 @@ import java.util.Hashtable; import java.util.Vector; +import javax.swing.Action; import javax.swing.Icon; import javax.swing.JMenu; import javax.swing.JMenuItem; @@ -41,112 +42,112 @@ * File, Edition, Windows and Help. */ public class BuMenu - extends JMenu - implements BuMenuInterface //ActionListener +extends JMenu +implements BuMenuInterface //ActionListener { - private boolean left_; + private boolean left_; - public BuMenu() - { this("Menu","MENU",true,0); } + public BuMenu() + { this("Menu","MENU",true,0); } - public BuMenu(String _label, String _cmd) - { this(_label,_cmd,null,false,0); } + public BuMenu(String _label, String _cmd) + { this(_label,_cmd,null,false,0); } - public BuMenu(String _label, String _cmd, Icon _icon) - { this(_label,_cmd,_icon,false,0); } + public BuMenu(String _label, String _cmd, Icon _icon) + { this(_label,_cmd,_icon,false,0); } - public BuMenu(String _label, String _cmd, boolean _tearoff) - { this(_label,_cmd,null,_tearoff,0); } + public BuMenu(String _label, String _cmd, boolean _tearoff) + { this(_label,_cmd,null,_tearoff,0); } - public BuMenu(String _label, String _cmd, boolean _tearoff, int _key) - { this(_label,_cmd,null,_tearoff,0); } + public BuMenu(String _label, String _cmd, boolean _tearoff, int _key) + { this(_label,_cmd,null,_tearoff,0); } - public BuMenu(String _label, String _cmd, Icon _icon, - boolean _tearoff, int _key) - { - super(null,_tearoff); + public BuMenu(String _label, String _cmd, Icon _icon, + boolean _tearoff, int _key) + { + super(null,_tearoff); - setName("mn"+_cmd); - setActionCommand(_cmd); - setHorizontalTextPosition(SwingConstants.RIGHT); - Icon icon=_icon; - if(icon==null) icon=BuResource.BU.loadMenuCommandIcon(_cmd); - if((icon instanceof BuIcon)&&((BuIcon)icon).isDefault()) icon=null; + setName("mn"+_cmd); + setActionCommand(_cmd); + setHorizontalTextPosition(SwingConstants.RIGHT); + Icon icon=_icon; + if(icon==null) icon=BuResource.BU.loadMenuCommandIcon(_cmd); + if((icon instanceof BuIcon)&&((BuIcon)icon).isDefault()) icon=null; - if(icon instanceof BuIcon) setIcon((BuIcon)icon); - else setIcon(icon); + if(icon instanceof BuIcon) setIcon((BuIcon)icon); + else setIcon(icon); - setText((_label==null) ?"":_label); + setText((_label==null) ?"":_label); - // TMP - // getPopupMenu().setLightWeightPopupEnabled(false); - } + // TMP + // getPopupMenu().setLightWeightPopupEnabled(false); + } - public boolean isLeft() - { - return left_; - } + public boolean isLeft() + { + return left_; + } - public void setLeft(boolean _left) - { - left_=_left; - } + public void setLeft(boolean _left) + { + left_=_left; + } - /*GCJ-BEGIN*/ - private boolean isLeft(Component _m, Point _p) - { - if(_p.x<0 ) return true; - if(_m==null) return false; + /*GCJ-BEGIN*/ + private boolean isLeft(Component _m, Point _p) + { + if(_p.x<0 ) return true; + if(_m==null) return false; - Component p=_m; + Component p=_m; - while(!(p instanceof BuMenu)) - { - p=(p instanceof JPopupMenu) - ? ((JPopupMenu)p).getInvoker() - : p.getParent(); - if(p==null) return false; - } + while(!(p instanceof BuMenu)) + { + p=(p instanceof JPopupMenu) + ? ((JPopupMenu)p).getInvoker() + : p.getParent(); + if(p==null) return false; + } - Point q=((BuMenu)p).getPopupMenuOrigin(); - p=p.getParent(); - return isLeft(p,q); - } + Point q=((BuMenu)p).getPopupMenuOrigin(); + p=p.getParent(); + return isLeft(p,q); + } - protected Point getPopupMenuOrigin() - { - Point r=super.getPopupMenuOrigin(); - //System.err.println("BMN: getPopupMenuOrigin "+r) + protected Point getPopupMenuOrigin() + { + Point r=super.getPopupMenuOrigin(); + //System.err.println("BMN: getPopupMenuOrigin "+r) - JPopupMenu pm=getPopupMenu(); - pm.putClientProperty("SLAF_LEFT_POPUPMENU",Boolean.FALSE); + JPopupMenu pm=getPopupMenu(); + pm.putClientProperty("SLAF_LEFT_POPUPMENU",Boolean.FALSE); - if(isLeft()||isLeft(getParent(),r)) - { - Container pt=getParent(); - if(pt instanceof JPopupMenu) - { - // Dimension dp=pt.getSize(); - r=new Point(pt.getX()-pm.getPreferredSize().width - -UIManager.getInt("Menu.submenuPopupOffsetX"),r.y); - pm.putClientProperty("SLAF_LEFT_POPUPMENU",Boolean.TRUE); - } - } + if(isLeft()||isLeft(getParent(),r)) + { + Container pt=getParent(); + if(pt instanceof JPopupMenu) + { + // Dimension dp=pt.getSize(); + r=new Point(pt.getX()-pm.getPreferredSize().width + -UIManager.getInt("Menu.submenuPopupOffsetX"),r.y); + pm.putClientProperty("SLAF_LEFT_POPUPMENU",Boolean.TRUE); + } + } - return r; - } - /*GCJ-END*/ + return r; + } + /*GCJ-END*/ - /* + /* public void setMenuLocation(int _x,int _y) { System.err.println("BMN: setMenuLocation "+_x+","+_y); super.setMenuLocation(_x,_y); } - */ + */ - // Essai - /* + // Essai + /* protected WinListener createWinListener(JPopupMenu p) { System.err.println("%%% BuPM: create win listener"); @@ -168,307 +169,314 @@ return super.createWinListener(p); } - */ + */ - // Icon + // Icon - public Icon getIcon() - { - if(BuPreferences.BU.getBooleanProperty("icons.menu",true)|| - (super.getText()==null)) - return super.getIcon(); - return null; - } + public Icon getIcon() + { + if(BuPreferences.BU.getBooleanProperty("icons.menu",true)|| + (super.getText()==null)) + return super.getIcon(); + return null; + } - public void setIcon(BuIcon _icon) - { - BuLib.setIcon(this,_icon); - } + public void setIcon(BuIcon _icon) + { + BuLib.setIcon(this,_icon); + } - // Translation + // Translation - protected String _(String _s) - { - return BuResource.BU.getString(_s); - } + protected String _(String _s) + { + return BuResource.BU.getString(_s); + } - protected static final String __(String _s) - { - return BuResource.BU.getString(_s); - } + protected static final String __(String _s) + { + return BuResource.BU.getString(_s); + } - // Anti-aliasing + // Anti-aliasing - public void paint(Graphics _g) - { - BuLib.setAntialiasing(this,_g); - super.paint(_g); - } + public void paint(Graphics _g) + { + BuLib.setAntialiasing(this,_g); + super.paint(_g); + } - // Mnemonics + // Mnemonics - public void computeMnemonics() - { - Component[] c=getPopupMenu().getComponents(); - Hashtable t=new Hashtable(); + public void computeMnemonics() + { + Component[] c=getPopupMenu().getComponents(); + Hashtable t=new Hashtable(); - //MenuElement[] c=getSubElements(); - //try { c=getMenuComponents(); } - //catch(Exception ex) { } // swing 1.03 + //MenuElement[] c=getSubElements(); + //try { c=getMenuComponents(); } + //catch(Exception ex) { } // swing 1.03 - { - int mn=getMnemonic(); - if(mn>0) t.put(FuFactoryInteger.get(mn),this); - } + { + int mn=getMnemonic(); + if(mn>0) t.put(FuFactoryInteger.get(mn),this); + } - for(int i=0; i<c.length; i++) - { - if(c[i] instanceof JMenuItem) - { - JMenuItem mi=(JMenuItem)c[i]; - int mn=mi.getMnemonic(); - if(mn<=0) + for(int i=0; i<c.length; i++) + { + if(c[i] instanceof JMenuItem) + { + JMenuItem mi=(JMenuItem)c[i]; + int mn=mi.getMnemonic(); + if(mn<=0) + { + String tx=BuLib.candidateMnemonics(mi.getText()); + if(tx!=null) + for(int j=0;j<tx.length();j++) + { + mn=tx.charAt(j); + if(t.get(FuFactoryInteger.get(mn))==null) + { + t.put(FuFactoryInteger.get(mn),mi); + mi.setMnemonic(mn); + break; + } + } + } + if(mi instanceof BuMenu) + ((BuMenu)mi).computeMnemonics(); + } + } + } + + // Separator + + public BuSeparator addSeparator(String _text) { - String tx=BuLib.candidateMnemonics(mi.getText()); - if(tx!=null) - for(int j=0;j<tx.length();j++) - { - mn=tx.charAt(j); - if(t.get(FuFactoryInteger.get(mn))==null) - { - t.put(FuFactoryInteger.get(mn),mi); - mi.setMnemonic(mn); - break; - } - } + BuSeparator r=new BuSeparator(_text); + this.add(r); + return r; } - if(mi instanceof BuMenu) - ((BuMenu)mi).computeMnemonics(); - } - } - } - // Separator + public void removeDummySeparators() + { + removeDummySeparators(getPopupMenu()); + } - public BuSeparator addSeparator(String _text) - { - BuSeparator r=new BuSeparator(_text); - this.add(r); - return r; - } + private static void removeDummySeparators(JPopupMenu _menu) + { + if(_menu==null) return; - public void removeDummySeparators() - { - removeDummySeparators(getPopupMenu()); - } + //synchronized(_menu) + { + Component[] c=_menu.getComponents(); + //MenuElement[] c=_menu.getSubElements(); + if(c==null) return; - private static void removeDummySeparators(JPopupMenu _menu) - { - if(_menu==null) return; + int l=c.length; + if(l==0) return; - //synchronized(_menu) - { - Component[] c=_menu.getComponents(); - //MenuElement[] c=_menu.getSubElements(); - if(c==null) return; + boolean was =true; + Component first=null; + for(int i=l-1;i>=0;i--) + { + if(c[i] instanceof JSeparator) + { + if(was) + { + _menu.remove(c[i]); + } + else + { + first=c[i]; + was=true; + } + } + else + { + was=false; + first=c[i]; + if(first instanceof JMenu) + removeDummySeparators(((JMenu)first).getPopupMenu()); + } + } - int l=c.length; - if(l==0) return; + if(first instanceof JSeparator) + _menu.remove(first); + } + } - boolean was =true; - Component first=null; - for(int i=l-1;i>=0;i--) - { - if(c[i] instanceof JSeparator) - { - if(was) - { - _menu.remove(c[i]); - } - else - { - first=c[i]; - was=true; - } - } - else + // SubMenu + + public void addSubMenu(JMenu _m, boolean _enabled) { - was=false; - first=c[i]; - if(first instanceof JMenu) - removeDummySeparators(((JMenu)first).getPopupMenu()); + _m.setEnabled(_enabled); + _m.addActionListener(this); + this.add(_m); } - } - if(first instanceof JSeparator) - _menu.remove(first); - } - } + // Menu Item - // SubMenu + public BuMenuItem addMenuItem(String _s, String _cmd) + { + return addMenuItem(_s,_cmd,true); + } - public void addSubMenu(JMenu _m, boolean _enabled) - { - _m.setEnabled(_enabled); - _m.addActionListener(this); - this.add(_m); - } + /** + * Retourne l'index de l'item de commande donn\xE9e. + * @param _cmd Le nom de la commande. + * @return L'index, ou -1 si non trouv\xE9. + */ + public int indexOf(String _cmd) { + return indexOf(this,_cmd); + } - // Menu Item + private int indexOf(BuMenu _menu, String _cmd) { + if (_cmd==null) return -1; - public BuMenuItem addMenuItem(String _s, String _cmd) - { - return addMenuItem(_s,_cmd,true); - } - - /** - * Retourne l'index de l'item de commande donn\xE9e. - * @param _cmd Le nom de la commande. - * @return L'index, ou -1 si non trouv\xE9. - */ - public int indexOf(String _cmd) { - return indexOf(this,_cmd); - } + for (int i=0; i<_menu.getItemCount(); i++) { + if (!(_menu.getItem(i) instanceof JMenuItem)) continue; + if (_cmd.equals(_menu.getItem(i).getActionCommand())) return i; + } + return -1; + } - private int indexOf(BuMenu _menu, String _cmd) { - if (_cmd==null) return -1; + public BuMenuItem addMenuItem(String _s, String _cmd, + ActionListener _al) + { + return addMenuItem(_s,_cmd,null,true,0,_al); + } + public BuMenuItem addMenuItem(String _s, String _cmd,boolean _enable, + ActionListener _al) + { + return addMenuItem(_s,_cmd,null,_enable,0,_al); + } - for (int i=0; i<_menu.getItemCount(); i++) { - if (!(_menu.getItem(i) instanceof JMenuItem)) continue; - if (_cmd.equals(_menu.getItem(i).getActionCommand())) return i; - } - return -1; - } + public BuMenuItem addMenuItem(String _s, String _cmd, + boolean _enabled) + { + return addMenuItem(_s,_cmd,null,_enabled,0,this); + } - public BuMenuItem addMenuItem(String _s, String _cmd, - ActionListener _al) - { - return addMenuItem(_s,_cmd,null,true,0,_al); - } - public BuMenuItem addMenuItem(String _s, String _cmd,boolean _enable, - ActionListener _al) - { - return addMenuItem(_s,_cmd,null,_enable,0,_al); - } + public BuMenuItem addMenuItem(String _s, String _cmd, + boolean _enabled, int _key) + { + return addMenuItem(_s,_cmd,null,_enabled,_key,this); + } - public BuMenuItem addMenuItem(String _s, String _cmd, - boolean _enabled) - { - return addMenuItem(_s,_cmd,null,_enabled,0,this); - } + public BuMenuItem addMenuItem(String _s, String _cmd, Icon _icon, + boolean _enabled) + { + return addMenuItem(_s,_cmd,_icon,_enabled,0,this); + } + public BuMenuItem addMenuItem(String _s, String _cmd, Icon _icon, + ActionListener _al) + { + return addMenuItem(_s,_cmd,_icon,true,0,_al); + } - public BuMenuItem addMenuItem(String _s, String _cmd, - boolean _enabled, int _key) - { - return addMenuItem(_s,_cmd,null,_enabled,_key,this); - } + public BuMenuItem addMenuItem(String _s, String _cmd, Icon _icon, + boolean _enabled, int _key) + { + return addMenuItem(_s,_cmd,_icon,_enabled,_key,this); + } - public BuMenuItem addMenuItem(String _s, String _cmd, Icon _icon, - boolean _enabled) - { - return addMenuItem(_s,_cmd,_icon,_enabled,0,this); - } - public BuMenuItem addMenuItem(String _s, String _cmd, Icon _icon, - ActionListener _al) - { - return addMenuItem(_s,_cmd,_icon,true,0,_al); - } + public BuMenuItem addMenuItem(String _s, String _cmd, Icon _icon, + boolean _enabled, int _key, ActionListener _al) + { + Icon icon=_icon; + if(icon==null) icon=BuResource.BU.loadMenuCommandIcon(_cmd); + if((icon instanceof BuIcon)&&((BuIcon)icon).isDefault()) icon=null; + if(icon==null) icon=BuResource.BU.getMenuIcon("aucun"); - public BuMenuItem addMenuItem(String _s, String _cmd, Icon _icon, - boolean _enabled, int _key) - { - return addMenuItem(_s,_cmd,_icon,_enabled,_key,this); - } + BuMenuItem r=new BuMenuItem(); + r.setText(_s); + r.setName("mi"+_cmd); + r.setActionCommand(_cmd); + if(icon instanceof BuIcon) r.setIcon((BuIcon)icon); + else r.setIcon(icon); + r.setHorizontalTextPosition(SwingConstants.RIGHT); + r.addActionListener(_al); + r.setEnabled(_enabled); + if(_key!=0) + { + if((_key>=KeyEvent.VK_F1)&&(_key<=KeyEvent.VK_F12)) + r.setAccelerator(KeyStroke.getKeyStroke(_key,InputEvent.ALT_MASK)); + else + r.setAccelerator(KeyStroke.getKeyStroke(_key,InputEvent.CTRL_MASK)); + } + this.add(r); + return r; + } - public BuMenuItem addMenuItem(String _s, String _cmd, Icon _icon, - boolean _enabled, int _key, ActionListener _al) - { - Icon icon=_icon; - if(icon==null) icon=BuResource.BU.loadMenuCommandIcon(_cmd); - if((icon instanceof BuIcon)&&((BuIcon)icon).isDefault()) icon=null; - if(icon==null) icon=BuResource.BU.getMenuIcon("aucun"); + public BuMenuItem addMenuItem(Action a) + { + BuMenuItem r=new BuMenuItem(a); + this.add(r); + return r; + } - BuMenuItem r=new BuMenuItem(); - r.setText(_s); - r.setName("mi"+_cmd); - r.setActionCommand(_cmd); - if(icon instanceof BuIcon) r.setIcon((BuIcon)icon); - else r.setIcon(icon); - r.setHorizontalTextPosition(SwingConstants.RIGHT); - r.addActionListener(_al); - r.setEnabled(_enabled); - if(_key!=0) - { - if((_key>=KeyEvent.VK_F1)&&(_key<=KeyEvent.VK_F12)) - r.setAccelerator(KeyStroke.getKeyStroke(_key,InputEvent.ALT_MASK)); - else - r.setAccelerator(KeyStroke.getKeyStroke(_key,InputEvent.CTRL_MASK)); - } - this.add(r); - return r; - } + // CheckBoxMenuItem - // CheckBoxMenuItem + public BuCheckBoxMenuItem addCheckBox + (String _s, String _cmd, boolean _enabled, boolean _checked) + { + return addCheckBox(_s,_cmd,null,_enabled,_checked); + } - public BuCheckBoxMenuItem addCheckBox - (String _s, String _cmd, boolean _enabled, boolean _checked) - { - return addCheckBox(_s,_cmd,null,_enabled,_checked); - } + public BuCheckBoxMenuItem addCheckBox + (String _s, String _cmd, Icon _icon, boolean _enabled, boolean _checked) + { + Icon icon=_icon; + if(icon==null) icon=BuResource.BU.loadMenuCommandIcon(_cmd); + if((icon instanceof BuIcon)&&((BuIcon)icon).isDefault()) icon=null; + if(icon==null) icon=BuResource.BU.getMenuIcon("aucun"); - public BuCheckBoxMenuItem addCheckBox - (String _s, String _cmd, Icon _icon, boolean _enabled, boolean _checked) - { - Icon icon=_icon; - if(icon==null) icon=BuResource.BU.loadMenuCommandIcon(_cmd); - if((icon instanceof BuIcon)&&((BuIcon)icon).isDefault()) icon=null; - if(icon==null) icon=BuResource.BU.getMenuIcon("aucun"); + BuCheckBoxMenuItem r=new BuCheckBoxMenuItem(); + r.setText(_s); + r.setName("cbmi"+_cmd); + r.setActionCommand(_cmd); + if(icon instanceof BuIcon) r.setIcon((BuIcon)icon); + else r.setIcon(icon); + r.setHorizontalTextPosition(SwingConstants.RIGHT); + r.addActionListener(this); + r.setEnabled(_enabled); + r.setSelected(_checked); + this.add(r); + return r; + } - BuCheckBoxMenuItem r=new BuCheckBoxMenuItem(); - r.setText(_s); - r.setName("cbmi"+_cmd); - r.setActionCommand(_cmd); - if(icon instanceof BuIcon) r.setIcon((BuIcon)icon); - else r.setIcon(icon); - r.setHorizontalTextPosition(SwingConstants.RIGHT); - r.addActionListener(this); - r.setEnabled(_enabled); - r.setSelected(_checked); - this.add(r); - return r; - } + // RadioButtonMenuItem - // RadioButtonMenuItem + public BuRadioButtonMenuItem addRadioButton + (String _s, String _cmd, boolean _enabled, boolean _checked) + { + return addRadioButton(_s,_cmd,null,_enabled,_checked); + } - public BuRadioButtonMenuItem addRadioButton - (String _s, String _cmd, boolean _enabled, boolean _checked) - { - return addRadioButton(_s,_cmd,null,_enabled,_checked); - } + public BuRadioButtonMenuItem addRadioButton + (String _s, String _cmd, Icon _icon, boolean _enabled, boolean _checked) + { + Icon icon=_icon; + if(icon==null) icon=BuResource.BU.loadMenuCommandIcon(_cmd); + if((icon instanceof BuIcon)&&((BuIcon)icon).isDefault()) icon=null; + if(icon==null) icon=BuResource.BU.getMenuIcon("aucun"); - public BuRadioButtonMenuItem addRadioButton - (String _s, String _cmd, Icon _icon, boolean _enabled, boolean _checked) - { - Icon icon=_icon; - if(icon==null) icon=BuResource.BU.loadMenuCommandIcon(_cmd); - if((icon instanceof BuIcon)&&((BuIcon)icon).isDefault()) icon=null; - if(icon==null) icon=BuResource.BU.getMenuIcon("aucun"); + BuRadioButtonMenuItem r=new BuRadioButtonMenuItem(); + r.setText(_s); + r.setName("rbmi"+_cmd); + r.setActionCommand(_cmd); + if(icon instanceof BuIcon) r.setIcon((BuIcon)icon); + else r.setIcon(icon); + r.setHorizontalTextPosition(SwingConstants.RIGHT); + r.addActionListener(this); + r.setEnabled(_enabled); + r.setSelected(_checked); + this.add(r); + return r; + } - BuRadioButtonMenuItem r=new BuRadioButtonMenuItem(); - r.setText(_s); - r.setName("rbmi"+_cmd); - r.setActionCommand(_cmd); - if(icon instanceof BuIcon) r.setIcon((BuIcon)icon); - else r.setIcon(icon); - r.setHorizontalTextPosition(SwingConstants.RIGHT); - r.addActionListener(this); - r.setEnabled(_enabled); - r.setSelected(_checked); - this.add(r); - return r; - } - - /* + /* public void removeMenuItem(String _cmd) { MenuElement[] cm=getSubElements(); @@ -485,298 +493,298 @@ } } } - */ + */ - // Menus standards + // Menus standards - public static BuMenu buildImportMenu() - { - BuMenu r=new BuMenu(__("Importer"),"IMPORTER"); - return r; - } + public static BuMenu buildImportMenu() + { + BuMenu r=new BuMenu(__("Importer"),"IMPORTER"); + return r; + } - public static BuMenu buildExportMenu() - { - BuMenu r=new BuMenu(__("Exporter"),"EXPORTER"); - return r; - } + public static BuMenu buildExportMenu() + { + BuMenu r=new BuMenu(__("Exporter"),"EXPORTER"); + return r; + } - public static BuMenu buildFileMenu() - { - BuMenu r=new BuMenu(__("Fichier"),"MENU_FICHIER"); - r.addMenuItem(__("Cr\xE9er") ,"CREER" ,false,KeyEvent.VK_N); - r.addMenuItem(__("Ouvrir...") ,"OUVRIR" ,false,KeyEvent.VK_O); + public static BuMenu buildFileMenu() + { + BuMenu r=new BuMenu(__("Fichier"),"MENU_FICHIER"); + r.addMenuItem(__("Cr\xE9er") ,"CREER" ,false,KeyEvent.VK_N); + r.addMenuItem(__("Ouvrir...") ,"OUVRIR" ,false,KeyEvent.VK_O); - r.addSubMenu(new BuMenuRecentFiles(),true); - r.addMenuItem(__("Propri\xE9t\xE9s...") ,"PROPRIETE" ,false); - //r.addSeparator(); + r.addSubMenu(new BuMenuRecentFiles(),true); + r.addMenuItem(__("Propri\xE9t\xE9s...") ,"PROPRIETE" ,false); + //r.addSeparator(); - r.addMenuItem(__("Enregistrer") ,"ENREGISTRER" ,false,KeyEvent.VK_S); - r.addMenuItem(__("Enregistrer sous..."),"ENREGISTRERSOUS" ,false) - .setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK|InputEvent.SHIFT_MASK)); - r.addMenuItem(__("Fermer") ,"FERMER" ,false,KeyEvent.VK_W); - r.addSeparator(); + r.addMenuItem(__("Enregistrer") ,"ENREGISTRER" ,false,KeyEvent.VK_S); + r.addMenuItem(__("Enregistrer sous..."),"ENREGISTRERSOUS" ,false) + .setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK|InputEvent.SHIFT_MASK)); + r.addMenuItem(__("Fermer") ,"FERMER" ,false,KeyEvent.VK_W); + r.addSeparator(); - r.addSubMenu(buildImportMenu(),false); - r.addSubMenu(buildExportMenu(),false); - r.addSeparator(); + r.addSubMenu(buildImportMenu(),false); + r.addSubMenu(buildExportMenu(),false); + r.addSeparator(); - r.addMenuItem(__("Imprimer...") ,"IMPRIMER" ,false,KeyEvent.VK_P); - r.addMenuItem(__("Pr\xE9visualiser") ,"PREVISUALISER" ,false); - r.addMenuItem(__("Mise en page...") ,"MISEENPAGE" ,false); - r.addSeparator(); + r.addMenuItem(__("Imprimer...") ,"IMPRIMER" ,false,KeyEvent.VK_P); + r.addMenuItem(__("Pr\xE9visualiser") ,"PREVISUALISER" ,false); + r.addMenuItem(__("Mise en page...") ,"MISEENPAGE" ,false); + r.addSeparator(); - r.addMenuItem(__("Quitter...") ,"QUITTER" ,false,KeyEvent.VK_Q); + r.addMenuItem(__("Quitter...") ,"QUITTER" ,false,KeyEvent.VK_Q); - return r; - } + return r; + } - public static BuMenu buildEditionMenu() - { - BuMenu r=new BuMenu(__("Edition"),"MENU_EDITION"); - r.addMenuItem(__("D\xE9faire") ,"DEFAIRE" ,false,KeyEvent.VK_Z); - r.addMenuItem(__("Refaire") ,"REFAIRE" ,false) - .setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK|InputEvent.SHIFT_MASK)); - // normalement Ctrl-Y - r.addSeparator(); + public static BuMenu buildEditionMenu() + { + BuMenu r=new BuMenu(__("Edition"),"MENU_EDITION"); + r.addMenuItem(__("D\xE9faire") ,"DEFAIRE" ,false,KeyEvent.VK_Z); + r.addMenuItem(__("Refaire") ,"REFAIRE" ,false) + .setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK|InputEvent.SHIFT_MASK)); + // normalement Ctrl-Y + r.addSeparator(); - r.addMenuItem(__("Copier") ,"COPIER" ,false,KeyEvent.VK_C); - r.addMenuItem(__("Couper") ,"COUPER" ,false,KeyEvent.VK_X); - r.addMenuItem(__("Coller") ,"COLLER" ,false,KeyEvent.VK_V); - r.addMenuItem(__("Dupliquer") ,"DUPLIQUER" ,false) - .setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK|InputEvent.SHIFT_MASK)); - r.addSeparator(); - r.addMenuItem(__("Tout s\xE9lectionner") ,"TOUTSELECTIONNER" ,false,KeyEvent.VK_A); - r.addMenuItem(__("Rechercher...") ,"RECHERCHER" ,false,KeyEvent.VK_F); - r.addMenuItem(__("Remplacer...") ,"REMPLACER" ,false,KeyEvent.VK_R); - r.addSeparator(); - r.addMenuItem(__("Pr\xE9f\xE9rences") ,"PREFERENCE" ,false,KeyEvent.VK_F2); - return r; - } + r.addMenuItem(__("Copier") ,"COPIER" ,false,KeyEvent.VK_C); + r.addMenuItem(__("Couper") ,"COUPER" ,false,KeyEvent.VK_X); + r.addMenuItem(__("Coller") ,"COLLER" ,false,KeyEvent.VK_V); + r.addMenuItem(__("Dupliquer") ,"DUPLIQUER" ,false) + .setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK|InputEvent.SHIFT_MASK)); + r.addSeparator(); + r.addMenuItem(__("Tout s\xE9lectionner") ,"TOUTSELECTIONNER" ,false,KeyEvent.VK_A); + r.addMenuItem(__("Rechercher...") ,"RECHERCHER" ,false,KeyEvent.VK_F); + r.addMenuItem(__("Remplacer...") ,"REMPLACER" ,false,KeyEvent.VK_R); + r.addSeparator(); + r.addMenuItem(__("Pr\xE9f\xE9rences") ,"PREFERENCE" ,false,KeyEvent.VK_F2); + return r; + } - public static BuMenu buildMetalThemeMenu() - { - BuMenu r=new BuMenu(__("Th\xE8mes pour Metal"),"THEME_METAL"); + public static BuMenu buildMetalThemeMenu() + { + BuMenu r=new BuMenu(__("Th\xE8mes pour Metal"),"THEME_METAL"); - BuMetalCustomTheme[] themes=BuMetalCustomTheme.getList(); - for(int i=0;i<themes.length;i++) - { - if(themes[i]==null) - r.addSeparator(); - else - { - JMenuItem mi; - mi=r.addMenuItem(__(themes[i].getName()),"THEME_METAL("+i+")",null,true); - mi.setIcon(themes[i].getIcon()); - } - } + BuMetalCustomTheme[] themes=BuMetalCustomTheme.getList(); + for(int i=0;i<themes.length;i++) + { + if(themes[i]==null) + r.addSeparator(); + else + { + JMenuItem mi; + mi=r.addMenuItem(__(themes[i].getName()),"THEME_METAL("+i+")",null,true); + mi.setIcon(themes[i].getIcon()); + } + } - return r; - } + return r; + } - public static BuMenu buildSlafThemeMenu() - { - BuMenu r=new BuMenu(__("Th\xE8mes pour Slaf"),"THEME_SLAF"); + public static BuMenu buildSlafThemeMenu() + { + BuMenu r=new BuMenu(__("Th\xE8mes pour Slaf"),"THEME_SLAF"); - BuSlafCustomTheme[] themes=BuSlafCustomTheme.getList(); - for(int i=0;i<themes.length;i++) - { - if(themes[i]==null) - r.addSeparator(); - else - { - JMenuItem mi; - mi=r.addMenuItem(__(themes[i].getName()),"THEME_SLAF("+i+")",null,true); - mi.setIcon(themes[i].getIcon()); - } - } + BuSlafCustomTheme[] themes=BuSlafCustomTheme.getList(); + for(int i=0;i<themes.length;i++) + { + if(themes[i]==null) + r.addSeparator(); + else + { + JMenuItem mi; + mi=r.addMenuItem(__(themes[i].getName()),"THEME_SLAF("+i+")",null,true); + mi.setIcon(themes[i].getIcon()); + } + } - return r; - } + return r; + } - public static BuMenu buildLookAndFeelMenu() - { - BuMenu r=new BuMenu(__("Aspects"),"ASPECT"); + public static BuMenu buildLookAndFeelMenu() + { + BuMenu r=new BuMenu(__("Aspects"),"ASPECT"); - r.addSubMenu(buildMetalThemeMenu(),FuLib.classExists("javax.swing.plaf.metal.MetalLookAndFeel")); + r.addSubMenu(buildMetalThemeMenu(),FuLib.classExists("javax.swing.plaf.metal.MetalLookAndFeel")); - //if(!BuLib.isSwing10()) - r.addSubMenu(buildSlafThemeMenu(),FuLib.classExists("com.memoire.slaf.SlafLookAndFeel")); + //if(!BuLib.isSwing10()) + r.addSubMenu(buildSlafThemeMenu(),FuLib.classExists("com.memoire.slaf.SlafLookAndFeel")); - r.addSeparator(); + r.addSeparator(); - //if(!BuLib.isSwing10()) - r.addMenuItem("Amiga" ,"ASPECT_AMIGA" ,FuLib.classExists("swing.addon.plaf.threeD.ThreeDLookAndFeel")); + //if(!BuLib.isSwing10()) + r.addMenuItem("Amiga" ,"ASPECT_AMIGA" ,FuLib.classExists("swing.addon.plaf.threeD.ThreeDLookAndFeel")); - //if(FuLib.jdk()>1.3) - //{ - r.addMenuItem("FHLaf" ,"ASPECT_FHLAF" ,FuLib.classExists("com.shfarr.ui.plaf.fh.FhLookAndFeel")); - r.addMenuItem("Gtk" ,"ASPECT_GTK" ,FuLib.classExists("com.sun.java.swing.plaf.gtk.GTKLookAndFeel")); - r.addMenuItem("Kunststoff" ,"ASPECT_KUNSTSTOFF" ,FuLib.classExists("com.incors.plaf.kunststoff.KunststoffLookAndFeel")); - r.addMenuItem("Liquid" ,"ASPECT_LIQUID" ,FuLib.classExists("com.birosoft.liquid.LiquidLookAndFeel")); - //} + //if(FuLib.jdk()>1.3) + //{ + r.addMenuItem("FHLaf" ,"ASPECT_FHLAF" ,FuLib.classExists("com.shfarr.ui.plaf.fh.FhLookAndFeel")); + r.addMenuItem("Gtk" ,"ASPECT_GTK" ,FuLib.classExists("com.sun.java.swing.plaf.gtk.GTKLookAndFeel")); + r.addMenuItem("Kunststoff" ,"ASPECT_KUNSTSTOFF" ,FuLib.classExists("com.incors.plaf.kunststoff.KunststoffLookAndFeel")); + r.addMenuItem("Liquid" ,"ASPECT_LIQUID" ,FuLib.classExists("com.birosoft.liquid.LiquidLookAndFeel")); + //} - // r.addMenuItem("Basic" ,"ASPECT_BASIC" ,FuLib.classExists("BuBasicLookAndFeel")); - r.addMenuItem("Mac" ,"ASPECT_MAC" ,FuLib.classExists("com.sun.java.swing.plaf.mac.MacLookAndFeel")); - r.addMenuItem("Metal" ,"ASPECT_METAL" ,FuLib.classExists("javax.swing.plaf.metal.MetalLookAndFeel")); + // r.addMenuItem("Basic" ,"ASPECT_BASIC" ,FuLib.classExists("BuBasicLookAndFeel")); + r.addMenuItem("Mac" ,"ASPECT_MAC" ,FuLib.classExists("com.sun.java.swing.plaf.mac.MacLookAndFeel")); + r.addMenuItem("Metal" ,"ASPECT_METAL" ,FuLib.classExists("javax.swing.plaf.metal.MetalLookAndFeel")); - // if(FuLib.jdk()>1.3) - r.addMenuItem("Metouia" ,"ASPECT_METOUIA" ,FuLib.classExists("net.sourceforge.mlf.metouia.MetouiaLookAndFeel")); + // if(FuLib.jdk()>1.3) + r.addMenuItem("Metouia" ,"ASPECT_METOUIA" ,FuLib.classExists("net.sourceforge.mlf.metouia.MetouiaLookAndFeel")); - r.addMenuItem("Motif" ,"ASPECT_MOTIF" ,FuLib.classExists("com.sun.java.swing.plaf.motif.MotifLookAndFeel")); - // r.addMenuItem("Multi" ,"ASPECT_MULTI" ,FuLib.classExists("javax.swing.plaf.multi.MultiLookAndFeel")); - r.addMenuItem("Next" ,"ASPECT_NEXT" ,FuLib.classExists("nextlf.plaf.NextLookAndFeel")); - r.addMenuItem("Organic" ,"ASPECT_ORGANIC" ,FuLib.classExists("javax.swing.plaf.organic.OrganicLookAndFeel")); + r.addMenuItem("Motif" ,"ASPECT_MOTIF" ,FuLib.classExists("com.sun.java.swing.plaf.motif.MotifLookAndFeel")); + // r.addMenuItem("Multi" ,"ASPECT_MULTI" ,FuLib.classExists("javax.swing.plaf.multi.MultiLookAndFeel")); + r.addMenuItem("Next" ,"ASPECT_NEXT" ,FuLib.classExists("nextlf.plaf.NextLookAndFeel")); + r.addMenuItem("Organic" ,"ASPECT_ORGANIC" ,FuLib.classExists("javax.swing.plaf.organic.OrganicLookAndFeel")); - // if(FuLib.jdk()>1.3) - // { - r.addMenuItem("Oyoaha" ,"ASPECT_OYOAHA" ,FuLib.classExists("com.oyoaha.swing.plaf.oyoaha.OyoahaLookAndFeel")); - r.addMenuItem("Plastic" ,"ASPECT_PLASTIC" ,FuLib.classExists("com.jgoodies.looks.plastic.PlasticLookAndFeel")); - r.addMenuItem("Plastic 3D" ,"ASPECT_PLASTIC3D" ,FuLib.classExists("com.jgoodies.looks.plastic.Plastic3DLookAndFeel")); - r.addMenuItem("Plastic XP" ,"ASPECT_PLASTICXP" ,FuLib.classExists("com.jgoodies.looks.plastic.PlasticXPLookAndFeel")); - r.addMenuItem("SkinLF" ,"ASPECT_SKINLF" ,FuLib.classExists("com.l2fprod.gui.plaf.skin.SkinLookAndFeel")); - // } + // if(FuLib.jdk()>1.3) + // { + r.addMenuItem("Oyoaha" ,"ASPECT_OYOAHA" ,FuLib.classExists("com.oyoaha.swing.plaf.oyoaha.OyoahaLookAndFeel")); + r.addMenuItem("Plastic" ,"ASPECT_PLASTIC" ,FuLib.classExists("com.jgoodies.looks.plastic.PlasticLookAndFeel")); + r.addMenuItem("Plastic 3D" ,"ASPECT_PLASTIC3D" ,FuLib.classExists("com.jgoodies.looks.plastic.Plastic3DLookAndFeel")); + r.addMenuItem("Plastic XP" ,"ASPECT_PLASTICXP" ,FuLib.classExists("com.jgoodies.looks.plastic.PlasticXPLookAndFeel")); + r.addMenuItem("SkinLF" ,"ASPECT_SKINLF" ,FuLib.classExists("com.l2fprod.gui.plaf.skin.SkinLookAndFeel")); + // } - // if(!BuLib.isSwing10()) - r.addMenuItem("Slaf" ,"ASPECT_SLAF" ,FuLib.classExists("com.memoire.slaf.SlafLookAndFeel")); + // if(!BuLib.isSwing10()) + r.addMenuItem("Slaf" ,"ASPECT_SLAF" ,FuLib.classExists("com.memoire.slaf.SlafLookAndFeel")); - if(FuLib.jdk()>1.4) - r.addMenuItem("Synthetica" ,"ASPECT_SYNTHETICA" ,FuLib.classExists("de.javasoft.plaf.synthetica.SyntheticaStandardLookAndFeel")); + if(FuLib.jdk()>1.4) + r.addMenuItem("Synthetica" ,"ASPECT_SYNTHETICA" ,FuLib.classExists("de.javasoft.plaf.synthetica.SyntheticaStandardLookAndFeel")); - r.addMenuItem("Tonic" ,"ASPECT_TONIC" ,FuLib.classExists("com.digitprop.tonic.TonicLookAndFeel")); - r.addMenuItem("Windows" ,"ASPECT_WINDOWS" ,FuLib.classExists("com.sun.java.swing.plaf.windows.WindowsLookAndFeel")); + r.addMenuItem("Tonic" ,"ASPECT_TONIC" ,FuLib.classExists("com.digitprop.tonic.TonicLookAndFeel")); + r.addMenuItem("Windows" ,"ASPECT_WINDOWS" ,FuLib.classExists("com.sun.java.swing.plaf.windows.WindowsLookAndFeel")); - return r; - } + return r; + } - public static BuMenu buildWindowMenu() - { - BuMenu r=new BuMenu(__("Fen\xEAtres"),"MENU_FENETRES"); + public static BuMenu buildWindowMenu() + { + BuMenu r=new BuMenu(__("Fen\xEAtres"),"MENU_FENETRES"); -/* if(!FuLib.isJDistroRunning()) + /* if(!FuLib.isJDistroRunning()) r.addSubMenu(buildLookAndFeelMenu(),true);*/ - r.addSubMenu(new BuMenuInternalFrames(),true); + r.addSubMenu(new BuMenuInternalFrames(),true); - BuMenu sm; + BuMenu sm; - if(BuPreferences.BU.getBooleanProperty("menu.short",false)) - { - sm=new BuMenu(__("Organisation"),"CASCADE_ORGANISATION"); - r.addSubMenu(sm,true); - } - else - { - sm=r; - r.addSeparator(__("Organisation")); - } - sm.addMenuItem (__("Plein \xE9cran") ,"PLEINECRAN" ,true); - sm.addMenuItem (__("Cascade") ,"CASCADE" ,true); - sm.addMenuItem (__("Mosaique") ,"MOSAIQUE" ,true); - sm.addMenuItem (__("Ranger les ic\xF4nes") ,"RANGERICONES" ,true); - sm.addMenuItem (__("Ranger les palettes") ,"RANGERPALETTES" ,true); - sm.addMenuItem (__("Echanger les colonnes"),"ECHANGER_COLONNES" ,true); + if(BuPreferences.BU.getBooleanProperty("menu.short",false)) + { + sm=new BuMenu(__("Organisation"),"CASCADE_ORGANISATION"); + r.addSubMenu(sm,true); + } + else + { + sm=r; + r.addSeparator(__("Organisation")); + } + sm.addMenuItem (__("Plein \xE9cran") ,"PLEINECRAN" ,true); + sm.addMenuItem (__("Cascade") ,"CASCADE" ,true); + sm.addMenuItem (__("Mosaique") ,"MOSAIQUE" ,true); + sm.addMenuItem (__("Ranger les ic\xF4nes") ,"RANGERICONES" ,true); + sm.addMenuItem (__("Ranger les palettes") ,"RANGERPALETTES" ,true); + sm.addMenuItem (__("Echanger les colonnes"),"ECHANGER_COLONNES" ,true); - if(BuPreferences.BU.getBooleanProperty("menu.short",false)) - { - sm=new BuMenu(__("El\xE9ments"),"VISIBLE_ELEMENTS"); - r.addSubMenu(sm,true); - } - else - { - sm=r; - r.addSeparator(__("El\xE9ments")); - } - sm.addCheckBox - (__("Outils sp\xE9cifiques"),"VISIBLE_SPECIFICBAR",true ,true ); - sm.addCheckBox - (__("Colonne gauche") ,"VISIBLE_LEFTCOLUMN" ,true ,true ) - .setAccelerator - (KeyStroke.getKeyStroke(KeyEvent.VK_F11,InputEvent.ALT_MASK)); - sm.addCheckBox - (__("Colonne droite") ,"VISIBLE_RIGHTCOLUMN",true ,true ) - .setAccelerator - (KeyStroke.getKeyStroke(KeyEvent.VK_F12,InputEvent.ALT_MASK)); - sm.addCheckBox - (__("Barre d'\xE9tat") ,"VISIBLE_STATUSBAR" ,true ,true ); + if(BuPreferences.BU.getBooleanProperty("menu.short",false)) + { + sm=new BuMenu(__("El\xE9ments"),"VISIBLE_ELEMENTS"); + r.addSubMenu(sm,true); + } + else + { + sm=r; + r.addSeparator(__("El\xE9ments")); + } + sm.addCheckBox + (__("Outils sp\xE9cifiques"),"VISIBLE_SPECIFICBAR",true ,true ); + sm.addCheckBox + (__("Colonne gauche") ,"VISIBLE_LEFTCOLUMN" ,true ,true ) + .setAccelerator + (KeyStroke.getKeyStroke(KeyEvent.VK_F11,InputEvent.ALT_MASK)); + sm.addCheckBox + (__("Colonne droite") ,"VISIBLE_RIGHTCOLUMN",true ,true ) + .setAccelerator + (KeyStroke.getKeyStroke(KeyEvent.VK_F12,InputEvent.ALT_MASK)); + sm.addCheckBox + (__("Barre d'\xE9tat") ,"VISIBLE_STATUSBAR" ,true ,true ); - return r; - } + return r; + } - public static BuMenu buildHelpMenu() - { - BuMenu r=new BuMenu(__("Aide"),"MENU_AIDE"); + public static BuMenu buildHelpMenu() + { + BuMenu r=new BuMenu(__("Aide"),"MENU_AIDE"); - r.addCheckBox - (__("Assistant") ,"ASSISTANT" ,true ,true ); + r.addCheckBox + (__("Assistant") ,"ASSISTANT" ,true ,true ); - BuMenu sm; + BuMenu sm; - if(BuPreferences.BU.getBooleanProperty("menu.short",false)) - { - sm=new BuMenu(__("Documentation"),"AIDE_DOCUMENTATION"); - r.addSubMenu(sm,true); - } - else - { - sm=r; - r.addSeparator(__("Documentation") ); - } - sm.addMenuItem (__("Page principale") ,"AIDE_INDEX" ,true ,KeyEvent.VK_F1); - sm.addMenuItem (__("Pointeur") ,"POINTEURAIDE" ,true ) - .setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1,InputEvent.SHIFT_MASK)); - sm.addMenuItem (__("Index alphab\xE9tique") ,"INDEX_ALPHA" ,true ); - sm.addMenuItem (__("Index th\xE9matique") ,"INDEX_THEMA" ,true ); + if(BuPreferences.BU.getBooleanProperty("menu.short",false)) + { + sm=new BuMenu(__("Documentation"),"AIDE_DOCUMENTATION"); + r.addSubMenu(sm,true); + } + else + { + sm=r; + r.addSeparator(__("Documentation") ); + } + sm.addMenuItem (__("Page principale") ,"AIDE_INDEX" ,true ,KeyEvent.VK_F1); + sm.addMenuItem (__("Pointeur") ,"POINTEURAIDE" ,true ) + .setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1,InputEvent.SHIFT_MASK)); + sm.addMenuItem (__("Index alphab\xE9tique") ,"INDEX_ALPHA" ,true ); + sm.addMenuItem (__("Index th\xE9matique") ,"INDEX_THEMA" ,true ); - if(BuPreferences.BU.getBooleanProperty("menu.short",false)) - { - sm=new BuMenu(__("Informations"),"TEXTE_INFORMATIONS"); - r.addSubMenu(sm,true); - } - else - { - sm=r; - r.addSeparator(__("Informations") ); - } - sm.addMenuItem (__("Astuces...") ,"ASTUCE" ,true ); - sm.addMenuItem (__("A propos de...") ,"APROPOSDE" ,true ); - sm.addMenuItem (__("Licence...") ,"TEXTE_LICENCE" ,true ); + if(BuPreferences.BU.getBooleanProperty("menu.short",false)) + { + sm=new BuMenu(__("Informations"),"TEXTE_INFORMATIONS"); + r.addSubMenu(sm,true); + } + else + { + sm=r; + r.addSeparator(__("Informations") ); + } + sm.addMenuItem (__("Astuces...") ,"ASTUCE" ,true ); + sm.addMenuItem (__("A propos de...") ,"APROPOSDE" ,true ); + sm.addMenuItem (__("Licence...") ,"TEXTE_LICENCE" ,true ); - if(BuPreferences.BU.getBooleanProperty("menu.short",false)) - { - sm=new BuMenu(__("Internet"),"WWW_INTERNET"); - r.addSubMenu(sm,true); - } - else - { - sm=r; - r.addSeparator(__("Internet") ); - } - sm.addMenuItem (__("Site WWW") ,"WWW_ACCUEIL" ,true ); - // sm.addMenuItem (__("Site FTP"),"FTP_ACCUEIL",true ); - sm.addMenuItem (__("Mise \xE0 jour") ,"MAJ" ,false); - // sm.addMenuItem (__("Bogue...") ,"WWW_BOGUE" ,false); - // sm.addMenuItem (__("Achat...") ,"WWW_ACHAT" ,false); + if(BuPreferences.BU.getBooleanProperty("menu.short",false)) + { + sm=new BuMenu(__("Internet"),"WWW_INTERNET"); + r.addSubMenu(sm,true); + } + else + { + sm=r; + r.addSeparator(__("Internet") ); + } + sm.addMenuItem (__("Site WWW") ,"WWW_ACCUEIL" ,true ); + // sm.addMenuItem (__("Site FTP"),"FTP_ACCUEIL",true ); + sm.addMenuItem (__("Mise \xE0 jour") ,"MAJ" ,false); + // sm.addMenuItem (__("Bogue...") ,"WWW_BOGUE" ,false); + // sm.addMenuItem (__("Achat...") ,"WWW_ACHAT" ,false); - return r; - } + return r; + } - // Action + // Action - private Vector actionListeners_=new Vector(); + private Vector actionListeners_=new Vector(); - public void addActionListener(ActionListener _l) - { actionListeners_.addElement(_l); } + public void addActionListener(ActionListener _l) + { actionListeners_.addElement(_l); } - public void removeActionListener(ActionListener _l) - { actionListeners_.removeElement(_l); } + public void removeActionListener(ActionListener _l) + { actionListeners_.removeElement(_l); } - public void actionPerformed(ActionEvent _evt) - { - // JComponent source=(JComponent)_evt.getSource(); - // System.err.println(""+getClass()+": "+source); + public void actionPerformed(ActionEvent _evt) + { + // JComponent source=(JComponent)_evt.getSource(); + // System.err.println(""+getClass()+": "+source); - for(Enumeration e=actionListeners_.elements(); e.hasMoreElements(); ) - ((ActionListener)e.nextElement()).actionPerformed(_evt); - } + for(Enumeration e=actionListeners_.elements(); e.hasMoreElements(); ) + ((ActionListener)e.nextElement()).actionPerformed(_evt); + } } Modified: branches/Prepro-0.92-SNAPSHOT/ctulu/src/com/memoire/bu/BuMenuItem.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ctulu/src/com/memoire/bu/BuMenuItem.java 2009-01-25 22:20:21 UTC (rev 4401) +++ branches/Prepro-0.92-SNAPSHOT/ctulu/src/com/memoire/bu/BuMenuItem.java 2009-01-26 18:35:58 UTC (rev 4402) @@ -15,6 +15,7 @@ import java.awt.Point; import java.awt.event.MouseEvent; +import javax.swing.Action; import javax.swing.Icon; import javax.swing.JMenuItem; @@ -65,6 +66,12 @@ setText(_label==null?"":_label); } + public BuMenuItem(Action a) + { + + setAction(a); + } + // Icon public Icon getIcon() Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/common/tr_en.fr_txt =================================================================== (Binary files differ) Added: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostBuilderSuiteCalcul.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostBuilderSuiteCalcul.java (rev 0) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostBuilderSuiteCalcul.java 2009-01-26 18:35:58 UTC (rev 4402) @@ -0,0 +1,304 @@ +package org.fudaa.fudaa.tr.post; + +import java.awt.event.ActionEvent; +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; + +import javax.swing.Icon; + +import org.fudaa.ctulu.CtuluLibString; +import org.fudaa.ctulu.CtuluVariable; +import org.fudaa.ctulu.collection.CtuluArrayDouble; +import org.fudaa.dodico.ef.EfGridInterface; +import org.fudaa.dodico.h2d.type.H2dVariableType; +import org.fudaa.ebli.calque.ZEbliCalquesPanel; +import org.fudaa.ebli.commun.EbliActionSimple; +import org.fudaa.ebli.visuallibrary.EbliNode; +import org.fudaa.ebli.visuallibrary.calque.CalqueLegendeWidgetAdapter; +import org.fudaa.fudaa.commun.impl.FudaaCommonImplementation; +import org.fudaa.fudaa.tr.common.TrResource; +import org.fudaa.fudaa.tr.post.TrPostSourceReaderComposite.CoupleTimeStepData; + + + + +/** + * Builder qui construit les suites de calcul. + * @author Adrien Hadoux + * + */ +public class TrPostBuilderSuiteCalcul { + + + /** + * Action qui r\xE9alise la suite de calcul. + * @author Adrien Hadoux + * + */ + public static class ActionBuildSuite extends EbliActionSimple{ + + + TrPostSource src_; + TrPostCommonImplementation impl_; + public ActionBuildSuite(TrPostSource src,String _name, Icon _ic, String _ac,TrPostCommonImplementation impl) { + super(_name, _ic, _ac); + // TODO Auto-generated constructor stub + src_= src; + src_=src; + impl_=impl; + } + + + public void actionPerformed(ActionEvent _e) { + + + //-- test de comptabilit\xE9 de fichier source --// + if(!isCompatibleSuiteCalcul(src_)){ + impl_.error(TrResource.getS("Le fichier n'est pas valide.")); + return; + } + + //-- on lance la dialog de choix des fichiers sources --// + final TrPostSource srcChoisie = impl_.getCurrentProject().getChooserMultiSources(-1); + if (srcChoisie == null) { + impl_.error(TrResource.getS(TrResource.getS("Aucune source choisie"))); + return; + } + + if(!isCompatibleSuiteCalcul(srcChoisie)){ + impl_.error(TrResource.getS("Le fichier n'est pas valide.")); + return; + } + + + List<String> error=new ArrayList<String>(); + + //-- creation de la suite de calcul --// + TrPostSource suiteCalcul=createSuiteCalcul((TrPostSourceFromReader)src_, impl_, (TrPostSourceFromReader)srcChoisie, error); + + if(suiteCalcul==null){ + //-- il se passe des choses \xE9tranges.... --// + String maxiStringLeo=""; + for(String err:error) + maxiStringLeo+=err+"\n"; + + impl_.error(maxiStringLeo); + return; + } + + + //-- on ajoute la nouvelle src r\xE9sultat comme \xE9tant une suite de calcul --// + + impl_.c_.ajouterSource(suiteCalcul); + + + //-- on cree la vue 2d correspondante --// + + TrPostProjet projet=impl_.getCurrentProject(); + TrPostLayoutPanelController controller=impl_.getCurrentLayoutFille().controller_; + final CalqueLegendeWidgetAdapter legendeCalque = new CalqueLegendeWidgetAdapter(controller.getSceneCourante(), null); + final TrPostVisuPanel pnVisu = new TrPostVisuPanel(projet.getImpl(), projet, legendeCalque, suiteCalcul); + final EbliNode node = controller.addCalque(TrResource.getS("Calque") + + (controller.getSceneCourante().getAllVue2d().size() + 1), pnVisu.getLocation(), pnVisu.getPreferredSize(), + pnVisu, legendeCalque); + // -- ajout de l INFO de la source utilis\xE9e --// + node.getWidget().getController().setDescription("Source: " + projet.formatInfoSource(srcChoisie)); + + // -- ajout des infos de cr\xE9ation --// + + TrPostSourceReaderComposite.fillInfosWithComposite(pnVisu.infosCreation_,(TrPostSourceReaderComposite)((TrPostSourceFromReader)suiteCalcul).getReader()); + + + + + } + + + } + + + /** + * R\xE9cup\xE9rer l'interface \xE0 partir du fichier + * @param _f + * @param _impl + * @return + */ + public static TrPostSourceFromReader createSourceFromeFile(File _f, TrPostCommonImplementation _impl){ + TrPostSource src= TrPostSourceBuilder.activeSourceAction(_f, _impl, _impl.getMainProgression()); + if(src!=null && src instanceof TrPostSourceFromReader) return ((TrPostSourceFromReader)src); + return null; + + } + + public static TrPostSource createSuiteCalcul(File _f, TrPostCommonImplementation _impl, TrPostSourceFromReader _reader,List<String> error){ + //-- lecture de l'interface \xE0 ajouter --// + TrPostSourceFromReader srcToConcat=createSourceFromeFile(_f, _impl); + return createSuiteCalcul(_reader, _impl, srcToConcat, error); + } + + + /** + * Algorithme de construction d'une suite de calcul. + * @param srcToConcat + * @param _impl + * @param _reader + * @param error + * @return + */ + public static TrPostSource createSuiteCalcul(TrPostSourceFromReader srcToConcat, TrPostCommonImplementation _impl, TrPostSourceFromReader _reader,List<String> error){ + TrPostSource suiteCalcul=null; + if(srcToConcat==null){ + error.add(TrResource.getS("Le fichier n'est pas valide.")); + return null; + } + + + + if(_reader.isRubar() || srcToConcat.isRubar()){ + error.add(TrResource.getS("Format Rubar non g\xE9r\xE9")); + return null; + } + + //-- comparaison des grilles --// + EfGridInterface grille=srcToConcat.getGrid(); + if(!grille.isSameStrict(_reader.getGrid(), _impl.getMainProgression(),0.01)){ + error.add(TrResource.getS("Les grilles ne sont pas identiques")); + return null; + } + + //-- comparaison des pas de temps d\xE9but et finaux --// + double[] time1=TrPostSourceFromReader.getTimes(_reader.getReader()); + double[] time2=TrPostSourceFromReader.getTimes(srcToConcat.getReader()); + + if(time1[time1.length-1]!=time2[0] && time2[time2.length-1]!=time1[0]){ + error.add(TrResource.getS("Le dernier pas de temps de l'un doit \xEAtre \xE9quivalent au premier pas de temps de l'autre.")); + return null; + } + + + //-- recuperation des pas de temps et des variables --// + // double[] timeTotal= new double[time1.length+time2.length-1]; + // if(time1[0]>time2[0]){ + // //-- on permute pour garder l'ordre --// + // double[] temp=time1; + // time1=time2; + // time2=temp; + // } + // for(int i=0;i<time1.length;i++) + // timeTotal[i]=time1[i]; + // for(int i=0;i<time2.length-1;i++) + // timeTotal[time1.length+i]=time2[i+1]; + + HashSet<H2dVariableType> listeVar=new HashSet<H2dVariableType>(); + H2dVariableType[] var=null; + for(int i=0;i<_reader.getAvailableVar().length;i++) + listeVar.add(_reader.getVariable(i)); + for(int i=0;i<srcToConcat.getAvailableVar().length;i++) + listeVar.add(srcToConcat.getVariable(i)); + var=new H2dVariableType[listeVar.size()]; + int k=0; + for(H2dVariableType v:listeVar) + var[k++]=v; + + + var=srcToConcat.variable_; + + //-- initialisation de la liste de source --// + List<TrPostSourceReaderInterface> listeSourceInterface_=new ArrayList<TrPostSourceReaderInterface>(); + + //-- on ajoute \xE0 la liste des interfaces l'interface 1 et l'intrface 2 --// + TrPostSourceReaderInterface interface1=_reader.reader_; + TrPostSourceReaderInterface interface2=srcToConcat.reader_; + + + //-- attetion au cas particulier: si une interface1 est deja une suite, il faut ajouter toutes ses interfaces --// + if(interface1 instanceof TrPostSourceReaderComposite) + listeSourceInterface_.addAll(((TrPostSourceReaderComposite)interface1).listeSourceInterface_); + else + listeSourceInterface_.add(interface1); + + if(interface2 instanceof TrPostSourceReaderComposite) + listeSourceInterface_.addAll(((TrPostSourceReaderComposite)interface2).listeSourceInterface_); + else + listeSourceInterface_.add(interface2); + + //-- ajout de tous les fichiers dans la collection --// + final Collection<File> file_=new HashSet<File>(interface1.getFiles());; + file_.addAll(interface2.getFiles()); + + + //-- on trie les listes dans l'ordre des timestep --// + Collections.sort(listeSourceInterface_,new ComparateurTrPostSourceReaderInterface()); + + //- ajout des correspondances timestep/source avec nouveau timestep --// + Map<Integer, CoupleTimeStepData> mapTimeStep_=new HashMap<Integer, CoupleTimeStepData>(); + ArrayList<Double> times=new ArrayList<Double>(); + int cpt=0; + for(TrPostSourceReaderInterface data:listeSourceInterface_){ + for(int i=0;i<data.getNbTimeStep();i++){ + + //-- ICI, pour cet algo, on doit degager tout les doublons et ne conserver que des valeurs uniques --// + if(!times.contains(data.getTimeStep(i))){ + mapTimeStep_.put(cpt,new CoupleTimeStepData(data,i)); + times.add(data.getTimeStep(i)); + cpt++; + } + } + } + + double[] timeTotal=new double[times.size()]; + for(int i=0;i<times.size();i++) + timeTotal[i]=times.get(i); + + //-- creation de la suite de calcul + TrPostSourceReaderComposite suite=null; + + suite=new TrPostSourceReaderComposite(timeTotal,var,mapTimeStep_,listeSourceInterface_,file_); + + //-- creation du source Reader --// + suiteCalcul=new TrPostSourceFromReader(suite,TrResource.getS("Suite de calcul"),grille,_impl); + + return suiteCalcul; + } + + + /** + * Methode appelee pour v\xE9rifier que ceci est bien compatible avec la suite de calcul. + * @param src + * @return + */ + public static boolean isCompatibleSuiteCalcul(TrPostSource src){ + + if(src!=null && src instanceof TrPostSourceFromReader) + return true; + return false; + } + + public static class ComparateurTrPostSourceReaderInterface implements Comparator<TrPostSourceReaderInterface>{ + + @Override + public int compare(TrPostSourceReaderInterface o1, + TrPostSourceReaderInterface o2) { + + //-- on compare selon la valeur des timesteps -- + if(o1.getTimeStep(0)>o2.getTimeStep(0)) + return 1; + + if(o1.getTimeStep(0)<o2.getTimeStep(0)) + return -1; + + + return 0; + } + + } + +} Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjet.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjet.java 2009-01-25 22:20:21 UTC (rev 4401) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjet.java 2009-01-26 18:35:58 UTC (rev 4402) @@ -432,11 +432,12 @@ private boolean isOpenedIn(Collection<File> files, TrPostSource _in) { if (_in == null) return false; + boolean sourceGetAllFiles=true; for (File file : files) { - if (_in.isOpened(file)) return true; + if (!_in.isOpened(file)) sourceGetAllFiles=false;; } - return false; + return sourceGetAllFiles; } @@ -608,6 +609,9 @@ ic, TrPostProjet.this)); menuSimul.addSeparator(); + + + listSousMenus.add(menuSimul.addMenuItem(new TrPostBuilderSuiteCalcul.ActionBuildSuite(_src,TrResource.getS("Suite de calcul"),EbliResource.EBLI.getIcon(""),"SUITECALCUL",impl_))); listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Comparer..."), "COMPARE", ic, TrPostProjet.this)); listSousMenus.get(listSousMenus.size() - 1).setToolTipText( TrResource.getS("Comparer les r\xE9sultats avec ceux d'un autre projet")); Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSource.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSource.java 2009-01-25 22:20:21 UTC (rev 4401) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSource.java 2009-01-26 18:35:58 UTC (rev 4402) @@ -303,7 +303,6 @@ final TrPostDataCreated _newData, final CtuluCommandContainer _cmd); - /** * @param _analyze permet d'initialise la base temporaire. Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceAbstract.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceAbstract.java 2009-01-25 22:20:21 UTC (rev 4401) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceAbstract.java 2009-01-26 18:35:58 UTC (rev 4402) @@ -1455,4 +1455,19 @@ idx++; } } + + public static void fillWithSourceInfo(String _pref,Map _table, TrPostSourceReaderInterface src) { + + Collection<File> files = src.getFiles(); + int idx = 1; + String pref=_pref==null?CtuluLibString.EMPTY_STRING:_pref; + for (File file : files) { + String suffixe = files.size() > 1 ? CtuluLibString.getEspaceString(idx) : CtuluLibString.EMPTY_STRING; + _table.put(pref+TrResource.getS("Fichier r\xE9sultat") + suffixe, file.getName()); + _table.put(pref+TrResource.getS("Chemin complet") + suffixe, file.getAbsolutePath()); + // _table.put(pref+TrResource.getS("Titre Fichier r\xE9sultat") + suffixe, s); + idx++; + } + } + } \ No newline at end of file Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceBuilder.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceBuilder.java 2009-01-25 22:20:21 UTC (rev 4401) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceBuilder.java 2009-01-26 18:35:58 UTC (rev 4402) @@ -93,6 +93,24 @@ return activeSourceAction(_f, _impl, _impl.getLauncher().getCurrentPrefHydId(), _prog, null); } + + /** + * M\xE9thode qui active la sourceReaderInterface. + * @param _f + * @param _impl + * @param _prog + * @return + */ + public static TrPostSourceReaderInterface activeSourceReaderInterface(final File _f, final TrPostCommonImplementation _impl, + final ProgressionInterface _prog) { + TrPostSource src=activeSourceAction(_f, _impl, _prog); + + if(src!=null && src instanceof TrPostSourceFromReader){ + return ((TrPostSourceFromReader)src).getReader(); + }else return null; + + } + public static TrPostSource activeSourceAction(final File _f, final CtuluUI _impl, final String _id, final ProgressionInterface _prog, final Map _... [truncated message content] |
From: <de...@us...> - 2009-01-25 22:20:26
|
Revision: 4401 http://fudaa.svn.sourceforge.net/fudaa/?rev=4401&view=rev Author: deniger Date: 2009-01-25 22:20:21 +0000 (Sun, 25 Jan 2009) Log Message: ----------- Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfLineIntersectionsResultsBuilder.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/reflux/io/RefluxSolutionSequentielReader.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MVProfileCourbeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvLineChooser.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileBuilderFromTree.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileTreeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostInspector.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostInspectorReaderReflux.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostInspectorReaderRubar.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostInspectorReaderSerafin.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjet.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjetChooser.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjetsManagerFille.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostRubarLoader.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSource.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceAbstract.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceBuilder.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceComparator.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceComparatorBuilder.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceDefault.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceOneTimeStep.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceProjected.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceReflux.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceRubar.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceRubarZFN.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceSerafin.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceTelemac3D.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostVisuPanelPersistManager.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrReplayCurvesData.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/actions/TrPostActionChooseAndCreateCalque.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataCreationPanel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/data/TrPostDataInfoDoc.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/persist/TrPostPersistenceManager.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/persist/TrPostSourcePersist.java Added Paths: ----------- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/sig/layer/FSigTempLineInLayer.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceFromReader.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceReaderAbstract.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceReaderInterface.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceReaderReflux.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceReaderSerafin.java Removed Paths: ------------- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/FSigTempLineInLayer.java Modified: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfLineIntersectionsResultsBuilder.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfLineIntersectionsResultsBuilder.java 2009-01-24 22:16:05 UTC (rev 4400) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/ef/operation/EfLineIntersectionsResultsBuilder.java 2009-01-25 22:20:21 UTC (rev 4401) @@ -71,7 +71,7 @@ return res_; } -public LineString getInitLine_() { +public LineString getInitLine() { return initLine_; } } Modified: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/reflux/io/RefluxSolutionSequentielReader.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/reflux/io/RefluxSolutionSequentielReader.java 2009-01-24 22:16:05 UTC (rev 4400) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/reflux/io/RefluxSolutionSequentielReader.java 2009-01-25 22:20:21 UTC (rev 4401) @@ -217,4 +217,11 @@ ch_.close(); } } + + /** + * @return the nbPoint + */ + public int getNbPoint() { + return nbPoint_; + } } \ No newline at end of file Deleted: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/FSigTempLineInLayer.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/FSigTempLineInLayer.java 2009-01-24 22:16:05 UTC (rev 4400) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/FSigTempLineInLayer.java 2009-01-25 22:20:21 UTC (rev 4401) @@ -1,116 +0,0 @@ -/** - * Licence GPL - * Copyright Genesis - */ -package org.fudaa.fudaa.meshviewer.profile; - -import java.awt.Color; - -import org.fudaa.ebli.calque.BArbreCalqueModel; -import org.fudaa.ebli.calque.ZCalqueLigneBrisee; -import org.fudaa.ebli.calque.ZEbliCalquesPanel; -import org.fudaa.ebli.geometrie.GrBoite; -import org.fudaa.ebli.trace.TraceIcon; -import org.fudaa.ebli.trace.TraceIconModel; -import org.fudaa.ebli.trace.TraceLigne; -import org.fudaa.ebli.trace.TraceLigneModel; -import org.fudaa.fudaa.sig.FSigLineSingleModel; - -import com.vividsolutions.jts.geom.LineString; - -/** - * Une classe permettant d'afficher temporaire une ligne dans le panel - * - * @author deniger - */ -public class FSigTempLineInLayer { - - private Color colorLineTempo_ = Color.RED; - - GrBoite initZoom_; - - boolean isZoomChanged_; - - final ZEbliCalquesPanel panel_; - - ZCalqueLigneBrisee tmp_; - - public FSigTempLineInLayer(ZEbliCalquesPanel _panel) { - super(); - panel_ = _panel; - } - - protected void close() { - if (tmp_ != null) { - tmp_.detruire(); - panel_.getVueCalque().getCalque().repaint(); - panel_.getVueCalque().changeRepere(this, initZoom_); - tmp_ = null; - } - - } - - /** - * @return the colorLineTempo - */ - public Color getColorLineTempo() { - return colorLineTempo_; - } - - /** - * @return the isZoomChanged - */ - public boolean isZoomChanged() { - return isZoomChanged_; - } - - /** - * @param _colorLineTempo the colorLineTempo to set - */ - public void setColorLineTempo(Color _colorLineTempo) { - colorLineTempo_ = _colorLineTempo; - } - - /** - * @param _s la ligne a afficher temporairement. si null n'affiche rien - * @param _zoom true si on doit zoomer sur la ligne. - */ - protected void display(final LineString _s, final boolean _zoom) { - if (panel_ == null) { return; } - if (_s == null) { - if (tmp_ != null) { - tmp_.setVisible(false); - } - return; - } - final FSigLineSingleModel modele = new FSigLineSingleModel(_s); - if (tmp_ == null) { - initZoom_ = panel_.getVueCalque().getViewBoite(); - tmp_ = new ZCalqueLigneBrisee(); - tmp_.setDestructible(true); - final TraceIconModel model = new TraceIconModel(TraceIcon.PLUS_DOUBLE, 4, colorLineTempo_); - tmp_.setIconModel(0, model); - tmp_.setIconModel(1, model); - final TraceLigneModel ligne = new TraceLigneModel(TraceLigne.MIXTE, 2, colorLineTempo_); - tmp_.setLineModel(0, ligne); - tmp_.setLineModel(1, ligne); - panel_.getVueCalque().getCalque().enPremier(tmp_); - panel_.getCqInfos().enPremier(); - } - tmp_.setVisible(true); - tmp_.modele(modele); - if (_zoom) { - BArbreCalqueModel.actionCenter(tmp_, panel_); - isZoomChanged_ = true; - } - } - - public void zoomInitial(){ - panel_.getVueCalque().changeViewBoite(this, initZoom_, false); - } - - public void restaurer(){ - panel_.restaurer(); - } - -} Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MVProfileCourbeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MVProfileCourbeModel.java 2009-01-24 22:16:05 UTC (rev 4400) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MVProfileCourbeModel.java 2009-01-25 22:20:21 UTC (rev 4401) @@ -7,14 +7,12 @@ */ package org.fudaa.fudaa.meshviewer.profile; +import gnu.trove.TDoubleArrayList; + import java.util.ArrayList; import java.util.List; import java.util.Map; -import javax.swing.JComboBox; - -import gnu.trove.TDoubleArrayList; - import org.fudaa.ctulu.CtuluCommandContainer; import org.fudaa.ctulu.CtuluListSelectionInterface; import org.fudaa.ctulu.CtuluRange; @@ -26,14 +24,15 @@ import org.fudaa.dodico.ef.operation.EfLineIntersectionsResultsI; import org.fudaa.dodico.h2d.type.H2dVariableType; import org.fudaa.ebli.calque.BCalqueLegende; -import org.fudaa.ebli.courbe.EGGrapheTreeModel; +import org.fudaa.ebli.commun.EbliFormatter; import org.fudaa.ebli.palette.BPaletteInfo.InfoData; import org.fudaa.ebli.visuallibrary.EbliWidget; +import org.fudaa.fudaa.meshviewer.MvResource; import org.fudaa.fudaa.tr.common.TrResource; import org.fudaa.fudaa.tr.post.TrPostCommonImplementation; -import org.fudaa.fudaa.tr.post.TrPostCourbeTreeModel; import org.fudaa.fudaa.tr.post.TrPostProjet; import org.fudaa.fudaa.tr.post.TrPostSource; +import org.fudaa.fudaa.tr.post.TrPostSourceAbstract; import org.fudaa.fudaa.tr.post.TrPostVisuPanel; import org.fudaa.fudaa.tr.post.TrReplayCurvesData; import org.fudaa.fudaa.tr.post.actions.TrPostProfileAction; @@ -46,401 +45,390 @@ */ public class MVProfileCourbeModel implements MvProfileCourbeModelInterface { - private int time_; - EfGridData data_; - EfLineIntersectionsResultsI res_; - EfLineIntersectionsResultsBuilder builder_; - String title_; + private int time_; + EfGridData data_; + EfLineIntersectionsResultsI res_; + EfLineIntersectionsResultsBuilder builder_; + String title_; - CtuluVariable variable_; + CtuluVariable variable_; - TDoubleArrayList y_; + TDoubleArrayList y_; - double yMax_; + double yMax_; - double yMin_; + double yMin_; - private MVProfileCourbeModel(final CtuluVariable _variable, final EfGridData _data, - final EfLineIntersectionsResultsI _res, final int _timeStep, final double[] _y, - final EfLineIntersectionsResultsBuilder _builder) { - super(); - variable_ = _variable; - data_ = _data; - res_ = _res; - title_ = _variable.toString(); - time_ = _timeStep; - builder_ = _builder; - y_ = new TDoubleArrayList(_y); - } + private MVProfileCourbeModel(final CtuluVariable _variable, final EfGridData _data, + final EfLineIntersectionsResultsI _res, final int _timeStep, final double[] _y, + final EfLineIntersectionsResultsBuilder _builder) { + super(); + variable_ = _variable; + data_ = _data; + res_ = _res; + title_ = _variable.toString(); + time_ = _timeStep; + builder_ = _builder; + y_ = new TDoubleArrayList(_y); + } - public MVProfileCourbeModel(final CtuluVariable _variable, final EfGridData _data, final int _timeStep, - final EfLineIntersectionsResultsBuilder _builder, final ProgressionInterface _prog) { - super(); - variable_ = _variable; - data_ = _data; - title_ = _variable.toString(); - time_ = _timeStep; - builder_ = _builder; - if (builder_ != null) res_ = builder_.createResults(_timeStep, _prog); - y_ = new TDoubleArrayList(res_.getNbIntersect()); - computeY(_prog); - } + public MVProfileCourbeModel(final CtuluVariable _variable, final EfGridData _data, final int _timeStep, + final EfLineIntersectionsResultsBuilder _builder, final ProgressionInterface _prog) { + super(); + variable_ = _variable; + data_ = _data; + title_ = _variable.toString(); + time_ = _timeStep; + builder_ = _builder; + if (builder_ != null) res_ = builder_.createResults(_timeStep, _prog); + y_ = new TDoubleArrayList(res_.getNbIntersect()); + computeY(_prog); + } - /** - * ACHTUNG: Constructeur uniquement utilis\xE9 pour la persistance des donn\xE9es. - */ - public MVProfileCourbeModel(){ - super(); - } + /** + * ACHTUNG: Constructeur uniquement utilis\xE9 pour la persistance des donn\xE9es. + */ + public MVProfileCourbeModel() { + super(); + } - public boolean addValue(final double _x, final double _y, final CtuluCommandContainer _cmd) { - return false; - } + public boolean addValue(final double _x, final double _y, final CtuluCommandContainer _cmd) { + return false; + } - public boolean addValue(final double[] _x, final double[] _y, final CtuluCommandContainer _cmd) { - return false; - } + public boolean addValue(final double[] _x, final double[] _y, final CtuluCommandContainer _cmd) { + return false; + } - /** - * Recalcule les y en fonction des informations fournises. - * @param _prog - */ - public final void computeY(final ProgressionInterface _prog) { - final CtuluRange range = new CtuluRange(); - res_ = builder_.createResults(time_, _prog); + /** + * Recalcule les y en fonction des informations fournises. + * + * @param _prog + */ + public final void computeY(final ProgressionInterface _prog) { + final CtuluRange range = new CtuluRange(); + res_ = builder_.createResults(time_, _prog); - if(y_==null) - y_=new TDoubleArrayList(); + if (y_ == null) y_ = new TDoubleArrayList(); - y_.ensureCapacity(res_.getNbIntersect()); - y_.resetQuick(); - for (int i = 0; i < res_.getNbIntersect(); i++) { - double val = 0; - if (res_.getIntersect(i).isRealIntersection()) { - val = res_.getIntersect(i).getValue(variable_, time_); - range.expandTo(val); - } - y_.add(val); - } - if (range.isNill()) { - yMax_ = 0; - yMin_ = 0; - } else { - yMax_ = range.getMax(); - yMin_ = range.getMin(); - } - } + y_.ensureCapacity(res_.getNbIntersect()); + y_.resetQuick(); + for (int i = 0; i < res_.getNbIntersect(); i++) { + double val = 0; + if (res_.getIntersect(i).isRealIntersection()) { + val = res_.getIntersect(i).getValue(variable_, time_); + range.expandTo(val); + } + y_.add(val); + } + if (range.isNill()) { + yMax_ = 0; + yMin_ = 0; + } else { + yMax_ = range.getMax(); + yMin_ = range.getMin(); + } + } - public boolean deplace(final int[] _selectIdx, final double _deltaX, final double _deltaY, - final CtuluCommandContainer _cmd) { - return false; - } + public boolean deplace(final int[] _selectIdx, final double _deltaX, final double _deltaY, + final CtuluCommandContainer _cmd) { + return false; + } - public MVProfileCourbeModel duplicate() { - final MVProfileCourbeModel res = new MVProfileCourbeModel(variable_, data_, res_, time_, y_.toNativeArray(), - builder_); - res.yMax_ = yMax_; - res.yMin_ = yMin_; - return res; - } + public MVProfileCourbeModel duplicate() { + final MVProfileCourbeModel res = new MVProfileCourbeModel(variable_, data_, res_, time_, y_.toNativeArray(), + builder_); + res.yMax_ = yMax_; + res.yMin_ = yMin_; + return res; + } - public void fillWithInfo(InfoData _table, CtuluListSelectionInterface _selectedPt) { - if(EbliWidget.AMELIO_LOT_VISIBLE){ - String pdt="N\xB0"+this.time_; - if(this.data_ instanceof TrPostSource){ - TrPostSource src=(TrPostSource)this.data_; - _table.put(TrResource.getS("Type"),"Profil spatial"); - _table.put(TrResource.getS("Fichier r\xE9sultat"),src.getFile().getName()); - _table.put(TrResource.getS("Chemin complet"),src.getFile().getAbsolutePath()); - _table.put(TrResource.getS("Titre Fichier r\xE9sultat"),src.getTitle()); - if(this.time_!=-1 && this.time_<src.getNbTimeStep()) - pdt+=": "+src.getTimeStep(this.time_); - } - if(this.variable_!=null) - _table.put(TrResource.getS("Variable"),this.variable_.getName()+" en "+this.variable_.getCommonUnit()); - _table.put(TrResource.getS("Pas de temps "),pdt); - - LineString polyligne=builder_.getInitLine_(); - if(polyligne!=null){ - _table.put(TrResource.getS("Polyligne, nb pts"),""+polyligne.getNumPoints()); - _table.put(TrResource.getS("Point d\xE9but"),"("+polyligne.getCoordinateN(0).x+";"+polyligne.getCoordinateN(0).y+")"); - _table.put(TrResource.getS("Point fin"),"("+polyligne.getCoordinateN(polyligne.getNumPoints()-1).x+";"+polyligne.getCoordinateN(polyligne.getNumPoints()-1).y+")"); - - } + EbliFormatter formater = new EbliFormatter(); + public void fillWithInfo(InfoData _table, CtuluListSelectionInterface _selectedPt) { + if (EbliWidget.AMELIO_LOT_VISIBLE) { + String pdt = "N\xB0" + this.time_; + if (this.data_ instanceof TrPostSource) { + _table.put(TrResource.getS("Type"), "Profil spatial"); + TrPostSource src = (TrPostSource) this.data_; + TrPostSourceAbstract.fillWithSourceInfo(_table, src); + if (this.time_ != -1 && this.time_ < src.getNbTimeStep()) pdt += ": " + + src.getTime().getTimeListModel().getElementAt(this.time_); + } + if (this.variable_ != null) _table.put(MvResource.getS("Variable"), this.variable_.getName() + " en " + + this.variable_.getCommonUnit()); + _table.put(MvResource.getS("Pas de temps"), pdt); - } - } + LineString polyligne = builder_.getInitLine(); + if (polyligne != null) { + _table.put(MvResource.getS("Polyligne, nb pts"), Integer.toString(polyligne.getNumPoints())); + _table.put(MvResource.getS("Point d\xE9but"), "(" + formater.getFormatter().format(polyligne.getCoordinateN(0).x) + + ";" + formater.getFormatter().format(polyligne.getCoordinateN(0).y) + ")"); + _table.put(MvResource.getS("Point fin"), "(" + + formater.getFormatter().format(polyligne.getCoordinateN(polyligne.getNumPoints() - 1).x) + ";" + + formater.getFormatter().format(polyligne.getCoordinateN(polyligne.getNumPoints() - 1).y) + ")"); - public int getActiveTimeIdx() { - return 0; - } + } - public int getNbValues() { - return res_.getNbIntersect(); - } + } + } - public EfLineIntersectionsResultsI getRes() { - return res_; - } + public int getActiveTimeIdx() { + return 0; + } - public int getTime() { - return time_; - } + public int getNbValues() { + return res_.getNbIntersect(); + } - public String getTitle() { - return title_; - } + public EfLineIntersectionsResultsI getRes() { + return res_; + } - public CtuluVariable getVariable() { - return variable_; - } + public int getTime() { + return time_; + } - public double getX(final int _idx) { - return res_.getDistFromDeb(_idx); - } + public String getTitle() { + return title_; + } - public double getXMax() { - return res_.getDistFromDeb(getNbValues() - 1); - } + public CtuluVariable getVariable() { + return variable_; + } - public double getXMin() { - return 0; - } + public double getX(final int _idx) { + return res_.getDistFromDeb(_idx); + } - public double getY(final int _idx) { - return y_.getQuick(_idx); - } + public double getXMax() { + return res_.getDistFromDeb(getNbValues() - 1); + } - public double getYMax() { - return yMax_; - } + public double getXMin() { + return 0; + } - public double getYMin() { - return yMin_; - } + public double getY(final int _idx) { + return y_.getQuick(_idx); + } - public boolean isActiveTimeEnable() { - return false; - } + public double getYMax() { + return yMax_; + } - public boolean isDuplicatable() { - return true; - } + public double getYMin() { + return yMin_; + } - public boolean isModifiable() { - return false; - } + public boolean isActiveTimeEnable() { + return false; + } - public boolean isPointDrawn(final int _i) { - return res_.getIntersect(_i).isRealIntersection(); - } + public boolean isDuplicatable() { + return true; + } - public boolean isRemovable_=false; - public boolean isRemovable() { - return isRemovable_; - } + public boolean isModifiable() { + return false; + } - public boolean isSegmentDrawn(final int _i) { - return res_.isSegmentIn(_i); - } + public boolean isPointDrawn(final int _i) { + return res_.getIntersect(_i).isRealIntersection(); + } - public boolean isTitleModifiable() { - return true; - } + public boolean isRemovable_ = false; - public boolean isVisibleLong() { - return false; - } + public boolean isRemovable() { + return isRemovable_; + } - public boolean isXModifiable() { - return false; - } + public boolean isSegmentDrawn(final int _i) { + return res_.isSegmentIn(_i); + } - public boolean removeValue(final int _i, final CtuluCommandContainer _cmd) { - return false; - } + public boolean isTitleModifiable() { + return true; + } - public boolean removeValue(final int[] _i, final CtuluCommandContainer _cmd) { - return false; - } + public boolean isVisibleLong() { + return false; + } - public void reupdateY() { - computeY(null); + public boolean isXModifiable() { + return false; + } - } + public boolean removeValue(final int _i, final CtuluCommandContainer _cmd) { + return false; + } - public void setRes(final EfLineIntersectionsResultsBuilder _builder, final ProgressionInterface _prog) { - builder_ = _builder; - computeY(_prog); - } + public boolean removeValue(final int[] _i, final CtuluCommandContainer _cmd) { + return false; + } - public void setTime(final int _time) { - if (time_ != _time && _time >= 0) { - time_ = _time; - computeY(null); - } - } + public void reupdateY() { + computeY(null); - public boolean setTitle(final String _newName) { - title_ = _newName; - return true; - } + } - public boolean setValue(final int _i, final double _x, final double _y, final CtuluCommandContainer _cmd) { - return false; - } + public void setRes(final EfLineIntersectionsResultsBuilder _builder, final ProgressionInterface _prog) { + builder_ = _builder; + computeY(_prog); + } - public boolean setValues(final int[] _idx, final double[] _x, final double[] _y, final CtuluCommandContainer _cmd) { - return false; - } + public void setTime(final int _time) { + if (time_ != _time && _time >= 0) { + time_ = _time; + computeY(null); + } + } - public void setVariable(final CtuluVariable _variable, final boolean _contentChanged) { - variable_ = _variable; - if (_contentChanged && data_.isDefined(_variable)) { - computeY(null); - } - } + public boolean setTitle(final String _newName) { + title_ = _newName; + return true; + } + public boolean setValue(final int _i, final double _x, final double _y, final CtuluCommandContainer _cmd) { + return false; + } + public boolean setValues(final int[] _idx, final double[] _x, final double[] _y, final CtuluCommandContainer _cmd) { + return false; + } + public void setVariable(final CtuluVariable _variable, final boolean _contentChanged) { + variable_ = _variable; + if (_contentChanged && data_.isDefined(_variable)) { + computeY(null); + } + } + public Object getPersistSpecificDatas() { + // -- retourne le quatuor point, pdt,variable et fichier source + ArrayList<Object> listeData = new ArrayList<Object>(); + // listeData.add(this.); - public Object getPersistSpecificDatas() { - //-- retourne le quatuor point, pdt,variable et fichier source - ArrayList<Object> listeData=new ArrayList<Object>(); - //listeData.add(this.); + // -- ajout du pas de temps --// + listeData.add(new Integer(time_)); - //-- ajout du pas de temps --// - listeData.add(new Integer(time_)); + // -- ajout de la variable --// + listeData.add(this.variable_.getID()); - //-- ajout de la variable --// - listeData.add(this.variable_.getID()); + // -- ajout de la polyligne --// + listeData.add(builder_.getInitLine()); - //-- ajout de la polyligne --// - listeData.add(builder_.getInitLine_()); + // -- ajout des datas --// + if (data_ instanceof TrPostSource) { + listeData.add(((TrPostSource) data_).getId()); + } - //-- ajout des datas --// - if(data_ instanceof TrPostSource){ - listeData.add(((TrPostSource)data_).getId()); - } + return listeData; + } + public void setPersistSpecificDatas(Object data, Map infos) { - return listeData; - } + if (data == null || !(data instanceof ArrayList)) return; + ArrayList<Object> liste = (ArrayList<Object>) data; + TrPostProjet projet = (TrPostProjet) infos.get("TrPostProjet"); + TrPostSource src = null; + // -- etape 1: le pas de temps --// + this.time_ = (Integer) liste.get(0); - public void setPersistSpecificDatas(Object data, Map infos) { + // -- etape 2 la variable --// + String idVar = (String) liste.get(1); + H2dVariableType var = null;// (H2dVariableType) liste.get(1); - if(data ==null || !(data instanceof ArrayList))return; - ArrayList<Object> liste=(ArrayList<Object>)data; + // -- etape 3: la polyligne --// + LineString polyligne = (LineString) liste.get(2); - TrPostProjet projet = (TrPostProjet) infos.get("TrPostProjet"); - TrPostSource src = null; - //-- etape 1: le pas de temps --// - this.time_=(Integer) liste.get(0); + // -- etape 4: recherche du source qui contient le path donn\xE9 --// + if (projet != null && liste.size() >= 4) { + String idSource = (String) liste.get(3); + src = projet.findSourceById(idSource); + if (src != null) this.data_ = src; + else { + ((List<String>) infos.get("errorMsg")) + .add("Erreur, la frame graphe ne trouve pas le fichier r\xE9sultat qui correspond \xE0 l'ID " + idVar); + return; + } + } else { + ((List<String>) infos.get("errorMsg")) + .add("Erreur, la frame graphe ne trouve pas le fichier r\xE9sultat qui correspond \xE0 l'ID " + idVar); + return; + } + // -- recherche dans les sources de la variable par id --// + for (int i = 0; i < src.getAvailableVar().length; i++) + if (src.getAvailableVar()[i].getID().equals(idVar)) var = src.getAvailableVar()[i]; - //-- etape 2 la variable --// - String idVar=(String)liste.get(1); - H2dVariableType var=null;//(H2dVariableType) liste.get(1); + if (var != null) this.variable_ = var; + else { + ((List<String>) infos.get("errorMsg")) + .add("Erreur, la frame graphe ne trouve pas la variable qui correspond \xE0 l'ID " + idVar); + return; + } + // -- on rejoue les donn\xE9es: --// + // -- creation du resultBuilder: --// + TrPostVisuPanel panelUtilise = new TrPostVisuPanel(projet.impl_, projet, new BCalqueLegende(), src); + MvProfileTarget target = new TrPostProfileAction.ProfileAdapter(src, projet); + MvProfileBuilder builder = new MvProfileBuilderFromLine(target, projet.impl_, polyligne, panelUtilise, + new MvProfileCoteTester()); + // -- intersectionResultI --// + this.res_ = builder.getDefaultRes(this.variable_, projet.impl_.getMainProgression()); + // -- EfLineIntersectionsResultsBuilder --// + this.builder_ = new EfLineIntersectionsResultsBuilder(polyligne, this.res_, new MvProfileCoteTester()); + // -- rejouer les donn\xE9es --// + this.computeY(projet.impl_.getMainProgression()); + } - //-- etape 3: la polyligne --// - LineString polyligne=(LineString) liste.get(2); + public void viewGenerationSource(Map infos, CtuluUI impl) { - // -- etape 4: recherche du source qui contient le path donn\xE9 --// - if (projet != null && liste.size()>=4){ - String idSource=(String) liste.get(3); - src = projet.findSourceById(idSource); - if(src!=null) - this.data_=src; - else{ - ((List<String>) infos.get("errorMsg")) - .add("Erreur, la frame graphe ne trouve pas le fichier r\xE9sultat qui correspond \xE0 l'ID " + idVar); - return; - } - } - else{ - ((List<String>) infos.get("errorMsg")) - .add("Erreur, la frame graphe ne trouve pas le fichier r\xE9sultat qui correspond \xE0 l'ID " + idVar); - return; - } - //-- recherche dans les sources de la variable par id --// - for(int i=0;i<src.getAvailableVar().length;i++) - if(src.getAvailableVar()[i].getID().equals(idVar)) - var=src.getAvailableVar()[i]; + if (!(impl instanceof TrPostCommonImplementation)) { + impl.error(TrResource.getS("Impossible de r\xE9cup\xE9rer la bonne interface fudaa")); + return; + } + TrPostCommonImplementation implementation = (TrPostCommonImplementation) impl; - if(var!=null) - this.variable_=var; - else{ - ((List<String>) infos.get("errorMsg")) - .add("Erreur, la frame graphe ne trouve pas la variable qui correspond \xE0 l'ID " + idVar); - return; - } + // -- on cree une vue 2d a partir du fichier source fourni et on le centre sur le point interpol\xE9 ou non --// + TrReplayCurvesData.getInstance().getProfilSpatialOrigine(this, implementation); - //-- on rejoue les donn\xE9es: --// - //-- creation du resultBuilder: --// - TrPostVisuPanel panelUtilise=new TrPostVisuPanel(projet.impl_,projet,new BCalqueLegende(),src); - MvProfileTarget target=new TrPostProfileAction.ProfileAdapter(src,projet); - MvProfileBuilder builder=new MvProfileBuilderFromLine(target,projet.impl_,polyligne,panelUtilise,new MvProfileCoteTester()); + } - //-- intersectionResultI --// - this.res_=builder.getDefaultRes(this.variable_, projet.impl_.getMainProgression()); + public EfGridData getData() { + return data_; + } - //-- EfLineIntersectionsResultsBuilder --// - this.builder_=new EfLineIntersectionsResultsBuilder(polyligne,this.res_,new MvProfileCoteTester()); + public void setData(EfGridData _data) { + this.data_ = _data; + } - //-- rejouer les donn\xE9es --// - this.computeY(projet.impl_.getMainProgression()); - } - public void viewGenerationSource(Map infos, CtuluUI impl){ + public EfLineIntersectionsResultsBuilder getBuilder() { + return builder_; + } - if(!(impl instanceof TrPostCommonImplementation)){ - impl.error(TrResource.getS("Impossible de r\xE9cup\xE9rer la bonne interface fudaa")); - return; - } - TrPostCommonImplementation implementation=(TrPostCommonImplementation)impl; + public void setBuilder(EfLineIntersectionsResultsBuilder _builder) { + this.builder_ = _builder; + } - //-- on cree une vue 2d a partir du fichier source fourni et on le centre sur le point interpol\xE9 ou non --// - TrReplayCurvesData.getInstance().getProfilSpatialOrigine(this, implementation); - - } + public void replayData(org.fudaa.ebli.courbe.EGGrapheTreeModel model, Map infos, CtuluUI impl) { + if (!(impl instanceof TrPostCommonImplementation)) { + impl.error(TrResource.getS("Impossible de r\xE9cup\xE9rer la bonne interface fudaa")); + return; + } + TrPostCommonImplementation implementation = (TrPostCommonImplementation) impl; + if (!(this.getData() instanceof TrPostSource)) { + implementation.error("Impossible de r\xE9cup\xE9rer le fichier r\xE9sulat depuis ce type de profil spatial."); + return; + } + // -- on cree une vue 2d a partir du fichier source fourni et on le centre sur le point interpol\xE9 ou non --// + TrReplayCurvesData.getInstance().getProfilSpatialReplayData((TrPostSource) this.getData(), + (MvProfileTreeModel) model, this, implementation); - public EfGridData getData() { - return data_; - } + } - public void setData(EfGridData _data) { - this.data_ = _data; - } - - public EfLineIntersectionsResultsBuilder getBuilder() { - return builder_; - } - - public void setBuilder(EfLineIntersectionsResultsBuilder _builder) { - this.builder_ = _builder; - } - - - public void replayData(org.fudaa.ebli.courbe.EGGrapheTreeModel model,Map infos, CtuluUI impl) { - if(!(impl instanceof TrPostCommonImplementation)){ - impl.error(TrResource.getS("Impossible de r\xE9cup\xE9rer la bonne interface fudaa")); - return; - } - TrPostCommonImplementation implementation=(TrPostCommonImplementation)impl; - if(!(this.getData() instanceof TrPostSource)){ - implementation.error("Impossible de r\xE9cup\xE9rer le fichier r\xE9sulat depuis ce type de profil spatial."); - return; - } - //-- on cree une vue 2d a partir du fichier source fourni et on le centre sur le point interpol\xE9 ou non --// - TrReplayCurvesData.getInstance().getProfilSpatialReplayData((TrPostSource) this.getData(),(MvProfileTreeModel)model, this, implementation); - - - } - - } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvLineChooser.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvLineChooser.java 2009-01-24 22:16:05 UTC (rev 4400) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvLineChooser.java 2009-01-25 22:20:21 UTC (rev 4401) @@ -20,6 +20,7 @@ import org.fudaa.ebli.calque.ZEbliCalquesPanel; import org.fudaa.ebli.commun.EbliLib; import org.fudaa.fudaa.meshviewer.MvResource; +import org.fudaa.fudaa.sig.layer.FSigTempLineInLayer; import com.memoire.bu.BuBorders; import com.memoire.bu.BuLabel; Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileBuilderFromTree.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileBuilderFromTree.java 2009-01-24 22:16:05 UTC (rev 4400) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileBuilderFromTree.java 2009-01-25 22:20:21 UTC (rev 4401) @@ -30,7 +30,6 @@ import org.fudaa.fudaa.commun.FudaaLib; import org.fudaa.fudaa.meshviewer.MvResource; import org.fudaa.fudaa.meshviewer.export.MvExportChooseVarAndTime; -import org.fudaa.fudaa.tr.post.TrPostSource; import com.memoire.bu.BuBorders; import com.memoire.bu.BuGlassPaneStop; Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileTreeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileTreeModel.java 2009-01-24 22:16:05 UTC (rev 4400) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileTreeModel.java 2009-01-25 22:20:21 UTC (rev 4401) @@ -132,7 +132,7 @@ resNode_ = _resNode; builderNode_ = _builderNode; if(builderNode_!=null ) - initLineNode=builderNode_.getInitLine_(); + initLineNode=builderNode_.getInitLine(); } @@ -146,7 +146,7 @@ resMesh_ = _resMeshes; builderMesh_ = _builderMeshes; if(builderMesh_!=null ) - initLineMesh=builderMesh_.getInitLine_(); + initLineMesh=builderMesh_.getInitLine(); } Copied: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/sig/layer/FSigTempLineInLayer.java (from rev 4358, branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/FSigTempLineInLayer.java) =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/sig/layer/FSigTempLineInLayer.java (rev 0) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/sig/layer/FSigTempLineInLayer.java 2009-01-25 22:20:21 UTC (rev 4401) @@ -0,0 +1,116 @@ +/** + * Licence GPL + * Copyright Genesis + */ +package org.fudaa.fudaa.sig.layer; + +import java.awt.Color; + +import org.fudaa.ebli.calque.BArbreCalqueModel; +import org.fudaa.ebli.calque.ZCalqueLigneBrisee; +import org.fudaa.ebli.calque.ZEbliCalquesPanel; +import org.fudaa.ebli.geometrie.GrBoite; +import org.fudaa.ebli.trace.TraceIcon; +import org.fudaa.ebli.trace.TraceIconModel; +import org.fudaa.ebli.trace.TraceLigne; +import org.fudaa.ebli.trace.TraceLigneModel; +import org.fudaa.fudaa.sig.FSigLineSingleModel; + +import com.vividsolutions.jts.geom.LineString; + +/** + * Une classe permettant d'afficher temporaire une ligne dans le panel + * + * @author deniger + */ +public class FSigTempLineInLayer { + + private Color colorLineTempo_ = Color.RED; + + GrBoite initZoom_; + + boolean isZoomChanged_; + + final ZEbliCalquesPanel panel_; + + ZCalqueLigneBrisee tmp_; + + public FSigTempLineInLayer(ZEbliCalquesPanel _panel) { + super(); + panel_ = _panel; + } + + public void close() { + if (tmp_ != null) { + tmp_.detruire(); + panel_.getVueCalque().getCalque().repaint(); + panel_.getVueCalque().changeRepere(this, initZoom_); + tmp_ = null; + } + + } + + /** + * @return the colorLineTempo + */ + public Color getColorLineTempo() { + return colorLineTempo_; + } + + /** + * @return the isZoomChanged + */ + public boolean isZoomChanged() { + return isZoomChanged_; + } + + /** + * @param _colorLineTempo the colorLineTempo to set + */ + public void setColorLineTempo(Color _colorLineTempo) { + colorLineTempo_ = _colorLineTempo; + } + + /** + * @param _s la ligne a afficher temporairement. si null n'affiche rien + * @param _zoom true si on doit zoomer sur la ligne. + */ + public void display(final LineString _s, final boolean _zoom) { + if (panel_ == null) { return; } + if (_s == null) { + if (tmp_ != null) { + tmp_.setVisible(false); + } + return; + } + final FSigLineSingleModel modele = new FSigLineSingleModel(_s); + if (tmp_ == null) { + initZoom_ = panel_.getVueCalque().getViewBoite(); + tmp_ = new ZCalqueLigneBrisee(); + tmp_.setDestructible(true); + final TraceIconModel model = new TraceIconModel(TraceIcon.PLUS_DOUBLE, 4, colorLineTempo_); + tmp_.setIconModel(0, model); + tmp_.setIconModel(1, model); + final TraceLigneModel ligne = new TraceLigneModel(TraceLigne.MIXTE, 2, colorLineTempo_); + tmp_.setLineModel(0, ligne); + tmp_.setLineModel(1, ligne); + panel_.getVueCalque().getCalque().enPremier(tmp_); + panel_.getCqInfos().enPremier(); + } + tmp_.setVisible(true); + tmp_.modele(modele); + if (_zoom) { + BArbreCalqueModel.actionCenter(tmp_, panel_); + isZoomChanged_ = true; + } + } + + public void zoomInitial() { + panel_.getVueCalque().changeViewBoite(this, initZoom_, false); + } + + public void restaurer() { + panel_.restaurer(); + } + +} Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeModel.java 2009-01-24 22:16:05 UTC (rev 4400) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeModel.java 2009-01-25 22:20:21 UTC (rev 4401) @@ -401,8 +401,7 @@ public void fillWithInfo(InfoData _table, CtuluListSelectionInterface _selectedPt) { if(EbliWidget.AMELIO_LOT_VISIBLE){ _table.put(TrResource.getS("Type"),"Evolution temporelle"); - _table.put(TrResource.getS("Fichier r\xE9sultat"),this.source_.getFile().getName()); - _table.put(TrResource.getS("Chemin complet"),this.source_.getFile().getAbsolutePath()); + TrPostSourceAbstract.fillWithSourceInfo(_table, source_); _table.put(TrResource.getS("Titre Fichier r\xE9sultat"),this.source_.getTitle()); _table.put(TrResource.getS("Infos Point initial"),this.getInfosPoint()); _table.put(TrResource.getS("Variable"),this.getVar().getName()+" en "+this.getVar().getCommonUnitString()); Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostInspector.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostInspector.java 2009-01-24 22:16:05 UTC (rev 4400) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostInspector.java 2009-01-25 22:20:21 UTC (rev 4401) @@ -23,6 +23,8 @@ import com.memoire.fu.FuLog; /** + * TODO a revoir entierement + * * @author fred deniger * @version $Id: TrPostInspector.java,v 1.10 2007-06-05 09:01:14 deniger Exp $ */ @@ -46,7 +48,7 @@ stop(); return; } - src_.setInspected(true); + // src_.setInspected(true); } if (reader_ != null) { @@ -224,12 +226,13 @@ if (timer_ == null) { timer_ = new Timer(); } - if (reader_ == null) { - reader_ = proj_.createWatcher(src_); - } + // TODO a revoir +// if (reader_ == null) { +// reader_ = proj_.createWatcher(src_); +// } if (reader_ == null) { return; } if (proj_ != null && src_ != null) { - src_.setInspected(true); + // src_.setInspected(true); } reader_.setProgression(panel_); @@ -241,7 +244,7 @@ reader_.close(); reader_ = null; if (proj_ != null && src_ != null) { - src_.setInspected(false); + // src_.setInspected(false); } BuLib.invokeLater(new Runnable() { Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostInspectorReaderReflux.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostInspectorReaderReflux.java 2009-01-24 22:16:05 UTC (rev 4400) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostInspectorReaderReflux.java 2009-01-25 22:20:21 UTC (rev 4401) @@ -53,7 +53,7 @@ public TrPostInspectorReaderReflux(final TrPostProjet _prj, final TrPostSource _src) { super(); - file_ = _src.getFile(); + file_ = _src.getFiles().iterator().next(); prj_ = _prj; src_ = _src; } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostInspectorReaderRubar.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostInspectorReaderRubar.java 2009-01-24 22:16:05 UTC (rev 4400) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostInspectorReaderRubar.java 2009-01-25 22:20:21 UTC (rev 4401) @@ -76,7 +76,7 @@ if (fmt != null) { // les formats qui seront a recharger final Set<FileFormat> fmtToLoad = new HashSet<FileFormat>(fmt.length); - final String name = CtuluLibFile.getSansExtension(loader_.getSrc().getFile().getName()); + final String name = CtuluLibFile.getSansExtension(loader_.getSrc().getMainFile().getName()); for (int i = fmt.length - 1; i >= 0; i--) { final int idx = FileFormat.findFileFormat(loader_.availFmt_, fmt[i]); if (idx < 0) { Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostInspectorReaderSerafin.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostInspectorReaderSerafin.java 2009-01-24 22:16:05 UTC (rev 4400) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostInspectorReaderSerafin.java 2009-01-25 22:20:21 UTC (rev 4401) @@ -69,7 +69,7 @@ super(); prj_ = _prj; src_ = _src; - serafin_ = _src.getFile(); + serafin_ = _src.getFiles().iterator().next(); tmpDir_ = null; casFile_ = null; } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjet.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjet.java 2009-01-24 22:16:05 UTC (rev 4400) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjet.java 2009-01-25 22:20:21 UTC (rev 4401) @@ -14,9 +14,8 @@ import java.awt.event.ActionListener; import java.io.File; import java.util.ArrayList; -import java.util.Arrays; +import java.util.Collection; import java.util.Collections; -import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Observable; @@ -62,7 +61,6 @@ import org.fudaa.ebli.visuallibrary.calque.CalqueLegendeWidgetAdapter; import org.fudaa.ebli.visuallibrary.graphe.EbliWidgetControllerGraphe; import org.fudaa.ebli.visuallibrary.graphe.EbliWidgetCreatorGraphe; -import org.fudaa.ebli.visuallibrary.graphe.EbliWidgetGrapheController; import org.fudaa.fudaa.commun.courbe.FudaaGrapheTimeAnimatedVisuPanel; import org.fudaa.fudaa.fdico.FDicoLib; import org.fudaa.fudaa.meshviewer.MvResource; @@ -74,7 +72,6 @@ import org.fudaa.fudaa.tr.post.data.TrPostDataListener; import org.fudaa.fudaa.tr.post.persist.TrPostPersistenceManager; import org.fudaa.fudaa.tr.post.save.TrPostProjetSaver; -import org.netbeans.api.visual.model.ObjectState; import org.netbeans.api.visual.widget.Widget; import com.memoire.bu.BuBorderLayout; @@ -104,9 +101,6 @@ */ public class TrPostProjet implements ActionListener { - - - /** * Manager de sauvegarder/charghement des donn\xE9es */ @@ -391,7 +385,7 @@ */ public void ajouterSource(final TrPostSource _src) { _src.addVariableListener(new VariableListener()); - if (_src.getFile() == null || !isSourceLoaded(_src.getFile().getAbsolutePath())) { + if (_src.getFiles() == null || !isOneSourceLoaded(_src.getFiles())) { listeSrc_.add(_src); _src.buildDefaultVarUpdateLists(); @@ -406,6 +400,10 @@ } } + + public TrPostSource findSource(final String _file) { + return findSource(new File(_file)); + } /** * retourne la source dans la liste des sources correspondant au fichier. retourne null sinon. @@ -413,16 +411,35 @@ * @param _file : path absolu du fichier * @return */ - public TrPostSource findSource(final String _file) { + public TrPostSource findSource(final File _file) { for (final Iterator<TrPostSource> it = listeSrc_.iterator(); it.hasNext();) { final TrPostSource src = it.next(); - if (src.getFile().getAbsolutePath().equals(_file)) return src; + if (src.isOpened(_file)) return src; } return null; } + public TrPostSource findSource(final Collection<File> _file) { + + for (final Iterator<TrPostSource> it = listeSrc_.iterator(); it.hasNext();) { + final TrPostSource src = it.next(); + if (isOpenedIn(_file, src)) return src; + } + return null; + } + + private boolean isOpenedIn(Collection<File> files, TrPostSource _in) { + if (_in == null) return false; + for (File file : files) { + if (_in.isOpened(file)) return true; + + } + return false; + + } + /** * Retourne la source asscoi\xE9 a l id. * @@ -439,17 +456,26 @@ return null; } + public boolean isSourceLoaded(final String _file) { + return isSourceLoaded(new File(_file)); + } + /** * indique si il existe une source portant le nom du fichier en param. * * @param _file : path absolu du fichier * @return */ - public boolean isSourceLoaded(final String _file) { + public boolean isSourceLoaded(final File _file) { if (findSource(_file) == null) return false; return true; } + public boolean isOneSourceLoaded(final Collection<File> _files) { + if (findSource(_files) == null) return false; + return true; + } + // /** // * methode qui change la source courante et retourne true si la source existe bien, false sinon // * @@ -470,7 +496,7 @@ */ public boolean removeSource(final TrPostSource src, final int n) { - if (isSourceLoaded(src.getFile().getAbsolutePath())) { + if (isOneSourceLoaded(src.getFiles())) { listeSrc_.remove(src); // --recuperation du menu simul --// @@ -517,7 +543,8 @@ */ public String formatInfoSource(final TrPostSource _src) { // --ajout dans la liste des titres --// - return formatName(_src.getTitle()) + " | Fichier: " + formatFichier(_src.getFile()); + Collection<File> files = _src.getFiles(); + return formatName(_src.getTitle()) + " | Fichier: " + formatFichier(files.iterator().next()); } public String formatFichier(final File file) { @@ -557,8 +584,8 @@ */ public void construitMenuPostSpecifiqueSource(final TrPostSource _src) { - final BuMenu menuSimul = new BuMenu((listeSrc_.size()) + ". " + formatFichier(_src.getFile()), "SIMULATION" - + (listeSrc_.size())); + final BuMenu menuSimul = new BuMenu((listeSrc_.size()) + ". " + formatFichier(_src.getFiles().iterator().next()), + "SIMULATION" + (listeSrc_.size())); // -- ajout du menu au menu post --// getMenuPost().add(menuSimul); @@ -587,24 +614,24 @@ listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Projeter..."), "PROJECT", ic, TrPostProjet.this)); listSousMenus.get(listSousMenus.size() - 1).setToolTipText( TrResource.getS("Projeter les r\xE9sultats sur un maillage diff\xE9rent")); - if (_src != null && _src.isInspectable()) { - menuSimul.addSeparator(); - listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Rafra\xEEchir les r\xE9sultats"), "MAJ_DATA", ic, - TrPostProjet.this)); - listSousMenus.get(listSousMenus.size() - 1).setToolTipText( - TrResource.getS("Les fichiers de r\xE9sultats seront relus")); - listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Rafra\xEEchir automatiquement"), "MAJ_DATA_ALWAYS", ic, - TrPostProjet.this)); - listSousMenus.get(listSousMenus.size() - 1).setToolTipText( - TrResource.getS("Les fichiers sont surveill\xE9s p\xE9riodiquement")); - menuSimul.addSeparator(); - listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Exporter"), "EXPORTDATA", TrPostProjet.this)); - _src.addSpecificItemInMainMenu(menuSimul, getImpl()); + // if (_src != null ) { + menuSimul.addSeparator(); + // listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Rafra\xEEchir les r\xE9sultats"), "MAJ_DATA", ic, + // TrPostProjet.this)); + // listSousMenus.get(listSousMenus.size() - 1).setToolTipText( + // TrResource.getS("Les fichiers de r\xE9sultats seront relus")); + // listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Rafra\xEEchir automatiquement"), "MAJ_DATA_ALWAYS", ic, + // TrPostProjet.this)); + // listSousMenus.get(listSousMenus.size() - 1).setToolTipText( + // TrResource.getS("Les fichiers sont surveill\xE9s p\xE9riodiquement")); + // menuSimul.addSeparator(); + listSousMenus.add(menuSimul.addMenuItem(TrResource.getS("Exporter"), "EXPORTDATA", TrPostProjet.this)); + _src.addSpecificItemInMainMenu(menuSimul, getImpl()); - // -- ajout de la sous liste de menus pour la garder en memoire --// - getlisteSousMenuProjets_().add(listSousMenus); + // -- ajout de la sous liste de menus pour la garder en memoire --// + getlisteSousMenuProjets_().add(listSousMenus); - } + // } } /** @@ -674,23 +701,28 @@ } }); getMenuPost().addMenuItem(TrResource.getS(("Fusionner avec un autre projet POST")), "FUSIONPOST", - CtuluResource.CTULU.getIcon("crystal_ajouter"), new ActionListener() { + CtuluResource.CTULU.getIcon("crystal_ajouter"), new ActionListener() { - public void actionPerformed(final ActionEvent _e) { - - final int reponse = JOptionPane.showConfirmDialog(getImpl().getParentComponent(),TrResource.getS("Le projet courant va \xEAtre ferm\xE9. \n Voulez vous sauvegarder le projet courant avant sa fermeture?")); - if (reponse == JOptionPane.CANCEL_OPTION) { return; } - if (reponse == JOptionPane.OK_OPTION) { - getManager().saveProject(false); - } - - getManager().loadProject(false, null); - //-- on reinitialise le nom path du projet a null pour qu'il soit redemand\xE9 lors de la nouvelle sauvegarde --// - getManager().setProjet_(null); + public void actionPerformed(final ActionEvent _e) { - } - }); + final int reponse = JOptionPane + .showConfirmDialog( + getImpl().getParentComponent(), + TrResource + .getS("Le projet courant va \xEAtre ferm\xE9. \n Voulez vous sauvegarder le projet courant avant sa fermeture?")); + if (reponse == JOptionPane.CANCEL_OPTION) { return; } + if (reponse == JOptionPane.OK_OPTION) { + getManager().saveProject(false); + } + getManager().loadProject(false, null); + // -- on reinitialise le nom path du projet a null pour qu'il soit redemand\xE9 lors de la nouvelle sauvegarde + // --// + getManager().setProjet_(null); + + } + }); + getMenuPost().addSeparator(TrResource.getS("Gestion")); // -- ajout de l action de gestion des simus dans post --// final BuMenuItem item = new BuMenuItem(TrResource.getS("Gestion Multi-Fichiers r\xE9sultats")); @@ -808,9 +840,9 @@ } - TrPostInspectorReader createWatcher(final TrPostSource _src) { - return _src.createWatcher(this, true); - } + // TrPostInspectorReader createWatcher(final TrPostSource _src) { + // return _src.createWatcher(this, true); + // } boolean openSrcDataAndIsModified(final CtuluUI _ui, final ProgressionInterface _prog) { return new TrPostProjetSaver(this).openSrcDataAndIsModified(_ui, _prog); @@ -852,11 +884,11 @@ final TrPostVisuPanel pnVisu = new TrPostVisuPanel(impl_, this, projection.getNbFleche() == 0, new BCalqueLegende(), projection); - //-- ajout des infos de cr\xE9ation --// - pnVisu.infosCreation_.put(ZEbliCalquesPanel.NOM_FIC, projection.getFile().getName()); - pnVisu.infosCreation_.put(ZEbliCalquesPanel.PATH_FIC, projection.getFile().getAbsolutePath()); + // -- ajout des infos de cr\xE9ation --// + // TODO centralise tout cela \xFC!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + TrPostSourceAbstract.fillWithSourceInfo(CtuluLibString.EMPTY_STRING, pnVisu.infosCreation_, projection); pnVisu.infosCreation_.put(ZEbliCalquesPanel.TITRE_FIC, projection.getTitle()); - + // creation de l internalframe qui contient le panel de visu // final TrPostFille compFille = new TrPostFille(pnVisu); // creation de la scene layout identique a au dessus @@ -962,19 +994,17 @@ _pn.getGraphe().restore(); if (_desc != null) nodeG.getWidget().getController().setDescription(_desc); currentLayoutFilleOrFirst.getScene().setSelectedObjects(Collections.emptySet()); - - //-- ajout syst\xE9matique de la legende associee --// - EbliWidgetControllerGraphe controller=(EbliWidgetControllerGraphe)nodeG.getWidget().getIntern().getController(); + + // -- ajout syst\xE9matique de la legende associee --// + EbliWidgetControllerGraphe controller = (EbliWidgetControllerGraphe) nodeG.getWidget().getIntern() + .getController(); controller.ajoutLegende(); } }); - //getImpl().getCurrentLayoutFilleOrFirst().getScene().refresh(); - - - - + // getImpl().getCurrentLayoutFilleOrFirst().getScene().refresh(); + } protected void buildTimeUpdater() { @@ -1071,16 +1101,16 @@ // else if ("IMPORTER_RESULTS".equals(commandeBrute) && item == _event.getSource()) { // importerVars(); // } - else if ("MAJ_DATA_ALWAYS".equals(commandeBrute) && item == _event.getSource()) { - if (source.isInspected()) { return; } - new TrPostInspector(this, source).start(); - } else if ("MAJ_DATA".equals(commandeBrute) && item == _event.getSource()) { - final TrPostInspectorReader watcher = source.createWatcher(this, false); - if (watcher != null) { - watcher.read(); - watcher.close(); - } - } + // else if ("MAJ_DATA_ALWAYS".equals(commandeBrute) && item == _event.getSource()) { + // if (source.isInspected()) { return; } + // new TrPostInspector(this, source).start(); + // } else if ("MAJ_DATA".equals(commandeBrute) && item == _event.getSource()) { + // final TrPostInspectorReader watcher = source.createWatcher(this, false); + // if (watcher != null) { + // watcher.read(); + // watcher.close(); + // } + // } } } @@ -1148,16 +1178,17 @@ final TrPostSource source = listeSrc_.get(0); final TrPostVisuPanel pnVisu = source.buildVisuPanel(TrPostProjet.this, legendeCalque); - //-- ajout des infos de cr\xE9ation --// - pnVisu.infosCreation_.put(ZEbliCalquesPanel.NOM_FIC, source.getFile().getName()); - pnVisu.infosCreation_.put(ZEbliCalquesPanel.PATH_FIC, source.getFile().getAbsolutePath()); - pnVisu.infosCreation_.put(ZEbliCalquesPanel.TITRE_FIC, source.getTitle()); - + // -- ajout des infos de cr\xE9ation --// + // TODO Adrien centralise tout cela !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + // c'est la source qui doit donner ces info: modifier TrPostSource ! + TrPostSourceAbstract.fillWithSourceInfo(CtuluLibString.EMPTY_STRING, pnVisu.infosCreation_, source); + // -- ajout du visuPanel au layout --// final Point location = pnVisu.getLocation(); location.x += 10; location.y += 10; - filleLayout.addCalque("Calque "+(filleLayout.getScene().getAllVue2d().size()+1), location, pnVisu.getPreferredSize(), pnVisu, legendeCalque); + filleLayout.addCalque("Calque " + (filleLayout.getScene().getAllVue2d().size() + 1), location, pnVisu + .getPreferredSize(), pnVisu, legendeCalque); // -- decoration de la fille layout --// filleLayout.setFrameIcon(EbliResource.EBLI.getToolIcon("lissage")); @@ -1315,16 +1346,18 @@ * @return */ public String deliverSourceId(TrPostSource src) { + String idString = src.getFiles().iterator().next().getName(); if (src.getId() == null) { - String uniqueId = CtuluLibGenerator.getInstance().deliverUniqueStringId(src.getFile().getName()); + + String uniqueId = CtuluLibGenerator.getInstance().deliverUniqueStringId(idString); src.setId(uniqueId); } else { // -- on teste si l'id de base est 'parlant' => contient le nom du ficheir --// - String nameFormate = FuLib.clean(src.getFile().getName()); + String nameFormate = FuLib.clean(idString); String id = src.getId(); if (!id.startsWith(nameFormate)) { - String uniqueId = CtuluLibGenerator.getInstance().deliverUniqueStringId(src.getFile().getName()); + String uniqueId = CtuluLibGenerator.getInstance().deliverUniqueStringId(idString); src.setId(uniqueId); } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjetChooser.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjetChooser.java 2009-01-24 22:16:05 UTC (rev 4400) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjetChooser.java 2009-01-25 22:20:21 UTC (rev 4401) @@ -73,7 +73,7... [truncated message content] |
From: <de...@us...> - 2009-01-24 22:22:33
|
Revision: 4399 http://fudaa.svn.sourceforge.net/fudaa/?rev=4399&view=rev Author: deniger Date: 2009-01-24 21:50:40 +0000 (Sat, 24 Jan 2009) Log Message: ----------- Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZCalqueSondeSynchroniserFusion.java Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZCalqueSondeSynchroniserFusion.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZCalqueSondeSynchroniserFusion.java 2009-01-24 21:49:52 UTC (rev 4398) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZCalqueSondeSynchroniserFusion.java 2009-01-24 21:50:40 UTC (rev 4399) @@ -13,17 +13,13 @@ import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.Set; -import javax.swing.ButtonGroup; import javax.swing.Icon; import javax.swing.ImageIcon; -import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; -import javax.swing.JRadioButton; import javax.swing.JScrollPane; import org.fudaa.ctulu.gui.CtuluLibSwing; @@ -204,7 +200,6 @@ comboChoixVar_.setMinimumSize(new Dimension(150,(int) comboChoixVar_.getSize().getHeight())); comboChoixVar_.addActionListener(new ActionListener(){ - @Override public void actionPerformed(ActionEvent e) { filtreVariables(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2009-01-24 22:22:18
|
Revision: 4398 http://fudaa.svn.sourceforge.net/fudaa/?rev=4398&view=rev Author: deniger Date: 2009-01-24 21:49:52 +0000 (Sat, 24 Jan 2009) Log Message: ----------- correction fichier dico Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/telemac/dico/DicoSpartacus2dv1p0.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/telemac/dico/DicoSpartacus2dv1p1.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/telemac/dico/DicoSpartacus2dv1p2.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/telemac/dico/DicoSpartacus2dv5p8.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/telemac/dico/DicoTelemac2dv5p4.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/telemac/dico/DicoTelemac2dv5p5.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/telemac/dico/DicoTelemac2dv5p6.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/telemac/dico/DicoTelemac2dv5p7.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/telemac/dico/DicoTelemac2dv5p8.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/telemac/dico/DicoTelemac3dv5p5.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/telemac/dico/DicoTelemac3dv5p6.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/telemac/dico/DicoTelemac3dv5p7.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/telemac/dico/DicoTelemac3dv5p8.java Modified: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/telemac/dico/DicoSpartacus2dv1p0.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/telemac/dico/DicoSpartacus2dv1p0.java 2009-01-23 18:57:21 UTC (rev 4397) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/telemac/dico/DicoSpartacus2dv1p0.java 2009-01-24 21:49:52 UTC (rev 4398) @@ -769,17 +769,15 @@ valueByLanguage[0]="VISCOSITES MOLECULAIRES"; valueByLanguage[1]="MOLECULAR VISCOSITIES"; - entiteTableau=new DicoEntite.Tableau(valueByLanguage[languageIndex_],typeReel); - entiteTableau.setTaille(2); - entiteTableau.setDynamique(true); - entiteTableau.setNiveau(1); + entiteVecteur=new DicoEntite.Vecteur(valueByLanguage[languageIndex_],typeReel,";"); + entiteVecteur.setNiveau(1); valueByLanguage[0]="Viscosite moleculaire de chaque fluide considere"; valueByLanguage[1]="Molecular viscosity of each considered fluid"; - entiteTableau.setAide(valueByLanguage[languageIndex_]); + entiteVecteur.setAide(valueByLanguage[languageIndex_]); valueByLanguage[0]="PARAMETRES PHYSIQUES"; valueByLanguage[1]="PHYSICAL PARAMETERS"; - entiteTableau.setRubrique(valueByLanguage[languageIndex_]); - entites[35]=entiteTableau.getImmutable(); + entiteVecteur.setRubrique(valueByLanguage[languageIndex_]); + entites[35]=entiteVecteur.getImmutable(); //start DENSITES DE REFERENCE @@ -787,17 +785,15 @@ valueByLanguage[0]="DENSITES DE REFERENCE"; valueByLanguage[1]="REFERENCE DENSITIES"; - entiteTableau=new DicoEntite.Tableau(valueByLanguage[languageIndex_],typeReel); - entiteTableau.setTaille(2); - entiteTableau.setDynamique(true); - entiteTableau.setNiveau(1); + entiteVecteur=new DicoEntite.Vecteur(valueByLanguage[languageIndex_],typeReel,";"); + entiteVecteur.setNiveau(1); valueByLanguage[0]="Densite de reference de chaque fluide considere"; valueByLanguage[1]="Reference density of each considered fluid"; - entiteTableau.setAide(valueByLanguage[languageIndex_]); + entiteVecteur.setAide(valueByLanguage[languageIndex_]); valueByLanguage[0]="PARAMETRES PHYSIQUES"; valueByLanguage[1]="PHYSICAL PARAMETERS"; - entiteTableau.setRubrique(valueByLanguage[languageIndex_]); - entites[36]=entiteTableau.getImmutable(); + entiteVecteur.setRubrique(valueByLanguage[languageIndex_]); + entites[36]=entiteVecteur.getImmutable(); //start RUGOSITE EQUIVALENTE Modified: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/telemac/dico/DicoSpartacus2dv1p1.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/telemac/dico/DicoSpartacus2dv1p1.java 2009-01-23 18:57:21 UTC (rev 4397) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/telemac/dico/DicoSpartacus2dv1p1.java 2009-01-24 21:49:52 UTC (rev 4398) @@ -2,1122 +2,1040 @@ *File generated by fudaa */ -package - org.fudaa.dodico.telemac.dico; +package org.fudaa.dodico.telemac.dico; import org.fudaa.dodico.dico.*; + /** * @author deniger */ -public class - DicoSpartacus2dv1p1 - extends DicoModelAbstract -{ - public - DicoSpartacus2dv1p1 - () - { - super(); +public class DicoSpartacus2dv1p1 extends DicoModelAbstract { + public DicoSpartacus2dv1p1() { + super(); } - public - DicoSpartacus2dv1p1 -(int _l) - { - super(_l); + + public DicoSpartacus2dv1p1(int _l) { + super(_l); } - public - DicoSpartacus2dv1p1 -(String _l) - { + + public DicoSpartacus2dv1p1(String _l) { super(_l); } - public final String getCodeName() - { + + public final String getCodeName() { return "spartacus2d"; } - public final String getVersion() - { + + public final String getVersion() { return "v1p1"; } - protected String[] createNoms() - { + + protected String[] createNoms() { String[] noms; - if(languageIndex_==0) - { - noms=new String[]{"ABSCISSE MAXIMALE DU DOMAINE D ETUDE","ABSCISSE MINIMALE DU DOMAINE D ETUDE","AMORTISSEMENT SELON X","AMORTISSEMENT SELON Z","COEFFICIENT D AMORTISSEMENT SELON X","COEFFICIENT D AMORTISSEMENT SELON Z","COEFFICIENT DES FORCES DE PAROI","COTE MAXIMALE DU DOMAINE D ETUDE","COTE MINIMALE DU DOMAINE D ETUDE","DENSITES DE REFERENCE", - "DESCRIPTION DES LIBRAIRIES","DICTIONNAIRE","EXECUTABLE PAR DEFAUT","EXECUTABLE PARALLELE PAR DEFAUT","FACTEUR DE LISSAGE","FICHIER DE MAILLAGE","FICHIER DES PARAMETRES","FICHIER DES POSITIONS","FICHIER DES RESULTATS","FICHIER FORTRAN", - "FICHIER INITIALISATION","FICHIER SUITE","GRAVITE","LISSAGE DE LA DENSITE","LISTE DES FICHIERS","MODELE DE DEFORMATION","MODELE DE GRADIENT DE PRESSION","MODELE DE PRODUCTION","MODELE DE TURBULENCE","MODELE DE VISCOSITE", - "MODELE DE VITESSE DE FROTTEMENT","MOTEUR","NOMBRE DE FLUIDES","NOMBRE DE PAS DE TEMPS","NUMERO DE VERSION","PAROIS MOBILES","PERIODE DE SORTIE DES CHAMPS","PERIODE DE SORTIE DES POSITIONS","PERIODE DE SORTIE LISTING","PERIODICITE SELON X", - "POST-PROCESSEUR","RAPPORT DELTA-DR","RAPPORT H-DR","RUGOSITE EQUIVALENTE","SUITE DE CALCUL","TITRE","TYPE DE CONDITION DE PAROI","TYPE DE FORCES DE PAROI","TYPE DU NOYAU","VALEUR DE LA FORCE MOTRICE", - "VALEUR DE LA VITESSE DEBITANTE","VISCOSITES MOLECULAIRES","VITESSE DU SON"}; - } - else if(languageIndex_==1) - { - noms=new String[]{"BULK VELOCITY VALUE","CALCULATION CONTINUED","CONTINUATION FILE","DEFAULT EXECUTABLE","DEFAULT PARALLEL EXECUTABLE","DENSITY SMOOTHING","DESCRIPTION OF LIBRARIES","DICTIONARY","DRIVING","DRIVING FORCE VALUE", - "EQUIVALENT ROUGHNESS","FIELD PRINTOUT PERIOD","FORTRAN FILE","FRICTION VELOCITY MODEL","GRAVITY","INITIALIZING FILE","KERNEL TYPE","LIST OF FILES","LISTING PRINTOUT PERIOD","MAXIMAL AXIAL CO-ORDINATE OF THE DOMAIN", - "MAXIMAL VERTICAL CO-ORDINATE OF THE DOMAIN","MESH FILE","MINIMAL AXIAL CO-ORDINATE OF THE DOMAIN","MINIMAL VERTICAL CO-ORDINATE OF THE DOMAIN","MOLECULAR VISCOSITIES","MOVING WALLS","NUMBER OF FLUIDS","NUMBER OF TIME STEPS","POSITION FILE","POSITION PRINTOUT PERIOD", - "POSTPROCESSOR","PRESSURE GRADIENT MODEL","PRODUCTION MODEL","RATIO DELTA-DR","RATIO H-DR","REFERENCE DENSITIES","RELEASE","RESULT FILE","SMOOTHING FACTOR","SPEED OF SOUND", - "STEERING FILE","STRAIN MODEL","TITLE","TURBULENCE MODEL","VISCOUS MODEL","WALL FORCE TYPE","WALL TREATMENT","WALL-FORCE COEFFICIENT","X-DAMPING","X-DAMPING COEFFICIENT", - "X-PERIODICITY","Z-DAMPING","Z-DAMPING COEFFICIENT"}; - } - else noms=null; + if (languageIndex_ == 0) { + noms = new String[] { "ABSCISSE MAXIMALE DU DOMAINE D ETUDE", "ABSCISSE MINIMALE DU DOMAINE D ETUDE", + "AMORTISSEMENT SELON X", "AMORTISSEMENT SELON Z", "COEFFICIENT D AMORTISSEMENT SELON X", + "COEFFICIENT D AMORTISSEMENT SELON Z", "COEFFICIENT DES FORCES DE PAROI", "COTE MAXIMALE DU DOMAINE D ETUDE", + "COTE MINIMALE DU DOMAINE D ETUDE", "DENSITES DE REFERENCE", "DESCRIPTION DES LIBRAIRIES", "DICTIONNAIRE", + "EXECUTABLE PAR DEFAUT", "EXECUTABLE PARALLELE PAR DEFAUT", "FACTEUR DE LISSAGE", "FICHIER DE MAILLAGE", + "FICHIER DES PARAMETRES", "FICHIER DES POSITIONS", "FICHIER DES RESULTATS", "FICHIER FORTRAN", + "FICHIER INITIALISATION", "FICHIER SUITE", "GRAVITE", "LISSAGE DE LA DENSITE", "LISTE DES FICHIERS", + "MODELE DE DEFORMATION", "MODELE DE GRADIENT DE PRESSION", "MODELE DE PRODUCTION", "MODELE DE TURBULENCE", + "MODELE DE VISCOSITE", "MODELE DE VITESSE DE FROTTEMENT", "MOTEUR", "NOMBRE DE FLUIDES", + "NOMBRE DE PAS DE TEMPS", "NUMERO DE VERSION", "PAROIS MOBILES", "PERIODE DE SORTIE DES CHAMPS", + "PERIODE DE SORTIE DES POSITIONS", "PERIODE DE SORTIE LISTING", "PERIODICITE SELON X", "POST-PROCESSEUR", + "RAPPORT DELTA-DR", "RAPPORT H-DR", "RUGOSITE EQUIVALENTE", "SUITE DE CALCUL", "TITRE", + "TYPE DE CONDITION DE PAROI", "TYPE DE FORCES DE PAROI", "TYPE DU NOYAU", "VALEUR DE LA FORCE MOTRICE", + "VALEUR DE LA VITESSE DEBITANTE", "VISCOSITES MOLECULAIRES", "VITESSE DU SON" }; + } else if (languageIndex_ == 1) { + noms = new String[] { "BULK VELOCITY VALUE", "CALCULATION CONTINUED", "CONTINUATION FILE", "DEFAULT EXECUTABLE", + "DEFAULT PARALLEL EXECUTABLE", "DENSITY SMOOTHING", "DESCRIPTION OF LIBRARIES", "DICTIONARY", "DRIVING", + "DRIVING FORCE VALUE", "EQUIVALENT ROUGHNESS", "FIELD PRINTOUT PERIOD", "FORTRAN FILE", + "FRICTION VELOCITY MODEL", "GRAVITY", "INITIALIZING FILE", "KERNEL TYPE", "LIST OF FILES", + "LISTING PRINTOUT PERIOD", "MAXIMAL AXIAL CO-ORDINATE OF THE DOMAIN", + "MAXIMAL VERTICAL CO-ORDINATE OF THE DOMAIN", "MESH FILE", "MINIMAL AXIAL CO-ORDINATE OF THE DOMAIN", + "MINIMAL VERTICAL CO-ORDINATE OF THE DOMAIN", "MOLECULAR VISCOSITIES", "MOVING WALLS", "NUMBER OF FLUIDS", + "NUMBER OF TIME STEPS", "POSITION FILE", "POSITION PRINTOUT PERIOD", "POSTPROCESSOR", + "PRESSURE GRADIENT MODEL", "PRODUCTION MODEL", "RATIO DELTA-DR", "RATIO H-DR", "REFERENCE DENSITIES", + "RELEASE", "RESULT FILE", "SMOOTHING FACTOR", "SPEED OF SOUND", "STEERING FILE", "STRAIN MODEL", "TITLE", + "TURBULENCE MODEL", "VISCOUS MODEL", "WALL FORCE TYPE", "WALL TREATMENT", "WALL-FORCE COEFFICIENT", + "X-DAMPING", "X-DAMPING COEFFICIENT", "X-PERIODICITY", "Z-DAMPING", "Z-DAMPING COEFFICIENT" }; + } else noms = null; return noms; } - protected final DicoEntite[] createEntites() - { - DicoComportValues[] comportValues; - DicoEntite.Simple entiteSimple; - DicoEntite.Tableau entiteTableau; - DicoEntite.Vecteur entiteVecteur; - DicoDataType.Entier typeEntier; - DicoDataType.Binaire typeBinaire; - DicoDataType.Chaine typeChaine; - DicoDataType.Reel typeReel; - String[] choiceKeys; - String[][] choiceValues; - String[] valueByLanguage=new String[2]; - DicoEntite[] entites=new DicoEntite[53]; - //start FICHIER INITIALISATION - typeChaine=new DicoDataType.Chaine(); + protected final DicoEntite[] createEntites() { + DicoComportValues[] comportValues; + DicoEntite.Simple entiteSimple; + DicoEntite.Tableau entiteTableau; + DicoEntite.Vecteur entiteVecteur; + DicoDataType.Entier typeEntier; + DicoDataType.Binaire typeBinaire; + DicoDataType.Chaine typeChaine; + DicoDataType.Reel typeReel; + String[] choiceKeys; + String[][] choiceValues; + String[] valueByLanguage = new String[2]; + DicoEntite[] entites = new DicoEntite[53]; + + // start FICHIER INITIALISATION + typeChaine = new DicoDataType.Chaine(); typeChaine.setFileType(true); - valueByLanguage[0]="FICHIER INITIALISATION"; - valueByLanguage[1]="INITIALIZING FILE"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeChaine); + valueByLanguage[0] = "FICHIER INITIALISATION"; + valueByLanguage[1] = "INITIALIZING FILE"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeChaine); entiteSimple.setNiveau(1); - valueByLanguage[0]="Fichier contenant la geometrie initiale du systeme"; - valueByLanguage[1]="File including system initial geometry"; + valueByLanguage[0] = "Fichier contenant la geometrie initiale du systeme"; + valueByLanguage[1] = "File including system initial geometry"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="FICHIERS ENTREES-SORTIES"; - valueByLanguage[1]="INPUT-OUTPUT FILES"; + valueByLanguage[0] = "FICHIERS ENTREES-SORTIES"; + valueByLanguage[1] = "INPUT-OUTPUT FILES"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - entites[0]=entiteSimple.getImmutable(); + entites[0] = entiteSimple.getImmutable(); - - //start FICHIER DE MAILLAGE - typeChaine=new DicoDataType.Chaine(); + // start FICHIER DE MAILLAGE + typeChaine = new DicoDataType.Chaine(); typeChaine.setFileType(true); - valueByLanguage[0]="FICHIER DE MAILLAGE"; - valueByLanguage[1]="MESH FILE"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeChaine); + valueByLanguage[0] = "FICHIER DE MAILLAGE"; + valueByLanguage[1] = "MESH FILE"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeChaine); entiteSimple.setNiveau(1); - valueByLanguage[0]="Fichier contenant le maillage d'interpolation pour" - +"\nlecture sous Rubens"; - valueByLanguage[1]="File including the interpolation mesh for Rubens output"; + valueByLanguage[0] = "Fichier contenant le maillage d'interpolation pour" + "\nlecture sous Rubens"; + valueByLanguage[1] = "File including the interpolation mesh for Rubens output"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="FICHIERS ENTREES-SORTIES"; - valueByLanguage[1]="INPUT-OUTPUT FILES"; + valueByLanguage[0] = "FICHIERS ENTREES-SORTIES"; + valueByLanguage[1] = "INPUT-OUTPUT FILES"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - entites[1]=entiteSimple.getImmutable(); + entites[1] = entiteSimple.getImmutable(); - - //start FICHIER DES PARAMETRES - typeChaine=new DicoDataType.Chaine(); + // start FICHIER DES PARAMETRES + typeChaine = new DicoDataType.Chaine(); typeChaine.setFileType(true); - valueByLanguage[0]="FICHIER DES PARAMETRES"; - valueByLanguage[1]="STEERING FILE"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeChaine); + valueByLanguage[0] = "FICHIER DES PARAMETRES"; + valueByLanguage[1] = "STEERING FILE"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeChaine); entiteSimple.setNiveau(1); - valueByLanguage[0]="Fichier contenant les parametres du calcul"; - valueByLanguage[1]="File including computation parameters"; + valueByLanguage[0] = "Fichier contenant les parametres du calcul"; + valueByLanguage[1] = "File including computation parameters"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="FICHIERS ENTREES-SORTIES"; - valueByLanguage[1]="INPUT-OUTPUT FILES"; + valueByLanguage[0] = "FICHIERS ENTREES-SORTIES"; + valueByLanguage[1] = "INPUT-OUTPUT FILES"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - entites[2]=entiteSimple.getImmutable(); + entites[2] = entiteSimple.getImmutable(); - - //start FICHIER DES POSITIONS - typeChaine=new DicoDataType.Chaine(); + // start FICHIER DES POSITIONS + typeChaine = new DicoDataType.Chaine(); typeChaine.setFileType(true); - valueByLanguage[0]="FICHIER DES POSITIONS"; - valueByLanguage[1]="POSITION FILE"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeChaine); + valueByLanguage[0] = "FICHIER DES POSITIONS"; + valueByLanguage[1] = "POSITION FILE"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeChaine); entiteSimple.setNiveau(1); - valueByLanguage[0]="Fichier resultat contenant les positions des particules"; - valueByLanguage[1]="Result file including printout particle positions"; + valueByLanguage[0] = "Fichier resultat contenant les positions des particules"; + valueByLanguage[1] = "Result file including printout particle positions"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="FICHIERS ENTREES-SORTIES"; - valueByLanguage[1]="INPUT-OUTPUT FILES"; + valueByLanguage[0] = "FICHIERS ENTREES-SORTIES"; + valueByLanguage[1] = "INPUT-OUTPUT FILES"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - entites[3]=entiteSimple.getImmutable(); + entites[3] = entiteSimple.getImmutable(); - - //start FICHIER DES RESULTATS - typeChaine=new DicoDataType.Chaine(); + // start FICHIER DES RESULTATS + typeChaine = new DicoDataType.Chaine(); typeChaine.setFileType(true); - valueByLanguage[0]="FICHIER DES RESULTATS"; - valueByLanguage[1]="RESULT FILE"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeChaine); + valueByLanguage[0] = "FICHIER DES RESULTATS"; + valueByLanguage[1] = "RESULT FILE"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeChaine); entiteSimple.setNiveau(1); - valueByLanguage[0]="Fichier resultat contenant les champs continus"; - valueByLanguage[1]="Result file including continuous fields"; + valueByLanguage[0] = "Fichier resultat contenant les champs continus"; + valueByLanguage[1] = "Result file including continuous fields"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="FICHIERS ENTREES-SORTIES"; - valueByLanguage[1]="INPUT-OUTPUT FILES"; + valueByLanguage[0] = "FICHIERS ENTREES-SORTIES"; + valueByLanguage[1] = "INPUT-OUTPUT FILES"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - entites[4]=entiteSimple.getImmutable(); + entites[4] = entiteSimple.getImmutable(); - - //start FICHIER FORTRAN - typeChaine=new DicoDataType.Chaine(); + // start FICHIER FORTRAN + typeChaine = new DicoDataType.Chaine(); typeChaine.setFileType(true); - valueByLanguage[0]="FICHIER FORTRAN"; - valueByLanguage[1]="FORTRAN FILE"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeChaine); + valueByLanguage[0] = "FICHIER FORTRAN"; + valueByLanguage[1] = "FORTRAN FILE"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeChaine); entiteSimple.setNiveau(1); - valueByLanguage[0]="Fichier contenant les routines modifiees" - +"\npar l'utilisateur"; - valueByLanguage[1]="Name of the file including all the user" - +"\nmodified subroutines"; + valueByLanguage[0] = "Fichier contenant les routines modifiees" + "\npar l'utilisateur"; + valueByLanguage[1] = "Name of the file including all the user" + "\nmodified subroutines"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="ENTREES-SORTIES, FICHIERS"; - valueByLanguage[1]="INPUT-OUTPUT, FILES"; + valueByLanguage[0] = "ENTREES-SORTIES, FICHIERS"; + valueByLanguage[1] = "INPUT-OUTPUT, FILES"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="DEFAUT"; - valueByLanguage[1]="DEFAUT"; + valueByLanguage[0] = "DEFAUT"; + valueByLanguage[1] = "DEFAUT"; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[5]=entiteSimple.getImmutable(); + entites[5] = entiteSimple.getImmutable(); - - //start FICHIER SUITE - typeChaine=new DicoDataType.Chaine(); + // start FICHIER SUITE + typeChaine = new DicoDataType.Chaine(); typeChaine.setFileType(true); - valueByLanguage[0]="FICHIER SUITE"; - valueByLanguage[1]="CONTINUATION FILE"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeChaine); + valueByLanguage[0] = "FICHIER SUITE"; + valueByLanguage[1] = "CONTINUATION FILE"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeChaine); entiteSimple.setNiveau(1); - valueByLanguage[0]="Fichier contenant les routines modifiees" - +"\npar l'utilisateur"; - valueByLanguage[1]="Data file including the user modified subroutines"; + valueByLanguage[0] = "Fichier contenant les routines modifiees" + "\npar l'utilisateur"; + valueByLanguage[1] = "Data file including the user modified subroutines"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="FICHIERS ENTREES-SORTIES"; - valueByLanguage[1]="INPUT-OUTPUT FILES"; + valueByLanguage[0] = "FICHIERS ENTREES-SORTIES"; + valueByLanguage[1] = "INPUT-OUTPUT FILES"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - entites[6]=entiteSimple.getImmutable(); + entites[6] = entiteSimple.getImmutable(); + // start AMORTISSEMENT SELON X + typeBinaire = DicoDataType.Binaire.EMPTY; - //start AMORTISSEMENT SELON X - typeBinaire=DicoDataType.Binaire.EMPTY; - - valueByLanguage[0]="AMORTISSEMENT SELON X"; - valueByLanguage[1]="X-DAMPING"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeBinaire); + valueByLanguage[0] = "AMORTISSEMENT SELON X"; + valueByLanguage[1] = "X-DAMPING"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeBinaire); entiteSimple.setNiveau(2); - valueByLanguage[0]="Logique de choix pour imposer un coefficient" - +"\nd'amortissement selon x"; - valueByLanguage[1]="Choice logical for an x-damping coefficient"; + valueByLanguage[0] = "Logique de choix pour imposer un coefficient" + "\nd'amortissement selon x"; + valueByLanguage[1] = "Choice logical for an x-damping coefficient"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="ARTIFICES NUMERIQUES"; - valueByLanguage[1]="NUMERICAL CORRECTIONS"; + valueByLanguage[0] = "ARTIFICES NUMERIQUES"; + valueByLanguage[1] = "NUMERICAL CORRECTIONS"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="false"; - valueByLanguage[1]="false"; + valueByLanguage[0] = "false"; + valueByLanguage[1] = "false"; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[7]=entiteSimple.getImmutable(); + entites[7] = entiteSimple.getImmutable(); + // start AMORTISSEMENT SELON Z + typeBinaire = DicoDataType.Binaire.EMPTY; - //start AMORTISSEMENT SELON Z - typeBinaire=DicoDataType.Binaire.EMPTY; - - valueByLanguage[0]="AMORTISSEMENT SELON Z"; - valueByLanguage[1]="Z-DAMPING"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeBinaire); + valueByLanguage[0] = "AMORTISSEMENT SELON Z"; + valueByLanguage[1] = "Z-DAMPING"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeBinaire); entiteSimple.setNiveau(2); - valueByLanguage[0]="Logique de choix pour imposer un coefficient" - +"\nd'amortissement selon z"; - valueByLanguage[1]="Choice logical for a z-damping coefficient"; + valueByLanguage[0] = "Logique de choix pour imposer un coefficient" + "\nd'amortissement selon z"; + valueByLanguage[1] = "Choice logical for a z-damping coefficient"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="ARTIFICES NUMERIQUES"; - valueByLanguage[1]="NUMERICAL CORRECTIONS"; + valueByLanguage[0] = "ARTIFICES NUMERIQUES"; + valueByLanguage[1] = "NUMERICAL CORRECTIONS"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="false"; - valueByLanguage[1]="false"; + valueByLanguage[0] = "false"; + valueByLanguage[1] = "false"; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[8]=entiteSimple.getImmutable(); + entites[8] = entiteSimple.getImmutable(); + // start GRAVITE + typeBinaire = DicoDataType.Binaire.EMPTY; - //start GRAVITE - typeBinaire=DicoDataType.Binaire.EMPTY; - - valueByLanguage[0]="GRAVITE"; - valueByLanguage[1]="GRAVITY"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeBinaire); + valueByLanguage[0] = "GRAVITE"; + valueByLanguage[1] = "GRAVITY"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeBinaire); entiteSimple.setNiveau(1); - valueByLanguage[0]="Logique de choix pour un ecoulement gravitaire"; - valueByLanguage[1]="Choice logical for a gravitational flow"; + valueByLanguage[0] = "Logique de choix pour un ecoulement gravitaire"; + valueByLanguage[1] = "Choice logical for a gravitational flow"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="PARAMETRES PHYSIQUES"; - valueByLanguage[1]="PHYSICAL PARAMETERS"; + valueByLanguage[0] = "PARAMETRES PHYSIQUES"; + valueByLanguage[1] = "PHYSICAL PARAMETERS"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="true"; - valueByLanguage[1]="true"; + valueByLanguage[0] = "true"; + valueByLanguage[1] = "true"; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[9]=entiteSimple.getImmutable(); + entites[9] = entiteSimple.getImmutable(); + // start LISSAGE DE LA DENSITE + typeBinaire = DicoDataType.Binaire.EMPTY; - //start LISSAGE DE LA DENSITE - typeBinaire=DicoDataType.Binaire.EMPTY; - - valueByLanguage[0]="LISSAGE DE LA DENSITE"; - valueByLanguage[1]="DENSITY SMOOTHING"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeBinaire); + valueByLanguage[0] = "LISSAGE DE LA DENSITE"; + valueByLanguage[1] = "DENSITY SMOOTHING"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeBinaire); entiteSimple.setNiveau(2); - valueByLanguage[0]="Logique de choix pour effectuer un lissage de la densite"; - valueByLanguage[1]="Choice logical for density smoothing"; + valueByLanguage[0] = "Logique de choix pour effectuer un lissage de la densite"; + valueByLanguage[1] = "Choice logical for density smoothing"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="ARTIFICES NUMERIQUES"; - valueByLanguage[1]="NUMERICAL CORRECTIONS"; + valueByLanguage[0] = "ARTIFICES NUMERIQUES"; + valueByLanguage[1] = "NUMERICAL CORRECTIONS"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="false"; - valueByLanguage[1]="false"; + valueByLanguage[0] = "false"; + valueByLanguage[1] = "false"; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[10]=entiteSimple.getImmutable(); + entites[10] = entiteSimple.getImmutable(); + // start PAROIS MOBILES + typeBinaire = DicoDataType.Binaire.EMPTY; - //start PAROIS MOBILES - typeBinaire=DicoDataType.Binaire.EMPTY; - - valueByLanguage[0]="PAROIS MOBILES"; - valueByLanguage[1]="MOVING WALLS"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeBinaire); + valueByLanguage[0] = "PAROIS MOBILES"; + valueByLanguage[1] = "MOVING WALLS"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeBinaire); entiteSimple.setNiveau(1); - valueByLanguage[0]="Logique de choix relatif a l'existence d'une ou" - +"\n plusieurs parois mobiles"; - valueByLanguage[1]="Choice logical relative to one or several moving wall"; + valueByLanguage[0] = "Logique de choix relatif a l'existence d'une ou" + "\n plusieurs parois mobiles"; + valueByLanguage[1] = "Choice logical relative to one or several moving wall"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="MODELISATION DES PAROIS"; - valueByLanguage[1]="WALL MODELLING"; + valueByLanguage[0] = "MODELISATION DES PAROIS"; + valueByLanguage[1] = "WALL MODELLING"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="false"; - valueByLanguage[1]="false"; + valueByLanguage[0] = "false"; + valueByLanguage[1] = "false"; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[11]=entiteSimple.getImmutable(); + entites[11] = entiteSimple.getImmutable(); + // start PERIODICITE SELON X + typeBinaire = DicoDataType.Binaire.EMPTY; - //start PERIODICITE SELON X - typeBinaire=DicoDataType.Binaire.EMPTY; - - valueByLanguage[0]="PERIODICITE SELON X"; - valueByLanguage[1]="X-PERIODICITY"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeBinaire); + valueByLanguage[0] = "PERIODICITE SELON X"; + valueByLanguage[1] = "X-PERIODICITY"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeBinaire); entiteSimple.setNiveau(1); - valueByLanguage[0]="Logique de choix pour un ecoulement periodique selon x"; - valueByLanguage[1]="Choice logical for a x-periodic flow"; + valueByLanguage[0] = "Logique de choix pour un ecoulement periodique selon x"; + valueByLanguage[1] = "Choice logical for a x-periodic flow"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="PARAMETRES GEOMETRIQUES"; - valueByLanguage[1]="GEOMETRY PARAMETERS"; + valueByLanguage[0] = "PARAMETRES GEOMETRIQUES"; + valueByLanguage[1] = "GEOMETRY PARAMETERS"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="false"; - valueByLanguage[1]="false"; + valueByLanguage[0] = "false"; + valueByLanguage[1] = "false"; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[12]=entiteSimple.getImmutable(); + entites[12] = entiteSimple.getImmutable(); + // start SUITE DE CALCUL + typeBinaire = DicoDataType.Binaire.EMPTY; - //start SUITE DE CALCUL - typeBinaire=DicoDataType.Binaire.EMPTY; - - valueByLanguage[0]="SUITE DE CALCUL"; - valueByLanguage[1]="CALCULATION CONTINUED"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeBinaire); + valueByLanguage[0] = "SUITE DE CALCUL"; + valueByLanguage[1] = "CALCULATION CONTINUED"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeBinaire); entiteSimple.setNiveau(1); - valueByLanguage[0]="Logique de choix pour une suite de calcul"; - valueByLanguage[1]="Choice logical for a continued calculation"; + valueByLanguage[0] = "Logique de choix pour une suite de calcul"; + valueByLanguage[1] = "Choice logical for a continued calculation"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="PARAMETRES DE CALCUL"; - valueByLanguage[1]="CALCULATION PARAMETERS"; + valueByLanguage[0] = "PARAMETRES DE CALCUL"; + valueByLanguage[1] = "CALCULATION PARAMETERS"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="false"; - valueByLanguage[1]="false"; + valueByLanguage[0] = "false"; + valueByLanguage[1] = "false"; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[13]=entiteSimple.getImmutable(); + entites[13] = entiteSimple.getImmutable(); + // start MODELE DE DEFORMATION + typeEntier = new DicoDataType.Entier(); + typeEntier.setControle(1, 2); - //start MODELE DE DEFORMATION - typeEntier=new DicoDataType.Entier(); - typeEntier.setControle(1,2); - - valueByLanguage[0]="MODELE DE DEFORMATION"; - valueByLanguage[1]="STRAIN MODEL"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeEntier); + valueByLanguage[0] = "MODELE DE DEFORMATION"; + valueByLanguage[1] = "STRAIN MODEL"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeEntier); entiteSimple.setNiveau(2); - valueByLanguage[0]="Indice de choix pour le modele de deformation"; - valueByLanguage[1]="Choice index relative to the strain model"; + valueByLanguage[0] = "Indice de choix pour le modele de deformation"; + valueByLanguage[1] = "Choice index relative to the strain model"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="TURBULENCE"; - valueByLanguage[1]="TURBULENCE"; + valueByLanguage[0] = "TURBULENCE"; + valueByLanguage[1] = "TURBULENCE"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="1"; - valueByLanguage[1]="1"; + valueByLanguage[0] = "1"; + valueByLanguage[1] = "1"; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[14]=entiteSimple.getImmutable(); + entites[14] = entiteSimple.getImmutable(); + // start MODELE DE GRADIENT DE PRESSION + typeEntier = new DicoDataType.Entier(); + typeEntier.setControle(1, 2); - //start MODELE DE GRADIENT DE PRESSION - typeEntier=new DicoDataType.Entier(); - typeEntier.setControle(1,2); - - valueByLanguage[0]="MODELE DE GRADIENT DE PRESSION"; - valueByLanguage[1]="PRESSURE GRADIENT MODEL"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeEntier); + valueByLanguage[0] = "MODELE DE GRADIENT DE PRESSION"; + valueByLanguage[1] = "PRESSURE GRADIENT MODEL"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeEntier); entiteSimple.setNiveau(2); - valueByLanguage[0]="Indice de choix relatif a la modelisation du" - +"\ngradient de pression"; - valueByLanguage[1]="Choice index relative to pressure gradient modelling"; + valueByLanguage[0] = "Indice de choix relatif a la modelisation du" + "\ngradient de pression"; + valueByLanguage[1] = "Choice index relative to pressure gradient modelling"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="PARAMETRES NUMERIQUES"; - valueByLanguage[1]="NUMERICAL PARAMETERS"; + valueByLanguage[0] = "PARAMETRES NUMERIQUES"; + valueByLanguage[1] = "NUMERICAL PARAMETERS"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="2"; - valueByLanguage[1]="2"; + valueByLanguage[0] = "2"; + valueByLanguage[1] = "2"; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[15]=entiteSimple.getImmutable(); + entites[15] = entiteSimple.getImmutable(); + // start MODELE DE PRODUCTION + typeEntier = new DicoDataType.Entier(); + typeEntier.setControle(1, 2); - //start MODELE DE PRODUCTION - typeEntier=new DicoDataType.Entier(); - typeEntier.setControle(1,2); - - valueByLanguage[0]="MODELE DE PRODUCTION"; - valueByLanguage[1]="PRODUCTION MODEL"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeEntier); + valueByLanguage[0] = "MODELE DE PRODUCTION"; + valueByLanguage[1] = "PRODUCTION MODEL"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeEntier); entiteSimple.setNiveau(2); - valueByLanguage[0]="Indice de choix pour le modele de production"; - valueByLanguage[1]="Choice index relative to the production model"; + valueByLanguage[0] = "Indice de choix pour le modele de production"; + valueByLanguage[1] = "Choice index relative to the production model"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="TURBULENCE"; - valueByLanguage[1]="TURBULENCE"; + valueByLanguage[0] = "TURBULENCE"; + valueByLanguage[1] = "TURBULENCE"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="2"; - valueByLanguage[1]="2"; + valueByLanguage[0] = "2"; + valueByLanguage[1] = "2"; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[16]=entiteSimple.getImmutable(); + entites[16] = entiteSimple.getImmutable(); + // start MODELE DE TURBULENCE + typeEntier = new DicoDataType.Entier(); + typeEntier.setControle(0, 3); - //start MODELE DE TURBULENCE - typeEntier=new DicoDataType.Entier(); - typeEntier.setControle(0,3); - - valueByLanguage[0]="MODELE DE TURBULENCE"; - valueByLanguage[1]="TURBULENCE MODEL"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeEntier); + valueByLanguage[0] = "MODELE DE TURBULENCE"; + valueByLanguage[1] = "TURBULENCE MODEL"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeEntier); entiteSimple.setNiveau(1); - valueByLanguage[0]="Indice de choix pour le modele de turbulence"; - valueByLanguage[1]="Choice index relative to the turbulence model"; + valueByLanguage[0] = "Indice de choix pour le modele de turbulence"; + valueByLanguage[1] = "Choice index relative to the turbulence model"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="TURBULENCE"; - valueByLanguage[1]="TURBULENCE"; + valueByLanguage[0] = "TURBULENCE"; + valueByLanguage[1] = "TURBULENCE"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="2"; - valueByLanguage[1]="2"; + valueByLanguage[0] = "2"; + valueByLanguage[1] = "2"; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[17]=entiteSimple.getImmutable(); + entites[17] = entiteSimple.getImmutable(); + // start MODELE DE VISCOSITE + typeEntier = new DicoDataType.Entier(); + typeEntier.setControle(1, 2); - //start MODELE DE VISCOSITE - typeEntier=new DicoDataType.Entier(); - typeEntier.setControle(1,2); - - valueByLanguage[0]="MODELE DE VISCOSITE"; - valueByLanguage[1]="VISCOUS MODEL"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeEntier); + valueByLanguage[0] = "MODELE DE VISCOSITE"; + valueByLanguage[1] = "VISCOUS MODEL"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeEntier); entiteSimple.setNiveau(2); - valueByLanguage[0]="Indice de choix relatif a la modelisation du terme" - +"\nvisqueux"; - valueByLanguage[1]="Choice index relative to viscous term modelling"; + valueByLanguage[0] = "Indice de choix relatif a la modelisation du terme" + "\nvisqueux"; + valueByLanguage[1] = "Choice index relative to viscous term modelling"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="PARAMETRES NUMERIQUES"; - valueByLanguage[1]="NUMERICAL PARAMETERS"; + valueByLanguage[0] = "PARAMETRES NUMERIQUES"; + valueByLanguage[1] = "NUMERICAL PARAMETERS"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="1"; - valueByLanguage[1]="1"; + valueByLanguage[0] = "1"; + valueByLanguage[1] = "1"; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[18]=entiteSimple.getImmutable(); + entites[18] = entiteSimple.getImmutable(); + // start MODELE DE VITESSE DE FROTTEMENT + typeEntier = new DicoDataType.Entier(); + typeEntier.setControle(1, 2); - //start MODELE DE VITESSE DE FROTTEMENT - typeEntier=new DicoDataType.Entier(); - typeEntier.setControle(1,2); - - valueByLanguage[0]="MODELE DE VITESSE DE FROTTEMENT"; - valueByLanguage[1]="FRICTION VELOCITY MODEL"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeEntier); + valueByLanguage[0] = "MODELE DE VITESSE DE FROTTEMENT"; + valueByLanguage[1] = "FRICTION VELOCITY MODEL"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeEntier); entiteSimple.setNiveau(2); - valueByLanguage[0]="Indice de choix pour le calcul de la vitesse de frottement"; - valueByLanguage[1]="Choice index relative to the friction velocity computation"; + valueByLanguage[0] = "Indice de choix pour le calcul de la vitesse de frottement"; + valueByLanguage[1] = "Choice index relative to the friction velocity computation"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="TURBULENCE"; - valueByLanguage[1]="TURBULENCE"; + valueByLanguage[0] = "TURBULENCE"; + valueByLanguage[1] = "TURBULENCE"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="2"; - valueByLanguage[1]="2"; + valueByLanguage[0] = "2"; + valueByLanguage[1] = "2"; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[19]=entiteSimple.getImmutable(); + entites[19] = entiteSimple.getImmutable(); + // start MOTEUR + typeEntier = new DicoDataType.Entier(); + typeEntier.setControle(0, 3); - //start MOTEUR - typeEntier=new DicoDataType.Entier(); - typeEntier.setControle(0,3); - - valueByLanguage[0]="MOTEUR"; - valueByLanguage[1]="DRIVING"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeEntier); + valueByLanguage[0] = "MOTEUR"; + valueByLanguage[1] = "DRIVING"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeEntier); entiteSimple.setNiveau(1); - valueByLanguage[0]="Indice de choix relatif au moteur de l'ecoulement selon x"; - valueByLanguage[1]="Choice index relative to the x-driving"; + valueByLanguage[0] = "Indice de choix relatif au moteur de l'ecoulement selon x"; + valueByLanguage[1] = "Choice index relative to the x-driving"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="MOTEUR DE L'ECOULEMENT SELON X"; - valueByLanguage[1]="X-DRIVING TERM"; + valueByLanguage[0] = "MOTEUR DE L'ECOULEMENT SELON X"; + valueByLanguage[1] = "X-DRIVING TERM"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="0"; - valueByLanguage[1]="0"; + valueByLanguage[0] = "0"; + valueByLanguage[1] = "0"; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[20]=entiteSimple.getImmutable(); + entites[20] = entiteSimple.getImmutable(); + // start NOMBRE DE FLUIDES + typeEntier = new DicoDataType.Entier(); + typeEntier.setControle(1, 3); - //start NOMBRE DE FLUIDES - typeEntier=new DicoDataType.Entier(); - typeEntier.setControle(1,3); - - valueByLanguage[0]="NOMBRE DE FLUIDES"; - valueByLanguage[1]="NUMBER OF FLUIDS"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeEntier); + valueByLanguage[0] = "NOMBRE DE FLUIDES"; + valueByLanguage[1] = "NUMBER OF FLUIDS"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeEntier); entiteSimple.setNiveau(1); - valueByLanguage[0]="Nombre de fluides impliques dans la simulation consideree"; - valueByLanguage[1]="Fluid number involved in the considered calculation"; + valueByLanguage[0] = "Nombre de fluides impliques dans la simulation consideree"; + valueByLanguage[1] = "Fluid number involved in the considered calculation"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="PARAMETRES PHYSIQUES"; - valueByLanguage[1]="PHYSICAL PARAMETERS"; + valueByLanguage[0] = "PARAMETRES PHYSIQUES"; + valueByLanguage[1] = "PHYSICAL PARAMETERS"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="1"; - valueByLanguage[1]="1"; + valueByLanguage[0] = "1"; + valueByLanguage[1] = "1"; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[21]=entiteSimple.getImmutable(); + entites[21] = entiteSimple.getImmutable(); + // start NOMBRE DE PAS DE TEMPS + typeEntier = new DicoDataType.Entier(); - //start NOMBRE DE PAS DE TEMPS - typeEntier=new DicoDataType.Entier(); - - valueByLanguage[0]="NOMBRE DE PAS DE TEMPS"; - valueByLanguage[1]="NUMBER OF TIME STEPS"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeEntier); + valueByLanguage[0] = "NOMBRE DE PAS DE TEMPS"; + valueByLanguage[1] = "NUMBER OF TIME STEPS"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeEntier); entiteSimple.setNiveau(1); - valueByLanguage[0]="Nombre d'iterations demandees"; - valueByLanguage[1]="Number of iterations"; + valueByLanguage[0] = "Nombre d'iterations demandees"; + valueByLanguage[1] = "Number of iterations"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="PARAMETRES DE CALCUL"; - valueByLanguage[1]="CALCULATION PARAMETERS"; + valueByLanguage[0] = "PARAMETRES DE CALCUL"; + valueByLanguage[1] = "CALCULATION PARAMETERS"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="1"; - valueByLanguage[1]="1"; + valueByLanguage[0] = "1"; + valueByLanguage[1] = "1"; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[22]=entiteSimple.getImmutable(); + entites[22] = entiteSimple.getImmutable(); + // start PERIODE DE SORTIE LISTING + typeEntier = new DicoDataType.Entier(); - //start PERIODE DE SORTIE LISTING - typeEntier=new DicoDataType.Entier(); - - valueByLanguage[0]="PERIODE DE SORTIE LISTING"; - valueByLanguage[1]="LISTING PRINTOUT PERIOD"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeEntier); + valueByLanguage[0] = "PERIODE DE SORTIE LISTING"; + valueByLanguage[1] = "LISTING PRINTOUT PERIOD"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeEntier); entiteSimple.setNiveau(1); - valueByLanguage[0]="Nombre d'iterations separant deux affichages" - +"\na l'ecran"; - valueByLanguage[1]="Number of time steps between two screen listing"; + valueByLanguage[0] = "Nombre d'iterations separant deux affichages" + "\na l'ecran"; + valueByLanguage[1] = "Number of time steps between two screen listing"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="SORTIES"; - valueByLanguage[1]="PRINTOUTS"; + valueByLanguage[0] = "SORTIES"; + valueByLanguage[1] = "PRINTOUTS"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="1"; - valueByLanguage[1]="1"; + valueByLanguage[0] = "1"; + valueByLanguage[1] = "1"; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[23]=entiteSimple.getImmutable(); + entites[23] = entiteSimple.getImmutable(); + // start PERIODE DE SORTIE DES CHAMPS + typeEntier = new DicoDataType.Entier(); - //start PERIODE DE SORTIE DES CHAMPS - typeEntier=new DicoDataType.Entier(); - - valueByLanguage[0]="PERIODE DE SORTIE DES CHAMPS"; - valueByLanguage[1]="FIELD PRINTOUT PERIOD"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeEntier); + valueByLanguage[0] = "PERIODE DE SORTIE DES CHAMPS"; + valueByLanguage[1] = "FIELD PRINTOUT PERIOD"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeEntier); entiteSimple.setNiveau(1); - valueByLanguage[0]="Nombre d'iterations separant deux impressions" - +"\ndans le fichier des resultats"; - valueByLanguage[1]="Number of time steps between two writings in the" - +"\nresult file"; + valueByLanguage[0] = "Nombre d'iterations separant deux impressions" + "\ndans le fichier des resultats"; + valueByLanguage[1] = "Number of time steps between two writings in the" + "\nresult file"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="SORTIES"; - valueByLanguage[1]="PRINTOUTS"; + valueByLanguage[0] = "SORTIES"; + valueByLanguage[1] = "PRINTOUTS"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="1"; - valueByLanguage[1]="1"; + valueByLanguage[0] = "1"; + valueByLanguage[1] = "1"; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[24]=entiteSimple.getImmutable(); + entites[24] = entiteSimple.getImmutable(); + // start PERIODE DE SORTIE DES POSITIONS + typeEntier = new DicoDataType.Entier(); - //start PERIODE DE SORTIE DES POSITIONS - typeEntier=new DicoDataType.Entier(); - - valueByLanguage[0]="PERIODE DE SORTIE DES POSITIONS"; - valueByLanguage[1]="POSITION PRINTOUT PERIOD"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeEntier); + valueByLanguage[0] = "PERIODE DE SORTIE DES POSITIONS"; + valueByLanguage[1] = "POSITION PRINTOUT PERIOD"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeEntier); entiteSimple.setNiveau(1); - valueByLanguage[0]="Nombre d'iterations separant deux impressions" - +"\ndans le fichier des positions"; - valueByLanguage[1]="Number of time steps between two writings in the" - +"\nposition file"; + valueByLanguage[0] = "Nombre d'iterations separant deux impressions" + "\ndans le fichier des positions"; + valueByLanguage[1] = "Number of time steps between two writings in the" + "\nposition file"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="SORTIES"; - valueByLanguage[1]="PRINTOUTS"; + valueByLanguage[0] = "SORTIES"; + valueByLanguage[1] = "PRINTOUTS"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="1"; - valueByLanguage[1]="1"; + valueByLanguage[0] = "1"; + valueByLanguage[1] = "1"; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[25]=entiteSimple.getImmutable(); + entites[25] = entiteSimple.getImmutable(); + // start POST-PROCESSEUR + typeEntier = new DicoDataType.Entier(); + typeEntier.setControle(1, 2); - //start POST-PROCESSEUR - typeEntier=new DicoDataType.Entier(); - typeEntier.setControle(1,2); - - valueByLanguage[0]="POST-PROCESSEUR"; - valueByLanguage[1]="POSTPROCESSOR"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeEntier); + valueByLanguage[0] = "POST-PROCESSEUR"; + valueByLanguage[1] = "POSTPROCESSOR"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeEntier); entiteSimple.setNiveau(1); - valueByLanguage[0]="Indice de choix relatif au post_processeur"; - valueByLanguage[1]="Choice index relative to the postprocessor"; + valueByLanguage[0] = "Indice de choix relatif au post_processeur"; + valueByLanguage[1] = "Choice index relative to the postprocessor"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="SORTIES"; - valueByLanguage[1]="PRINTOUTS"; + valueByLanguage[0] = "SORTIES"; + valueByLanguage[1] = "PRINTOUTS"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="1"; - valueByLanguage[1]="1"; + valueByLanguage[0] = "1"; + valueByLanguage[1] = "1"; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[26]=entiteSimple.getImmutable(); + entites[26] = entiteSimple.getImmutable(); + // start TYPE DE CONDITION DE PAROI + typeEntier = new DicoDataType.Entier(); + typeEntier.setControle(0, 1); - //start TYPE DE CONDITION DE PAROI - typeEntier=new DicoDataType.Entier(); - typeEntier.setControle(0,1); - - valueByLanguage[0]="TYPE DE CONDITION DE PAROI"; - valueByLanguage[1]="WALL TREATMENT"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeEntier); + valueByLanguage[0] = "TYPE DE CONDITION DE PAROI"; + valueByLanguage[1] = "WALL TREATMENT"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeEntier); entiteSimple.setNiveau(1); - valueByLanguage[0]="Indice de choix pour la modelisation des parois"; - valueByLanguage[1]="Choice index relative to wall modelling"; + valueByLanguage[0] = "Indice de choix pour la modelisation des parois"; + valueByLanguage[1] = "Choice index relative to wall modelling"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="MODELISATION DES PAROIS"; - valueByLanguage[1]="WALL MODELLING"; + valueByLanguage[0] = "MODELISATION DES PAROIS"; + valueByLanguage[1] = "WALL MODELLING"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="1"; - valueByLanguage[1]="1"; + valueByLanguage[0] = "1"; + valueByLanguage[1] = "1"; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[27]=entiteSimple.getImmutable(); + entites[27] = entiteSimple.getImmutable(); + // start TYPE DE FORCES DE PAROI + typeEntier = new DicoDataType.Entier(); + typeEntier.setControle(1, 3); - //start TYPE DE FORCES DE PAROI - typeEntier=new DicoDataType.Entier(); - typeEntier.setControle(1,3); - - valueByLanguage[0]="TYPE DE FORCES DE PAROI"; - valueByLanguage[1]="WALL FORCE TYPE"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeEntier); + valueByLanguage[0] = "TYPE DE FORCES DE PAROI"; + valueByLanguage[1] = "WALL FORCE TYPE"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeEntier); entiteSimple.setNiveau(2); - valueByLanguage[0]="Choix du modele de forces de paroi"; - valueByLanguage[1]="Choice of the wall force model"; + valueByLanguage[0] = "Choix du modele de forces de paroi"; + valueByLanguage[1] = "Choice of the wall force model"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="MODELISATION DES PAROIS"; - valueByLanguage[1]="WALL MODELLING"; + valueByLanguage[0] = "MODELISATION DES PAROIS"; + valueByLanguage[1] = "WALL MODELLING"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="1"; - valueByLanguage[1]="1"; + valueByLanguage[0] = "1"; + valueByLanguage[1] = "1"; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[28]=entiteSimple.getImmutable(); + entites[28] = entiteSimple.getImmutable(); + // start TYPE DU NOYAU + typeEntier = new DicoDataType.Entier(); + typeEntier.setControle(1, 3); - //start TYPE DU NOYAU - typeEntier=new DicoDataType.Entier(); - typeEntier.setControle(1,3); - - valueByLanguage[0]="TYPE DU NOYAU"; - valueByLanguage[1]="KERNEL TYPE"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeEntier); + valueByLanguage[0] = "TYPE DU NOYAU"; + valueByLanguage[1] = "KERNEL TYPE"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeEntier); entiteSimple.setNiveau(2); - valueByLanguage[0]="Indice de choix relatif au type de noyau utilise"; - valueByLanguage[1]="Choice index relative to considered kernel type"; + valueByLanguage[0] = "Indice de choix relatif au type de noyau utilise"; + valueByLanguage[1] = "Choice index relative to considered kernel type"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="PARAMETRES NUMERIQUES"; - valueByLanguage[1]="NUMERICAL PARAMETERS"; + valueByLanguage[0] = "PARAMETRES NUMERIQUES"; + valueByLanguage[1] = "NUMERICAL PARAMETERS"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="2"; - valueByLanguage[1]="2"; + valueByLanguage[0] = "2"; + valueByLanguage[1] = "2"; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[29]=entiteSimple.getImmutable(); + entites[29] = entiteSimple.getImmutable(); + // start ABSCISSE MAXIMALE DU DOMAINE D ETUDE + typeReel = new DicoDataType.Reel(); - //start ABSCISSE MAXIMALE DU DOMAINE D ETUDE - typeReel=new DicoDataType.Reel(); - - valueByLanguage[0]="ABSCISSE MAXIMALE DU DOMAINE D ETUDE"; - valueByLanguage[1]="MAXIMAL AXIAL CO-ORDINATE OF THE DOMAIN"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeReel); + valueByLanguage[0] = "ABSCISSE MAXIMALE DU DOMAINE D ETUDE"; + valueByLanguage[1] = "MAXIMAL AXIAL CO-ORDINATE OF THE DOMAIN"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeReel); entiteSimple.setNiveau(1); - valueByLanguage[0]="Abscisse maximale du domaine de calcul considere"; - valueByLanguage[1]="Maximal axial co-ordinate of the considered" - +"\ncomputation domain"; + valueByLanguage[0] = "Abscisse maximale du domaine de calcul considere"; + valueByLanguage[1] = "Maximal axial co-ordinate of the considered" + "\ncomputation domain"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="PARAMETRES GEOMETRIQUES"; - valueByLanguage[1]="GEOMETRY PARAMETERS"; + valueByLanguage[0] = "PARAMETRES GEOMETRIQUES"; + valueByLanguage[1] = "GEOMETRY PARAMETERS"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="10000."; - valueByLanguage[1]="10000."; + valueByLanguage[0] = "10000."; + valueByLanguage[1] = "10000."; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[30]=entiteSimple.getImmutable(); + entites[30] = entiteSimple.getImmutable(); + // start ABSCISSE MINIMALE DU DOMAINE D ETUDE + typeReel = new DicoDataType.Reel(); - //start ABSCISSE MINIMALE DU DOMAINE D ETUDE - typeReel=new DicoDataType.Reel(); - - valueByLanguage[0]="ABSCISSE MINIMALE DU DOMAINE D ETUDE"; - valueByLanguage[1]="MINIMAL AXIAL CO-ORDINATE OF THE DOMAIN"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeReel); + valueByLanguage[0] = "ABSCISSE MINIMALE DU DOMAINE D ETUDE"; + valueByLanguage[1] = "MINIMAL AXIAL CO-ORDINATE OF THE DOMAIN"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeReel); entiteSimple.setNiveau(1); - valueByLanguage[0]="Abscisse minimale du domaine de calcul considere"; - valueByLanguage[1]="Minimal axial co-ordinate of the considered" - +"\ncomputation domain"; + valueByLanguage[0] = "Abscisse minimale du domaine de calcul considere"; + valueByLanguage[1] = "Minimal axial co-ordinate of the considered" + "\ncomputation domain"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="PARAMETRES GEOMETRIQUES"; - valueByLanguage[1]="GEOMETRY PARAMETERS"; + valueByLanguage[0] = "PARAMETRES GEOMETRIQUES"; + valueByLanguage[1] = "GEOMETRY PARAMETERS"; entiteSimple.setRubrique(valueByLanguage[languageIndex_]); - valueByLanguage[0]="-10000."; - valueByLanguage[1]="-10000."; + valueByLanguage[0] = "-10000."; + valueByLanguage[1] = "-10000."; entiteSimple.setDefautValue(valueByLanguage[languageIndex_]); - entites[31]=entiteSimple.getImmutable(); + entites[31] = entiteSimple.getImmutable(); + // start COEFFICIENT DES FORCES DE PAROI + typeReel = new DicoDataType.Reel(); - //start COEFFICIENT DES FORCES DE PAROI - typeReel=new DicoDataType.Reel(); - - valueByLanguage[0]="COEFFICIENT DES FORCES DE PAROI"; - valueByLanguage[1]="WALL-FORCE COEFFICIENT"; - entiteSimple=new DicoEntite.Simple(valueByLanguage[languageIndex_],typeReel); + valueByLanguage[0] = "COEFFICIENT DES FORCES DE PAROI"; + valueByLanguage[1] = "WALL-FORCE COEFFICIENT"; + entiteSimple = new DicoEntite.Simple(valueByLanguage[languageIndex_], typeReel); entiteSimple.setNiveau(2); - valueByLanguage[0]="Coefficient relatif a la force de paroi n 1"; - valueByLanguage[1]="Coefficient relative to wall force 1"; + valueByLanguage[0] = "Coefficient relatif a la force de paroi n 1"; + valueByLanguage[1] = "Coefficient relative to wall force 1"; entiteSimple.setAide(valueByLanguage[languageIndex_]); - valueByLanguage[0]="MODELISATION DES PAROIS"; - valueByLanguage[1]="WALL MODELLING"; + valueByLanguage[0] = "MODELISATION DES PAROIS"; + valueByLanguage[1] = "WALL MODELLING"; entiteSimple.setRubrique(valueByLa... [truncated message content] |
From: <de...@us...> - 2009-01-24 22:16:10
|
Revision: 4400 http://fudaa.svn.sourceforge.net/fudaa/?rev=4400&view=rev Author: deniger Date: 2009-01-24 22:16:05 +0000 (Sat, 24 Jan 2009) Log Message: ----------- Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/FudaaCourbeWizardImportScope.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostLayoutFille.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireComputeAndDisplayActivity.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/dialogSpec/TrPostTrajectoireTaskModel.java Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/FudaaCourbeWizardImportScope.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/FudaaCourbeWizardImportScope.java 2009-01-24 21:50:40 UTC (rev 4399) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/FudaaCourbeWizardImportScope.java 2009-01-24 22:16:05 UTC (rev 4400) @@ -61,7 +61,6 @@ import com.memoire.bu.BuValueValidator; import com.memoire.bu.BuWizardDialog; import com.memoire.bu.BuWizardTask; -import com.sun.xml.internal.bind.v2.schemagen.xmlschema.List; /** * Wizard qui se charge d'importer des courbes au format scope dans le post. Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostLayoutFille.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostLayoutFille.java 2009-01-24 21:50:40 UTC (rev 4399) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostLayoutFille.java 2009-01-24 22:16:05 UTC (rev 4400) @@ -46,7 +46,6 @@ import org.fudaa.ebli.visuallibrary.calque.EbliWidgetCreatorVueCalque; import org.fudaa.ebli.visuallibrary.creator.EbliWidgetCreatorArrowEditor; import org.fudaa.ebli.visuallibrary.creator.EbliWidgetCreatorTextEditor; -import org.fudaa.ebli.visuallibrary.graphe.EbliWidgetControllerGraphe; import org.fudaa.ebli.visuallibrary.graphe.EbliWidgetCreatorGraphe; import org.fudaa.fudaa.commun.courbe.FudaaCourbeImporter; import org.fudaa.fudaa.commun.courbe.FudaaCourbeImporter.Target; Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireComputeAndDisplayActivity.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireComputeAndDisplayActivity.java 2009-01-24 21:50:40 UTC (rev 4399) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireComputeAndDisplayActivity.java 2009-01-24 22:16:05 UTC (rev 4400) @@ -1,8 +1,6 @@ package org.fudaa.fudaa.tr.post; -import java.awt.Frame; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -14,7 +12,6 @@ import org.fudaa.ctulu.CtuluVariable; import org.fudaa.ctulu.CtuluVariableDefault; import org.fudaa.ctulu.ProgressionInterface; -import org.fudaa.ctulu.gis.GISAttribute; import org.fudaa.ctulu.gis.GISAttributeInterface; import org.fudaa.ctulu.gis.GISDataModel; import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; @@ -110,17 +107,15 @@ FSigLayerGroup traj_; - - TrPostTrajectoireLineLayer calqueAecraser_=null; - + TrPostTrajectoireLineLayer calqueAecraser_ ; - public TrPostTrajectoireComputeAndDisplayActivity(final TrPostVisuPanel calque,TrPostTrajectoireLineLayer c) { - this(calque); - calqueAecraser_=c; + public TrPostTrajectoireComputeAndDisplayActivity(final TrPostVisuPanel calque, TrPostTrajectoireLineLayer c) { + this.pn_ = calque; + calqueAecraser_ = c; } - + public TrPostTrajectoireComputeAndDisplayActivity(final TrPostVisuPanel calque) { - this.pn_ = calque; + this(calque, null); } /** @@ -134,8 +129,8 @@ * @param _prog l'interface de progression, peut etre null * @return */ - public String computeLigneCourant(TrPostVisuPanel vue2d,final EfTrajectoireParameters _data, final CtuluAnalyze _analyse, - final ProgressionInterface _prog) { + public String computeLigneCourant(TrPostVisuPanel vue2d, final EfTrajectoireParameters _data, + final CtuluAnalyze _analyse, final ProgressionInterface _prog) { stop_ = false; // on recupere les lignes de courant activity_ = new EfTrajectoireActivity(pn_.getSource().getInterpolator(), new MvProfileCoteTester(), pn_.getSource() @@ -152,30 +147,30 @@ final List<GISAttributeInterface> attDansOrdreIns = fillCorrespondantAttributeVariable(_data, gr, varAtttributes); GISDataModel model = TrPostTrajectoireGisDataModel.build(computeLigneCourant, attDansOrdreIns, varAtttributes, _analyse); - if (model == null) return null; + if (model == null || _analyse.containsFatalError()) return null; final FSigLayerGroup dest = getDestGroup(_data.isTrajectoire()); final GISZoneCollectionLigneBrisee lb = new GISZoneCollectionLigneBrisee(); lb.setAttributes(attDansOrdreIns.toArray(new GISAttributeInterface[attDansOrdreIns.size()]), null); lb.addAll(model, null, false); - String titreCalque=""; - if(calqueAecraser_==null){ - CtuluDialogPanel pn = new CtuluDialogPanel(false); - pn.setLayout(new BuGridLayout(2)); - pn.addLabel(TrLib.getString("Indiquer le nom du calque \xE0 cr\xE9er")); - JTextField tf = pn.addStringText(); - tf.setColumns(10); - pn.afficheModale(CtuluLibSwing.getActiveWindow(), getCalqueName(_data.isTrajectoire()), CtuluDialog.OK_OPTION); - titreCalque=tf.getText(); - }else{ - titreCalque=calqueAecraser_.getTitle(); - //-- on detruit le calque apres rejoue de donn\xE9es --// - calqueAecraser_.setDestructible(true); - this.pn_.detruireCalque(calqueAecraser_); - + String titreCalque = ""; + if (calqueAecraser_ == null) { + CtuluDialogPanel pn = new CtuluDialogPanel(false); + pn.setLayout(new BuGridLayout(2)); + pn.addLabel(TrLib.getString("Indiquer le nom du calque \xE0 cr\xE9er")); + JTextField tf = pn.addStringText(); + tf.setColumns(10); + pn.afficheModale(CtuluLibSwing.getActiveWindow(), getCalqueName(_data.isTrajectoire()), CtuluDialog.OK_OPTION); + titreCalque = tf.getText(); + } else { + titreCalque = calqueAecraser_.getTitle(); + // -- on detruit le calque apres rejoue de donn\xE9es --// + calqueAecraser_.setDestructible(true); + this.pn_.detruireCalque(calqueAecraser_); + } - final ZCalqueLigneBrisee la = createLayer(vue2d,_data, dest, lb, titreCalque, findAttributeForVariable(varAtttributes, - MARK)); + final ZCalqueLigneBrisee la = createLayer(vue2d, _data, dest, lb, titreCalque, findAttributeForVariable( + varAtttributes, MARK)); dest.enPremier(la); return TrResource.TR.getString("Calque {0} cr\xE9\xE9", la.getTitle()); @@ -189,9 +184,9 @@ return null; } - private ZCalqueLigneBrisee createLayer(TrPostVisuPanel vue2d,final EfTrajectoireParameters _data, final FSigLayerGroup dest, - final GISZoneCollectionLigneBrisee lb, String _title, GISAttributeInterface _mark) { - final ZCalqueLigneBrisee la = new TrPostTrajectoireLineLayer(vue2d,_data, new ZModeleLigneBriseeDefault(lb), _mark); + private ZCalqueLigneBrisee createLayer(TrPostVisuPanel vue2d, final EfTrajectoireParameters _data, + final FSigLayerGroup dest, final GISZoneCollectionLigneBrisee lb, String _title, GISAttributeInterface _mark) { + final ZCalqueLigneBrisee la = new TrPostTrajectoireLineLayer(vue2d, _data, new ZModeleLigneBriseeDefault(lb), _mark); la.setName(BGroupeCalque.findUniqueChildName(dest, getCalqueId(_data.isTrajectoire()))); la.setTitle(CtuluLibString.isEmpty(_title) ? createNewCalqueName(_data.isTrajectoire()) : _title); la Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/dialogSpec/TrPostTrajectoireTaskModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/dialogSpec/TrPostTrajectoireTaskModel.java 2009-01-24 21:50:40 UTC (rev 4399) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/dialogSpec/TrPostTrajectoireTaskModel.java 2009-01-24 22:16:05 UTC (rev 4400) @@ -6,10 +6,8 @@ import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.ArrayList; -import java.util.HashSet; import java.util.Iterator; import java.util.List; -import java.util.Set; import javax.swing.BorderFactory; import javax.swing.JButton; @@ -19,7 +17,6 @@ import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; -import javax.swing.JTextField; import javax.swing.ListModel; import javax.swing.ListSelectionModel; import javax.swing.table.DefaultTableModel; @@ -45,11 +42,9 @@ import org.fudaa.fudaa.tr.common.TrResource; import org.fudaa.fudaa.tr.post.TrPostFlecheContent; import org.fudaa.fudaa.tr.post.TrPostSource; +import org.fudaa.fudaa.tr.post.TrPostTrajectoireComputeAndDisplayActivity; import org.fudaa.fudaa.tr.post.TrPostTrajectoireLineLayer; -import org.fudaa.fudaa.tr.post.TrPostTrajectoireLineLayerPersist; -import org.fudaa.fudaa.tr.post.TrPostTrajectoireLineLayerPersistence; import org.fudaa.fudaa.tr.post.TrPostVisuPanel; -import org.fudaa.fudaa.tr.post.TrPostTrajectoireComputeAndDisplayActivity; import com.memoire.bu.BuComboBox; import com.memoire.bu.BuGridLayout; @@ -61,557 +56,547 @@ public class TrPostTrajectoireTaskModel implements FudaaPanelTaskModel { - /** + /** * */ - private static final double MAXDIST = 1E-3; + private static final double MAXDIST = 1E-3; - TrPostTrajectoireComputeAndDisplayActivity algoCalcul_; + TrPostTrajectoireComputeAndDisplayActivity algoCalcul_; - /** - * booleen qui indique si le wizard a \xE9t\xE9t lanc\xE9 depuis un calque - */ + /** + * booleen qui indique si le wizard a \xE9t\xE9t lanc\xE9 depuis un calque + */ - // ArrayList<TrPostSource> source_; - TrPostVisuPanel calque_; + // ArrayList<TrPostSource> source_; + TrPostVisuPanel calque_; - // choix mode - JComboBox choixMode_ = new JComboBox(new String[] { TrLib.getString("Lignes de courant"), - TrLib.getString("Trajectoires") }); + // choix mode + JComboBox choixMode_ = new JComboBox(new String[] { TrLib.getString("Lignes de courant"), + TrLib.getString("Trajectoires") }); - JComponent duree_; + JComponent duree_; - JComponent finesse_; + JComponent finesse_; - final MvLineChooser lineChooser_; - JComboBox cbFirstTime_; - JList listVar_; - ListModel modelPdt_; + final MvLineChooser lineChooser_; + JComboBox cbFirstTime_; + JList listVar_; + ListModel modelPdt_; - // donnees graphiques - // JDialog dialog_; + // donnees graphiques + // JDialog dialog_; - DefaultTableModel modelResult_; + DefaultTableModel modelResult_; - // results - // JPanel panelResults_; - /** - * Creation du panel graphique. - * - * @return - */ - // JPanel panelSegment_; - // finesse et duree et point - // private JPanel panelSeuil_; - // variables et pdt - // private JPanel panelVariables_; - TrPostSource source_; - CtuluValueEditorDouble doubleEditor_ = new CtuluValueEditorDouble(false); - CtuluValueEditorDouble doubleMarkEditor_ = new CtuluValueEditorDouble(false); - CtuluValueEditorInteger integerEditor_ = new CtuluValueEditorInteger(false); - JComboBox cbVitesse_; - JComponent nbPoints_; + // results + // JPanel panelResults_; + /** + * Creation du panel graphique. + * + * @return + */ + // JPanel panelSegment_; + // finesse et duree et point + // private JPanel panelSeuil_; + // variables et pdt + // private JPanel panelVariables_; + TrPostSource source_; + CtuluValueEditorDouble doubleEditor_ = new CtuluValueEditorDouble(false); + CtuluValueEditorDouble doubleMarkEditor_ = new CtuluValueEditorDouble(false); + CtuluValueEditorInteger integerEditor_ = new CtuluValueEditorInteger(false); + JComboBox cbVitesse_; + JComponent nbPoints_; - // choix segment - JComponent x_; - JComponent x2_; - JComponent y_; - JComponent y2_; - CtuluValueTimeEditor dureeEditor_; + // choix segment + JComponent x_; + JComponent x2_; + JComponent y_; + JComponent y2_; + CtuluValueTimeEditor dureeEditor_; - /** - * Constructeur reserv\xE9 au calques - * - * @param _builderParams - * @param _calque - * @param _modelGraphe - * @param _panelVariables - * @param _source - */ - public TrPostTrajectoireTaskModel(final TrPostVisuPanel calque) { - calque_ = calque; - source_ = calque.getSource(); - int nbTimeStep = source_.getNbTimeStep(); - if (nbTimeStep < 2) choixMode_.setEnabled(false); - doubleEditor_.setFormatter(CtuluNumberFormatDefault.buildNoneFormatter(3, true)); - x_ = doubleEditor_.createEditorComponent(); - x2_ = doubleEditor_.createEditorComponent(); - y_ = doubleEditor_.createEditorComponent(); - y2_ = doubleEditor_.createEditorComponent(); + /** + * Constructeur reserv\xE9 au calques + * + * @param _builderParams + * @param _calque + * @param _modelGraphe + * @param _panelVariables + * @param _source + */ + public TrPostTrajectoireTaskModel(final TrPostVisuPanel calque) { + calque_ = calque; + source_ = calque.getSource(); + int nbTimeStep = source_.getNbTimeStep(); + if (nbTimeStep < 2) choixMode_.setEnabled(false); + doubleEditor_.setFormatter(CtuluNumberFormatDefault.buildNoneFormatter(3, true)); + x_ = doubleEditor_.createEditorComponent(); + x2_ = doubleEditor_.createEditorComponent(); + y_ = doubleEditor_.createEditorComponent(); + y2_ = doubleEditor_.createEditorComponent(); - dureeEditor_ = new CtuluValueTimeEditor(); - dureeEditor_.setFmt(source_.getTimeFormatter()); - duree_ = dureeEditor_.createEditorComponent(); - double defaut = 60; - if (nbTimeStep > 2) { - defaut = (source_.getTimeStep(nbTimeStep - 1) - source_.getTimeStep(0)) / 2; - } - dureeEditor_.setValue(defaut, duree_); - integerEditor_.setVal(BuValueValidator.MIN(1)); - integerEditor_.setEditable(true); - nbPoints_ = integerEditor_.createEditorComponent(); - finesse_ = integerEditor_.createEditorComponent(); - integerEditor_.setValue(Integer.valueOf(1), nbPoints_); - integerEditor_.setValue(Integer.valueOf(1), finesse_); - lineChooser_ = new MvLineChooser(calque.getSelectedLine(), calque); - // modelVariables_ = source_.getNewVarListModel();//doit contenir les vecteurs - modelPdt_ = source_.getNewTimeListModel(); + dureeEditor_ = new CtuluValueTimeEditor(); + dureeEditor_.setFmt(source_.getTimeFormatter()); + duree_ = dureeEditor_.createEditorComponent(); + double defaut = 60; + if (nbTimeStep > 2) { + defaut = (source_.getTimeStep(nbTimeStep - 1) - source_.getTimeStep(0)) / 2; + } + dureeEditor_.setValue(defaut, duree_); + integerEditor_.setVal(BuValueValidator.MIN(1)); + integerEditor_.setEditable(true); + nbPoints_ = integerEditor_.createEditorComponent(); + finesse_ = integerEditor_.createEditorComponent(); + integerEditor_.setValue(Integer.valueOf(1), nbPoints_); + integerEditor_.setValue(Integer.valueOf(1), finesse_); + lineChooser_ = new MvLineChooser(calque.getSelectedLine(), calque); + // modelVariables_ = source_.getNewVarListModel();//doit contenir les vecteurs + modelPdt_ = source_.getNewTimeListModel(); - // -- construction de la dialog --// - } + // -- construction de la dialog --// + } + /** + * reference du layer a ecraser dans le cas ou l'on rejoue les donn\xE9es. Null si utilisation classique. + */ + TrPostTrajectoireLineLayer layerAEcraser_ = null; - /** - * reference du layer a ecraser dans le cas ou l'on rejoue les donn\xE9es. - * Null si utilisation classique. - */ - TrPostTrajectoireLineLayer layerAEcraser_=null; - /** - * Constructeur appel\xE9 pour rejouer les donn\xE9es. - * Passe en parametre la structure efTrajectoire qui contient toutes les infos de pr\xE9 remplissage - * @param calque - * @param dataReplay qui contient toutes les infos de pr\xE9 remplissage - * @param calqueAEcraser calque a ecraser en recopiant le r\xE9sultat par dessus - */ - public TrPostTrajectoireTaskModel(final TrPostVisuPanel calque,EfTrajectoireParameters dataReplay,TrPostTrajectoireLineLayer calqueAEcraser){ - this(calque); + /** + * Constructeur appel\xE9 pour rejouer les donn\xE9es. Passe en parametre la structure efTrajectoire qui contient toutes les + * infos de pr\xE9 remplissage + * + * @param calque + * @param dataReplay qui contient toutes les infos de pr\xE9 remplissage + * @param calqueAEcraser calque a ecraser en recopiant le r\xE9sultat par dessus + */ + public TrPostTrajectoireTaskModel(final TrPostVisuPanel calque, EfTrajectoireParameters dataReplay, + TrPostTrajectoireLineLayer calqueAEcraser) { + this(calque); - //-- on pr\xE9remplit les donn\xE9es avec les infos du dataReplay --// - layerAEcraser_=calqueAEcraser; + // -- on pr\xE9remplit les donn\xE9es avec les infos du dataReplay --// + layerAEcraser_ = calqueAEcraser; - //-- on reinitialise les infos avec les donn\xE9es des trajectoires/lignes de courant. --// - //-- on initialise les params graphiques --// - getPanel(); - - //-- selection du vecteur vitesse --// - for(int k=0;k<cbVitesse_.getItemCount();k++) - if( ((TrPostFlecheContent) cbVitesse_.getItemAt(k)).getVx()== dataReplay.vx) - if( ((TrPostFlecheContent) cbVitesse_.getSelectedItem()).getVy()== dataReplay.vy) - cbVitesse_.setSelectedIndex(k); + // -- on reinitialise les infos avec les donn\xE9es des trajectoires/lignes de courant. --// + // -- on initialise les params graphiques --// + getPanel(); - //-- duree itegration --// - dureeEditor_.setValue( dataReplay.dureeIntegration_, duree_); + // -- selection du vecteur vitesse --// + for (int k = 0; k < cbVitesse_.getItemCount(); k++) + if (((TrPostFlecheContent) cbVitesse_.getItemAt(k)).getVx() == dataReplay.vx) if (((TrPostFlecheContent) cbVitesse_ + .getSelectedItem()).getVy() == dataReplay.vy) cbVitesse_.setSelectedIndex(k); - //-- finesse --// - integerEditor_.setValue( dataReplay.finesse_, finesse_); + // -- duree itegration --// + dureeEditor_.setValue(dataReplay.dureeIntegration_, duree_); - //-- pas de temps initial --// - cbFirstTime_.setSelectedIndex(dataReplay.firstTimeStepIdx_); + // -- finesse --// + integerEditor_.setValue(dataReplay.finesse_, finesse_); - //-- type traj ou ligne de courant --// - if(dataReplay.isLigneDeCourant) - choixMode_.setSelectedIndex(0); - else - choixMode_.setSelectedIndex(1); - - //-- choix des variables --// - if (dataReplay.varsASuivre_.size()>1) { + // -- pas de temps initial --// + cbFirstTime_.setSelectedIndex(dataReplay.firstTimeStepIdx_); - int[] indicesToselect=new int[dataReplay.varsASuivre_.size()]; - for(int i=0;i<dataReplay.varsASuivre_.size();i++){ - - for(int k=0;k<listVar_.getModel().getSize();k++){ - if(((CtuluVariable)listVar_.getModel().getElementAt(k))==dataReplay.varsASuivre_.get(i)) - indicesToselect[i]=k; - } - } - listVar_.setSelectedIndices(indicesToselect); - } - - //-- premier point --// - doubleEditor_.setValue(dataReplay.points_.get(0).x, x_); - doubleEditor_.setValue(dataReplay.points_.get(0).y, y_); + // -- type traj ou ligne de courant --// + if (dataReplay.isLigneDeCourant) choixMode_.setSelectedIndex(0); + else choixMode_.setSelectedIndex(1); - //-- dernier point --// - doubleEditor_.setValue(dataReplay.points_.get(dataReplay.points_.size()-1).x, x2_); - doubleEditor_.setValue(dataReplay.points_.get(dataReplay.points_.size()-1).y, y2_); - - //-- marqueurs --// - if(dataReplay.marqueur_ !=null){ - if(dataReplay.marqueur_.timeStep_) - cbMarks_.setSelectedIndex(1); - else - cbMarks_.setSelectedIndex(2); - - doubleMarkEditor_.setValue(dataReplay.marqueur_.deltaMax_, markValue_); - }else - cbMarks_.setSelectedIndex(0); - - } + // -- choix des variables --// + if (dataReplay.varsASuivre_.size() > 1) { - private List<Coordinate> getPoints() { - Coordinate c = getFirsCoordinate(); - Coordinate cEnd = getEndCoordinate(); - int nbLigne = (Integer) integerEditor_.getValue(nbPoints_); - List<Coordinate> res = new ArrayList<Coordinate>(nbLigne); - if (c.distance(cEnd) < MAXDIST) { - res.add(c); - return res; - } - if (nbLigne == 1) { - c.x = (c.x + cEnd.x) / 2D; - c.y = (c.y + cEnd.y) / 2D; - res.add(c); - return res; - } - int nbIteration = nbLigne - 1; - double deltaX = (cEnd.x - c.x) / nbIteration; - double deltaY = (cEnd.y - c.y) / nbIteration; - res.add(c); - for (int i = 1; i < nbIteration; i++) { - Coordinate ci = new Coordinate(c.x + i * deltaX, c.y + i * deltaY); - res.add(ci); - } - res.add(cEnd); - return res; + int[] indicesToselect = new int[dataReplay.varsASuivre_.size()]; + for (int i = 0; i < dataReplay.varsASuivre_.size(); i++) { - } + for (int k = 0; k < listVar_.getModel().getSize(); k++) { + if (((CtuluVariable) listVar_.getModel().getElementAt(k)) == dataReplay.varsASuivre_.get(i)) indicesToselect[i] = k; + } + } + listVar_.setSelectedIndices(indicesToselect); + } - private Coordinate getEndCoordinate() { - return new Coordinate(getDoubleValue(x2_), getDoubleValue(y2_)); - } + // -- premier point --// + doubleEditor_.setValue(dataReplay.points_.get(0).x, x_); + doubleEditor_.setValue(dataReplay.points_.get(0).y, y_); - private Coordinate getFirsCoordinate() { - return new Coordinate(getDoubleValue(x_), getDoubleValue(y_)); - } + // -- dernier point --// + doubleEditor_.setValue(dataReplay.points_.get(dataReplay.points_.size() - 1).x, x2_); + doubleEditor_.setValue(dataReplay.points_.get(dataReplay.points_.size() - 1).y, y2_); - public void actTask(final ProgressionInterface _prog, final CtuluAnalyze _analyze, final String[] _messages) { - // on recupere les points - List<Coordinate> points = getPoints(); - int idxRemove = 0; - // on enleve les points en dehors - for (Iterator<Coordinate> it = points.iterator(); it.hasNext();) { - Coordinate c = it.next(); - int idx = EfIndexHelper.getElementEnglobant(source_.getGrid(), c.x, c.y, _prog); - if (idx < 0) { - idxRemove++; - it.remove(); - } - } - // si pas de point pas de calcul - if (points.size() == 0) { - _analyze.addFatalError(TrResource.getS("Aucun point de d\xE9part n'appartient au maillage")); - return; - } - if (idxRemove > 0) { - String txt = null; - if (idxRemove == 1) { - txt = TrResource.getS("1 point de d\xE9part a \xE9t\xE9 ignor\xE9 car il en dehors du maillage"); - } else { - txt = TrResource.getS("{0} points de d\xE9part ont \xE9t\xE9 ignor\xE9s car ils en dehors du maillage", CtuluLibString - .getString(idxRemove)); - } - _messages[0] = txt; - } + // -- marqueurs --// + if (dataReplay.marqueur_ != null) { + if (dataReplay.marqueur_.timeStep_) cbMarks_.setSelectedIndex(1); + else cbMarks_.setSelectedIndex(2); + doubleMarkEditor_.setValue(dataReplay.marqueur_.deltaMax_, markValue_); + } else cbMarks_.setSelectedIndex(0); - //-- creation de la donn\xE9e persistante qui a permi de creer les infos --// - // TrPostTrajectoireLineLayerPersist persist=new TrPostTrajectoireLineLayerPersist(); - // persist.setPoint1(getFirsCoordinate()); - // persist.setPoint2(getEndCoordinate()); - // persist.setTrajectoire(isTrajectoire()); - // persist.setFinesse((Integer) integerEditor_.getValue(finesse_)); - // persist.setDureeCalcul(getDuree()); - // persist.setNbCesures((Integer)integerEditor_.getValue(nbPoints_)); - Object[] selectedValues = listVar_.getSelectedValues(); - // HashSet<String> listeVar= new HashSet<String>(); - // for(int i=0;i<selectedValues.length;i++) - // listeVar.add(((CtuluVariable)selectedValues[i]).getID()); - // persist.setListeVariablesId(listeVar); - // if(isMarqueurTimeStep()) - // persist.setTypeMarqueur(1); - // else if(isMarqueurAvailable()) - // persist.setTypeMarqueur(2); - // else - // persist.setTypeMarqueur(0); - // - // creation de l algo - if(layerAEcraser_!=null) - algoCalcul_ = new TrPostTrajectoireComputeAndDisplayActivity(calque_,layerAEcraser_); - else - algoCalcul_ = new TrPostTrajectoireComputeAndDisplayActivity(calque_); + } - final TrPostFlecheContent flecheContent = getSelectedVariable(); - final EfTrajectoireParameters data = new EfTrajectoireParameters(); - data.vx = flecheContent.getVx(); - data.vy = flecheContent.getVy(); - data.dureeIntegration_ = getDuree(); - data.finesse_ = (Integer) integerEditor_.getValue(finesse_); - data.firstTimeStepIdx_ = getSelectedTimeStep(); - data.firstTimeStep_ = source_.getTimeStep(data.firstTimeStepIdx_); - data.isLigneDeCourant = isLigneCourant(); - if (!listVar_.isSelectionEmpty()) { + private List<Coordinate> getPoints() { + Coordinate c = getFirsCoordinate(); + Coordinate cEnd = getEndCoordinate(); + int nbLigne = (Integer) integerEditor_.getValue(nbPoints_); + List<Coordinate> res = new ArrayList<Coordinate>(nbLigne); + if (c.distance(cEnd) < MAXDIST) { + res.add(c); + return res; + } + if (nbLigne == 1) { + c.x = (c.x + cEnd.x) / 2D; + c.y = (c.y + cEnd.y) / 2D; + res.add(c); + return res; + } + int nbIteration = nbLigne - 1; + double deltaX = (cEnd.x - c.x) / nbIteration; + double deltaY = (cEnd.y - c.y) / nbIteration; + res.add(c); + for (int i = 1; i < nbIteration; i++) { + Coordinate ci = new Coordinate(c.x + i * deltaX, c.y + i * deltaY); + res.add(ci); + } + res.add(cEnd); + return res; - data.varsASuivre_ = new ArrayList<CtuluVariable>(selectedValues.length); - for (int i = 0; i < selectedValues.length; i++) { - data.varsASuivre_.add((CtuluVariable) selectedValues[i]); - } - } + } - data.points_ = points; - if (isMarqueurAvailable()) { - data.marqueur_ = new EfTrajectoireParametersMarqueur(); - data.marqueur_.timeStep_ = isMarqueurTimeStep(); - data.marqueur_.deltaMax_ = (Double) doubleMarkEditor_.getValue(markValue_); + private Coordinate getEndCoordinate() { + return new Coordinate(getDoubleValue(x2_), getDoubleValue(y2_)); + } - } - _messages[0] = algoCalcul_.computeLigneCourant(calque_,data, _analyze, _prog); + private Coordinate getFirsCoordinate() { + return new Coordinate(getDoubleValue(x_), getDoubleValue(y_)); + } - // -- mise a jour du tableau de res --// - // modelResult_.fireTableDataChanged(); + public void actTask(final ProgressionInterface _prog, final CtuluAnalyze _analyze, final String[] _messages) { + // on recupere les points + List<Coordinate> points = getPoints(); + int idxRemove = 0; + // on enleve les points en dehors + for (Iterator<Coordinate> it = points.iterator(); it.hasNext();) { + Coordinate c = it.next(); + int idx = EfIndexHelper.getElementEnglobant(source_.getGrid(), c.x, c.y, _prog); + if (idx < 0) { + idxRemove++; + it.remove(); + } + } + // si pas de point pas de calcul + if (points.size() == 0) { + _analyze.addFatalError(TrResource.getS("Aucun point de d\xE9part n'appartient au maillage")); + return; + } + if (idxRemove > 0) { + String txt = null; + if (idxRemove == 1) { + txt = TrResource.getS("1 point de d\xE9part a \xE9t\xE9 ignor\xE9 car il en dehors du maillage"); + } else { + txt = TrResource.getS("{0} points de d\xE9part ont \xE9t\xE9 ignor\xE9s car ils en dehors du maillage", CtuluLibString + .getString(idxRemove)); + } + _messages[0] = txt; + } - } + // -- creation de la donn\xE9e persistante qui a permi de creer les infos --// + // TrPostTrajectoireLineLayerPersist persist=new TrPostTrajectoireLineLayerPersist(); + // persist.setPoint1(getFirsCoordinate()); + // persist.setPoint2(getEndCoordinate()); + // persist.setTrajectoire(isTrajectoire()); + // persist.setFinesse((Integer) integerEditor_.getValue(finesse_)); + // persist.setDureeCalcul(getDuree()); + // persist.setNbCesures((Integer)integerEditor_.getValue(nbPoints_)); + Object[] selectedValues = listVar_.getSelectedValues(); + // HashSet<String> listeVar= new HashSet<String>(); + // for(int i=0;i<selectedValues.length;i++) + // listeVar.add(((CtuluVariable)selectedValues[i]).getID()); + // persist.setListeVariablesId(listeVar); + // if(isMarqueurTimeStep()) + // persist.setTypeMarqueur(1); + // else if(isMarqueurAvailable()) + // persist.setTypeMarqueur(2); + // else + // persist.setTypeMarqueur(0); + // + // creation de l algo + algoCalcul_ = new TrPostTrajectoireComputeAndDisplayActivity(calque_, layerAEcraser_); - JPanel content_; - JComponent markValue_; - JComboBox cbMarks_ = new JComboBox(new String[] { TrLib.getString("Aucun"), - TrLib.getString("A pas de temps constant"), TrLib.getString("A distance constante") }); + final TrPostFlecheContent flecheContent = getSelectedVariable(); + final EfTrajectoireParameters data = new EfTrajectoireParameters(); + data.vx = flecheContent.getVx(); + data.vy = flecheContent.getVy(); + data.dureeIntegration_ = getDuree(); + data.finesse_ = (Integer) integerEditor_.getValue(finesse_); + data.firstTimeStepIdx_ = getSelectedTimeStep(); + data.firstTimeStep_ = source_.getTimeStep(data.firstTimeStepIdx_); + data.isLigneDeCourant = isLigneCourant(); + if (!listVar_.isSelectionEmpty()) { - public boolean isMarqueurAvailable() { - return cbMarks_.getSelectedIndex() != 0; - } + data.varsASuivre_ = new ArrayList<CtuluVariable>(selectedValues.length); + for (int i = 0; i < selectedValues.length; i++) { + data.varsASuivre_.add((CtuluVariable) selectedValues[i]); + } + } - public boolean isMarqueurTimeStep() { - return cbMarks_.getSelectedIndex() == 1; - } + data.points_ = points; + if (isMarqueurAvailable()) { + data.marqueur_ = new EfTrajectoireParametersMarqueur(); + data.marqueur_.timeStep_ = isMarqueurTimeStep(); + data.marqueur_.deltaMax_ = (Double) doubleMarkEditor_.getValue(markValue_); - private JPanel buildMarqueur() { - doubleMarkEditor_.setVal(BuValueValidator.MIN(1E-4)); - final JPanel conteneur = new JPanel(new BuGridLayout(2, 3, 3)); - conteneur.setBorder(BorderFactory.createTitledBorder(TrResource.getS("Marqueurs"))); - conteneur.add(new JLabel(TrLib.getString("Type"))); - conteneur.add(cbMarks_); - conteneur.add(new JLabel(TrLib.getString("Delta (valeur absolue)"))); - markValue_ = doubleMarkEditor_.createEditorComponent(); - conteneur.add(markValue_); - markValue_.setEnabled(false); - cbMarks_.addItemListener(new ItemListener() { + } + _messages[0] = algoCalcul_.computeLigneCourant(calque_, data, _analyze, _prog); - public void itemStateChanged(ItemEvent _e) { - markValue_.setEnabled(isMarqueurAvailable()); + // -- mise a jour du tableau de res --// + // modelResult_.fireTableDataChanged(); - } - }); + } - return conteneur; - } + JPanel content_; + JComponent markValue_; + JComboBox cbMarks_ = new JComboBox(new String[] { TrLib.getString("Aucun"), + TrLib.getString("A pas de temps constant"), TrLib.getString("A distance constante") }); - public boolean isSegmentValid() { - final boolean segValid = !doubleEditor_.isEmpty(x_) && !doubleEditor_.isEmpty(x2_) && !doubleEditor_.isEmpty(y2_) - && !doubleEditor_.isEmpty(y_); - return segValid && integerEditor_.getValue(nbPoints_) != null; - } + public boolean isMarqueurAvailable() { + return cbMarks_.getSelectedIndex() != 0; + } - public double getDoubleValue(final JComponent c) { - return ((Double) doubleEditor_.getValue(c)).doubleValue(); - } + public boolean isMarqueurTimeStep() { + return cbMarks_.getSelectedIndex() == 1; + } - protected void updateView(final boolean _zoom) { - if (isSegmentValid()) { - lineChooser_.update(GISGeometryFactory.INSTANCE.createSegment(getDoubleValue(x_), getDoubleValue(y_), - getDoubleValue(x2_), getDoubleValue(y2_)), _zoom); - } - } + private JPanel buildMarqueur() { + doubleMarkEditor_.setVal(BuValueValidator.MIN(1E-4)); + final JPanel conteneur = new JPanel(new BuGridLayout(2, 3, 3)); + conteneur.setBorder(BorderFactory.createTitledBorder(TrResource.getS("Marqueurs"))); + conteneur.add(new JLabel(TrLib.getString("Type"))); + conteneur.add(cbMarks_); + conteneur.add(new JLabel(TrLib.getString("Delta (valeur absolue)"))); + markValue_ = doubleMarkEditor_.createEditorComponent(); + conteneur.add(markValue_); + markValue_.setEnabled(false); + cbMarks_.addItemListener(new ItemListener() { - private JPanel buildSegments() { + public void itemStateChanged(ItemEvent _e) { + markValue_.setEnabled(isMarqueurAvailable()); - final JPanel conteneur = new JPanel(new BuGridLayout(3, 5, 5, false, false, false, false, false)); - conteneur.setBorder(BorderFactory.createTitledBorder(TrResource.getS("Choix du segment"))); - conteneur.add(new JLabel("")); - conteneur.add(new JLabel("x:")); - conteneur.add(new JLabel("y:")); - conteneur.add(new JLabel("Point 1:")); - conteneur.add(x_); - conteneur.add(y_); - conteneur.add(new JLabel("Point 2:")); - conteneur.add(x2_); - conteneur.add(y2_); - conteneur.add(new JLabel("Nombre de trajectoire/lignes de courant:")); - conteneur.add(nbPoints_); - final LineString initSelected = lineChooser_.getInitSelected(); - if (initSelected != null) { - final int nbCoordinate = initSelected.getNumPoints(); - doubleEditor_.setValue(initSelected.getCoordinateSequence().getX(0), x_); - doubleEditor_.setValue(initSelected.getCoordinateSequence().getY(0), y_); - doubleEditor_.setValue(initSelected.getCoordinateSequence().getX(nbCoordinate - 1), x2_); - doubleEditor_.setValue(initSelected.getCoordinateSequence().getY(nbCoordinate - 1), y2_); - updateView(false); - } - JPanel mainSegment = new JPanel(new BuVerticalLayout(5, false, true)); - mainSegment.add(conteneur); - JPanel pn = new JPanel(new BuGridLayout(3, 2, 0)); - JButton bt = new JButton(TrLib.getString("zoomer sur le segment")); - bt.addActionListener(new ActionListener() { - public void actionPerformed(final ActionEvent _e) { - updateView(true); + } + }); - } - }); - pn.add(bt); - bt = new JButton(TrLib.getString("Zoom initial")); - bt.addActionListener(new ActionListener() { - public void actionPerformed(final ActionEvent _e) { - lineChooser_.zoomInitial(); + return conteneur; + } - } - }); - pn.add(bt); - bt = new JButton(EbliLib.getS("Restaurer")); - bt.addActionListener(new ActionListener() { - public void actionPerformed(final ActionEvent _e) { - lineChooser_.restaurer(); + public boolean isSegmentValid() { + final boolean segValid = !doubleEditor_.isEmpty(x_) && !doubleEditor_.isEmpty(x2_) && !doubleEditor_.isEmpty(y2_) + && !doubleEditor_.isEmpty(y_); + return segValid && integerEditor_.getValue(nbPoints_) != null; + } - } - }); - pn.add(bt); - mainSegment.add(pn); - return mainSegment; - } + public double getDoubleValue(final JComponent c) { + return ((Double) doubleEditor_.getValue(c)).doubleValue(); + } - private JPanel buildVariables() { - final JPanel conteneur = new JPanel(new BorderLayout()); - listVar_ = new JList(source_.getNewVarListModel()); - listVar_.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); - conteneur.add(new JScrollPane(listVar_)); - conteneur.setBorder(BorderFactory.createTitledBorder(TrResource.getS("Choix des variables"))); - return conteneur; - } + protected void updateView(final boolean _zoom) { + if (isSegmentValid()) { + lineChooser_.update(GISGeometryFactory.INSTANCE.createSegment(getDoubleValue(x_), getDoubleValue(y_), + getDoubleValue(x2_), getDoubleValue(y2_)), _zoom); + } + } - public void decoreBtApply(final JButton _bt) { - _bt.setText(TrLib.getString("Calculer")); - } + private JPanel buildSegments() { - public int getNbMessageMax() { - return 1; - } + final JPanel conteneur = new JPanel(new BuGridLayout(3, 5, 5, false, false, false, false, false)); + conteneur.setBorder(BorderFactory.createTitledBorder(TrResource.getS("Choix du segment"))); + conteneur.add(new JLabel("")); + conteneur.add(new JLabel("x:")); + conteneur.add(new JLabel("y:")); + conteneur.add(new JLabel("Point 1:")); + conteneur.add(x_); + conteneur.add(y_); + conteneur.add(new JLabel("Point 2:")); + conteneur.add(x2_); + conteneur.add(y2_); + conteneur.add(new JLabel("Nombre de trajectoire/lignes de courant:")); + conteneur.add(nbPoints_); + final LineString initSelected = lineChooser_.getInitSelected(); + if (initSelected != null) { + final int nbCoordinate = initSelected.getNumPoints(); + doubleEditor_.setValue(initSelected.getCoordinateSequence().getX(0), x_); + doubleEditor_.setValue(initSelected.getCoordinateSequence().getY(0), y_); + doubleEditor_.setValue(initSelected.getCoordinateSequence().getX(nbCoordinate - 1), x2_); + doubleEditor_.setValue(initSelected.getCoordinateSequence().getY(nbCoordinate - 1), y2_); + updateView(false); + } + JPanel mainSegment = new JPanel(new BuVerticalLayout(5, false, true)); + mainSegment.add(conteneur); + JPanel pn = new JPanel(new BuGridLayout(3, 2, 0)); + JButton bt = new JButton(TrLib.getString("zoomer sur le segment")); + bt.addActionListener(new ActionListener() { + public void actionPerformed(final ActionEvent _e) { + updateView(true); - public JComponent getPanel() { - if (content_ != null) return content_; - content_ = new BuPanel(new BuVerticalLayout(5)); - content_.add(buildMainProperties()); + } + }); + pn.add(bt); + bt = new JButton(TrLib.getString("Zoom initial")); + bt.addActionListener(new ActionListener() { + public void actionPerformed(final ActionEvent _e) { + lineChooser_.zoomInitial(); - // -- panel des segements --// - content_.add(buildSegments()); - // -- panel des variables --// - content_.add(buildVariables()); - content_.add(buildMarqueur()); - return content_; - } + } + }); + pn.add(bt); + bt = new JButton(EbliLib.getS("Restaurer")); + bt.addActionListener(new ActionListener() { + public void actionPerformed(final ActionEvent _e) { + lineChooser_.restaurer(); - private JPanel buildMainProperties() { - JPanel pn = new JPanel(new BuGridLayout(2, 5, 5)); - pn.add(new JLabel(TrResource.getS("Mode"))); - pn.add(choixMode_); - pn.add(new JLabel(TrResource.getS("Vecteur"))); - ListModel flecheListModel = source_.getNewFlecheListModel(); - CtuluComboBoxModelAdapter cb = new CtuluComboBoxModelAdapter(flecheListModel); - cbVitesse_ = new BuComboBox(cb); - cb.setSelectedItem(flecheListModel.getElementAt(0)); - // on s\xE9lectionne la vitesse par defaut - if (flecheListModel.getSize() > 1) { - for (int i = flecheListModel.getSize() - 1; i >= 0; i--) { - TrPostFlecheContent flecheContent = (TrPostFlecheContent) flecheListModel.getElementAt(i); - if (flecheContent.getVar() == H2dVariableType.VITESSE) { - cb.setSelectedItem(flecheListModel.getElementAt(i)); - break; - } - } - } - pn.add(cbVitesse_); - pn.add(new JLabel(TrResource.getS("Pas de temps intial"))); - cbFirstTime_ = new BuComboBox(new CtuluComboBoxModelAdapter(source_.getNewTimeListModel())); - cbFirstTime_.setSelectedIndex(0); - pn.add(cbFirstTime_); - pn.add(new JLabel(TrResource.getS("Dur\xE9e d'int\xE9gration:"))); - pn.add(duree_); - pn.add(new JLabel(TrResource.getS("Finesse:"))); - pn.add(finesse_); - return pn; - } + } + }); + pn.add(bt); + mainSegment.add(pn); + return mainSegment; + } - /** - * retourne l indice du pas de temps. - * - * @return - */ - protected int getSelectedTimeStep() { - return cbFirstTime_.getSelectedIndex(); - } + private JPanel buildVariables() { + final JPanel conteneur = new JPanel(new BorderLayout()); + listVar_ = new JList(source_.getNewVarListModel()); + listVar_.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); + conteneur.add(new JScrollPane(listVar_)); + conteneur.setBorder(BorderFactory.createTitledBorder(TrResource.getS("Choix des variables"))); + return conteneur; + } - /** - * retourne la variable selectionnee - * - * @return - */ - protected TrPostFlecheContent getSelectedVariable() { + public void decoreBtApply(final JButton _bt) { + _bt.setText(TrLib.getString("Calculer")); + } - return (TrPostFlecheContent) cbVitesse_.getSelectedItem(); - } + public int getNbMessageMax() { + return 1; + } - public String getTitre() { - return TrResource.getS("Lignes de courants") + "/" + TrResource.getS("Trajectoires"); - } + public JComponent getPanel() { + if (content_ != null) return content_; + content_ = new BuPanel(new BuVerticalLayout(5)); + content_.add(buildMainProperties()); - protected boolean isLigneCourant() { - return choixMode_.getSelectedIndex() == 0; - } + // -- panel des segements --// + content_.add(buildSegments()); + // -- panel des variables --// + content_.add(buildVariables()); + content_.add(buildMarqueur()); + return content_; + } - protected boolean isTrajectoire() { - return choixMode_.getSelectedIndex() == 1; - } + private JPanel buildMainProperties() { + JPanel pn = new JPanel(new BuGridLayout(2, 5, 5)); + pn.add(new JLabel(TrResource.getS("Mode"))); + pn.add(choixMode_); + pn.add(new JLabel(TrResource.getS("Vecteur"))); + ListModel flecheListModel = source_.getNewFlecheListModel(); + CtuluComboBoxModelAdapter cb = new CtuluComboBoxModelAdapter(flecheListModel); + cbVitesse_ = new BuComboBox(cb); + cb.setSelectedItem(flecheListModel.getElementAt(0)); + // on s\xE9lectionne la vitesse par defaut + if (flecheListModel.getSize() > 1) { + for (int i = flecheListModel.getSize() - 1; i >= 0; i--) { + TrPostFlecheContent flecheContent = (TrPostFlecheContent) flecheListModel.getElementAt(i); + if (flecheContent.getVar() == H2dVariableType.VITESSE) { + cb.setSelectedItem(flecheListModel.getElementAt(i)); + break; + } + } + } + pn.add(cbVitesse_); + pn.add(new JLabel(TrResource.getS("Pas de temps intial"))); + cbFirstTime_ = new BuComboBox(new CtuluComboBoxModelAdapter(source_.getNewTimeListModel())); + cbFirstTime_.setSelectedIndex(0); + pn.add(cbFirstTime_); + pn.add(new JLabel(TrResource.getS("Dur\xE9e d'int\xE9gration:"))); + pn.add(duree_); + pn.add(new JLabel(TrResource.getS("Finesse:"))); + pn.add(finesse_); + return pn; + } - public String isValid() { - // pas necessaire - // if (listVar_.getSelectedIndex() == -1) { return TrResource.getS("Il faut choisir une variable"); } - // if (cbFirstTime_.getSelectedIndex() == -1) { return TrResource.getS("Il faut choisir un pas de temps"); } - if (!this.integerEditor_.isValueValidFromComponent(finesse_)) { return TrResource - .getS("La finesse doit \xEAtre d\xE9fini par un entier sup\xE9rieur \xE0 1"); } - if (!isSegmentValid()) { return TrResource.getS("Le segment n'est pas d\xE9fini"); } - if (integerEditor_.getValue(nbPoints_) == null) { return TrResource.getS("Pr\xE9ciser le nombre de trajectoires"); } - if (dureeEditor_.isEmpty(duree_)) { return TrResource.getS("La dur\xE9e doit \xEAtre d\xE9finie par un r\xE9el en secondes"); } - if (isMarqueurAvailable() && !doubleMarkEditor_.isValueValidFromComponent(markValue_)) { return TrResource - .getS("Le delta du marqueur doit \xEAtre renseign\xE9"); } - // on doit verifier que la duree est bien comprise dans les pas de temps du projet - if (isTrajectoire()) { - final int duree = getDuree(); - final double timeSelected = source_.getTimeStep(cbFirstTime_.getSelectedIndex()); - final double timeEnd = timeSelected + duree; - final double lastTimeStep = source_.getTimeStep(source_.getNbTimeStep() - 1); - if (timeEnd < source_.getTimeStep(0) || timeEnd > lastTimeStep) { - final String min = "-".concat(source_.getTimeFormatter().format(timeSelected - source_.getTimeStep(0))); - final String max = source_.getTimeFormatter().format(lastTimeStep - timeSelected); - return TrResource.getS("la dur\xE9e du calcul doit \xEAtre comprise entre {0} et {1}", min, max); - } + /** + * retourne l indice du pas de temps. + * + * @return + */ + protected int getSelectedTimeStep() { + return cbFirstTime_.getSelectedIndex(); + } - } - if (getFirsCoordinate().distance(getEndCoordinate()) < MAXDIST) { - boolean res = calque_ - .getCtuluUI() - .question( - TrResource.getS("Calculer une seule trajectoire"), - TrResource - .getS("Les extremit\xE9s du segment sont confondues. Une seule trajectoire sera calcul\xE9e.\nVoulez-vous continuer ?")); - if (!res) { return TrResource.getS("Choisir 2 points diff\xE9rents"); } + /** + * retourne la variable selectionnee + * + * @return + */ + protected TrPostFlecheContent getSelectedVariable() { - } + return (TrPostFlecheContent) cbVitesse_.getSelectedItem(); + } - return null; - } + public String getTitre() { + return TrResource.getS("Lignes de courants") + "/" + TrResource.getS("Trajectoires"); + } - private Integer getDuree() { - return ((Integer) dureeEditor_.getValue(duree_)); - } + protected boolean isLigneCourant() { + return choixMode_.getSelectedIndex() == 0; + } - // EfLigneDeCourantActivity activity_; + protected boolean isTrajectoire() { + return choixMode_.getSelectedIndex() == 1; + } - public void stopTask() { - if (algoCalcul_ != null) algoCalcul_.stop(); + public String isValid() { + // pas necessaire + // if (listVar_.getSelectedIndex() == -1) { return TrResource.getS("Il faut choisir une variable"); } + // if (cbFirstTime_.getSelectedIndex() == -1) { return TrResource.getS("Il faut choisir un pas de temps"); } + if (!this.integerEditor_.isValueValidFromComponent(finesse_)) { return TrResource + .getS("La finesse doit \xEAtre d\xE9fini par un entier sup\xE9rieur \xE0 1"); } + if (!isSegmentValid()) { return TrResource.getS("Le segment n'est pas d\xE9fini"); } + if (integerEditor_.getValue(nbPoints_) == null) { return TrResource.getS("Pr\xE9ciser le nombre de trajectoires"); } + if (dureeEditor_.isEmpty(duree_)) { return TrResource.getS("La dur\xE9e doit \xEAtre d\xE9finie par un r\xE9el en secondes"); } + if (isMarqueurAvailable() && !doubleMarkEditor_.isValueValidFromComponent(markValue_)) { return TrResource + .getS("Le delta du marqueur doit \xEAtre renseign\xE9"); } + // on doit verifier que la duree est bien comprise dans les pas de temps du projet + if (isTrajectoire()) { + final int duree = getDuree(); + final double timeSelected = source_.getTimeStep(cbFirstTime_.getSelectedIndex()); + final double timeEnd = timeSelected + duree; + final double lastTimeStep = source_.getTimeStep(source_.getNbTimeStep() - 1); + if (timeEnd < source_.getTimeStep(0) || timeEnd > lastTimeStep) { + final String min = "-".concat(source_.getTimeFormatter().format(timeSelected - source_.getTimeStep(0))); + final String max = source_.getTimeFormatter().format(lastTimeStep - timeSelected); + return TrResource.getS("la dur\xE9e du calcul doit \xEAtre comprise entre {0} et {1}", min, max); + } - } + } + if (getFirsCoordinate().distance(getEndCoordinate()) < MAXDIST) { + boolean res = calque_ + .getCtuluUI() + .question( + TrResource.getS("Calculer une seule trajectoire"), + TrResource + .getS("Les extremit\xE9s du segment sont confondues. Une seule trajectoire sera calcul\xE9e.\nVoulez-vous continuer ?")); + if (!res) { return TrResource.getS("Choisir 2 points diff\xE9rents"); } - public void dialogClosed() { - lineChooser_.close(); + } - } + return null; + } + private Integer getDuree() { + return ((Integer) dureeEditor_.getValue(duree_)); + } + + // EfLigneDeCourantActivity activity_; + + public void stopTask() { + if (algoCalcul_ != null) algoCalcul_.stop(); + + } + + public void dialogClosed() { + lineChooser_.close(); + + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <had...@us...> - 2009-01-23 18:57:28
|
Revision: 4397 http://fudaa.svn.sourceforge.net/fudaa/?rev=4397&view=rev Author: hadouxad Date: 2009-01-23 18:57:21 +0000 (Fri, 23 Jan 2009) Log Message: ----------- Lot 3 Prepro: Memoires des vues 2d Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZEbliCalquesPanel.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EbliWidgetControllerCalque.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostLayoutPanelController.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjet.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceComparatorBuilder.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireComputeAndDisplayActivity.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireLineLayer.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireLineLayerPersistence.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostVisuPanel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostVisuPanelPersistManager.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrReplayCurvesData.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/actions/TrPostActionChooseAndCreateCalque.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/dialogSpec/TrPostTrajectoireTaskModel.java Added Paths: ----------- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireLineLayerPersist.java Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZEbliCalquesPanel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZEbliCalquesPanel.java 2009-01-23 16:12:37 UTC (rev 4396) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZEbliCalquesPanel.java 2009-01-23 18:57:21 UTC (rev 4397) @@ -7,6 +7,7 @@ */ package org.fudaa.ebli.calque; +import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Container; @@ -21,6 +22,9 @@ import java.awt.image.BufferedImage; import java.awt.print.PageFormat; import java.awt.print.Printable; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; import java.util.Map; import javax.swing.Action; @@ -32,11 +36,14 @@ import javax.swing.JList; import javax.swing.JMenu; import javax.swing.JPopupMenu; +import javax.swing.JScrollPane; import javax.swing.JTabbedPane; +import javax.swing.JTable; import javax.swing.ListCellRenderer; import javax.swing.SwingUtilities; import javax.swing.event.TreeModelEvent; import javax.swing.event.TreeModelListener; +import javax.swing.table.DefaultTableModel; import javax.swing.tree.TreeModel; import org.fudaa.ctulu.CtuluLibString; @@ -66,6 +73,7 @@ import com.memoire.bu.BuMenu; import com.memoire.bu.BuPanel; import com.memoire.bu.BuPopupMenu; +import com.memoire.bu.BuTable; /** * Fenetre d'affichage de calques contenant des services de base. (position souris, zoom fenetre, selection, @@ -278,6 +286,17 @@ this.gcDonnees_ = gcDonnees_; } + /** + * contient des informations de cr\xE9ation du vue2d. + */ + public final static String NOM_FIC=EbliResource.EBLI.getString("Fichier res"); + public final static String PATH_FIC=EbliResource.EBLI.getString("Chemin"); + public final static String TITRE_FIC=EbliResource.EBLI.getString("Titre"); + public final static String MAILLAGE_FIC=EbliResource.EBLI.getString("Maillage utilis\xE9"); + public final static String DIFF_FIC=EbliResource.EBLI.getString("Diff\xE9rentiel fichiers"); + + public Map<String,String> infosCreation_=new HashMap<String,String>(); + protected BuMenu contextTools_; protected BuLabel mode_; @@ -1003,5 +1022,108 @@ } + /** + * Cree un tableau qui r\xE9capitule le contenu des infos de cr\xE9ation de la vue 2d. + * Retourne un panel vide si aucune infos n'est disponible. + * @return + */ + public BuPanel buildInfosCreationComposant(){ + + + if(infosCreation_==null || infosCreation_.keySet()==null ||infosCreation_.keySet().size()==0) + return new BuPanel(); + + String[] names=new String[]{"Nom","Valeur"};//infosCreation_.keySet().toArray(new String[infosCreation_.keySet().size()]); + String[][] data=new String[infosCreation_.keySet().size()][2]; + int i=0; + for(String key:infosCreation_.keySet()){ + data[i][0]=key; + data[i][1]=infosCreation_.get(key); + i++; + } + + DefaultTableModel modelInfos=new DefaultTableModel(data,names){ + @Override + public int getRowCount() { + // TODO Auto-generated method stub + return infosCreation_.keySet().size()+1; + } + + @Override + public Object getValueAt(int row, int column) { + + if(row==getRowCount()-1){ + if(column==0) + return EbliResource.EBLI.getString("Editable"); + else + return EbliResource.EBLI.getString("Double-cliquez pour \xE9diter"); + }else + if(column==0) + return getKey(row); + else + return getValue(row); + + } + + @Override + public void setValueAt(Object value, int row, int column) { + + if(value==null)return; + + if(row==getRowCount()-1 && !((String)value).equals(EbliResource.EBLI.getString("Editable"))){ + //-- ajout --// + if(column==1) + infosCreation_.put("Note "+(infosCreation_.keySet().size()+1),(String)value); + else + infosCreation_.put((String)value,""); + + fireTableDataChanged(); + + }else{ + //-- modification --// + if(column==0){ + String res=infosCreation_.get(getKey(row)); + infosCreation_.remove(getKey(row)); + infosCreation_.put((String)value, res); + }else{ + infosCreation_.put(getKey(row),(String)value); + } + fireTableDataChanged(); + } + } + public String getKey(int row){ + int i=0; + if(row>=infosCreation_.keySet().size()) + return ""; + for(String key:infosCreation_.keySet()){ + if(i==row) + return key; + i++; + + } + return ""; + } + + public String getValue(int row){ + return infosCreation_.get(getKey(row)); + } + + @Override + public boolean isCellEditable(int row, int column) { + return true; + } + + }; + BuTable table=new BuTable(modelInfos); + + table.getColumnModel().getColumn(0).setPreferredWidth(20); + BuPanel conteneur=new BuPanel(new BorderLayout()); + conteneur.add(new JScrollPane(table),BorderLayout.CENTER); + + conteneur.add(new JLabel("<html><body><b>"+EbliResource.EBLI.getString("Infos cr\xE9ations")+"</b></body></html>",JLabel.CENTER),BorderLayout.NORTH); + return conteneur; + } + + } \ No newline at end of file Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EbliWidgetControllerCalque.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EbliWidgetControllerCalque.java 2009-01-23 16:12:37 UTC (rev 4396) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EbliWidgetControllerCalque.java 2009-01-23 18:57:21 UTC (rev 4397) @@ -1,5 +1,6 @@ package org.fudaa.ebli.visuallibrary.calque; +import java.awt.Component; import java.awt.Dimension; import java.awt.Point; import java.awt.event.ActionEvent; @@ -20,6 +21,8 @@ import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JSplitPane; +import javax.swing.JTabbedPane; +import javax.swing.JTable; import javax.swing.JToolBar; import org.fudaa.ctulu.CtuluCommandContainer; @@ -461,10 +464,24 @@ pals.updateBeforeShow(); tb.addTab(pals.getTitle(), pals.getIcon(), component); } + + + //-- split avec infos + arbre des calques --// + final JSplitPane splitInfosArbre = new JSplitPane(JSplitPane.VERTICAL_SPLIT); + + final BuPanel scrollInfos = getVisuPanel().buildInfosCreationComposant(); + scrollInfos.setMinimumSize(new Dimension((int) scrollInfos.getSize().getWidth(),100)); + + splitInfosArbre.setTopComponent(scrollInfos); + splitInfosArbre.setBottomComponent(scrollPane); + splitInfosArbre.setDividerLocation(0.3D); + + final JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT); splitPane.setTopComponent(tb); - splitPane.setBottomComponent(scrollPane); + splitPane.setBottomComponent(splitInfosArbre); splitPane.setDividerLocation(0.3D); + panelTreeCalque_ = splitPane; } else { panelTreeCalque_ = scrollPane; Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostLayoutPanelController.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostLayoutPanelController.java 2009-01-23 16:12:37 UTC (rev 4396) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostLayoutPanelController.java 2009-01-23 18:57:21 UTC (rev 4397) @@ -13,13 +13,11 @@ import javax.swing.JDesktopPane; import javax.swing.JMenu; import javax.swing.JPanel; -import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JTabbedPane; import javax.swing.SwingConstants; import org.fudaa.ctulu.CtuluCommandManager; -import org.fudaa.ctulu.gui.CtuluButtonForPopup; import org.fudaa.ctulu.gui.CtuluSelectorPopupButton; import org.fudaa.ebli.calque.BCalqueLegende; import org.fudaa.ebli.calque.ZEbliCalquesPanel; @@ -35,7 +33,6 @@ import org.fudaa.ebli.visuallibrary.EbliNodeDefault; import org.fudaa.ebli.visuallibrary.EbliScene; import org.fudaa.ebli.visuallibrary.EbliWidget; -import org.fudaa.ebli.visuallibrary.EbliWidgetArrowEditor; import org.fudaa.ebli.visuallibrary.EbliWidgetBordureSingle; import org.fudaa.ebli.visuallibrary.actions.CommandUndoRedoCreation; import org.fudaa.ebli.visuallibrary.actions.EbliWidgetActionAlign; @@ -43,7 +40,6 @@ import org.fudaa.ebli.visuallibrary.actions.EbliWidgetActionColorBackground; import org.fudaa.ebli.visuallibrary.actions.EbliWidgetActionConfigure; import org.fudaa.ebli.visuallibrary.actions.EbliWidgetActionForeGround; - import org.fudaa.ebli.visuallibrary.actions.EbliWidgetActionImageChooser; import org.fudaa.ebli.visuallibrary.actions.EbliWidgetActionRetaillageHorizontal; import org.fudaa.ebli.visuallibrary.actions.EbliWidgetActionRetaillageVertical; @@ -61,7 +57,6 @@ import org.fudaa.ebli.visuallibrary.creator.ShapeCreatorDblFleche; import org.fudaa.ebli.visuallibrary.creator.ShapeCreatorEllipse; import org.fudaa.ebli.visuallibrary.creator.ShapeCreatorFleche; -import org.fudaa.ebli.visuallibrary.creator.ShapeCreatorFlecheSimple; import org.fudaa.ebli.visuallibrary.creator.ShapeCreatorLine; import org.fudaa.ebli.visuallibrary.creator.ShapeCreatorRectangle; import org.fudaa.fudaa.tr.common.TrResource; @@ -70,7 +65,6 @@ import org.fudaa.fudaa.tr.post.actions.TrPostActionDuplicate; import org.fudaa.fudaa.tr.post.actions.TrPostActionDuplicateLayout; import org.fudaa.fudaa.tr.post.dialogSpec.TrPostWizardCreateScope; -import org.jdesktop.swingx.ScrollPaneSelector; import org.netbeans.api.visual.widget.Widget; import com.memoire.bu.BuDesktop; Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjet.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjet.java 2009-01-23 16:12:37 UTC (rev 4396) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostProjet.java 2009-01-23 18:57:21 UTC (rev 4397) @@ -52,6 +52,7 @@ import org.fudaa.dodico.ef.EfLib; import org.fudaa.dodico.h2d.type.H2dVariableType; import org.fudaa.ebli.calque.BCalqueLegende; +import org.fudaa.ebli.calque.ZEbliCalquesPanel; import org.fudaa.ebli.courbe.EGAxeHorizontal; import org.fudaa.ebli.courbe.EGFillePanel; import org.fudaa.ebli.courbe.EGGraphe; @@ -851,6 +852,11 @@ final TrPostVisuPanel pnVisu = new TrPostVisuPanel(impl_, this, projection.getNbFleche() == 0, new BCalqueLegende(), projection); + //-- ajout des infos de cr\xE9ation --// + pnVisu.infosCreation_.put(ZEbliCalquesPanel.NOM_FIC, projection.getFile().getName()); + pnVisu.infosCreation_.put(ZEbliCalquesPanel.PATH_FIC, projection.getFile().getAbsolutePath()); + pnVisu.infosCreation_.put(ZEbliCalquesPanel.TITRE_FIC, projection.getTitle()); + // creation de l internalframe qui contient le panel de visu // final TrPostFille compFille = new TrPostFille(pnVisu); // creation de la scene layout identique a au dessus @@ -1142,6 +1148,11 @@ final TrPostSource source = listeSrc_.get(0); final TrPostVisuPanel pnVisu = source.buildVisuPanel(TrPostProjet.this, legendeCalque); + //-- ajout des infos de cr\xE9ation --// + pnVisu.infosCreation_.put(ZEbliCalquesPanel.NOM_FIC, source.getFile().getName()); + pnVisu.infosCreation_.put(ZEbliCalquesPanel.PATH_FIC, source.getFile().getAbsolutePath()); + pnVisu.infosCreation_.put(ZEbliCalquesPanel.TITRE_FIC, source.getTitle()); + // -- ajout du visuPanel au layout --// final Point location = pnVisu.getLocation(); location.x += 10; Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceComparatorBuilder.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceComparatorBuilder.java 2009-01-23 16:12:37 UTC (rev 4396) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostSourceComparatorBuilder.java 2009-01-23 18:57:21 UTC (rev 4397) @@ -8,7 +8,9 @@ package org.fudaa.fudaa.tr.post; import java.awt.Point; +import java.util.HashMap; import java.util.List; +import java.util.Map; import javax.swing.ListModel; @@ -17,6 +19,7 @@ import org.fudaa.ctulu.gui.CtuluDialog; import org.fudaa.dodico.ef.EfGridInterface; import org.fudaa.dodico.h2d.type.H2dVariableType; +import org.fudaa.ebli.calque.ZEbliCalquesPanel; import org.fudaa.ebli.visuallibrary.calque.CalqueLegendeWidgetAdapter; import org.fudaa.fudaa.fdico.FDicoLib; import org.fudaa.fudaa.meshviewer.MvResource; @@ -165,6 +168,8 @@ public void run() { final boolean isOnImpGrid = pn.isCompareOnImportedGrid(); + Map<String,String> infosCreation_=new HashMap<String,String>(); + final TrPostSourceComparator comparaison = createSrcComparator(src, proj, pn.isGridEquals(), isOnImpGrid, pn .isCompareOnImportedTime(), impl, prog); comparaison.setInv(pn.isInv()); @@ -173,8 +178,32 @@ comparaisonZfn = createSrcComparator(srcZfn, toProjectZfn, pn.isGridEquals(), isOnImpGrid, pn .isCompareOnImportedTime(), impl, prog); comparaisonZfn.setInv(pn.isInv()); + + + } - + + if(pn.isInv() ) + infosCreation_.put(ZEbliCalquesPanel.DIFF_FIC, src.getFile().getName()+"-"+proj.getFile().getName()); + else + infosCreation_.put(ZEbliCalquesPanel.DIFF_FIC, proj.getFile().getName()+"-"+src.getFile().getName()); + + + //-- ajout des infos de cr\xE9ation --// + infosCreation_.put(ZEbliCalquesPanel.NOM_FIC+" 1", src.getFile().getName()); + infosCreation_.put(ZEbliCalquesPanel.PATH_FIC+" 1", src.getFile().getAbsolutePath()); + infosCreation_.put(ZEbliCalquesPanel.TITRE_FIC+" 1", src.getTitle()); + infosCreation_.put(ZEbliCalquesPanel.NOM_FIC+" 2", proj.getFile().getName()); + infosCreation_.put(ZEbliCalquesPanel.PATH_FIC+" 2", proj.getFile().getAbsolutePath()); + infosCreation_.put(ZEbliCalquesPanel.TITRE_FIC+" 2", proj.getTitle()); + if(isOnImpGrid) + infosCreation_.put(ZEbliCalquesPanel.MAILLAGE_FIC, proj.getFile().getName()); + else + infosCreation_.put(ZEbliCalquesPanel.MAILLAGE_FIC, src.getFile().getName()); + + + + // final TrPostProjet trPostProjet = new TrPostProjet(comparaison, impl); // -- creation de la legende --// @@ -183,7 +212,7 @@ final TrPostVisuPanel pnVisu = new TrPostVisuPanel(impl, projet, comparaison.getFlecheListModel().getSize() == 0, legendeCalque, comparaison); - + pnVisu.infosCreation_=infosCreation_; // final TrPostFille compFille = new TrPostFille(pnVisu); // compFille.addInternalFrameListener(new InternalFrameAdapter() { // public void internalFrameClosed(InternalFrameEvent _e) { Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireComputeAndDisplayActivity.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireComputeAndDisplayActivity.java 2009-01-23 16:12:37 UTC (rev 4396) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireComputeAndDisplayActivity.java 2009-01-23 18:57:21 UTC (rev 4397) @@ -110,6 +110,15 @@ FSigLayerGroup traj_; + + TrPostTrajectoireLineLayer calqueAecraser_=null; + + + public TrPostTrajectoireComputeAndDisplayActivity(final TrPostVisuPanel calque,TrPostTrajectoireLineLayer c) { + this(calque); + calqueAecraser_=c; + } + public TrPostTrajectoireComputeAndDisplayActivity(final TrPostVisuPanel calque) { this.pn_ = calque; } @@ -125,7 +134,7 @@ * @param _prog l'interface de progression, peut etre null * @return */ - public String computeLigneCourant(final EfTrajectoireParameters _data, final CtuluAnalyze _analyse, + public String computeLigneCourant(TrPostVisuPanel vue2d,final EfTrajectoireParameters _data, final CtuluAnalyze _analyse, final ProgressionInterface _prog) { stop_ = false; // on recupere les lignes de courant @@ -149,13 +158,23 @@ lb.setAttributes(attDansOrdreIns.toArray(new GISAttributeInterface[attDansOrdreIns.size()]), null); lb.addAll(model, null, false); + String titreCalque=""; + if(calqueAecraser_==null){ CtuluDialogPanel pn = new CtuluDialogPanel(false); pn.setLayout(new BuGridLayout(2)); pn.addLabel(TrLib.getString("Indiquer le nom du calque \xE0 cr\xE9er")); JTextField tf = pn.addStringText(); tf.setColumns(10); pn.afficheModale(CtuluLibSwing.getActiveWindow(), getCalqueName(_data.isTrajectoire()), CtuluDialog.OK_OPTION); - final ZCalqueLigneBrisee la = createLayer(_data, dest, lb, tf.getText(), findAttributeForVariable(varAtttributes, + titreCalque=tf.getText(); + }else{ + titreCalque=calqueAecraser_.getTitle(); + //-- on detruit le calque apres rejoue de donn\xE9es --// + calqueAecraser_.setDestructible(true); + this.pn_.detruireCalque(calqueAecraser_); + + } + final ZCalqueLigneBrisee la = createLayer(vue2d,_data, dest, lb, titreCalque, findAttributeForVariable(varAtttributes, MARK)); dest.enPremier(la); return TrResource.TR.getString("Calque {0} cr\xE9\xE9", la.getTitle()); @@ -170,9 +189,9 @@ return null; } - private ZCalqueLigneBrisee createLayer(final EfTrajectoireParameters _data, final FSigLayerGroup dest, + private ZCalqueLigneBrisee createLayer(TrPostVisuPanel vue2d,final EfTrajectoireParameters _data, final FSigLayerGroup dest, final GISZoneCollectionLigneBrisee lb, String _title, GISAttributeInterface _mark) { - final ZCalqueLigneBrisee la = new TrPostTrajectoireLineLayer(new ZModeleLigneBriseeDefault(lb), _mark); + final ZCalqueLigneBrisee la = new TrPostTrajectoireLineLayer(vue2d,_data, new ZModeleLigneBriseeDefault(lb), _mark); la.setName(BGroupeCalque.findUniqueChildName(dest, getCalqueId(_data.isTrajectoire()))); la.setTitle(CtuluLibString.isEmpty(_title) ? createNewCalqueName(_data.isTrajectoire()) : _title); la Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireLineLayer.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireLineLayer.java 2009-01-23 16:12:37 UTC (rev 4396) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireLineLayer.java 2009-01-23 18:57:21 UTC (rev 4397) @@ -5,6 +5,7 @@ package org.fudaa.fudaa.tr.post; import java.awt.Graphics2D; +import java.awt.event.ActionEvent; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -12,6 +13,8 @@ import javax.swing.DefaultListModel; import javax.swing.DefaultListSelectionModel; +import javax.swing.JMenu; +import javax.swing.JMenuItem; import javax.swing.ListModel; import javax.swing.ListSelectionModel; import javax.swing.event.ListSelectionEvent; @@ -23,8 +26,10 @@ import org.fudaa.ctulu.gis.GISAttributeModelBooleanInterface; import org.fudaa.ctulu.gis.GISAttributeModelDoubleInterface; import org.fudaa.ctulu.gis.GISZoneCollection; +import org.fudaa.dodico.ef.operation.EfTrajectoireParameters; import org.fudaa.ebli.calque.BCalquePersistenceInterface; import org.fudaa.ebli.calque.ZModeleLigneBrisee; +import org.fudaa.ebli.commun.EbliActionSimple; import org.fudaa.ebli.commun.EbliUIProperties; import org.fudaa.ebli.controle.BSelecteurListTarget; import org.fudaa.ebli.geometrie.GrBoite; @@ -32,12 +37,15 @@ import org.fudaa.ebli.geometrie.GrPoint; import org.fudaa.ebli.palette.BPalettePlage; import org.fudaa.ebli.palette.PaletteManager; +import org.fudaa.ebli.ressource.EbliResource; import org.fudaa.ebli.trace.TraceIcon; import org.fudaa.ebli.trace.TraceIconModel; import org.fudaa.ebli.trace.TraceLigne; import org.fudaa.ebli.trace.TraceLigneModel; +import org.fudaa.fudaa.commun.impl.FudaaPanelTask; import org.fudaa.fudaa.sig.layer.FSigLayerLine; import org.fudaa.fudaa.tr.common.TrLib; +import org.fudaa.fudaa.tr.post.dialogSpec.TrPostTrajectoireTaskModel; /** * Le layer charge d'afficher les donn\xE9es d'une trajectoire @@ -55,8 +63,19 @@ Map<String, BPalettePlage> namePalette_; - public TrPostTrajectoireLineLayer(ZModeleLigneBrisee _modele, GISAttributeInterface _markAttr) { + TrPostVisuPanel vue2d_; + + /** + * Structures qui contient toutes les donn\xE9es importantes de construction de la trajectoire. + * A serialiser pour pouvoir rejouer les donnees. + */ + EfTrajectoireParameters dataMemory_; + + public TrPostTrajectoireLineLayer(TrPostVisuPanel vue2d,EfTrajectoireParameters _data,ZModeleLigneBrisee _modele, GISAttributeInterface _markAttr) { super(_modele); + + vue2d_=vue2d; + dataMemory_=_data; if (_markAttr == null) { markAttr_ = findMarkAttribute(_modele); } else markAttr_ = _markAttr; @@ -351,5 +370,33 @@ fireSelectionEvent(); repaint(); } + + + + + /** + * Surcharge des menus specifics, + * ajout d'un menu de rejoue de donn\xE9es pour les trajectoires/lignes de courant. + */ + protected void buildSpecificMenuItemsForAction(final List _l) { + super.buildSpecificMenuItemsForAction(_l); + + //-- ajour de l'action de rejouer les donn\xE9es --// + EbliActionSimple replayData=new EbliActionSimple("Rejouer les donn\xE9es",EbliResource.EBLI.getIcon("restore"), "REPLAYDATA"){ + public void actionPerformed(final ActionEvent _e) { + + new FudaaPanelTask(vue2d_.getCtuluUI(), new TrPostTrajectoireTaskModel(vue2d_,dataMemory_,TrPostTrajectoireLineLayer.this)).afficheDialog(); + } + }; + JMenuItem menuReplayTrajectoires=new JMenuItem(replayData); + + _l.add(menuReplayTrajectoires); + + } + + } + + + Added: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireLineLayerPersist.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireLineLayerPersist.java (rev 0) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireLineLayerPersist.java 2009-01-23 18:57:21 UTC (rev 4397) @@ -0,0 +1,149 @@ +package org.fudaa.fudaa.tr.post; + +import java.util.Set; + +import org.fudaa.ebli.geometrie.GrPoint; + +import com.vividsolutions.jts.geom.Coordinate; + + + +/** + * Classe persistante du calque des trajectoires et lignes de courant. + * Est capable de stocker toutes les informations qui ont permis de g\xE9n\xE9rer les trajectoires/lignes de courant et de les rejouer. + * @author Adrien Hadoux + * + */ +public class TrPostTrajectoireLineLayerPersist { + + /** + * booleen: + * true: trajectoire + * false:lignes de courant + */ + boolean isTrajectoire=false; + + /** + * point extr\xE9mit\xE9 du segment qui a servi pour le lach\xE9 de particules. + */ + Coordinate point1=null; + /** + * point extr\xE9mit\xE9 du segment qui a servi pour le lach\xE9 de particules. + */ + Coordinate point2=null; + + /** + * Duree du calcul + */ + double dureeCalcul; + + /** + * la finesse du calcul + */ + double finesse; + + /** + * Nb de d\xE9coupages du segment, ie nb de particules. + */ + int nbCesures; + + /** + * liste des variables pour lesquelles on voulait le calcul. + */ + Set<String> listeVariablesId=null; + + /** + * Type de marqueur utilis\xE9: + * 0:Aucun + * 1:A pas de temps constant + * 2: a distance constante + */ + int typeMarqueur; + + /** + * valeur delta des marqueurs si typeMarqueur!=0 + */ + double delta; + + public TrPostTrajectoireLineLayerPersist(){ + + } + + + public boolean isTrajectoire() { + return isTrajectoire; + } + + public void setTrajectoire(boolean isTrajectoire) { + this.isTrajectoire = isTrajectoire; + } + + public Coordinate getPoint1() { + return point1; + } + + public void setPoint1(Coordinate point1) { + this.point1 = point1; + } + + public Coordinate getPoint2() { + return point2; + } + + public void setPoint2(Coordinate point2) { + this.point2 = point2; + } + + public int getNbCesures() { + return nbCesures; + } + + public void setNbCesures(int nbCesures) { + this.nbCesures = nbCesures; + } + + public Set<String> getListeVariablesId() { + return listeVariablesId; + } + + public void setListeVariablesId(Set<String> listeVariablesId) { + this.listeVariablesId = listeVariablesId; + } + + public int getTypeMarqueur() { + return typeMarqueur; + } + + public void setTypeMarqueur(int typeMarqueur) { + this.typeMarqueur = typeMarqueur; + } + + public double getDelta() { + return delta; + } + + public void setDelta(double delta) { + this.delta = delta; + } + + + public double getFinesse() { + return finesse; + } + + + public void setFinesse(double finesse) { + this.finesse = finesse; + } + + + public double getDureeCalcul() { + return dureeCalcul; + } + + + public void setDureeCalcul(double dureeCalcul) { + this.dureeCalcul = dureeCalcul; + } + +} Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireLineLayerPersistence.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireLineLayerPersistence.java 2009-01-23 16:12:37 UTC (rev 4396) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostTrajectoireLineLayerPersistence.java 2009-01-23 18:57:21 UTC (rev 4397) @@ -19,7 +19,7 @@ @Override protected BCalque addInParent(FSigLayerGroup _gr, BCalqueSaverInterface _cqName, GISZoneCollection _collection) { - TrPostTrajectoireLineLayer layer = new TrPostTrajectoireLineLayer(new ZModeleLigneBriseeDefault( + TrPostTrajectoireLineLayer layer = new TrPostTrajectoireLineLayer(null,null,new ZModeleLigneBriseeDefault( (GISZoneCollectionLigneBrisee) _collection), null); _gr.enDernier(layer); return layer; Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostVisuPanel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostVisuPanel.java 2009-01-23 16:12:37 UTC (rev 4396) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostVisuPanel.java 2009-01-23 18:57:21 UTC (rev 4397) @@ -8,6 +8,8 @@ package org.fudaa.fudaa.tr.post; import java.awt.event.ActionEvent; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -145,6 +147,9 @@ MvExportFactory.startExport(fac, _impl, _selection); } + + + ActionAnimationTreeSelection anim_; TrPostInfoDelegate info_; @@ -331,6 +336,10 @@ //-- creation des actions specifiques au calque --// duplic.getController().buildActions(); + //-- duplic des infos de construction --// + duplic.infosCreation_=new HashMap<String, String>(infosCreation_); + + return duplic; } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostVisuPanelPersistManager.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostVisuPanelPersistManager.java 2009-01-23 16:12:37 UTC (rev 4396) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostVisuPanelPersistManager.java 2009-01-23 18:57:21 UTC (rev 4397) @@ -6,6 +6,7 @@ import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -41,6 +42,8 @@ String idSource; GrBoite zoom_; + public Map<String,String> infos_=new HashMap<String,String>(); + TrPostVisuPanelPersistManager() { } @@ -55,6 +58,7 @@ simplified = panel.simplifiedInit; idSource = panel.getSource().getId(); zoom_ = panel.getVueCalque().getViewBoite(); + infos_=panel.infosCreation_; // //-- etape 2: on sauvegarde les donnees --// FudaaSaveZipWriter writer = null; try { @@ -109,7 +113,10 @@ TrPostVisuPanel newPanel = new TrPostVisuPanel(projet.getImpl(), projet, legendeCalque, src); + //-- on remplit les infos --// + newPanel.infosCreation_=infos_; + //-- on verifie si il faut charger les donnees zippees ou laisser tout se recalculer --// final List<String> listeReloadSource=(List<String>) parameters.get("RELOAD"); Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrReplayCurvesData.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrReplayCurvesData.java 2009-01-23 16:12:37 UTC (rev 4396) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrReplayCurvesData.java 2009-01-23 18:57:21 UTC (rev 4397) @@ -39,6 +39,7 @@ import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.gis.GISZoneCollectionPoint; +import org.fudaa.ctulu.gui.CtuluDialog; import org.fudaa.ctulu.gui.CtuluDialogPanel; import org.fudaa.ctulu.gui.CtuluLibSwing; import org.fudaa.dodico.h2d.type.H2dVariableType; @@ -246,9 +247,9 @@ * @param implementation * @param modele */ - private CtuluDialogPanel constructDialog(TrPostVisuPanel vue2d, TrPostCommonImplementation implementation, EGModel modele,JComponent composantAdditionnel,boolean modeEdition,String title){ + private TrReplayDialog constructDialog(TrPostVisuPanel vue2d, TrPostCommonImplementation implementation, EGModel modele,JComponent composantAdditionnel,boolean modeEdition,String title){ implementation.createTask(TrResource.getS("Origine ")+" "+modele.getTitle()); - final CtuluDialogPanel pn = new CtuluDialogPanel(false); + final TrReplayDialog pn = new TrReplayDialog(false); pn.setLayout(new BuBorderLayout()); pn.setBorder(BuBorders.EMPTY3333); //pn.add(new BuLabel(CtuluLib.getS("S\xE9lectionner le fichier r\xE9sultat")), BuBorderLayout.NORTH); @@ -445,7 +446,32 @@ } - CtuluDialogPanel dialog_=null; + class TrReplayDialog extends CtuluDialogPanel{ + CtuluDialog dialog_; + + TrReplayDialog(boolean b){ + super(b); + } + + public int afficheModale(final Component _parent, final String _t, final int _option) { + dialog_= createDialog(_parent); + dialog_.setInitParent(_parent); + dialog_.setOption(_option); + if (_t != null) { + dialog_.setTitle(_t); + } + return dialog_.afficheDialogModal(); + } + + @Override + public void cancel() { + dialog_.dispose(); + } + + + } + + TrReplayDialog dialog_=null; /** * Constructeur d'une dialog qui affiche la vue 2d avec le point initial qui a servi a la creation du modele. * Ajoute \xE9galement la liste des variables \xE0 choisir. Il est possible dans la vue de s\xE9lectionner un autre point ou plusieurs. @@ -510,8 +536,7 @@ //-- on ferme l'interface courante --// if(dialog_!=null ) - - dialog_.cancel(); + dialog_.cancel(); //-- on rappelle l'interface --// getEvolTemporelleReplayData(newSrc, treeModel, modele, implementation); Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/actions/TrPostActionChooseAndCreateCalque.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/actions/TrPostActionChooseAndCreateCalque.java 2009-01-23 16:12:37 UTC (rev 4396) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/actions/TrPostActionChooseAndCreateCalque.java 2009-01-23 18:57:21 UTC (rev 4397) @@ -2,6 +2,7 @@ import java.awt.event.ActionEvent; +import org.fudaa.ebli.calque.ZEbliCalquesPanel; import org.fudaa.ebli.ressource.EbliResource; import org.fudaa.ebli.visuallibrary.EbliNode; import org.fudaa.ebli.visuallibrary.actions.EbliWidgetActionSimple; @@ -56,6 +57,13 @@ .getPreferredSize(), pnVisu, legendeCalque); // -- ajout de l INFO de la source utilis\xE9e --// node.getWidget().getController().setDescription("Source: " + projet_.formatInfoSource(srcChoisie)); + + //-- ajout des infos de cr\xE9ation --// + pnVisu.infosCreation_.put(ZEbliCalquesPanel.NOM_FIC, srcChoisie.getFile().getName()); + pnVisu.infosCreation_.put(ZEbliCalquesPanel.PATH_FIC, srcChoisie.getFile().getAbsolutePath()); + pnVisu.infosCreation_.put(ZEbliCalquesPanel.TITRE_FIC, srcChoisie.getTitle()); + + } } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/dialogSpec/TrPostTrajectoireTaskModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/dialogSpec/TrPostTrajectoireTaskModel.java 2009-01-23 16:12:37 UTC (rev 4396) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/dialogSpec/TrPostTrajectoireTaskModel.java 2009-01-23 18:57:21 UTC (rev 4397) @@ -6,8 +6,10 @@ import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.ArrayList; +import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Set; import javax.swing.BorderFactory; import javax.swing.JButton; @@ -43,6 +45,9 @@ import org.fudaa.fudaa.tr.common.TrResource; import org.fudaa.fudaa.tr.post.TrPostFlecheContent; import org.fudaa.fudaa.tr.post.TrPostSource; +import org.fudaa.fudaa.tr.post.TrPostTrajectoireLineLayer; +import org.fudaa.fudaa.tr.post.TrPostTrajectoireLineLayerPersist; +import org.fudaa.fudaa.tr.post.TrPostTrajectoireLineLayerPersistence; import org.fudaa.fudaa.tr.post.TrPostVisuPanel; import org.fudaa.fudaa.tr.post.TrPostTrajectoireComputeAndDisplayActivity; @@ -56,454 +61,557 @@ public class TrPostTrajectoireTaskModel implements FudaaPanelTaskModel { - /** - * - */ - private static final double MAXDIST = 1E-3; + /** + * + */ + private static final double MAXDIST = 1E-3; - TrPostTrajectoireComputeAndDisplayActivity algoCalcul_; + TrPostTrajectoireComputeAndDisplayActivity algoCalcul_; - /** - * booleen qui indique si le wizard a \xE9t\xE9t lanc\xE9 depuis un calque - */ + /** + * booleen qui indique si le wizard a \xE9t\xE9t lanc\xE9 depuis un calque + */ - // ArrayList<TrPostSource> source_; - TrPostVisuPanel calque_; + // ArrayList<TrPostSource> source_; + TrPostVisuPanel calque_; - // choix mode - JComboBox choixMode_ = new JComboBox(new String[] { TrLib.getString("Lignes de courant"), - TrLib.getString("Trajectoires") }); + // choix mode + JComboBox choixMode_ = new JComboBox(new String[] { TrLib.getString("Lignes de courant"), + TrLib.getString("Trajectoires") }); - JComponent duree_; + JComponent duree_; - JComponent finesse_; + JComponent finesse_; - final MvLineChooser lineChooser_; - JComboBox cbFirstTime_; - JList listVar_; - ListModel modelPdt_; + final MvLineChooser lineChooser_; + JComboBox cbFirstTime_; + JList listVar_; + ListModel modelPdt_; - // donnees graphiques - // JDialog dialog_; + // donnees graphiques + // JDialog dialog_; - DefaultTableModel modelResult_; + DefaultTableModel modelResult_; - // results - // JPanel panelResults_; - /** - * Creation du panel graphique. - * - * @return - */ - // JPanel panelSegment_; - // finesse et duree et point - // private JPanel panelSeuil_; - // variables et pdt - // private JPanel panelVariables_; - TrPostSource source_; - CtuluValueEditorDouble doubleEditor_ = new CtuluValueEditorDouble(false); - CtuluValueEditorDouble doubleMarkEditor_ = new CtuluValueEditorDouble(false); - CtuluValueEditorInteger integerEditor_ = new CtuluValueEditorInteger(false); - JComboBox cbVitesse_; - JComponent nbPoints_; + // results + // JPanel panelResults_; + /** + * Creation du panel graphique. + * + * @return + */ + // JPanel panelSegment_; + // finesse et duree et point + // private JPanel panelSeuil_; + // variables et pdt + // private JPanel panelVariables_; + TrPostSource source_; + CtuluValueEditorDouble doubleEditor_ = new CtuluValueEditorDouble(false); + CtuluValueEditorDouble doubleMarkEditor_ = new CtuluValueEditorDouble(false); + CtuluValueEditorInteger integerEditor_ = new CtuluValueEditorInteger(false); + JComboBox cbVitesse_; + JComponent nbPoints_; - // choix segment - JComponent x_; - JComponent x2_; - JComponent y_; - JComponent y2_; - CtuluValueTimeEditor dureeEditor_; + // choix segment + JComponent x_; + JComponent x2_; + JComponent y_; + JComponent y2_; + CtuluValueTimeEditor dureeEditor_; - /** - * Constructeur reserv\xE9 au calques - * - * @param _builderParams - * @param _calque - * @param _modelGraphe - * @param _panelVariables - * @param _source - */ - public TrPostTrajectoireTaskModel(final TrPostVisuPanel calque) { - calque_ = calque; - source_ = calque.getSource(); - int nbTimeStep = source_.getNbTimeStep(); - if (nbTimeStep < 2) choixMode_.setEnabled(false); - doubleEditor_.setFormatter(CtuluNumberFormatDefault.buildNoneFormatter(3, true)); - x_ = doubleEditor_.createEditorComponent(); - x2_ = doubleEditor_.createEditorComponent(); - y_ = doubleEditor_.createEditorComponent(); - y2_ = doubleEditor_.createEditorComponent(); + /** + * Constructeur reserv\xE9 au calques + * + * @param _builderParams + * @param _calque + * @param _modelGraphe + * @param _panelVariables + * @param _source + */ + public TrPostTrajectoireTaskModel(final TrPostVisuPanel calque) { + calque_ = calque; + source_ = calque.getSource(); + int nbTimeStep = source_.getNbTimeStep(); + if (nbTimeStep < 2) choixMode_.setEnabled(false); + doubleEditor_.setFormatter(CtuluNumberFormatDefault.buildNoneFormatter(3, true)); + x_ = doubleEditor_.createEditorComponent(); + x2_ = doubleEditor_.createEditorComponent(); + y_ = doubleEditor_.createEditorComponent(); + y2_ = doubleEditor_.createEditorComponent(); - dureeEditor_ = new CtuluValueTimeEditor(); - dureeEditor_.setFmt(source_.getTimeFormatter()); - duree_ = dureeEditor_.createEditorComponent(); - double defaut = 60; - if (nbTimeStep > 2) { - defaut = (source_.getTimeStep(nbTimeStep - 1) - source_.getTimeStep(0)) / 2; - } - dureeEditor_.setValue(defaut, duree_); - integerEditor_.setVal(BuValueValidator.MIN(1)); - integerEditor_.setEditable(true); - nbPoints_ = integerEditor_.createEditorComponent(); - finesse_ = integerEditor_.createEditorComponent(); - integerEditor_.setValue(Integer.valueOf(1), nbPoints_); - integerEditor_.setValue(Integer.valueOf(1), finesse_); - lineChooser_ = new MvLineChooser(calque.getSelectedLine(), calque); - // modelVariables_ = source_.getNewVarListModel();//doit contenir les vecteurs - modelPdt_ = source_.getNewTimeListModel(); + dureeEditor_ = new CtuluValueTimeEditor(); + dureeEditor_.setFmt(source_.getTimeFormatter()); + duree_ = dureeEditor_.createEditorComponent(); + double defaut = 60; + if (nbTimeStep > 2) { + defaut = (source_.getTimeStep(nbTimeStep - 1) - source_.getTimeStep(0)) / 2; + } + dureeEditor_.setValue(defaut, duree_); + integerEditor_.setVal(BuValueValidator.MIN(1)); + integerEditor_.setEditable(true); + nbPoints_ = integerEditor_.createEditorComponent(); + finesse_ = integerEditor_.createEditorComponent(); + integerEditor_.setValue(Integer.valueOf(1), nbPoints_); + integerEditor_.setValue(Integer.valueOf(1), finesse_); + lineChooser_ = new MvLineChooser(calque.getSelectedLine(), calque); + // modelVariables_ = source_.getNewVarListModel();//doit contenir les vecteurs + modelPdt_ = source_.getNewTimeListModel(); - // -- construction de la dialog --// - } + // -- construction de la dialog --// + } - private List<Coordinate> getPoints() { - Coordinate c = getFirsCoordinate(); - Coordinate cEnd = getEndCoordinate(); - int nbLigne = (Integer) integerEditor_.getValue(nbPoints_); - List<Coordinate> res = new ArrayList<Coordinate>(nbLigne); - if (c.distance(cEnd) < MAXDIST) { - res.add(c); - return res; - } - if (nbLigne == 1) { - c.x = (c.x + cEnd.x) / 2D; - c.y = (c.y + cEnd.y) / 2D; - res.add(c); - return res; - } - int nbIteration = nbLigne - 1; - double deltaX = (cEnd.x - c.x) / nbIteration; - double deltaY = (cEnd.y - c.y) / nbIteration; - res.add(c); - for (int i = 1; i < nbIteration; i++) { - Coordinate ci = new Coordinate(c.x + i * deltaX, c.y + i * deltaY); - res.add(ci); - } - res.add(cEnd); - return res; - } + /** + * reference du layer a ecraser dans le cas ou l'on rejoue les donn\xE9es. + * Null si utilisation classique. + */ + TrPostTrajectoireLineLayer layerAEcraser_=null; + /** + * Constructeur appel\xE9 pour rejouer les donn\xE9es. + * Passe en parametre la structure efTrajectoire qui contient toutes les infos de pr\xE9 remplissage + * @param calque + * @param dataReplay qui contient toutes les infos de pr\xE9 remplissage + * @param calqueAEcraser calque a ecraser en recopiant le r\xE9sultat par dessus + */ + public TrPostTrajectoireTaskModel(final TrPostVisuPanel calque,EfTrajectoireParameters dataReplay,TrPostTrajectoireLineLayer calqueAEcraser){ + this(calque); - private Coordinate getEndCoordinate() { - return new Coordinate(getDoubleValue(x2_), getDoubleValue(y2_)); - } + //-- on pr\xE9remplit les donn\xE9es avec les infos du dataReplay --// + layerAEcraser_=calqueAEcraser; - private Coordinate getFirsCoordinate() { - return new Coordinate(getDoubleValue(x_), getDoubleValue(y_)); - } + //-- on reinitialise les infos avec les donn\xE9es des trajectoires/lignes de courant. --// + //-- on initialise les params graphiques --// + getPanel(); + + //-- selection du vecteur vitesse --// + for(int k=0;k<cbVitesse_.getItemCount();k++) + if( ((TrPostFlecheContent) cbVitesse_.getItemAt(k)).getVx()== dataReplay.vx) + if( ((TrPostFlecheContent) cbVitesse_.getSelectedItem()).getVy()== dataReplay.vy) + cbVitesse_.setSelectedIndex(k); - public void actTask(final ProgressionInterface _prog, final CtuluAnalyze _analyze, final String[] _messages) { - // on recupere les points - List<Coordinate> points = getPoints(); - int idxRemove = 0; - // on enleve les points en dehors - for (Iterator<Coordinate> it = points.iterator(); it.hasNext();) { - Coordinate c = it.next(); - int idx = EfIndexHelper.getElementEnglobant(source_.getGrid(), c.x, c.y, _prog); - if (idx < 0) { - idxRemove++; - it.remove(); - } - } - // si pas de point pas de calcul - if (points.size() == 0) { - _analyze.addFatalError(TrResource.getS("Aucun point de d\xE9part n'appartient au maillage")); - return; - } - if (idxRemove > 0) { - String txt = null; - if (idxRemove == 1) { - txt = TrResource.getS("1 point de d\xE9part a \xE9t\xE9 ignor\xE9 car il en dehors du maillage"); - } else { - txt = TrResource.getS("{0} points de d\xE9part ont \xE9t\xE9 ignor\xE9s car ils en dehors du maillage", CtuluLibString - .getString(idxRemove)); - } - _messages[0] = txt; - } + //-- duree itegration --// + dureeEditor_.setValue( dataReplay.dureeIntegration_, duree_); - // creation de l algo - algoCalcul_ = new TrPostTrajectoireComputeAndDisplayActivity(calque_); + //-- finesse --// + integerEditor_.setValue( dataReplay.finesse_, finesse_); - final TrPostFlecheContent flecheContent = getSelectedVariable(); - final EfTrajectoireParameters data = new EfTrajectoireParameters(); - data.vx = flecheContent.getVx(); - data.vy = flecheContent.getVy(); - data.dureeIntegration_ = getDuree(); - data.finesse_ = (Integer) integerEditor_.getValue(finesse_); - data.firstTimeStepIdx_ = getSelectedTimeStep(); - data.firstTimeStep_ = source_.getTimeStep(data.firstTimeStepIdx_); - data.isLigneDeCourant = isLigneCourant(); - if (!listVar_.isSelectionEmpty()) { - Object[] selectedValues = listVar_.getSelectedValues(); - data.varsASuivre_ = new ArrayList<CtuluVariable>(selectedValues.length); - for (int i = 0; i < selectedValues.length; i++) { - data.varsASuivre_.add((CtuluVariable) selectedValues[i]); - } - } + //-- pas de temps initial --// + cbFirstTime_.setSelectedIndex(dataReplay.firstTimeStepIdx_); - data.points_ = points; - if (isMarqueurAvailable()) { - data.marqueur_ = new EfTrajectoireParametersMarqueur(); - data.marqueur_.timeStep_ = isMarqueurTimeStep(); - data.marqueur_.deltaMax_ = (Double) doubleMarkEditor_.getValue(markValue_); + //-- type traj ou ligne de courant --// + if(dataReplay.isLigneDeCourant) + choixMode_.setSelectedIndex(0); + else + choixMode_.setSelectedIndex(1); + + //-- choix des variables --// + if (dataReplay.varsASuivre_.size()>1) { - } - _messages[0] = algoCalcul_.computeLigneCourant(data, _analyze, _prog); + int[] indicesToselect=new int[dataReplay.varsASuivre_.size()]; + for(int i=0;i<dataReplay.varsASuivre_.size();i++){ + + for(int k=0;k<listVar_.getModel().getSize();k++){ + if(((CtuluVariable)listVar_.getModel().getElementAt(k))==dataReplay.varsASuivre_.get(i)) + indicesToselect[i]=k; + } + } + listVar_.setSelectedIndices(indicesToselect); + } + + //-- premier point --// + doubleEditor_.setValue(dataReplay.points_.get(0).x, x_); + doubleEditor_.setValue(dataReplay.points_.get(0).y, y_); - // -- mise a jour du tableau de res --// - // modelResult_.fireTableDataChanged(); + //-- dernier point --// + doubleEditor_.setValue(dataReplay.points_.get(dataReplay.points_.size()-1).x, x2_); + doubleEditor_.setValue(dataReplay.points_.get(dataReplay.points_.size()-1).y, y2_); + + //-- marqueurs --// + if(dataReplay.marqueur_ !=null){ + if(dataReplay.marqueur_.timeStep_) + cbMarks_.setSelectedIndex(1); + else + cbMarks_.setSelectedIndex(2); + + doubleMarkEditor_.setValue(dataReplay.marqueur_.deltaMax_, markValue_); + }else + cbMarks_.setSelectedIndex(0); + + } - } + private List<Coordinate> getPoints() { + Coordinate c = getFirsCoordinate(); + Coordinate cEnd = getEndCoordinate(); + int nbLigne = (Integer) integerEditor_.getValue(nbPoints_); + List<Coordinate> res = new ArrayList<Coordinate>(nbLigne); + if (c.distance(cEnd) < MAXDIST) { + res.add(c); + return res; + } + if (nbLigne == 1) { + c.x = (c.x + cEnd.x) / 2D; + c.y = (c.y + cEnd.y) / 2D; + res.add(c); + return res; + } + int nbIteration = nbLigne - 1; + double deltaX = (cEnd.x - c.x) / nbIteration; + double deltaY = (cEnd.y - c.y) / nbIteration; + res.add(c); + for (int i = 1; i < nbIteration; i++) { + Coordinate ci = new Coordinate(c.x + i * deltaX, c.y + i * deltaY); + res.add(ci); + } + res.add(cEnd); + return res; - JPanel content_; - JComponent markValue_; - JComboBox cbMarks_ = new JComboBox(new String[] { TrLib.getString("Aucun"), - TrLib.getString("A pas de temps constant"), TrLib.getString("A distance constante") }); + } - public boolean isMarqueurAvailable() { - return cbMarks_.getSelectedIndex() != 0; - } + private Coordinate getEndCoordinate() { + return new Coordinate(getDoubleValue(x2_), getDoubleValue(y2_)); + } - public boolean isMarqueurTimeStep() { - return cbMarks_.getSelectedIndex() == 1; - } + private Coordinate getFirsCoordinate() { + return new Coordinate(getDoubleValue(x_), getDoubleValue(y_)); + } - private JPanel buildMarqueur() { - doubleMarkEditor_.setVal(BuValueValidator.MIN(1E-4)); - final JPanel conteneur = new JPanel(new BuGridLayout(2, 3, 3)); - conteneur.setBorder(BorderFactory.createTitledBorder(TrResource.getS("Marqueurs"))); - conteneur.add(new JLabel(TrLib.getString("Type"))); - conteneur.add(cbMarks_); - conteneur.add(new JLabel(TrLib.getString("Delta (valeur absolue)"))); - markValue_ = doubleMarkEditor_.createEditorComponent(); - conteneur.add(markValue_); - markValue_.setEnabled(false); - cbMarks_.addItemListener(new ItemListener() { + public void actTask(final ProgressionInterface _prog, final CtuluAnalyze _analyze, final String[] _messages) { + // on recupere les points + List<Coordinate> points = getPoints(); + int idxRemove = 0; + // on enleve les points en dehors + for (Iterator<Coordinate> it = points.iterator(); it.hasNext();) { + Coordinate c = it.next(); + int idx = EfIndexHelper.getElementEnglobant(source_.getGrid(), c.x, c.y, _prog); + if (idx < 0) { + idxRemove++; + it.remove(); + } + } + // si pas de point pas de calcul + if (points.size() == 0) { + _analyze.addFatalError(TrResource.getS("Aucun point de d\xE9part n'appartient au maillage")); + return; + } + if (idxRemove > 0) { + String txt = null; + if (idxRemove == 1) { + txt = TrResource.getS("1 point de d\xE9part a \xE9t\xE9 ignor\xE9 car il en dehors du maillage"); + } else { + txt = TrResource.getS("{0} points de d\xE9part ont \xE9t\xE9 ignor\xE9s car ils en dehors du maillage", CtuluLibString + .getString(idxRemove)); + } + _messages[0] = txt; + } - public void itemStateChanged(ItemEvent _e) { - markValue_.setEnabled(isMarqueurAvailable()); - } - }); + //-- creation de la donn\xE9e persistante qui a permi de creer les infos --// + // TrPostTrajectoireLineLayerPersist persist=new TrPostTrajectoireLineLayerPersist(); + // persist.setPoint1(getFirsCoordinate()); + // persist.setPoint2(getEndCoordinate()); + // persist.setTrajectoire(isTrajectoire()); + // persist.setFinesse((Integer) integerEditor_.getValue(finesse_)); + // persist.setDureeCalcul(getDuree()); + // persist.setNbCesures((Integer)integerEditor_.getValue(nbPoints_)); + Object[] selectedValues = listVar_.getSelectedValues(); + // HashSet<String> listeVar= new HashSet<String>(); + // for(int i=0;i<selectedValues.length;i++) + // listeVar.add(((CtuluVariable)selectedValues[i]).getID()); + // persist.setListeVariablesId(listeVar); + // if(isMarqueurTimeStep()) + // persist.setTypeMarqueur(1); + // else if(isMarqueurAvailable()) + // persist.setTypeMarqueur(2); + // else + // persist.setTypeMarqueur(0); + // + // creation de l algo + if(layerAEcraser_!=null) + algoCalcul_ = new TrPostTrajectoireComputeAndDisplayActivity(calque_,layerAEcraser_); + else + algoCalcul_ = new TrPostTrajectoireComputeAndDisplayActivity(calque_); - return conteneur; - } + final TrPostFlecheContent flecheContent = getSelectedVariable(); + final EfTrajectoireParameters data = new EfTrajectoireParameters(); + data.vx = flecheContent.getVx(); + data.vy = flecheContent.getVy(); + data.dureeIntegration_ = getDuree(); + data.finesse_ = (Integer) integerEditor_.getValue(finesse_); + data.firstTimeStepIdx_ = getSelectedTimeStep(); + data.firstTimeStep_ = source_.getTimeStep(data.firstTimeStepIdx_); + data.isLigneDeCourant = isLigneCourant(); + if (!listVar_.isSelectionEmpty()) { - public boolean isSegmentValid() { - final boolean segValid = !doubleEditor_.isEmpty(x_) && !doubleEditor_.isEmpty(x2_) && !doubleEditor_.isEmpty(y2_) - && !doubleEditor_.isEmpty(y_); - return segValid && integerEditor_.getValue(nbPoints_) != null; - } + data.varsASuivre_ = new ArrayList<CtuluVariable>(selectedValues.length); + for (int i = 0; i < selectedValues.length; i++) { + data.varsASuivre_.add((CtuluVariable) selectedValues[i]); + } + } - public double getDoubleValue(final JComponent c) { - return ((Double) doubleEditor_.getValue(c)).doubleValue(); - } + data.points_ = points; + if (isMarqueurAvailable()) { + data.marqueur_ = new EfTrajectoireParametersMarqueur(); + data.marqueur_.timeStep_ = isMarqueurTimeStep(); + data.marqueur_.deltaMax_ = (Double) doubleMarkEditor_.getValue(markValue_); - protected void updateView(final boolean _zoom) { - if (isSegmentValid()) { - lineChooser_.update(GISGeometryFactory.INSTANCE.createSegment(getDoubleValue(x_), getDoubleValue(y_), - getDoubleValue(x2_), getDoubleValue(y2_)), _zoom); - } - } + } + _messages[0] = algoCalcul_.computeLigneCourant(calque_,data, _analyze, _prog); - private JPanel buildSegments() { + // -- mise a jour du tableau de res --// + // modelResult_.fireTableDataChanged(); - final JPanel conteneur = new JPanel(new BuGridLayout(3, 5, 5, false, false, false, false, false)); - conteneur.setBorder(BorderFactory.createTitledBorder(TrResource.getS("Choix du segment"))); - conteneur.add(new JLabel("")); - conteneur.add(new JLabel("x:")); - conteneur.add(new JLabel("y:")); - conteneur.add(new JLabel("Point 1:")); - conteneur.add(x_); - conteneur.add(y_); - conteneur.add(new JLabel("Point 2:")); - conteneur.add(x2_); - conteneur.add(y2_); - conteneur.add(new JLabel("Nombre de trajectoire/lignes de courant:")); - conteneur.add(nbPoints_); - final LineString initSelected = lineChooser_.getInitSelected(); - if (initSelected != null) { - final int nbCoordinate = initSelected.getNumPoints(); - doubleEditor_.setValue(initSelected.getCoordinateSequence().getX(0), x_); - doubleEditor_.setValue(initSelected.getCoordinateSequence().getY(0), y_); - doubleEditor_.setValue(initSelected.getCoordinateSequence().getX(nbCoordinate - 1), x2_); - doubleEditor_.setValue(initSelected.getCoordinateSequence().getY(nbCoordinate - 1), y2_); - updateView(false); - } - JPanel mainSegment = new JPanel(new BuVerticalLayout(5, false, true)); - mainSegment.add(conteneur); - JPanel pn = new JPanel(new BuGridLayout(3, 2, 0)); - JButton bt = new JButton(TrLib.getString("zoomer sur le segment")); - bt.addActionListener(new ActionListener() { - public void actionPerformed(final ActionEvent _e) { - updateView(true); + } - } - }); - pn.add(bt); - bt = new JButton(TrLib.getString("Zoom initial")); - bt.addActionListener(new ActionListener() { - public void actionPerformed(final ActionEvent _e) { - lineChooser_.zoomInitial(); + JPanel content_; + JComponent markValue_; + JComboBox cbMarks_ = new JComboBox(new String[] { TrLib.getString("Aucun"), + TrLib.getString("A pas de temps constant"), TrLib.getString("A distance constante") }); - } - }); - pn.add(bt); - bt = new JButton(EbliLib.getS("Restaurer")); - bt.addActionListener(new ActionListener() { - public void actionPerformed(final ActionEvent _e) { - lineChooser_.restaurer(); + public boolean isMarqueurAvailable() { + return cbMarks_.getSelectedIndex() != 0; + } - } - }); - pn.add(bt); - mainSegment.add(pn); - return mainSegment; - } + public boolean isMarqueurTimeStep() { + return cbMarks_.getSelectedIndex() == 1; + } - private JPanel buildVariables() { - final JPanel conteneur = new JPanel(new BorderLayout()); - listVar_ = new JList(source_.getNewVarListModel()); - listVar_.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); - conteneur.add(new JScrollPane(listVar_)); - conteneur.setBorder(BorderFactory.createTitledBorder(TrResource.getS("Choix des variables"))); - return conteneur; - } + private JPanel buildMarqueur() { + doubleMarkEditor_.setVal(BuValueValidator.MIN(1E-4)); + final JPanel conteneur = new JPanel(new BuGridLayout(2, 3, 3)); + conteneur.setBorder(BorderFactory.createTitledBorder(TrResource.getS("Marqueurs"))); + conteneur.add(new JLabel(TrLib.getString("Type"))); + conteneur.add(cbMarks_); + conteneur.add(new JLabel(TrLib.getString("Delta (valeur absolue)"))); + markValue_ = doubleMarkEditor_.createEditorComponent(); + conteneur.add(markValue_); + markValue_.setEnabled(false); + cbMarks_.addItemListener(new ItemListener() { - public void decoreBtApply(final JButton _bt) { - _bt.setText(TrLib.getString("Calculer")); - } + public void itemStateChanged(ItemEvent _e) { + markValue_.setEnabled(isMarqueurAvailable()); - public int getNbMessageMax() { - return 1; - } + } + }); - public JComponent getPanel() { - if (content_ != null) return content_; - content_ = new BuPanel(new BuVerticalLayout(5)); - content_.add(buildMainProperties()); + return conteneur; + } - // -- panel des segements --// - content_.add(buildSegments()); - // -- panel des variables --// - content_.add(buildVariables()); - content_.add(buildMarqueur()); - return content_; - } + public boolean isSegmentValid() { + final boolean segValid = !doubleEditor_.isEmpty(x_) && !doubleEditor_.isEmpty(x2_) && !doubleEditor_.isEmpty(y2_) + && !doubleEditor_.isEmpty(y_); + return segValid && integerEditor_.getValue(nbPoints_) != null; + } - private JPanel buildMainProperties() { - JPanel pn = new JPanel(new BuGridLayout(2, 5, 5)); - pn.add(new JLabel(TrResource.getS("Mode"))); - pn.add(choixMode_); - pn.add(new JLabel(TrResource.getS("Vecteur"))); - ListModel flecheListModel = source_.getNewFlecheListModel(); - CtuluComboBoxModelAdapter cb = new CtuluComboBoxModelAdapter(flecheListModel); - cbVitesse_ = new BuComboBox(cb); - cb.setSelectedItem(flecheListModel.getElementAt(0)); - // on s\xE9lectionne la vitesse par defaut - if (flecheListModel.getSize() > 1) { - for (int i = flecheListModel.getSize() - 1; i >= 0; i--) { - TrPostFlecheContent flecheContent = (TrPostFlecheContent) flecheListModel.getElementAt(i); - if (flecheContent.getVar() == H2dVariableType.VITESSE) { - cb.setSelectedItem(flecheListModel.getElementAt(i)); - break; - } - } - } - pn.add(cbVitesse_); - pn.add(new JLabel(TrResource.getS("Pas de temps intial"))); - cbFirstTime_ = new BuComboBox(new CtuluComboBoxModelAdapter(source_.getNewTimeListModel())); - cbFirstTime_.setSelectedIndex(0); - pn.add(cbFirstTime_); - pn.add(new JLabel(TrResource.getS("Dur\xE9e d'int\xE9gration:"))); - pn.add(duree_); - pn.add(new JLabel(TrResource.getS("Finesse:"))); - ... [truncated message content] |
From: <bma...@us...> - 2009-01-23 16:12:48
|
Revision: 4396 http://fudaa.svn.sourceforge.net/fudaa/?rev=4396&view=rev Author: bmarchan Date: 2009-01-23 16:12:37 +0000 (Fri, 23 Jan 2009) Log Message: ----------- Task#36: Possibilit?\195?\169 d'accrocher les sommets des g?\195?\169om?\195?\169tries lors de la cr?\195?\169ation de g?\195?\169om?\195?\169trie ou lors du calcul de distance. 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/ZCalqueAffichageDonneesAbstract.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/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/ZEbliCalquePanelController.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquesPanel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleDonnees.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleDonneesVide.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleDonnesAbstract.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleFlecheForGrille.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleGeometry.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleStatiquePoint.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueDistanceInteraction.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueEditionInteraction.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditionAttibutesContainer.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditionAttributesDataI.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleGeometryDefault.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/EbliListeSelectionMulti.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/model/MvEdgeModelDefault.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/reflux/RefluxMaillage.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/reflux/RefluxModeleNoeud.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigLineSingleModel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSIgImageWizartStepCalageUI.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiFlecheModel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/post/TrIsoModelEltDataAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/post/TrPostFlecheModel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/reflux/TrBcNodeLayer.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/telemac/TrTelemacSourceModel.java Added Paths: ----------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueCatchInteraction.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCatchEvent.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCatchListener.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZSceneSelection.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/ressource/curseur_accroche.gif Property Changed: ---------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleDonneesVide.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleDonnesAbstract.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleFlecheForGrille.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleStatiquePoint.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueEditionInteraction.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditionAttibutesContainer.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZEditionAttributesDataI.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/commun/EbliListeSelectionMulti.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/meshviewer/model/MvEdgeModelDefault.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/reflux/RefluxMaillage.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/reflux/RefluxModeleNoeud.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/FSigLineSingleModel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSIgImageWizartStepCalageUI.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/data/TrSiFlecheModel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/post/TrIsoModelEltDataAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/post/TrPostFlecheModel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/reflux/TrBcNodeLayer.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/telemac/TrTelemacSourceModel.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-01-23 10:39:23 UTC (rev 4395) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonnees.java 2009-01-23 16:12:37 UTC (rev 4396) @@ -230,16 +230,16 @@ * * @param _pt coordonnees reelles * @param _tolerance - * @return la liste des indexs selectionnes (ou null si aucune selection) + * @return la liste des index des objets selectionnes (ou null si aucune selection) */ public abstract CtuluListSelection selection(GrPoint _pt, int _tolerance); /** - * renvoie la liste des points selectionnes par le polygone <code>_poly</code>. + * renvoie la liste des objets selectionnes par le polygone <code>_poly</code>. * * @param _poly le polygone EN coordonnees reelles * @param _mode TODO - * @return la liste des indexs ( ou null si aucun selectionne). + * @return la liste des indexs des objets selectionn\xE9s ( ou null si aucun selectionne). */ public abstract CtuluListSelection selection(LinearRing _poly, int _mode); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesAbstract.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesAbstract.java 2009-01-23 10:39:23 UTC (rev 4395) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesAbstract.java 2009-01-23 16:12:37 UTC (rev 4396) @@ -29,6 +29,7 @@ import org.fudaa.ebli.controle.BSelecteurLineModel; import org.fudaa.ebli.geometrie.GrBoite; import org.fudaa.ebli.geometrie.GrMorphisme; +import org.fudaa.ebli.geometrie.GrPoint; import org.fudaa.ebli.palette.BPalettePlage; import org.fudaa.ebli.palette.BPalettePlageAbstract; import org.fudaa.ebli.palette.BPalettePlageDiscret; @@ -292,6 +293,10 @@ public EbliListeSelectionMultiInterface getLayerSelectionMulti() { return null; } + + public EbliListeSelectionMultiInterface selectionMulti(GrPoint _ptReel, int _tolerancePixel, boolean _inDepth) { + return null; + } public BPalettePlageInterface getPaletteCouleur() { return paletteCouleur_; 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-01-23 10:39:23 UTC (rev 4395) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueAffichageDonneesInterface.java 2009-01-23 16:12:37 UTC (rev 4396) @@ -129,6 +129,19 @@ boolean changeSelection(LinearRing[] _p, int _action, int _mode); /** + * Retourne les indices de selection des sous objets selectionn\xE9s pour le point donn\xE9, sous la forme d'une liste de selection. + * La selection s'effectue du point le plus au dessus vers le point le plus en dessous.<p> + * Le plus souvent les sous objets selectionn\xE9s sont des sommets (points). + * + * @param _ptReel Le point donn\xE9 pour la selection. + * @param _tolerancePixel La tol\xE9rance, en pixels. + * @param _inDepth Si faux, la recherche s'arrete a la premi\xE8re occurence trouv\xE9e. Sinon, la recherche continue pour tous les + * points suceptibles d'etre selectionn\xE9s. + * @return Les indices des sous objets selectionn\xE9s, ou null si aucune selection. + */ + EbliListeSelectionMultiInterface selectionMulti(GrPoint _ptReel, int _tolerancePixel, boolean _inDepth); + + /** * @return la ligne repr\xE9sentant la s\xE9lection courant. null si s\xE9lection non adequate */ LineString getSelectedLine(); Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueCatchInteraction.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueCatchInteraction.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueCatchInteraction.java 2009-01-23 16:12:37 UTC (rev 4396) @@ -0,0 +1,250 @@ +/* + * @file BCalqueSuiviSourisInteraction.java + * @creation 1998-10-16 + * @modification $Date: 2006-09-19 14:55:46 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.ebli.calque; + +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.awt.event.MouseMotionListener; +import java.util.HashSet; + +import org.fudaa.ebli.geometrie.GrPoint; +/** + * Un calque pour accrocher les objets de la scene. Si la scene n'existe pas, pas d'objets accroch\xE9. + * Des modificateurs permettent l'accrochage ou non (key SHIFT). + * + * @author Bertrand Marchand + * @version $Id$ + */ +public class ZCalqueCatchInteraction extends BCalqueInteraction implements + MouseMotionListener, MouseListener, KeyListener { + + /** La tol\xE9rance en pixels pour l'accrochage */ + private static int tolerancePixel_=4; + /** La scene */ + private ZScene scene_; + /** Un point temporaire remis a jour a chaque mouvement de souris */ + private GrPoint ptTmp_=new GrPoint(); + /** True si le mode d'accrochage est actif */ + private boolean bcatch_=true; + /** Les listeners de l'accrochage */ + private HashSet<ZCatchListener> listeners_=new HashSet<ZCatchListener>(); + /** La liste de selection des points d'accrochage */ + private ZSceneSelection selAccroch_=null; + /** Le tableau des indices de g\xE9om\xE9tries accroch\xE9es */ + private int[] idxGeoms_; + /** Le tableau des indices de sommets accroch\xE9s */ + private int[] idxVertices_; + /** L'indice sur les indices de g\xE9om\xE9tries */ + private int iidxGeom_=-1; + /** L'indice sur les indices de vertices */ + private int iidxVertex_=-1; + + public ZCalqueCatchInteraction() {} + + /** + * Methode inactive. + */ + public void mouseDown(final MouseEvent _evt){} + + /** + * Methode inactive. + */ + public void mouseEntered(final MouseEvent _evt){} + + /** + * Methode inactive. + */ + public void mouseExited(final MouseEvent _evt){} + + /** + * Methode inactive. + */ + public void mousePressed(final MouseEvent _evt){} + + /** + * Methode inactive. + */ + public void mouseReleased(final MouseEvent _evt){} + + /** + * Methode inactive. + */ + public void mouseUp(final MouseEvent _evt){} + + /** + * Methode inactive. + */ + public void mouseClicked(final MouseEvent _evt){} + + /** + * Appelle la methode <I>mouseMoved</I>. + */ + public void mouseDragged(final MouseEvent _evt){ + mouseMoved(_evt); + } + + /** + * Envoi d'un evenement <I>ZCatchEvent</I> (en mode non gele). + */ + public void mouseMoved(final MouseEvent _evt){ + ptTmp_.x_=_evt.getX(); + ptTmp_.y_=_evt.getY(); + + if (!isGele() && scene_!=null && bcatch_) { + mouseMoved(ptTmp_); + } + } + + /** + * Recherche les points a accrocher. Propose par defaut le plus en avant. + * @param _pt + */ + public void mouseMoved(GrPoint _pt) { + if (scene_==null) return; + + int idxGeomOld=-1; + int idxVertexOld=-1; + if (iidxGeom_!=-1) { + idxGeomOld=idxGeoms_[iidxGeom_]; + idxVertexOld=idxVertices_[iidxVertex_]; + } + + selAccroch_=scene_.selection(_pt.applique(getVersReel()), tolerancePixel_); + idxGeoms_=selAccroch_.getIdxSelected(); + + int igeom=-1; + int ivertex=-1; + + if (idxGeoms_.length!=0) { + igeom=0; + // Recherche dans le nouveau tableau de l'indice. + if (idxGeomOld!=-1) { + for (int i=0; i<idxGeoms_.length; i++) { + if (idxGeoms_[i]==idxGeomOld) { + igeom=i; + break; + } + } + } + idxVertices_=selAccroch_.getSelection(idxGeoms_[igeom]).getSelectedIndex(); + if (idxVertices_.length!=0) { + ivertex=0; + } + // Recherche dans le nouveau tableau de l'indice. + if (idxVertexOld!=-1) { + for (int i=0; i<idxVertices_.length; i++) { + if (idxVertices_[i]==idxGeomOld) { + ivertex=i; + break; + } + } + } + } + + if (ivertex==-1) { + if (iidxVertex_!=-1) { + fireCatchEvent(ZCatchEvent.UNCAUGHT,0,0); + } + } + else if (iidxVertex_==-1) { + if (ivertex!=-1) { + fireCatchEvent(ZCatchEvent.CAUGHT,idxGeoms_[igeom],idxVertices_[ivertex]); + } + } + else if (idxGeomOld!=idxGeoms_[igeom] || idxVertexOld!=idxVertices_[ivertex]) { + fireCatchEvent(ZCatchEvent.UNCAUGHT,0,0); + fireCatchEvent(ZCatchEvent.CAUGHT,idxGeoms_[igeom],idxVertices_[ivertex]); + } + + iidxGeom_=igeom; + iidxVertex_=ivertex; + } + + /** + * Definit la tol\xE9rence d'accrocahge. + * @param _tolPixel La tolerance, en pixel. + */ + public void setTolerance(int _tolPixel) { + tolerancePixel_=_tolPixel; + } + + /** + * Definit la scene. + * @param _scn La scene. + */ + public void setScene(ZScene _scn) { + scene_=_scn; + } + + public void addCatchListener(ZCatchListener _l) { + listeners_.add(_l); + } + + public void removeCatchListener(ZCatchListener _l) { + listeners_.remove(_l); + } + + /** + * Notification des listeners. + * @param _type Le type d'evenement. + * @param _pt Le point d'accrochage. + */ + public void fireCatchEvent(int _type, int _idxGeom, int _idxVertex) { + ZCatchEvent evt=new ZCatchEvent(this,_type,selAccroch_,_idxGeom,_idxVertex); + for (ZCatchListener l : listeners_) { + l.catchChanged(evt); + } + } + + /** + * Gere le SHIFT et le TAB.<p> + * SHIFT : pour inactiver le mode d'accrochage, + * TAB : Pour switcher de point accroch\xE9. + */ + public void keyPressed(KeyEvent e) { + if (e.getKeyCode()==KeyEvent.VK_SHIFT) { + bcatch_=false; + fireCatchEvent(ZCatchEvent.UNCAUGHT,0,0); + } + if (e.getKeyCode()==KeyEvent.VK_N) { + if (selAccroch_.getNbSelectedItem()>1) { + iidxVertex_++; + if (iidxVertex_==idxVertices_.length) { + iidxVertex_=0; + iidxGeom_++; + if (iidxGeom_==idxGeoms_.length) { + iidxGeom_=0; + } + idxVertices_=selAccroch_.getSelection(idxGeoms_[iidxGeom_]).getSelectedIndex(); + } + fireCatchEvent(ZCatchEvent.CAUGHT, idxGeoms_[iidxGeom_],idxVertices_[iidxVertex_]); + } + } + } + + /** + * Gere le SHIFT.<p> + * SHIFT : pour reactiver le mode d'accrochage + */ + public void keyReleased(KeyEvent e) { + if (e.getKeyCode()==KeyEvent.VK_SHIFT) { + bcatch_=true; + iidxVertex_=-1; + iidxGeom_=-1; + mouseMoved(ptTmp_); + } + } + + /** + * Methode inactive. + */ + public void keyTyped(KeyEvent e) {} +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueCatchInteraction.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native 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-01-23 10:39:23 UTC (rev 4395) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueGeometry.java 2009-01-23 16:12:37 UTC (rev 4396) @@ -198,7 +198,7 @@ if (!isSelectable()) return false; if (isAtomicMode_) { - final EbliListeSelectionMulti l = selectionMulti(_pt, _tolerancePixel); + final EbliListeSelectionMulti l = selectionMulti(_pt, _tolerancePixel, false); changeSelectionMulti(l, _action); if ((l == null) || (l.isEmpty())) { return false; @@ -790,42 +790,44 @@ return r; } - /** - * Renvoie la liste des objets selectionnees pour le point <code>_pt</code> avec pour tolerance - * <code>_tolerance</code>. - * - * @param _pt - * @param _tolerance - * @return la liste des indexs selectionnes (ou null si aucune selection) - */ - public EbliListeSelectionMulti selectionMulti(final GrPoint _pt, final int _tolerance) { + public EbliListeSelectionMulti selectionMulti(final GrPoint _ptReel, final int _tolerancePixel, boolean _inDepth) { final GrMorphisme versReel = getVersReel(); GrBoite bClip = getDomaine(); - if (bClip == null || (!bClip.contientXY(_pt)) && (bClip.distanceXY(_pt) > _tolerance)) { + if (bClip == null || (!bClip.contientXY(_ptReel)) && (bClip.distanceXY(_ptReel) > _tolerancePixel)) { return null; } - final double distanceReel = GrMorphisme.convertDistanceXY(versReel, _tolerance); + final double distanceReel = GrMorphisme.convertDistanceXY(versReel, _tolerancePixel); bClip = getClipReel(getGraphics()); final GrPoint p = new GrPoint(); final GrBoite btLigne = new GrBoite(); + + EbliListeSelectionMulti sel=null; for (int i = modele_.getNombre() - 1; i >= 0; i--) { if (!modele_.isGeometryVisible(i)) continue; modele_.getDomaineForGeometry(i, btLigne); - if (btLigne.contientXY(_pt) || btLigne.distanceXY(_pt) < distanceReel) { + if (btLigne.contientXY(_ptReel) || btLigne.distanceXY(_ptReel) < distanceReel) { for (int j = modele_.getNbPointForGeometry(i) - 1; j >= 0; j--) { modele_.point(p, i, j); - if (bClip.contientXY(p) && (p.distanceXY(_pt) < distanceReel)) { - final EbliListeSelectionMulti r = new EbliListeSelectionMulti(1); - r.set(i, j); - return r; + if (bClip.contientXY(p) && (p.distanceXY(_ptReel) < distanceReel)) { + if (sel==null) + sel = new EbliListeSelectionMulti(1); + sel.add(i, j); + if (!_inDepth) + return sel; } } } } - return null; + return sel; } + /** + * Renvoie sous forme de liste de selection les sommets selectionnes pour la polyligne <code>_poly</code>. + * + * @param _poly Le point pour la selection + * @return la liste des indexs selectionnes (ou null si aucune selection) + */ public EbliListeSelectionMulti selectionMulti(final LinearRing _poly) { if (modele_.getNombre() == 0 || !isVisible()) { return null; 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-01-23 10:39:23 UTC (rev 4395) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCalqueLigneBrisee.java 2009-01-23 16:12:37 UTC (rev 4396) @@ -226,7 +226,7 @@ if (!isSelectable()) return false; if (isAtomicMode_) { - final EbliListeSelectionMulti l = selectionMulti(_pt, _tolerancePixel); + final EbliListeSelectionMulti l = selectionMulti(_pt, _tolerancePixel, false); changeSelectionMulti(l, _action); if ((l == null) || (l.isEmpty())) { return false; @@ -875,40 +875,36 @@ return r; } - /** - * Renvoie la liste des objets selectionnees pour le point <code>_pt</code> avec pour tolerance - * <code>_tolerance</code>. - * - * @param _pt - * @param _tolerance - * @return la liste des indexs selectionnes (ou null si aucune selection) - */ - public EbliListeSelectionMulti selectionMulti(final GrPoint _pt, final int _tolerance) { + public EbliListeSelectionMulti selectionMulti(final GrPoint _ptReel, final int _tolerancePixel, boolean _inDepth) { final GrMorphisme versReel = getVersReel(); GrBoite bClip = getDomaine(); - if (bClip == null || (!bClip.contientXY(_pt)) && (bClip.distanceXY(_pt) > _tolerance)) { + if (bClip == null || (!bClip.contientXY(_ptReel)) && (bClip.distanceXY(_ptReel) > _tolerancePixel)) { return null; } - final double distanceReel = GrMorphisme.convertDistanceXY(versReel, _tolerance); + final double distanceReel = GrMorphisme.convertDistanceXY(versReel, _tolerancePixel); bClip = getClipReel(getGraphics()); final GrPoint p = new GrPoint(); final GrBoite btLigne = new GrBoite(); + + EbliListeSelectionMulti sel=null; for (int i = modele_.getNombre() - 1; i >= 0; i--) { if (!modele_.isGeometryVisible(i)) continue; modele_.getDomaineForGeometry(i, btLigne); - if (btLigne.contientXY(_pt) || btLigne.distanceXY(_pt) < distanceReel) { + if (btLigne.contientXY(_ptReel) || btLigne.distanceXY(_ptReel) < distanceReel) { for (int j = modele_.getNbPointForGeometry(i) - 1; j >= 0; j--) { modele_.point(p, i, j); - if (bClip.contientXY(p) && (p.distanceXY(_pt) < distanceReel)) { - final EbliListeSelectionMulti r = new EbliListeSelectionMulti(1); - r.set(i, j); - return r; + if (bClip.contientXY(p) && (p.distanceXY(_ptReel) < distanceReel)) { + if (sel==null) + sel = new EbliListeSelectionMulti(1); + sel.add(i, j); + if (!_inDepth) + return sel; } } } } - return null; + return sel; } public EbliListeSelectionMulti selectionMulti(final LinearRing _poly) { @@ -953,7 +949,7 @@ } return r; } - + /** * D\xE9finit que les modifications d'objets auront lieu en mode atomique. * @param _new true : Modifications en mode atomique. Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCatchEvent.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCatchEvent.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCatchEvent.java 2009-01-23 16:12:37 UTC (rev 4396) @@ -0,0 +1,50 @@ +/* + * @creation 21 janv. 2009 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2009 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.ebli.calque; + +import java.util.EventObject; + +import org.fudaa.ebli.geometrie.GrPoint; + +/** + * Un evenement envoy\xE9 par le calque d'interaction d'accrochage si un sommet de g\xE9om\xE9trie a \xE9t\xE9 + * accroch\xE9 ou d\xE9ccroch\xE9 {@link ZCalqueCatchInteraction}. + * @author Bertrand Marchand + * @version $Id:$ + */ +public class ZCatchEvent extends EventObject { + /** Le type d'evement pour un accrochage */ + public static int CAUGHT=0; + /** Le type d'evenement pour un d\xE9ccrochage */ + public static int UNCAUGHT=1; + + /** Le type de l'evenement */ + public int type; + /** La liste de selection */ + public ZSceneSelection selection; + /** L'indice de g\xE9ometrie accroch\xE9e */ + public int idxGeom; + /** L'indice de sommet accroch\xE9 */ + public int idxVertex; + + /** + * Construction d'un evenement d'a&ccrochage + * @param _src Le calque ayant d\xE9clench\xE9 cet evenement. + * @param _type Le type de l'evenement + * @param _selection La liste de selection + * @param _idxGeom L'indice de g\xE9ometrie accroch\xE9e + * @param _idxVertex L'indice de sommet accroch\xE9 + */ + public ZCatchEvent(Object _src, int _type, ZSceneSelection _selection, int _idxGeom, int _idxVertex) { + super(_src); + type=_type; + selection=_selection; + idxGeom=_idxGeom; + idxVertex=_idxVertex; + } +} \ No newline at end of file Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCatchEvent.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCatchListener.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCatchListener.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCatchListener.java 2009-01-23 16:12:37 UTC (rev 4396) @@ -0,0 +1,23 @@ +/* + * @creation 21 janv. 2009 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2009 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.ebli.calque; + +/** + * Une interface qu'un calque d'interaction doit implementer pour gerer l'accrochage sur des + * objets. + * @author Bertrand Marchand + * @version $Id:$ + */ +public interface ZCatchListener { + + /** + * L'accrochage a chang\xE9. Par exemple, le point accroch\xE9 n'est plus le m\xEAme. + * @param _evt L'evenement suite a un accrochage. + */ + public void catchChanged(ZCatchEvent _evt); +} \ No newline at end of file Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZCatchListener.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquePanelController.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquePanelController.java 2009-01-23 10:39:23 UTC (rev 4395) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquePanelController.java 2009-01-23 16:12:37 UTC (rev 4396) @@ -8,6 +8,7 @@ package org.fudaa.ebli.calque; import java.awt.Cursor; +import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.beans.PropertyChangeEvent; @@ -39,10 +40,12 @@ import org.fudaa.ebli.commun.EbliActionPaletteSpecAbstract; import org.fudaa.ebli.commun.EbliActionSimple; import org.fudaa.ebli.commun.EbliComponentFactory; +import org.fudaa.ebli.commun.EbliFormatter; import org.fudaa.ebli.commun.EbliFormatterInterface; import org.fudaa.ebli.commun.EbliLib; import org.fudaa.ebli.controle.BConfigurePaletteAction; import org.fudaa.ebli.geometrie.GrBoite; +import org.fudaa.ebli.geometrie.GrPoint; import org.fudaa.ebli.palette.BPaletteInfoAbstractAction; import org.fudaa.ebli.palette.PaletteEditAction; import org.fudaa.ebli.repere.BControleRepereTexte; @@ -127,10 +130,41 @@ } } + class ControllerCatchListener implements ZCatchListener { + public void catchChanged(ZCatchEvent _evt) { + // Si le calque interactif courant n'est pas un calque gerant l'accrochage, on passe. + // TODO : Le calque interactif d'accrochage pourrait n'etre actif que si le calque courant interactif est un calque + // implementant ZCatchListener + if (cqInteractionActif_==null || !(cqInteractionActif_ instanceof ZCatchListener)) return; + + pn_.getVueCalque().setCursor(_evt.type==ZCatchEvent.CAUGHT ? CURSOR_ACC:cqInteractionActif_.getSpecificCursor()); + + if (_evt.type==ZCatchEvent.CAUGHT) { + GrPoint pt=_evt.selection.getScene().getVertex(_evt.idxGeom,_evt.idxVertex); + + String idxGeom=""+(_evt.selection.getScene().sceneId2LayerId(_evt.idxGeom)+1); + String idxVertex=""+(_evt.idxVertex+1); + String cqName=_evt.selection.getScene().getLayerForId(_evt.idxGeom).getTitle(); + String x=getEbliFormatter().getXYFormatter().format(pt.x_); + String y=getEbliFormatter().getXYFormatter().format(pt.y_); + String z=getEbliFormatter().getXYFormatter().format(pt.z_); + + String[] vars={cqName,idxGeom,idxVertex,x,y,z}; + String text= + EbliResource.EBLI.getString("Accroche : Calque={0}, Geom={1}, Sommet={2}, X={3}, Y={4}, Z={5} (n: Suivant)", vars); + pn_.setInfoText(text); + } + else + pn_.unsetInfoText(); + } + + } /** * Identifiant pour les propri\xE9t\xE9s concernant l'\xE9tat d'un calque d'interaction. */ public final static String STATE = "state"; + /** Un curseur specifique pour l'accrochage. */ + public static final Cursor CURSOR_ACC=EbliResource.EBLI.getCursor("curseur_accroche", -1, new Point(1, 1)); protected static EbliActionInterface[] removePaletteAction(final EbliActionInterface[] _i) { if (_i == null) { @@ -157,7 +191,8 @@ protected EbliActionInterface[] standardActionGroup_; ZCalqueSelectionInteractionAbstract cqSelectionI_; - + /** Le calque interactif d'accrochage */ + ZCalqueCatchInteraction cqCatchI_; BPaletteInfoAbstractAction infoPalette_; CalqueInteractionListener interactionListener_; @@ -422,8 +457,8 @@ cqAdmin_.setName("cqADMIN"); cqAdmin_.setTitle(EbliResource.EBLI.getString("Administration")); cqAdmin_.setDestructible(false); + // le calque etl'affichage du suivi des coordonnees. - final BCalqueSuiviSourisInteraction suivi = new BCalqueSuiviSourisInteraction(); suivi.setTitle(EbliResource.EBLI.getString("Position")); suivi.setName("cqPOSITION"); @@ -433,6 +468,18 @@ // setCalqueInteractionExclusif(suivi, false); addCalqueInteraction(suivi); // cqAdmin_.add(suivi); + + // Le calque d'accrochage + // Attention : L'ajout du calque en premier est tr\xE8s important, l'accrochage ne + // fonctionne que si ce calque recoit les evenements MouseEvent en premier lors de la propagation. + cqCatchI_=new ZCalqueCatchInteraction(); + cqCatchI_.setTitle(EbliResource.EBLI.getString("Accrochage")); + cqCatchI_.setName("cqACCROCHAGE"); + cqCatchI_.setDestructible(false); + cqCatchI_.addCatchListener(new ControllerCatchListener()); + pn_.getVueCalque().addKeyListener(cqCatchI_); + addCalqueInteraction(cqCatchI_); + // S\xE9lection cqSelectionI_ = new ZCalqueSelectionInteractionSimple(); // cqSelectionI_ = new ZCalqueSelectionInteractionMulti(); @@ -470,6 +517,10 @@ interactionListener_ = new CalqueInteractionListener(); } _b.addPropertyChangeListener("gele", interactionListener_); + + if (_b instanceof ZCatchListener) { + cqCatchI_.addCatchListener((ZCatchListener)_b); + } } public BCalqueInteraction getCalqueInteraction(String name){ @@ -596,6 +647,10 @@ public final ZCalqueSelectionInteractionAbstract getCqSelectionI() { return cqSelectionI_; } + + public final ZCalqueCatchInteraction getCqCatchI() { + return cqCatchI_; + } public final EbliFormatterInterface getEbliFormatter() { return suiviSouris_.format(); @@ -630,6 +685,10 @@ _b.removePropertyChangeListener("gele", interactionListener_); } cqAdmin_.remove(_b); + + if (_b instanceof ZCatchListener) { + cqCatchI_.removeCatchListener((ZCatchListener)_b); + } } public void restaurer() { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquesPanel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquesPanel.java 2009-01-23 10:39:23 UTC (rev 4395) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZEbliCalquesPanel.java 2009-01-23 16:12:37 UTC (rev 4396) @@ -399,6 +399,7 @@ gisEditor_=createGisEditor(); controller_.getCqSelectionI().setEditor(gisEditor_); + controller_.getCqCatchI().setScene(scene_); } protected ZEditorDefault createGisEditor() { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleDonnees.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleDonnees.java 2009-01-23 10:39:23 UTC (rev 4395) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleDonnees.java 2009-01-23 16:12:37 UTC (rev 4396) @@ -9,6 +9,7 @@ package org.fudaa.ebli.calque; import org.fudaa.ebli.geometrie.GrBoite; +import org.fudaa.ebli.geometrie.GrPoint; import com.memoire.bu.BuTable; @@ -56,4 +57,12 @@ */ Object getObject(int _ind); + /** + * Retourne le sommet 3D d'indice _idVertex pour l'objet d'index _ind. + * @param _ind L'indice de l'objet. + * @param _idVertex L'indice du sommet. + * @return Le point, ou null en cas de non conformit\xE9. + */ + GrPoint getVertexForObject(int _ind, int _idVertex); + } \ No newline at end of file Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleDonneesVide.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleDonneesVide.java 2009-01-23 10:39:23 UTC (rev 4395) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleDonneesVide.java 2009-01-23 16:12:37 UTC (rev 4396) @@ -8,13 +8,14 @@ package org.fudaa.ebli.calque; import org.fudaa.ebli.geometrie.GrBoite; +import org.fudaa.ebli.geometrie.GrPoint; import org.fudaa.ebli.palette.BPaletteInfo.InfoData; import com.memoire.bu.BuTable; /** * @author Fred Deniger - * @version $Id: ZModeleDonneesVide.java,v 1.7 2006-07-13 13:35:44 deniger Exp $ + * @version $Id$ */ public class ZModeleDonneesVide implements ZModeleDonnees { @@ -47,5 +48,9 @@ public Object getObject(final int _ind){ return null; } + + public GrPoint getVertexForObject(int _ind, int vertex) { + return null; + } } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleDonneesVide.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleDonnesAbstract.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleDonnesAbstract.java 2009-01-23 10:39:23 UTC (rev 4395) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleDonnesAbstract.java 2009-01-23 16:12:37 UTC (rev 4396) @@ -11,6 +11,7 @@ import java.util.ArrayList; import java.util.List; +import org.fudaa.ebli.geometrie.GrPoint; import org.fudaa.ebli.palette.BPaletteInfo.InfoData; import com.memoire.bu.BuTable; @@ -20,7 +21,7 @@ /** * @author deniger - * @version $Id: ZModeleDonnesAbstract.java,v 1.10 2006-09-19 14:55:46 deniger Exp $ + * @version $Id$ */ public abstract class ZModeleDonnesAbstract implements ZModeleDonnees { @@ -29,6 +30,10 @@ return null; } + public GrPoint getVertexForObject(int _ind, int _idVertex) { + return null; + } + public BuTable createValuesTable(final ZCalqueAffichageDonneesInterface _layer) { return null; } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleDonnesAbstract.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleFlecheForGrille.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleFlecheForGrille.java 2009-01-23 10:39:23 UTC (rev 4395) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleFlecheForGrille.java 2009-01-23 16:12:37 UTC (rev 4396) @@ -20,7 +20,7 @@ * Une classe permettant de cr\xE9er un modele de fleches d'apr\xE8s la grille utilis\xE9 sur une autre modele. * * @author fred deniger - * @version $Id: ZModeleFlecheForGrille.java,v 1.2 2007-06-20 12:23:11 deniger Exp $ + * @version $Id$ */ public class ZModeleFlecheForGrille implements ZModeleFleche { @@ -148,4 +148,8 @@ return lastRes_; } + public GrPoint getVertexForObject(int _ind, int vertex) { + return null; + } + } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleFlecheForGrille.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleGeometry.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleGeometry.java 2009-01-23 10:39:23 UTC (rev 4395) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleGeometry.java 2009-01-23 16:12:37 UTC (rev 4396) @@ -48,7 +48,7 @@ void getDomaineForGeometry(int _idxGeom, GrBoite _target); /** - * Modifie les coordonn\xE9es du sommet _pt pour correspondre au point d'indice _pointIdx de la + * Modifie les coordonn\xE9es X,Y,Z du sommet _pt pour correspondre au point d'indice _pointIdx de la * g\xE9om\xE9trie. * * @param _pt le point a modifier Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleStatiquePoint.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleStatiquePoint.java 2009-01-23 10:39:23 UTC (rev 4395) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleStatiquePoint.java 2009-01-23 16:12:37 UTC (rev 4396) @@ -16,7 +16,7 @@ /** * Le modele du calque d'affichage de point. * - * @version $Id: ZModeleStatiquePoint.java,v 1.10 2006-09-19 14:55:48 deniger Exp $ + * @version $Id$ * @author Guillaume Desnoix */ public class ZModeleStatiquePoint extends ZModeleDonnesAbstract implements ZModelePoint { @@ -151,4 +151,8 @@ return point(_i); } // public final boolean contourSelectionnable(int _i) { return true; } + + public GrPoint getVertexForObject(int _ind, int vertex) { + return point(_ind); + } } Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZModeleStatiquePoint.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java 2009-01-23 10:39:23 UTC (rev 4395) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZScene.java 2009-01-23 16:12:37 UTC (rev 4396) @@ -12,6 +12,7 @@ import java.awt.Graphics2D; import java.beans.PropertyChangeListener; +import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; @@ -23,6 +24,7 @@ import org.fudaa.ctulu.CtuluListSelectionInterface; import org.fudaa.ebli.calque.edition.ZCalqueEditable; import org.fudaa.ebli.commun.EbliActionInterface; +import org.fudaa.ebli.commun.EbliListeSelectionMulti; import org.fudaa.ebli.commun.EbliListeSelectionMultiInterface; import org.fudaa.ebli.commun.EbliSelectionState; import org.fudaa.ebli.geometrie.GrBoite; @@ -344,6 +346,8 @@ protected SceneListSelectionMulti selectionMulti_=null; protected SceneSelectionHelper selectionHelper_=null; protected boolean atomicMode_=false; + /** La selection pour l'accrochage. Conserv\xE9e pour ne pas etre reconstruite a chaque appel. */ + protected ZSceneSelection selTmp_=new ZSceneSelection(this); /** La scene est r\xE9duite au calque s\xE9lectionn\xE9 pour toutes les actions. */ protected boolean layerRestricted_=false; @@ -523,6 +527,36 @@ fireSelectionEvent(); return b; } + + /** + * Retourne la selection pour le point donn\xE9.<p> + * <b>Remarque:</b> Uniquement des sommets pour le moment, et en tenant compte du fait que la selection + * est restreinte a un calque ou pas. + * + * @param _pt Le point donn\xE9. + * @param _tolerance La tol\xE9rance, en pixels. + * @return Les sommets selectionn\xE9s, ou vide si aucune selection. + */ + public ZSceneSelection selection(final GrPoint _pt, final int _tolerance) { + selTmp_.clear(); + for (ZCalqueAffichageDonneesInterface cq : getTargetLayers()) { + EbliListeSelectionMulti sel=(EbliListeSelectionMulti)cq.selectionMulti(_pt, _tolerance, true); + if (sel!=null) + selTmp_.addLayerListSelectionMulti(cq,sel); + } + return selTmp_; + } + + /** + * Retourne le sommet 3D correspondant a l'indice de geometrie _idScene et l'indice de sommet _idVertex. + * @param _idScene L'indice de la g\xE9om\xE9trie dans la scene + * @param _idVertex L'indice de sommet sur la g\xE9om\xE9trie. + * @return Le sommet 3D. + */ + public GrPoint getVertex(int _idScene, int _idVertex) { + int idxGeom=sceneId2LayerId(_idScene); + return getLayerForId(_idScene).modeleDonnees().getVertexForObject(idxGeom, _idVertex); + } /** * @return la ligne repr\xE9sentant la s\xE9lection courant. null si s\xE9lection non adequate @@ -757,7 +791,7 @@ * si restreint et non calque de donn\xE9es. * @return Les calques cibles. */ - private ZCalqueAffichageDonneesInterface[] getTargetLayers() { + public ZCalqueAffichageDonneesInterface[] getTargetLayers() { if (!isRestrictedToCalqueActif()) return getAllLayers(); else if (treeModel_.getSelectedCalque() instanceof ZCalqueAffichageDonneesInterface) @@ -766,6 +800,10 @@ return new ZCalqueAffichageDonneesInterface[0]; } + /** + * Retourne tous les calques de donn\xE9es contenues dans la scene, dans l'ordre de parcours de l'arbre des calques. + * @return Les calques de donn\xE9es. + */ public ZCalqueAffichageDonneesInterface[] getAllLayers() { if (brefreshRequested_) { ArrayList<BCalque> lcqs=new ArrayList<BCalque>(); Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZSceneSelection.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZSceneSelection.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZSceneSelection.java 2009-01-23 16:12:37 UTC (rev 4396) @@ -0,0 +1,75 @@ +/* + * @creation 15 janv. 2009 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2009 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.ebli.calque; + +import org.fudaa.ctulu.CtuluListSelection; +import org.fudaa.ctulu.CtuluListSelectionInterface; +import org.fudaa.ebli.commun.EbliListeSelectionMulti; +import org.fudaa.ebli.commun.EbliListeSelectionMultiInterface; + +/** + * Une selection pour des g\xE9om\xE9tries ou des sommets de la scene. La selection contient des indices globaux de g\xE9om\xE9tries. + * En cas de selection en mode g\xE9om\xE9tries, la liste des sommets pour un index de g\xE9om\xE9trie est vide. + * + * @author Bertrand Marchand + * @version $Id:$ + */ +public class ZSceneSelection extends EbliListeSelectionMulti { + ZScene scn_; + + /** + * Cr\xE9ation de la liste. + * @param _scn La scene. + */ + public ZSceneSelection(ZScene _scn) { + super(0); + scn_=_scn; + } + + /** + * Ajoute la selection de g\xE9om\xE9tries d'un calque donn\xE9. + * @param _cq Le calque contenant la liste de selection. + * @param _sel La liste des indices de g\xE9om\xE9tries pour le calque. + */ + public void addLayerListSelection(ZCalqueAffichageDonneesInterface _cq, CtuluListSelectionInterface _sel) { + int idecal=0; + for (ZCalqueAffichageDonneesInterface cq : scn_.getTargetLayers()) { + if (cq==_cq) break; + idecal+=cq.modeleDonnees().getNombre(); + } + + for (int idx=_sel.getMinIndex(); idx<=_sel.getMaxIndex(); idx++) { + // Ajoute une liste de selection des sommets vide. + if (_sel.isSelected(idx)) + set(idx+idecal,new CtuluListSelection(0)); + } + } + + /** + * Ajoute la selection de vertex d'un calque donn\xE9. + * @param _cq Le calque contenant la liste de selection. + * @param _sel La liste des indices de sommets par g\xE9om\xE9trie pour le calque. + */ + public void addLayerListSelectionMulti(ZCalqueAffichageDonneesInterface _cq, EbliListeSelectionMultiInterface _sel) { + int idecal=0; + for (ZCalqueAffichageDonneesInterface cq : scn_.getTargetLayers()) { + if (cq==_cq) break; + idecal+=cq.modeleDonnees().getNombre(); + } + + CtuluListSelection selGeom=_sel.getIdxSelection(); + for (int idx=selGeom.getMinIndex(); idx<=selGeom.getMaxIndex(); idx++) { + if (selGeom.isSelected(idx)) + set(idx+idecal,(CtuluListSelection)_sel.getSelection(idx)); + } + } + + public ZScene getScene() { + return scn_; + } +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/ZSceneSelection.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueDistanceInteraction.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueDistanceInteraction.java 2009-01-23 10:39:23 UTC (rev 4395) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueDistanceInteraction.java 2009-01-23 16:12:37 UTC (rev 4396) @@ -21,6 +21,11 @@ import java.util.List; import org.fudaa.ebli.calque.BCalqueInteraction; +import org.fudaa.ebli.calque.ZCatchEvent; +import org.fudaa.ebli.calque.ZCatchListener; +import org.fudaa.ebli.calque.ZEbliCalquePanelController; +import org.fudaa.ebli.calque.ZEbliCalquesPanel; +import org.fudaa.ebli.calque.ZScene; import org.fudaa.ebli.geometrie.GrPoint; import org.fudaa.ebli.ressource.EbliResource; import org.fudaa.ebli.trace.TraceLigne; @@ -34,8 +39,9 @@ * @author Emmanuel MARTIN * @version $Id$ */ -public class ZCalqueDistanceInteraction extends BCalqueInteraction implements MouseListener, MouseMotionListener { - +public class ZCalqueDistanceInteraction extends BCalqueInteraction implements MouseListener, MouseMotionListener, ZCatchListener { + private static final Cursor CURSOR_DST_=EbliResource.EBLI.getCursor("curseur_distance", -1, new Point(6, 6)); + /** Liste des points composant le chemin affich\xE9. Se sont des coordonn\xE9s r\xE9els. */ protected List<Coordinate> chemin_=new ArrayList<Coordinate>(); /** La coordonn\xE9e correspondant \xE0 la position de la souris. C'est une coordonn\xE9s \xE9cran. */ @@ -52,6 +58,8 @@ protected boolean ctrlActif_=false; /** Listener des distances. */ private List<PropertyChangeListener> listeners_=new ArrayList<PropertyChangeListener>(); + /** Point d'accrochage si existant. null si la souris n'est pas sur un point d'accorchage */ + private GrPoint ptAccroch_=null; public ZCalqueDistanceInteraction(){ setName("cqInteractifDistance"); @@ -84,7 +92,7 @@ // M\xE9thodes d\xE9riv\xE9es \\ public Cursor getSpecificCursor() { - return EbliResource.EBLI.getCursor("curseur_distance", -1, new Point(6, 6)); + return CURSOR_DST_; } public boolean alwaysPaint() { @@ -192,8 +200,7 @@ traceLigne_.dessineTrait((Graphics2D) getGraphics(), reelToEcran(chemin_.get(i-1)).x, reelToEcran(chemin_.get(i-1)).y, reelToEcran(chemin_.get(i)).x, reelToEcran(chemin_.get(i)).y); } - public void mousePressed(final MouseEvent _evt) { - } + public void mousePressed(final MouseEvent _evt) {} public void mouseDragged(final MouseEvent _evt) { mouseMoved(_evt); @@ -205,7 +212,9 @@ /** Met \xE0 jour la partie variable du chemin. */ public void mouseMoved(final MouseEvent _evt) { - if(!isGele()&&!cheminComplet_){ + if(isGele()) return; + + if (!cheminComplet_){ effaceVariable(); coordSouris_.x=_evt.getX(); coordSouris_.y=_evt.getY(); @@ -216,21 +225,40 @@ public void mouseReleased(final MouseEvent _evt) { if (!isGele()&&_evt.getButton()==MouseEvent.BUTTON1) { + GrPoint pt=new GrPoint(_evt.getX(),_evt.getY(),0); + + if (ptAccroch_!=null) + pt=ptAccroch_.applique(getVersEcran()); + effaceChemin(); effaceVariable(); - coordSouris_.x=_evt.getX(); - coordSouris_.y=_evt.getY(); + coordSouris_.x=pt.x_; + coordSouris_.y=pt.y_; // Si le chemin \xE9tait d\xE9j\xE0 complet, on reprend \xE0 0 if(cheminComplet_){ chemin_.clear(); cheminComplet_=false; repaint(); } - chemin_.add(ecranToReel(new Coordinate(_evt.getX(), _evt.getY()))); + chemin_.add(ecranToReel(new Coordinate(pt.x_,pt.y_))); // Si c'est le dernier point, le chemin est termin\xE9 cheminComplet_=chemin_.size()>1&&getDistanceCumulee()>0&&(_evt.getClickCount()>=2||_evt.isControlDown()); afficheChemin(); fireDistanceChangeListener(); } } + + /* (non-Javadoc) + * @see org.fudaa.ebli.calque.ZCalqueCatchInteraction.ZCatchListener#catchChanged(org.fudaa.ebli.calque.ZCalqueCatchInteraction.ZCatchEvent) + */ + public void catchChanged(ZCatchEvent _evt) { + if (isGele()) return; + + if (_evt.type==ZCatchEvent.CAUGHT) { + ptAccroch_=_evt.selection.getScene().getVertex(_evt.idxGeom,_evt.idxVertex); + } + else { + ptAccroch_=null; + } + } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueEditionInteraction.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueEditionInteraction.java 2009-01-23 10:39:23 UTC (rev 4395) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZCalqueEditionInteraction.java 2009-01-23 16:12:37 UTC (rev 4396) @@ -19,7 +19,6 @@ import java.awt.event.MouseMotionListener; import java.util.ArrayList; import java.util.HashMap; -import java.util.Set; import java.util.Vector; import java.util.Map.Entry; @@ -30,6 +29,10 @@ import org.fudaa.ctulu.CtuluLibString; import org.fudaa.ctulu.gis.GISAttributeInterface; import org.fudaa.ebli.calque.BCalqueInteraction; +import org.fudaa.ebli.calque.BVueCalque; +import org.fudaa.ebli.calque.ZCatchEvent; +import org.fudaa.ebli.calque.ZCatchListener; +import org.fudaa.ebli.calque.ZScene; import org.fudaa.ebli.calque.dessin.DeForme; import org.fudaa.ebli.calque.dessin.DeLigneBrisee; import org.fudaa.ebli.calque.dessin.DeMultiPoint; @@ -47,19 +50,21 @@ /** * Permet la saisie interactive de formes g\xE9om\xE9triques. - * @version $Id: ZCalqueEditionInteraction.java,v 1.16.6.2 2008-03-27 15:26:27 bmarchan Exp $ + * @version $Id$ * @author */ -public class ZCalqueEditionInteraction extends BCalqueInteraction implements KeyListener, MouseListener, MouseMotionListener { +public class ZCalqueEditionInteraction extends BCalqueInteraction implements KeyListener, MouseListener, MouseMotionListener, ZCatchListener { /** * La classe deleguee pour la saisie de forme. * * @author Fred Deniger - * @version $Id: ZCalqueEditionInteraction.java,v 1.16.6.2 2008-03-27 15:26:27 bmarchan Exp $ + * @version $Id$ */ public abstract class FormDelegate extends MouseAdapter implements KeyListener, MouseMotionListener { + /** LE dernier point d'accrochage definit */ + GrPoint ptAccro_=null; /** * Enleve le dernier point saisie. */ @@ -126,6 +131,10 @@ * @see java.awt.event.KeyListener#keyTyped(java.awt.event.KeyEvent) */ public void keyTyped(KeyEvent _e) {} + + public void setAccroche(GrPoint _ptReel) { + ptAccro_=_ptReel; + } } class FormDelegateLigneBrisee extends FormDelegate { @@ -174,6 +183,7 @@ g2d.setXORMode(getBackground()); ligne_.affiche(g2d, tl_, isRapide(), tmp_, getVersEcran()); ligne_.enleveDernier(); + data_.removeLastInfo(); if (pointFin_ != null) { pointFin_ = ligne_.getDernier(); } @@ -302,12 +312,16 @@ tmp_.x_ = _x; tmp_.y_ = _y; tmp_.autoApplique(getVersReel()); - support_.setMessage(CtuluLib.getS("Distance:") - + CtuluLibString.ESPACE - + CtuluLib.DEFAULT_NUMBER_FORMAT.format(CtuluLibGeometrie.getDistance(tmp_.x_, tmp_.y_, pointFin_.x_, - pointFin_.y_))); + + if (ptAccro_==null) { + support_.setMessage(CtuluLib.getS("Distance:") + + CtuluLibString.ESPACE + + CtuluLib.DEFAULT_NUMBER_FORMAT.format(CtuluLibGeometrie.getDistance(tmp_.x_, tmp_.y_, pointFin_.x_, + pointFin_.y_))); + } } else { - support_.unsetMessage(); + if (ptAccro_==null) + support_.unsetMessage(); } } @@ -325,11 +339,15 @@ } else { data_ = features_.createLigneBriseeData(); } - pointDep_ = getPointReel(_e); + if (ptAccro_==null) + pointDep_ = getPointReel(_e); + else + pointDep_=ptAccro_; + pointFin_ = pointDep_; ligne_.ajoute(pointDep_); if (data_ != null) { - data_.addPoint(); + data_.addPoint(ptAccro_); } if (support_ != null) { @@ -340,10 +358,13 @@ else { boolean afficheLigne = true; if (_e.getClickCount() < 2) { - pointFin_ = getPointReel(_e); + if (ptAccro_==null) + pointFin_ = getPointReel(_e); + else + pointFin_=ptAccro_; ligne_.ajoute(pointFin_); if (data_ != null) { - data_.addPoint(); + data_.addPoint(ptAccro_); } if (_e.isControlDown()) { afficheLigne = polyAdded(); @@ -392,6 +413,7 @@ } else { multipoint_.enleveDernier(); + data_.removeLastInfo(); multipoint_.affiche(g2d, tp_, isRapide(), tmp_, getVersEcran()); support_.atomicChanged(); @@ -467,10 +489,10 @@ } boolean afficheLigne=true; if (_e.getClickCount()<2) { - GrPoint pt=getPointReel(_e); + GrPoint pt=ptAccro_==null ? getPointReel(_e):ptAccro_; multipoint_.ajoute(pt); if (data_!=null) { - data_.addPoint(); + data_.addPoint(ptAccro_); } if (_e.isControlDown()) { afficheLigne=polyAdded(); @@ -532,7 +554,8 @@ if (pt_==null) return; final ZEditionAttributesDataI d = features_ == null ? null : features_.createPointData(); if (d != null) { - d.addPoint(); + if (ptAccro_!=null) pt_=ptAccro_; + d.addPoint(ptAccro_); support_.addNewPoint(pt_, d); } pt_=null; @@ -630,6 +653,8 @@ public void mousePressed(final MouseEvent _e) { if (origine_==null) { origine_=getPointReel(_e); + if (ptAccro_!=null) + origine_=ptAccro_; if (support_!=null) support_.atomicChanged(); moved_=false; @@ -640,8 +665,12 @@ if (enCours()) { moved_=true; effaceDessin(); - grandRayon_=Math.abs(getPointReel(_e).x_-origine_.x_); - petitRayon_=Math.abs(getPointReel(_e).y_-origine_.y_); + GrPoint pt=getPointReel(_e); + if (ptAccro_!=null) + pt=ptAccro_; + + grandRayon_=Math.abs(pt.x_-origine_.x_); + petitRayon_=Math.abs(pt.y_-origine_.y_); // Si la touche Ctrl est pressee, on est en mode 'cercle' if (keyPresse_.contains((Object)KeyEvent.VK_CONTROL)) { grandRayon_ = (grandRayon_ + petitRayon_)/2; @@ -743,7 +772,7 @@ } for (double t=0; t<2*Math.PI; t+=incT) { poly.sommets_.ajoute(getXEllipse(t)+origine_.x_, getYEllipse(t)+origine_.y_, 0); - if(_withData) data_.addPoint(); + if(_withData) data_.addPoint(null); } // Mise a jour des attributs if(_withData) addData(); @@ -1035,6 +1064,8 @@ public void mousePressed(final MouseEvent _e) { if (pointDep_ == null) { pointDep_ = getPointReel(_e); + if (ptAccro_!=null) + pointDep_=ptAccro_; if (support_ != null) support_.atomicChanged(); moved_ = false; @@ -1046,6 +1077,8 @@ effaceDessin(); moved_=true; pointFin_=getPointReel(_e); + if (ptAccro_!=null) + pointFin_=ptAccro_; // Si la touche Ctrl est pressee, on est en mode 'carre' if (keyPresse_.contains((Object)KeyEvent.VK_CONTROL)) { double cote=(Math.abs(pointDep_.x_-pointFin_.x_)+Math.abs(pointDep_.y_-pointFin_.y_))/2; @@ -1143,28 +1176,28 @@ double largeur = Math.abs(x1 - x0), hauteur = Math.abs(y1 - y0); // Ajout des sommets dans le bonne ordre poly.sommets_.ajoute(x0, y0, z0); - if(_withData) data_.addPoint(); + if(_withData) data_.addPoint(null); for (int i=0; i<nbPointsHauteur_; i++){ poly.sommets_.ajoute(x0, y0 + (i + 1) * (hauteur / (nbPointsHauteur_ + 1)), z0); - if(_withData) data_.addPoint(); + if(_withData) data_.addPoint(null); } poly.sommets_.ajoute(x0, y1, z0); - if(_withData) data_.addPoint(); + if(_withData) data_.addPoint(null); ... [truncated message content] |
From: <emm...@us...> - 2009-01-23 10:39:26
|
Revision: 4395 http://fudaa.svn.sourceforge.net/fudaa/?rev=4395&view=rev Author: emmanuel_martin Date: 2009-01-23 10:39:23 +0000 (Fri, 23 Jan 2009) Log Message: ----------- Commit de test ; r?\195?\169impl?\195?\169mentation de la tache #134 Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/gml/GISGMLZoneExporter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/test/org/fudaa/dodico/telemac/TestJSinusx.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerFilter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/telemac/TrMatisseConvertGUI.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/gml/GISGMLZoneExporter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/gml/GISGMLZoneExporter.java 2009-01-22 21:40:12 UTC (rev 4394) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/gml/GISGMLZoneExporter.java 2009-01-23 10:39:23 UTC (rev 4395) @@ -13,6 +13,12 @@ import java.io.IOException; import java.io.OutputStream; +import org.fudaa.ctulu.CtuluActivity; +import org.fudaa.ctulu.ProgressionInterface; +import org.fudaa.ctulu.ProgressionUpdater; +import org.fudaa.ctulu.gis.GISAttributeConstants; +import org.fudaa.ctulu.gis.GISAttributeInterface; +import org.fudaa.ctulu.gis.GISZoneCollection; import org.geotools.data.DataStore; import org.geotools.data.FeatureWriter; import org.geotools.data.Transaction; @@ -25,17 +31,11 @@ import org.geotools.feature.SchemaException; import org.geotools.feature.type.BasicFeatureTypes; -import com.vividsolutions.jts.geom.Geometry; +import org.fudaa.ctulu.gis.GISDataModel; import com.memoire.fu.FuLog; +import com.vividsolutions.jts.geom.Geometry; -import org.fudaa.ctulu.CtuluActivity; -import org.fudaa.ctulu.ProgressionInterface; -import org.fudaa.ctulu.ProgressionUpdater; -import org.fudaa.ctulu.gis.GISAttributeConstants; -import org.fudaa.ctulu.gis.GISAttributeInterface; -import org.fudaa.ctulu.gis.GISZoneCollection; - /** * @author Fred Deniger * @version $Id: GISGMLZoneExporter.java,v 1.1.6.1 2008-03-28 14:59:28 bmarchan Exp $ @@ -54,7 +54,7 @@ private boolean useIdAsName_; - public AttributeType[] createAttributes(final GISZoneCollection _zone, final TObjectIntHashMap _attrIdx) { + public AttributeType[] createAttributes(final GISDataModel _zone, final TObjectIntHashMap _attrIdx) { final int attributeNb = _zone.getNbAttributes(); final TIntArrayList attribute = new TIntArrayList(attributeNb); // pour l'instant, les attributs atomiques (definis sur chaque sommets) ne sont pas @@ -107,12 +107,11 @@ * @throws SchemaException * @throws IllegalAttributeException */ - public void process(final ProgressionInterface _prog, final GISZoneCollection _zone, final DataStore _dest) + public void process(final ProgressionInterface _prog, final GISDataModel _zone, final DataStore _dest) throws IOException, SchemaException, IllegalAttributeException { out_ = null; store_ = _dest; process(_prog, _zone); - } /** @@ -133,10 +132,9 @@ } - private void process(final ProgressionInterface _prog, final GISZoneCollection _zone) throws IOException, + private void process(final ProgressionInterface _prog, final GISDataModel _zone) throws IOException, SchemaException, IllegalAttributeException { stop_ = false; - _zone.prepareExport(); final TObjectIntHashMap attIdx = new TObjectIntHashMap(_zone.getNbAttributes()); final AttributeType[] atts = createAttributes(_zone, attIdx); if (stop_) { @@ -160,7 +158,7 @@ final Feature feature = writer.next(); feature.setDefaultGeometry(_zone.getGeometry(i)); for (int j = 1; j < nbAttribute-1; j++) { - feature.setAttribute(j, _zone.getModel(attIdx.get(atts[j])).getObjectValueAt(i)); + feature.setAttribute(j, _zone.getValue(attIdx.get(atts[j]), i)); } // Enregistrement de l'index de la g\xE9om\xE9trie dans le fichier feature.setAttribute(nbAttribute-1, new Integer(i)); @@ -180,13 +178,14 @@ } - public FeatureType createFeatureType(final GISZoneCollection _zone, final AttributeType[] _atts) + public FeatureType createFeatureType(final GISDataModel _zone, final AttributeType[] _atts) throws SchemaException { + /* Changement de GISZoneCollection en GISDataModel, suppression des lignes dessous String name = _zone.getTitle(); if (name == null) { name = "zone"; - } - final FeatureType featureType = FeatureTypes.newFeatureType(_atts, name); + }*/ + final FeatureType featureType = FeatureTypes.newFeatureType(_atts, "zone"); return featureType; } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriter.java 2009-01-22 21:40:12 UTC (rev 4394) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriter.java 2009-01-23 10:39:23 UTC (rev 4395) @@ -14,34 +14,29 @@ import java.util.Calendar; import java.util.Locale; -import com.vividsolutions.jts.geom.CoordinateSequence; -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.LinearRing; -import com.vividsolutions.jts.geom.MultiPoint; -import com.vividsolutions.jts.geom.Point; -import com.vividsolutions.jts.geom.Polygon; - import org.fudaa.ctulu.CtuluActivity; import org.fudaa.ctulu.CtuluLibString; import org.fudaa.ctulu.ProgressionUpdater; import org.fudaa.ctulu.fileformat.FileFormatVersionInterface; -import org.fudaa.ctulu.gis.GISAttribute; import org.fudaa.ctulu.gis.GISAttributeConstants; -import org.fudaa.ctulu.gis.GISCollection; -import org.fudaa.ctulu.gis.GISCoordinateSequenceContainerInterface; +import org.fudaa.ctulu.gis.GISCoordinateSequenceFactory; +import org.fudaa.ctulu.gis.GISDataModel; import org.fudaa.ctulu.gis.GISGeometry; import org.fudaa.ctulu.gis.GISLib; import org.fudaa.ctulu.gis.GISMultiPoint; import org.fudaa.ctulu.gis.GISPolygone; import org.fudaa.ctulu.gis.GISPolyligne; import org.fudaa.ctulu.gis.GISVisitorDefault; -import org.fudaa.ctulu.gis.GISZone; -import org.fudaa.ctulu.gis.GISZoneCollection; -import org.fudaa.ctulu.gis.GISZoneCollectionPoint; - import org.fudaa.dodico.fortran.FileOpWriterCharSimpleAbstract; import org.fudaa.dodico.h2d.resource.H2dResource; +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.CoordinateSequence; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.LinearRing; +import com.vividsolutions.jts.geom.Point; +import com.vividsolutions.jts.geom.Polygon; + /** * @version $Id: SinusxWriter.java,v 1.24 2007-05-04 13:47:27 deniger Exp $ * @author Fred Deniger @@ -171,10 +166,10 @@ } protected void internalWrite(final Object _o) { - if (_o instanceof GISZone) { - writeZones((GISZone) _o); + if (_o instanceof GISDataModel[][]) { + writeZones((GISDataModel[][]) _o); } else { - donneesInvalides(_o); + donneesInvalides((GISDataModel[][]) _o); } } @@ -199,7 +194,7 @@ /** * @param _zones les zones a ecrire. */ - public void writeZones(final GISZone _zones) { + public void writeZones(final GISDataModel[][] _zones) { if (_zones == null) { analyze_.addFatalError(H2dResource.getS("Les donn\xE9es sont nulles")); return; @@ -210,7 +205,12 @@ progress_.setProgression(0); } up.majProgessionStateOnly(); - up.setValue(5, GISZone.getNbPoints(_zones)); + int nbPoints=0; + for(int i=0;i<_zones.length;i++) + for(int j=0;j<_zones[i].length;j++) + for(int k=0;k<_zones[i][j].getNumGeometries();k++) + nbPoints+=_zones[i][j].getGeometry(k).getNumPoints(); + up.setValue(5, nbPoints); final String bc = key_.getBlocCommentaire(); try { @@ -223,83 +223,77 @@ String spec; formate_.setPositivePrefix(pointPlus_); - final int max = _zones.getNumGeometries(); - for (int j = 0; j < max; j++) { - if (stop_) { + // Points + GISDataModel[] models=_zones[0]; + for (int j=0; j<models.length; j++) { + if (stop_) return; - } - // fermee= false; - spec = null; - final GISZoneCollection g = (GISZoneCollection) _zones.getGeometry(j); - if (g == null) { - continue; - } - int attName=g.getIndiceOf(GISAttributeConstants.TITRE); + final StringBuffer buf=new StringBuffer(50); + buf.append(bs_).append(' '); + buf.append(key_.getTypeSemis()); + writeToOut(buf.toString()); + writeEntete(j, "semis", null, false); + Coordinate[] coord=new Coordinate[models[j].getNumGeometries()]; + for (int k=0; k<coord.length; k++) + coord[k]=models[j].getGeometry(k).getCoordinate(); + writeCoordinateSequence(new GISCoordinateSequenceFactory().create(coord), up, false); + } + // Polylignes + models=_zones[1]; + for (int j=0; j<models.length; j++) { + final int nbPoly=models[j].getNumGeometries(); + int attName=models[j].getIndiceOf(GISAttributeConstants.TITRE); + for (int polyIdx=0; polyIdx<nbPoly; polyIdx++) { + if (stop_) + return; + final StringBuffer buf=new StringBuffer(); + buf.append(bs_).append(CtuluLibString.ESPACE); + final LineString geom=(LineString)models[j].getGeometry(polyIdx); + ((GISGeometry)geom).accept(identifieur); + final boolean ferme=identifieur.isClosed_; - // Les lignes et polygones - if (g.getDataStoreClass() == LineString.class || g.getDataStoreClass() == LinearRing.class) { - final int nbPoly = g.getNumGeometries(); - for (int polyIdx = 0; polyIdx < nbPoly; polyIdx++) { - final StringBuffer buf = new StringBuffer(); - buf.append(bs_).append(CtuluLibString.ESPACE); - final LineString geom = (LineString) g.getGeometryN(polyIdx); - ((GISGeometry) geom).accept(identifieur); - final boolean ferme = identifieur.isClosed_; - - final String nom; - if (attName==-1) - nom= ((ferme) ? "polygone" : "polyligne") + CtuluLibString.ESPACE + (j + 1) + "-" + (polyIdx + 1); - else - nom=(String)g.getValue(attName, polyIdx); - - if (identifieur.isNiveau_) { - buf.append(key_.getTypeCourbeNiveau()); - spec = formate_.format(geom.getCoordinateSequence().getOrdinate(0, 2)); + final String nom; + if (attName==-1) + nom=((ferme) ? "polygone":"polyligne")+CtuluLibString.ESPACE+(j+1)+"-"+(polyIdx+1); + else + nom=(String)models[j].getValue(attName, polyIdx); - } else { - buf.append(key_.getTypeCourbe()); - spec = courbeDefaut(key_.getCourbeNBIndic()); - } - writeToOut(buf.toString()); - writeEntete(j + polyIdx, nom, spec, ferme); - writeCoordinateSequence(geom.getCoordinateSequence(), up, ferme); + if (identifieur.isNiveau_) { + buf.append(key_.getTypeCourbeNiveau()); + spec=formate_.format(geom.getCoordinateSequence().getOrdinate(0, 2)); } - // DEBUG: Que veut dire ferme?? - // if(ent instanceof MNTPolygone) fermee=true; - } - - // Multipoints - else if (g.getDataStoreClass() == GISMultiPoint.class) { - final int nbPoly = g.getNumGeometries(); - for (int polyIdx = 0; polyIdx < nbPoly; polyIdx++) { - final StringBuffer buf = new StringBuffer(); - buf.append(bs_).append(CtuluLibString.ESPACE); - final GISMultiPoint geom = (GISMultiPoint) g.getGeometryN(polyIdx); - - final String nom; - if (attName==-1) - nom = "semis"+ CtuluLibString.ESPACE + (j + 1) + "-" + (polyIdx + 1); - else - nom=(String)g.getValue(attName, polyIdx); - - buf.append(key_.getTypeSemis()); - spec = null; - writeToOut(buf.toString()); - writeEntete(j + polyIdx, nom , spec, false); - writeCoordinateSequence(geom.getCoordinateSequence(), up, false); + else { + buf.append(key_.getTypeCourbe()); + spec=courbeDefaut(key_.getCourbeNBIndic()); } - // DEBUG: Que veut dire ferme?? - // if(ent instanceof MNTPolygone) fermee=true; + writeToOut(buf.toString()); + writeEntete(j+polyIdx, nom, spec, ferme); + writeCoordinateSequence(geom.getCoordinateSequence(), up, ferme); } - - // Points - else { - final StringBuffer buf = new StringBuffer(50); - buf.append(bs_).append(' '); + } + // Multipoint + models=_zones[2]; + for (int j=0; j<models.length; j++) { + int attName=models[j].getIndiceOf(GISAttributeConstants.TITRE); + final int nbPoly=models[j].getNumGeometries(); + for (int polyIdx=0; polyIdx<nbPoly; polyIdx++) { + if (stop_) + return; + final StringBuffer buf=new StringBuffer(); + buf.append(bs_).append(CtuluLibString.ESPACE); + final GISMultiPoint geom=(GISMultiPoint)models[j].getGeometry(polyIdx); + + final String nom; + if (attName==-1) + nom="semis"+CtuluLibString.ESPACE+(j+1)+"-"+(polyIdx+1); + else + nom=(String)models[j].getValue(attName, polyIdx); + buf.append(key_.getTypeSemis()); + spec=null; writeToOut(buf.toString()); - writeEntete(j, "semis", null, false); - writeCoordinateSequence(((GISZoneCollectionPoint) g), up, false); + writeEntete(j+polyIdx, nom, spec, false); + writeCoordinateSequence(geom.getCoordinateSequence(), up, false); } } } catch (final IOException e) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/test/org/fudaa/dodico/telemac/TestJSinusx.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/test/org/fudaa/dodico/telemac/TestJSinusx.java 2009-01-22 21:40:12 UTC (rev 4394) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/test/org/fudaa/dodico/telemac/TestJSinusx.java 2009-01-23 10:39:23 UTC (rev 4395) @@ -8,22 +8,28 @@ package org.fudaa.dodico.telemac; import java.io.File; +import java.util.ArrayList; +import java.util.List; import junit.framework.TestCase; -import com.vividsolutions.jts.geom.CoordinateSequence; - import org.fudaa.ctulu.CtuluIOOperationSynthese; +import org.fudaa.ctulu.gis.GISDataModel; +import org.fudaa.ctulu.gis.GISMultiPoint; import org.fudaa.ctulu.gis.GISPointMutable; import org.fudaa.ctulu.gis.GISPolyligne; import org.fudaa.ctulu.gis.GISZone; +import org.fudaa.ctulu.gis.GISZoneCollection; import org.fudaa.ctulu.gis.GISZoneCollectionPoint; import org.fudaa.ctulu.gis.GISZoneCollectionPolygone; import org.fudaa.ctulu.gis.GISZoneCollectionPolyligne; - import org.fudaa.dodico.all.TestIO; import org.fudaa.dodico.telemac.io.SinusxFileFormat; +import com.vividsolutions.jts.geom.CoordinateSequence; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.LinearRing; + /** * @version $Id: TestJSinusx.java,v 1.2 2007-06-29 15:10:32 deniger Exp $ * @author Fred Deniger @@ -123,7 +129,33 @@ assertNotNull(zones); f = File.createTempFile("testSinux", ".sx"); assertNotNull(f); - SinusxFileFormat.getInstance().getLastVersionInstance(null).write(f, zones, null); + + //# Conversion de la GISZone en GISDataModel[][] #\\ + // Tri des GISZoneCollection en fonction de leur type + List<GISDataModel> points=new ArrayList<GISDataModel>(); + List<GISDataModel> lignes=new ArrayList<GISDataModel>(); + List<GISDataModel> multipoints=new ArrayList<GISDataModel>(); + for (int i=0; i<zones.getNumGeometries(); i++) { + GISZoneCollection zone=(GISZoneCollection)zones.getGeometry(i); + // Les lignes et polygones + if (zone.getDataStoreClass()==LineString.class||zone.getDataStoreClass()==LinearRing.class) + lignes.add((GISDataModel)zone); + // Multipoints + else if (zone.getDataStoreClass()==GISMultiPoint.class) + multipoints.add((GISDataModel)zone); + // Points + else + points.add((GISDataModel)zone); + } + /* Case 0 : les points + * Case 1 : les polylignes et les polygones + * Case 2 : les multipoints. + */ + GISDataModel[][] gisDataModels=new GISDataModel[][]{points.toArray(new GISDataModel[0]), lignes.toArray(new GISDataModel[0]), + multipoints.toArray(new GISDataModel[0])}; + //# Fin de la conversion #\\ + + SinusxFileFormat.getInstance().getLastVersionInstance(null).write(f, gisDataModels, null); lecture(f); } catch (final Exception _e) { _e.printStackTrace(); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java 2009-01-22 21:40:12 UTC (rev 4394) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerExporter.java 2009-01-23 10:39:23 UTC (rev 4395) @@ -13,11 +13,6 @@ import java.util.List; import java.util.Set; -import org.geotools.data.FileDataStoreFactorySpi; - -import com.memoire.fu.FuEmptyArrays; -import com.memoire.fu.FuLog; - import org.fudaa.ctulu.CtuluAnalyze; import org.fudaa.ctulu.CtuluIOOperationSynthese; import org.fudaa.ctulu.CtuluLib; @@ -32,23 +27,20 @@ import org.fudaa.ctulu.gis.GISDataModelFilterAdapter; import org.fudaa.ctulu.gis.GISDataModelMultiAdapter; import org.fudaa.ctulu.gis.GISDataModelPointToMultiPointAdapter; -import org.fudaa.ctulu.gis.GISZone; -import org.fudaa.ctulu.gis.GISZoneCollection; import org.fudaa.ctulu.gis.factory.GISExportDataStoreFactory; import org.fudaa.ctulu.gis.gml.GISGMLZoneExporter; import org.fudaa.ctulu.gis.mif.MIFDataStoreFactory; - import org.fudaa.dodico.dunes.io.DunesGEOFileFormat; import org.fudaa.dodico.rubar.io.RubarSEMFileFormat; import org.fudaa.dodico.rubar.io.RubarSEMWriterGISAdapter; import org.fudaa.dodico.rubar.io.RubarStCnFileFormat; import org.fudaa.dodico.telemac.io.SinusxFileFormat; - import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; - import org.fudaa.fudaa.commun.FudaaLib; -import org.fudaa.fudaa.sig.FSigResource; +import org.geotools.data.FileDataStoreFactorySpi; +import com.memoire.fu.FuLog; + /** * @author fred deniger * @version $Id: FSigLayerExporter.java,v 1.4 2007-06-14 12:01:22 deniger Exp $ @@ -103,7 +95,7 @@ return null; } } - final GISZoneCollection collect = _filter.getCollect(oi); + GISDataModel collect = _filter.getCollect(oi); exporter.process(_prog, collect, GISExportDataStoreFactory.createDataStore(dataStore_, file.toURL(), collect .getEnvelopeInternal(), true)); @@ -122,21 +114,24 @@ CtuluIOOperationSynthese exportTo(final FSigLayerFilter _filter, final CtuluUI _impl, final File _f, final ProgressionInterface _prog) { File f = CtuluLibFile.appendExtensionIfNeeded(_f, "sx"); - final GISZone z = new GISZone(); + GISDataModel[][] z = new GISDataModel[3][]; int nb = _filter.pointCq_.size(); + z[0]=new GISDataModel[_filter.pointCq_.size()]; for (int i = 0; i < nb; i++) { - final GISZoneCollection collec = _filter.getCollect(_filter.pointCq_.get(i)); - z.add(collec); + final GISDataModel collec = _filter.getCollect(_filter.pointCq_.get(i)); + z[0][i]=collec; } nb = _filter.polyCq_.size(); + z[1]=new GISDataModel[_filter.polyCq_.size()]; for (int i = 0; i < nb; i++) { - final GISZoneCollection collec = _filter.getCollect(_filter.polyCq_.get(i)); - z.add(collec); + final GISDataModel collec = _filter.getCollect(_filter.polyCq_.get(i)); + z[1][i]=collec; } nb = _filter.mlptsCq_.size(); + z[2]=new GISDataModel[_filter.mlptsCq_.size()]; for (int i = 0; i < nb; i++) { - final GISZoneCollection collec = _filter.getCollect(_filter.mlptsCq_.get(i)); - z.add(collec); + final GISDataModel collec = _filter.getCollect(_filter.mlptsCq_.get(i)); + z[2][i]=collec; } return SinusxFileFormat.getInstance().write(f, z, _prog); @@ -158,7 +153,7 @@ mdls.add(_filter.getCollect(_filter.mlptsCq_.get(i))); } for (int i = 0; i < _filter.polyCq_.size(); i++) { - final GISZoneCollection collec = _filter.getCollect(_filter.polyCq_.get(i)); + final GISDataModel collec = _filter.getCollect(_filter.polyCq_.get(i)); mdls.add(collec); } @@ -194,17 +189,18 @@ mdlsemis.add(GISDataModelFilterAdapter.buildAdapter(_filter.getCollect(_filter.mlptsCq_.get(i)), null)); } for (int i=0; i<_filter.polyCq_.size(); i++) { - GISZoneCollection col=_filter.getCollect(_filter.polyCq_.get(i)); - if (col.getNbGeometries()==0) continue; + GISDataModel col=_filter.getCollect(_filter.polyCq_.get(i)); + if (col.getNumGeometries()==0) + continue; int idxAtt=col.getIndiceOf(GISAttributeConstants.NATURE); if (idxAtt==-1) { - mdlautres.add(GISDataModelFilterAdapter.buildAdapter(_filter.getCollect(_filter.polyCq_.get(i)), - new GISAttributeInterface[]{GISAttributeConstants.TITRE})); + mdlautres.add(GISDataModelFilterAdapter.buildAdapter(_filter.getCollect(_filter.polyCq_.get(i)), + new GISAttributeInterface[]{GISAttributeConstants.TITRE})); } else { - GISDataModel mdl=GISDataModelFilterAdapter.buildAdapter(_filter.getCollect(_filter.polyCq_.get(i)), - new GISAttributeInterface[]{GISAttributeConstants.TITRE,GISAttributeConstants.NATURE}); - if (GISAttributeConstants.ATT_NATURE_CN.equals(col.getValue(idxAtt,0))) { + GISDataModel mdl=GISDataModelFilterAdapter.buildAdapter(_filter.getCollect(_filter.polyCq_.get(i)), + new GISAttributeInterface[]{GISAttributeConstants.TITRE, GISAttributeConstants.NATURE}); + if (GISAttributeConstants.ATT_NATURE_CN.equals(col.getValue(idxAtt, 0))) { mdlniv.add(mdl); } else if (GISAttributeConstants.ATT_NATURE_PF.equals(col.getValue(idxAtt,0))) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerFilter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerFilter.java 2009-01-22 21:40:12 UTC (rev 4394) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerFilter.java 2009-01-23 10:39:23 UTC (rev 4395) @@ -16,18 +16,13 @@ import org.fudaa.ctulu.CtuluIOOperationSynthese; import org.fudaa.ctulu.CtuluUI; import org.fudaa.ctulu.ProgressionInterface; -import org.fudaa.ctulu.gis.GISAttributeModel; +import org.fudaa.ctulu.gis.GISDataModel; +import org.fudaa.ctulu.gis.GISDataModelFilterAdapter; import org.fudaa.ctulu.gis.GISZoneCollection; -import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; -import org.fudaa.ctulu.gis.GISZoneCollectionMultiPoint; -import org.fudaa.ctulu.gis.GISZoneCollectionPoint; import org.fudaa.ebli.calque.BCalque; import org.fudaa.ebli.calque.BCalqueVisitor; import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; -import org.fudaa.ebli.calque.ZCalqueGeometry; import org.fudaa.ebli.calque.ZModeleGeometry; -import org.fudaa.ebli.calque.edition.ZModeleGeometryDefault; -import org.fudaa.ebli.calque.edition.ZModelePointEditable; import com.vividsolutions.jts.geom.LineString; import com.vividsolutions.jts.geom.MultiPoint; @@ -40,10 +35,10 @@ */ public class FSigLayerFilter implements BCalqueVisitor { - final Set<BCalque> cqs_ = new HashSet<BCalque>(); - List<BCalque> pointCq_ = new ArrayList<BCalque>(); - List<BCalque> polyCq_ = new ArrayList<BCalque>(); - List<BCalque> mlptsCq_=new ArrayList<BCalque>(); + final Set<ZCalqueAffichageDonneesInterface> cqs_ = new HashSet<ZCalqueAffichageDonneesInterface>(); + List<ZCalqueAffichageDonneesInterface> pointCq_ = new ArrayList<ZCalqueAffichageDonneesInterface>(); + List<ZCalqueAffichageDonneesInterface> polyCq_ = new ArrayList<ZCalqueAffichageDonneesInterface>(); + List<ZCalqueAffichageDonneesInterface> mlptsCq_=new ArrayList<ZCalqueAffichageDonneesInterface>(); boolean bonlyVisible_=false; protected boolean onlySelectedGeometries_=false; @@ -74,13 +69,16 @@ return _o.getTitle(); } - final GISZoneCollection getCollect(final ZCalqueAffichageDonneesInterface _o) { - final GISZoneCollection geomData = ((ZModeleGeometry) _o.modeleDonnees()).getGeomData(); - geomData.prepareExport(); - return geomData; + final GISDataModel getCollect(final ZCalqueAffichageDonneesInterface _o) { + GISZoneCollection zone = ((ZModeleGeometry) _o.modeleDonnees()).getGeomData(); + zone.prepareExport(); + int[] idxAttributes=new int[zone.getNbAttributes()]; + for(int i=0;i<zone.getNbAttributes();i++) + idxAttributes[i]=i; + return new GISDataModelFilterAdapter(zone, idxAttributes, _o.getSelectedObjectInTable()); } - final GISZoneCollection getCollect(final Object _o) { + final GISDataModel getCollect(final Object _o) { return getCollect((ZCalqueAffichageDonneesInterface) _o); } @@ -99,40 +97,6 @@ onlySelectedGeometries_=_b; } - /** - * Retourne les donn\xE9es de la g\xE9om\xE9tries de _zone. - * retourne null si _idxGeom est invalide. - */ - private Object[] getData(int _idxGeom, GISZoneCollection _zone) { - Object[] data=null; - if (_idxGeom>=0&&_idxGeom<_zone.getNbGeometries()) { - GISAttributeModel[] models=_zone.getModels(); - data=new Object[models.length]; - for (int i=0; i<data.length; i++) - data[i]=models[i].getObjectValueAt(_idxGeom); - } - return data; - } - - /** - * Ajout les attributs n\xE9c\xE9ssaires \xE0 _destination puis ajout les g\xE9om\xE9tries de - * la _source \xE0 la _destination. - */ - private void addGeoms(int[] _idx, GISZoneCollection _source, GISZoneCollection _destination) { - _destination.setAttributes(_source.getAttributes(), null); - for(int i=0;i<_idx.length;i++) - _destination.addGeometry(_source.getGeometry(_idx[i]), getData(_idx[i], _source), null); - } - - /** - * Cr\xE9e un nouveau calque dupliquant les g\xE9om\xE9ries selectionn\xE9es dans celui pass\xE9 en param\xE8tre. - */ - private BCalque duplicateCalque(ZCalqueAffichageDonneesInterface _calque) { - ZModeleGeometryDefault model=new ZModeleGeometryDefault(null); - addGeoms(_calque.getSelectedObjectInTable(), ((ZModeleGeometry)_calque.modeleDonnees()).getGeomData(), model.getGeomData()); - return new ZCalqueGeometry(model); - } - public boolean visit(final BCalque _cq) { // Calque non trait\xE9 si invisible. if (bonlyVisible_&&!_cq.isVisible()) @@ -140,36 +104,17 @@ if (!cqs_.contains(_cq)&&_cq instanceof ZCalqueAffichageDonneesInterface &&((ZCalqueAffichageDonneesInterface)_cq).modeleDonnees() instanceof ZModeleGeometry) { - cqs_.add(_cq); - ZCalqueAffichageDonneesInterface calque=(ZCalqueAffichageDonneesInterface)_cq; - final ZModeleGeometry geom=(ZModeleGeometry)calque.modeleDonnees(); - if (onlySelectedGeometries_) { - if (!calque.isSelectionEmpty()) { - if (geom.getGeomData().getDataStoreClass().equals(Point.class)) { - ZModelePointEditable model=new ZModelePointEditable(new GISZoneCollectionPoint()); - addGeoms(calque.getSelectedObjectInTable(), geom.getGeomData(), model.getGeomData()); - pointCq_.add(new ZCalqueGeometry(model)); - } - else if (LineString.class.isAssignableFrom(geom.getGeomData().getDataStoreClass())) { - ZModeleGeometryDefault model=new ZModeleGeometryDefault(new GISZoneCollectionLigneBrisee()); - addGeoms(calque.getSelectedObjectInTable(), geom.getGeomData(), model.getGeomData()); - polyCq_.add(new ZCalqueGeometry(model)); - } - else if (MultiPoint.class.isAssignableFrom(geom.getGeomData().getDataStoreClass())) { - ZModeleGeometryDefault model=new ZModeleGeometryDefault(new GISZoneCollectionMultiPoint()); - addGeoms(calque.getSelectedObjectInTable(), geom.getGeomData(), model.getGeomData()); - mlptsCq_.add(new ZCalqueGeometry(model)); - } - } - } - else { + ZCalqueAffichageDonneesInterface calque=(ZCalqueAffichageDonneesInterface)_cq; + ZModeleGeometry geom=(ZModeleGeometry)calque.modeleDonnees(); + cqs_.add(calque); + if (!onlySelectedGeometries_||!calque.isSelectionEmpty()) { if (geom.getGeomData().getDataStoreClass().equals(Point.class)) - pointCq_.add(_cq); + pointCq_.add(calque); else if (LineString.class.isAssignableFrom(geom.getGeomData().getDataStoreClass())) - polyCq_.add(_cq); + polyCq_.add(calque); else if (MultiPoint.class.isAssignableFrom(geom.getGeomData().getDataStoreClass())) - mlptsCq_.add(_cq); + mlptsCq_.add(calque); } } return true; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/telemac/TrMatisseConvertGUI.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/telemac/TrMatisseConvertGUI.java 2009-01-22 21:40:12 UTC (rev 4394) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/tr/telemac/TrMatisseConvertGUI.java 2009-01-23 10:39:23 UTC (rev 4395) @@ -11,6 +11,8 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; +import java.util.ArrayList; +import java.util.List; import javax.swing.BorderFactory; import javax.swing.JTextField; @@ -20,6 +22,8 @@ import javax.swing.event.DocumentListener; import com.memoire.bu.*; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.LinearRing; import org.fudaa.ctulu.CtuluActivity; import org.fudaa.ctulu.CtuluIOOperationSynthese; @@ -28,7 +32,10 @@ import org.fudaa.ctulu.CtuluLibString; import org.fudaa.ctulu.CtuluProgressionBarAdapter; import org.fudaa.ctulu.ProgressionInterface; +import org.fudaa.ctulu.gis.GISDataModel; +import org.fudaa.ctulu.gis.GISMultiPoint; import org.fudaa.ctulu.gis.GISZone; +import org.fudaa.ctulu.gis.GISZoneCollection; import org.fudaa.ctulu.gui.CtuluDialogPanel; import org.fudaa.ctulu.gui.CtuluLibDialog; @@ -234,7 +241,33 @@ progress_.setDesc(CtuluLib.getS("Export")); final SinusxWriter sxW = new SinusxWriter(SinusxFileFormat.getInstance()); current_ = sxW; - sxW.write(mnt_, sx, progress_); + + //# Conversion de la GISZone en GISDataModel[][] #\\ + // Tri des GISZoneCollection en fonction de leur type + List<GISDataModel> points=new ArrayList<GISDataModel>(); + List<GISDataModel> lignes=new ArrayList<GISDataModel>(); + List<GISDataModel> multipoints=new ArrayList<GISDataModel>(); + for (int i=0; i<mnt_.getNumGeometries(); i++) { + GISZoneCollection zone=(GISZoneCollection)mnt_.getGeometry(i); + // Les lignes et polygones + if (zone.getDataStoreClass()==LineString.class||zone.getDataStoreClass()==LinearRing.class) + lignes.add((GISDataModel)zone); + // Multipoints + else if (zone.getDataStoreClass()==GISMultiPoint.class) + multipoints.add((GISDataModel)zone); + // Points + else + points.add((GISDataModel)zone); + } + /* Case 0 : les points + * Case 1 : les polylignes et les polygones + * Case 2 : les multipoints. + */ + GISDataModel[][] gisDataModels=new GISDataModel[][]{points.toArray(new GISDataModel[0]), lignes.toArray(new GISDataModel[0]), + multipoints.toArray(new GISDataModel[0])}; + //# Fin de la conversion #\\ + + sxW.write(gisDataModels, sx, progress_); CtuluLibDialog.showMessage(btCharger_, "OK", TrResource.getS("Export r\xE9ussie")); progress_.reset(); btStop_.setEnabled(false); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <had...@us...> - 2009-01-22 22:22:01
|
Revision: 4394 http://fudaa.svn.sourceforge.net/fudaa/?rev=4394&view=rev Author: hadouxad Date: 2009-01-22 21:40:12 +0000 (Thu, 22 Jan 2009) Log Message: ----------- LOT 3: 3 fois plus fort!! Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/mesure/EvolutionReguliere.java branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/telemac/io/ScopeStructure.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZCalqueSondeSynchroniserFusion.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZEbliCalquePanelController.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGrapheTreeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/FudaaCourbeWizardImportScope.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/ScopeCourbeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MVProfileCourbeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileTreeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/ScopCourbeTreeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeTreeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostVisuPanel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrReplayCurvesData.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/dialogSpec/TrPostWizardImportScope.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/persist/TrPostPersistenceManager.java Modified: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/mesure/EvolutionReguliere.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/mesure/EvolutionReguliere.java 2009-01-22 15:22:26 UTC (rev 4393) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/mesure/EvolutionReguliere.java 2009-01-22 21:40:12 UTC (rev 4394) @@ -38,6 +38,11 @@ private boolean nuagePoints_=false; /** + * Indique si il faut transformer l'\xE9volution r\xE9guli\xE8re au format scope. + */ + public boolean isScope_=false; + + /** * Infos supplementaires ajoutees aux courbes afin de transferer des infos specifiques. */ public Map infos_=new HashMap(); Modified: branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/telemac/io/ScopeStructure.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/telemac/io/ScopeStructure.java 2009-01-22 15:22:26 UTC (rev 4393) +++ branches/Prepro-0.92-SNAPSHOT/dodico/src/org/fudaa/dodico/telemac/io/ScopeStructure.java 2009-01-22 21:40:12 UTC (rev 4394) @@ -199,7 +199,7 @@ evolReg[i] = new EvolutionReguliere(tabX, tabY, false); evolReg[i].setNom("courbe de " + nomVar.replace(" ", "")); - + evolReg[i].isScope_=true; //-- ajout des infos specifiques --// Map infos= evolReg[i].infos_; infos.put("Type", "Profil scop"); @@ -535,7 +535,7 @@ evolReg[i] = new EvolutionReguliere(tabX, tabY, false); evolReg[i].setNom("courbe de " + nomVar.replace(" ", "")); evolReg[i].setUnite(nomVar); - + evolReg[i].isScope_=true; //-- ajout des infos specifiques --// // Map infos= evolReg[i].infos_; // infos.put("Type", "Profil spatial scopGene"); @@ -635,8 +635,8 @@ evolReg[i] = new EvolutionReguliere(tabX, tabY, false); evolReg[i].setNom(nomVar.replace(" ", "")+" sur ["+getSeparator(0).replace(" ", "")+";"+getSeparator(getNbSeparator()-1).replace(" ", "")+"] pour X choisi="+xVoulu); evolReg[i].setUnite(nomVar); + evolReg[i].isScope_=true; - //-- ajout des infos specifiques --// Map infos= evolReg[i].infos_; infos.put("Type", "Profil temporel scopGene"); @@ -674,7 +674,7 @@ evolReg[0] = new EvolutionReguliere(tabX, tabY, false); evolReg[0].setNom("Correlation:(X="+getVariable(varX+1).replace(" ", "")+"//Y="+getVariable(varY+1).replace(" ", "")+")"); evolReg[0].setUnite(getVariable(varX+1)); - + evolReg[0].isScope_=true; //-- ajout des infos specifiques --// Map infos= evolReg[0].infos_; infos.put("Type", "Correlation scopGene"); Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZCalqueSondeSynchroniserFusion.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZCalqueSondeSynchroniserFusion.java 2009-01-22 15:22:26 UTC (rev 4393) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZCalqueSondeSynchroniserFusion.java 2009-01-22 21:40:12 UTC (rev 4394) @@ -1,21 +1,29 @@ package org.fudaa.ebli.calque; import java.awt.BorderLayout; +import java.awt.Dimension; import java.awt.Frame; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Set; +import javax.swing.ButtonGroup; import javax.swing.Icon; import javax.swing.ImageIcon; +import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.JRadioButton; import javax.swing.JScrollPane; import org.fudaa.ctulu.gui.CtuluLibSwing; @@ -30,6 +38,7 @@ import org.jdesktop.swingx.treetable.DefaultMutableTreeTableNode; import org.jdesktop.swingx.treetable.DefaultTreeTableModel; +import com.memoire.bu.BuComboBox; import com.memoire.fu.FuLog; /** @@ -77,7 +86,9 @@ // getController().getPaletteInfo().getTableModel()); //-- init des datas --// - listInfoData_.add(new DataSonde()); + DataSonde data=new DataSonde(); + si.fillWithInfo(data); + listInfoData_.add(data); // -- enregistrement aupres de la sonde du manager comme listener --// si.addZCalqueSondeListener(this); @@ -99,8 +110,8 @@ */ public void notifySondeMoved(ZCalqueSondeInteraction _activator, GrPoint _e) { - if (structureModel_ == null) - structureModel_ = constructStructureModel(); +// if (structureModel_ == null) +// structureModel_ = constructStructureModel(); for (int i=0;i<listeSondeInteractions_.size();i++) { @@ -115,8 +126,9 @@ // -- on replace la sonde des autres calques --// ZCalqueSondeInterface objet = sondeInteraction.getTarget(); objet.setSondeEnable(true); + objet.changeSonde(pt); - + //--remplissage des infos specifiques a la sonde --// ZCalquePoint isoLayer = listeWidgetCalque_.get(i).getCalqueController().getVisuPanel().getIsoLayer(); isoLayer.fillWithInterpolateInfo(listInfoData_.get(i)); @@ -126,13 +138,36 @@ } } + + fillAllVariables(); + buildDialog(); - // structureModel_ = constructStructureModel(); - // treeTableNodes_.setTreeTableModel(structureModel_); - // treeTableNodes_.expandAll(); + structureModel_ = constructStructureModel(); + treeTableNodes_.setTreeTableModel(structureModel_); + treeTableNodes_.expandAll(); structureModel_.reload(); } + +BuComboBox comboChoixVar_=new BuComboBox(); +ArrayList<String> listeVar_=new ArrayList<String>(); +final static String ALLVAR=EbliResource.EBLI.getString("tout"); +/** + * Remplit la combo avec toutes les variables. + */ +private void fillAllVariables(){ + HashSet<String> listeVar=new HashSet<String>(); + for(DataSonde sonde:listInfoData_) + for(String key:sonde.mapValueSonde.keySet()) + if(!key.equals("X") && !key.equals("Y") && !key.equals("El\xE9ment englobant") ) + listeVar.add(key); + listeVar_=new ArrayList<String>(); + listeVar_.add(ALLVAR); + listeVar_.addAll(listeVar); + +} + + JDialog dialog_; public void buildDialog() { if (dialog_ != null) { @@ -164,10 +199,28 @@ dialog_.setTitle(getTitle()); JPanel container=new JPanel(new BorderLayout()); container.add(buildComponent(), BorderLayout.CENTER); - container - .add(new JLabel("<html> <body><b><center>" + getTitle() + "</center></b> </body></html>"), - BorderLayout.NORTH); - dialog_.setContentPane(container); + + comboChoixVar_=new BuComboBox(listeVar_.toArray(new String[listeVar_.size()])); + comboChoixVar_.setMinimumSize(new Dimension(150,(int) comboChoixVar_.getSize().getHeight())); + comboChoixVar_.addActionListener(new ActionListener(){ + + @Override + public void actionPerformed(ActionEvent e) { + filtreVariables(); + + } + + }); + JPanel panelRadio=new JPanel(); + panelRadio.add(new JLabel("Variable:")); + panelRadio.add(comboChoixVar_); + + container.add(panelRadio,BorderLayout.NORTH); + + JPanel content=new JPanel(new BorderLayout()); + content.add(container,BorderLayout.CENTER); + //content.add(new JLabel("<html> <body><b><center>" + getTitle() + "</center></b> </body></html>"),BorderLayout.NORTH); + dialog_.setContentPane(content); dialog_.setSize(400, 250); dialog_.setLocationRelativeTo(CtuluLibSwing.getFrameAncestor(ui.getParentComponent())); dialog_.setVisible(true); @@ -244,13 +297,13 @@ listOrdonneetitres_.add("X"); listOrdonneetitres_.add("Y"); listOrdonneetitres_.add("El\xE9ment englobant"); - listOrdonneetitres_.add("Bathym\xE9trie"); - listOrdonneetitres_.add("Cote eau"); - listOrdonneetitres_.add("Hauteur d'eau"); - listOrdonneetitres_.add("Nombre de Froude"); - listOrdonneetitres_.add("Vitesse"); - listOrdonneetitres_.add("Vitesse u"); - listOrdonneetitres_.add("Vitesse v"); +// listOrdonneetitres_.add("Bathym\xE9trie"); +// listOrdonneetitres_.add("Cote eau"); +// listOrdonneetitres_.add("Hauteur d'eau"); +// listOrdonneetitres_.add("Nombre de Froude"); +// listOrdonneetitres_.add("Vitesse"); +// listOrdonneetitres_.add("Vitesse u"); +// listOrdonneetitres_.add("Vitesse v"); for (String key : listOrdonneetitres_) { mapValueSonde.put(key, valueEmpty); @@ -268,8 +321,8 @@ public void put(String _key, String _value) { mapValueSonde.put(_key, _value); - if (!listOrdonneetitres_.contains(_key)) - listOrdonneetitres_.add(_key); +// if (!listOrdonneetitres_.contains(_key)) +// listOrdonneetitres_.add(_key); } public void setTitle(String _title) { @@ -373,31 +426,47 @@ } + + /** + * Remplit les infos de la structure avec les infos des sondes. + * @param indice + * @param treenode + * @param data_ + */ public void fillWithInfos(int indice, DefaultMutableTreeTableNode treenode, DataSonde data_) { - - // on enleve les children - // Enumeration<? extends MutableTreeTableNode> children = - // treenode.children(); - // ArrayList<MutableTreeTableNode> listChildren = new - // ArrayList<MutableTreeTableNode>(); - // while (children.hasMoreElements()) { - // MutableTreeTableNode node = children.nextElement(); - // listChildren.add(node); - // - // } - // for (MutableTreeTableNode node : listChildren) { - // node.removeFromParent(); - // } - // -- on ajoute les nouveaux - for (Iterator<String> it = data_.listOrdonneetitres_.iterator(); it.hasNext();) { + treenode.add(new DefaultMutableTreeTableNode(new SondeCouple("X", indice))); + treenode.add(new DefaultMutableTreeTableNode(new SondeCouple("Y", indice))); + treenode.add(new DefaultMutableTreeTableNode(new SondeCouple("El\xE9ment englobant", indice))); + + if(comboChoixVar_!=null && comboChoixVar_.getSelectedIndex()==0){ + for (Iterator<String> it = data_.mapValueSonde.keySet().iterator(); it.hasNext();) { String key = it.next(); - Object value = data_.mapValueSonde.get(key); - DefaultMutableTreeTableNode node = new DefaultMutableTreeTableNode( - new SondeCouple(key, indice)); + // Object value = data_.mapValueSonde.get(key); + if(!key.equals("X") && !key.equals("Y") && !key.equals("El\xE9ment englobant") ){ + DefaultMutableTreeTableNode node = new DefaultMutableTreeTableNode(new SondeCouple(key, indice)); treenode.add(node); + } } + }else{ + //-- ajout juste du noeud correspondant au sorter --// + String value=(String) comboChoixVar_.getSelectedItem(); + treenode.add(new DefaultMutableTreeTableNode(new SondeCouple(value, indice))); + } + } + + /** + * Est appel\xE9 lors d'un choix de la combo. + * Affiche uniquement les variables voulues. + * C'est dans la methode fillWithInfos que l'on va prendre en compte le filtre de la variable. + */ + public void filtreVariables(){ + structureModel_ = constructStructureModel(); + treeTableNodes_.setTreeTableModel(structureModel_); + treeTableNodes_.expandAll(); + structureModel_.reload(); + } } Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZEbliCalquePanelController.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZEbliCalquePanelController.java 2009-01-22 15:22:26 UTC (rev 4393) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZEbliCalquePanelController.java 2009-01-22 21:40:12 UTC (rev 4394) @@ -9,6 +9,7 @@ import java.awt.Cursor; import java.awt.event.ActionEvent; +import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; @@ -209,7 +210,7 @@ } }; restore.putValue(Action.SHORT_DESCRIPTION, EbliResource.EBLI.getString("Restaurer la vue globale")); - restore.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke('r')); + restore.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke('V',InputEvent.CTRL_DOWN_MASK)); restore.putValue(EbliActionInterface.SECOND_KEYSTROKE, KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0)); int i = 0; navigationActionGroup_[i++] = restore; Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGrapheTreeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGrapheTreeModel.java 2009-01-22 15:22:26 UTC (rev 4393) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGrapheTreeModel.java 2009-01-22 21:40:12 UTC (rev 4394) @@ -320,6 +320,18 @@ } + public List<EGCourbeChild> getAllCourbesChild() { + final List r = new ArrayList(); + final int nb = components_.size(); + for (int i = 0; i < nb; i++) { + getGroup(i).fillWithCurves(r); + } + + return r; + + } + + public int getIconHeight() { return 24; } @@ -882,6 +894,10 @@ public EGCourbe[] getCourbes() { return getGrapheTreeNode().getCourbes(); } + + public List<EGCourbeChild> getAllCourbesChild() { + return getGrapheTreeNode().getAllCourbesChild(); + } public EGObject getEGObject(final int _i) { return (EGObject) root.getChildAt(_i); Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/FudaaCourbeWizardImportScope.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/FudaaCourbeWizardImportScope.java 2009-01-22 15:22:26 UTC (rev 4393) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/FudaaCourbeWizardImportScope.java 2009-01-22 21:40:12 UTC (rev 4394) @@ -24,6 +24,7 @@ import javax.swing.ListSelectionModel; import javax.swing.filechooser.FileFilter; +import org.fudaa.ctulu.CtuluCommandManager; import org.fudaa.ctulu.CtuluIOOperationSynthese; import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.CtuluLibArray; @@ -40,7 +41,9 @@ import org.fudaa.dodico.telemac.io.ScopeStructure; import org.fudaa.dodico.telemac.io.ScopeTFileFormat; import org.fudaa.ebli.commun.EbliActionSimple; +import org.fudaa.ebli.courbe.EGCourbeChild; import org.fudaa.ebli.courbe.EGGraphe; +import org.fudaa.ebli.courbe.EGGrapheTreeModel; import org.fudaa.ebli.ressource.EbliResource; import org.fudaa.fudaa.commun.FudaaLib; import org.fudaa.fudaa.commun.impl.FudaaCommonImplementation; @@ -58,6 +61,7 @@ import com.memoire.bu.BuValueValidator; import com.memoire.bu.BuWizardDialog; import com.memoire.bu.BuWizardTask; +import com.sun.xml.internal.bind.v2.schemagen.xmlschema.List; /** * Wizard qui se charge d'importer des courbes au format scope dans le post. @@ -116,14 +120,54 @@ } } + /** + * Boolean qui implique si on rejoue et dans ce cas si on ecrase les datas. + */ + boolean replayData_=false; public FudaaCourbeWizardImportScope(FudaaCommonImplementation impl,FudaaCourbeImporter.Target target) { + this(impl,target,false,null); + + + } + + public FudaaCourbeWizardImportScope(FudaaCommonImplementation impl,FudaaCourbeImporter.Target target,boolean replayData,File fileToReload) { super(); target_=target; impl_=impl; + replayData_=replayData; + fileChoosen_=fileToReload; + + //-- on avance \xE0 l'\xE9tape 2 directement --// + if(replayData_ && fileChoosen_!=null){ + panelFichier_=buildFilePanel(); + this.filePath_.setText(""+fileChoosen_.getAbsolutePath()); + typeFormat_=devineTypeWithExtension(fileChoosen_.getName()); + computeData(impl.getMainProgression()); + current_=1; + } + } + public int devineTypeWithExtension(String name){ + + for(int i=0;i<ScopeSFileFormat.getInstance().getExtensions().length;i++) + if(name.contains(ScopeSFileFormat.getInstance().getExtensions()[i]) || name.contains(ScopeSFileFormat.getInstance().getExtensions()[i].toLowerCase())) + return 0; + for(int i=0;i<ScopeTFileFormat.getInstance().getExtensions().length;i++) + if(name.contains(ScopeSFileFormat.getInstance().getExtensions()[i])|| name.contains(ScopeSFileFormat.getInstance().getExtensions()[i].toLowerCase())) + return 1; + for(int i=0;i<ScopeGENEFileFormat.getInstance().getExtensions().length;i++){ + String ext=ScopeGENEFileFormat.getInstance().getExtensions()[i]; + if(name.contains(ScopeGENEFileFormat.getInstance().getExtensions()[i])|| name.contains(ScopeGENEFileFormat.getInstance().getExtensions()[i].toLowerCase())) + return 2; + } + return -1; + + + } + @Override public JComponent getStepComponent() { switch (current_) { @@ -265,8 +309,20 @@ private void importData(){ new CtuluTaskOperationGUI(impl_, FudaaLib.getS("Importation graphe")) { public void act() { - final ProgressionInterface prog = getMainStateReceiver(); - + + computeData(getMainStateReceiver()); + + + }}.start(); + + } + + /** + * Methode qui realise le calcul de la structure. + * @param prog + */ + private void computeData(ProgressionInterface prog){ + switch(typeFormat_){ case 0: //cas s @@ -281,9 +337,6 @@ data_=lectureScopeGENE(fileChoosen_,prog); break; } - - }}.start(); - } private ScopeStructure.SorT lectureScopeS(final File _f,ProgressionInterface prog) { @@ -384,7 +437,7 @@ } EvolutionReguliere evol=new EvolutionReguliere(tabX, tabY,_time); evol.setNom(nomVar+" "+nomSeparator); - + evol.isScope_=true; //-- ajout des infos specifiques --// Map infos= evol.infos_; infos.put("Type", "Profil spatial scopGene"); @@ -663,6 +716,20 @@ done_ = true; new CtuluTaskOperationGUI(impl_, FudaaLib.getS("Importation graphe")) { public void act() { + + /** + * Cas de rejoue des donn\xE9es, on supprime le contenu du graphe + */ + if(replayData_){ + if(target_ instanceof EGGrapheTreeModel){ + java.util.List<EGCourbeChild> listecb=((EGGrapheTreeModel)target_).getAllCourbesChild(); + + ((EGGrapheTreeModel)target_).removeCurves( listecb.toArray(new EGCourbeChild[listecb.size()]), new CtuluCommandManager()); + + } + } + + final ProgressionInterface prog = getMainStateReceiver(); //mise a jour de la structure impl_.setMainProgression(10); @@ -682,7 +749,7 @@ EvolutionReguliere[] tabEvol=new EvolutionReguliere[modelCoupleSpatiauxGENE_.getSize()]; for(int i=0;i<modelCoupleSpatiauxGENE_.getSize();i++) tabEvol[i]=((CoupleVarSepartor) modelCoupleSpatiauxGENE_.getElementAt(i)).transform(false); - + impl_.setMainProgression(30); impl_.setMainMessage(CtuluLib.getS("Cr\xE9ation du graphe")); FudaaCourbeImporterScope.createGraphe(target_, tabEvol, null, prog,false); Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/ScopeCourbeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/ScopeCourbeModel.java 2009-01-22 15:22:26 UTC (rev 4393) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/ScopeCourbeModel.java 2009-01-22 21:40:12 UTC (rev 4394) @@ -12,7 +12,11 @@ import org.fudaa.ebli.palette.BPaletteInfo.InfoData; import org.fudaa.ebli.visuallibrary.EbliWidget; import org.fudaa.fudaa.tr.common.TrResource; +import org.fudaa.fudaa.tr.post.ScopCourbeTreeModel; +import org.fudaa.fudaa.tr.post.TrPostCommonImplementation; +import org.fudaa.fudaa.tr.post.TrPostCourbeTreeModel; import org.fudaa.fudaa.tr.post.TrPostSource; +import org.fudaa.fudaa.tr.post.TrReplayCurvesData; import com.vividsolutions.jts.geom.LineString; @@ -106,4 +110,19 @@ impl.message("Origine de la courbe scop", "Impossible de trouver", false); } } + + + public void replayData(org.fudaa.ebli.courbe.EGGrapheTreeModel model,Map infos, CtuluUI impl) { + if(!(impl instanceof TrPostCommonImplementation)){ + impl.error(TrResource.getS("Impossible de r\xE9cup\xE9rer la bonne interface fudaa")); + return; + } + TrPostCommonImplementation implementation=(TrPostCommonImplementation)impl; + + //-- on cree une vue 2d a partir du fichier source fourni et on le centre sur le point interpol\xE9 ou non --// + TrReplayCurvesData.getInstance().getScopGeneReplayData(model, this, implementation); + + + } + } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MVProfileCourbeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MVProfileCourbeModel.java 2009-01-22 15:22:26 UTC (rev 4393) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MVProfileCourbeModel.java 2009-01-22 21:40:12 UTC (rev 4394) @@ -432,9 +432,12 @@ return; } TrPostCommonImplementation implementation=(TrPostCommonImplementation)impl; - + if(!(this.getData() instanceof TrPostSource)){ + implementation.error("Impossible de r\xE9cup\xE9rer le fichier r\xE9sulat depuis ce type de profil spatial."); + return; + } //-- on cree une vue 2d a partir du fichier source fourni et on le centre sur le point interpol\xE9 ou non --// - TrReplayCurvesData.getInstance().getProfilSpatialReplayData((MvProfileTreeModel)model, this, implementation); + TrReplayCurvesData.getInstance().getProfilSpatialReplayData((TrPostSource) this.getData(),(MvProfileTreeModel)model, this, implementation); } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileTreeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileTreeModel.java 2009-01-22 15:22:26 UTC (rev 4393) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileTreeModel.java 2009-01-22 21:40:12 UTC (rev 4394) @@ -14,6 +14,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -55,6 +56,7 @@ import org.fudaa.ebli.courbe.EGGrapheModel; import org.fudaa.ebli.courbe.EGGrapheTreeModel; import org.fudaa.ebli.courbe.EGGroup; +import org.fudaa.ebli.courbe.EGModel; import org.fudaa.ebli.courbe.EGObject; import org.fudaa.ebli.visuallibrary.EbliWidget; import org.fudaa.fudaa.commun.courbe.FudaaCourbeModel; @@ -804,7 +806,15 @@ final EGGroup gr = getGroup(H2dVariableType.SANS, true); final List<EGCourbeChild> childs = new ArrayList<EGCourbeChild>(_crb.length); for (int i = 0; i < _crb.length; i++) { - final EGCourbeChild child = new EGCourbeChild(gr, new FudaaCourbeModel(new EvolutionReguliere(_crb[i]))); + + EGModel modelCourbe=null; + if((_crb[i] instanceof EvolutionReguliere) && ((EvolutionReguliere)_crb[i]).isScope_){ + modelCourbe=new ScopeCourbeModel((EvolutionReguliere) _crb[i]); + }else + modelCourbe=new FudaaCourbeModel(new EvolutionReguliere(_crb[i])); + + final EGCourbeChild child = new EGCourbeChild(gr, modelCourbe); + //-- on met a jour si la courbe est un nuage de points ou non --// child.setNuagePoints_(_crb[i].isNuagePoints()); @@ -824,7 +834,7 @@ public void finalizePersistance(){ //-- recupere les groupes de la persistance qui doivent etre supprim\xE9 car ne sont pas des liens directs avec les variables H2dVariableType du projet--// - ArrayList<EGGroup> listeGroupeAsupprimer=new ArrayList<EGGroup>(); + Set<EGGroup> listeGroupeAsupprimer=new HashSet<EGGroup>(); for(int i=0;i<this.getNbEGObject();i++){ @@ -847,13 +857,18 @@ listeCourbeToAdd.add(courbe); + //-- ajout du groupe dans la liste a supprimer --// + listeGroupeAsupprimer.add(groupe); - }else{ + }else if(courbe.getModel()!=null && (courbe.getModel() instanceof ScopeCourbeModel)){ //-- on cree le groupe sans car la courbe n'est pas profil spatioal, elel peut etre socpgen--// nvGroupe=getGroup(H2dVariableType.SANS,true); //nvGroupe.addEGComponent(courbe); //listeVar.put(groupe, MvProfileFillePanel.createGroupFor(H2dVariableType.SANS)); listeCourbeToAdd.add(courbe); + + //-- ajout du groupe dans la liste a supprimer --// + listeGroupeAsupprimer.add(groupe); } } @@ -864,8 +879,7 @@ if(nvGroupe!=null) nvGroupe.addEGComponent(listeCourbeToAdd); - //-- ajout du groupe dans la liste a supprimer --// - listeGroupeAsupprimer.add(groupe); + } } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/ScopCourbeTreeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/ScopCourbeTreeModel.java 2009-01-22 15:22:26 UTC (rev 4393) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/ScopCourbeTreeModel.java 2009-01-22 21:40:12 UTC (rev 4394) @@ -105,11 +105,28 @@ } + public void finalizePersistance(){ + for(int i=0;i<this.getNbEGObject();i++){ + + if(this.getEGObject(i) instanceof EGGroup){ + + EGGroup groupe=(EGGroup) this.getEGObject(i); + for(int k=0;k<groupe.getChildCount();k++){ + if(groupe.getCourbeAt(k)!=null){ + EGCourbeChild courbe=groupe.getCourbeAt(k); + if(courbe.getModel()!=null && (courbe.getModel() instanceof ScopeCourbeModel)){ + + varGroup_.put(H2dVariableType.SANS, groupe); + } + } + } + } + } + } + // public EGCourbe[] getCourbes() { -// // List<EGCourbe> liste=new ArrayList<EGCourbe>(); -// // for(int i=0;i<this.getNbEGObject();i++){ // if(this.getEGObject(i) instanceof EGCourbe){ // liste.add((EGCourbe) this.getEGObject(i)); Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeModel.java 2009-01-22 15:22:26 UTC (rev 4393) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeModel.java 2009-01-22 21:40:12 UTC (rev 4394) @@ -534,7 +534,7 @@ TrPostCommonImplementation implementation=(TrPostCommonImplementation)impl; //-- on cree une vue 2d a partir du fichier source fourni et on le centre sur le point interpol\xE9 ou non --// - TrReplayCurvesData.getInstance().getEvolTemporelleReplayData((TrPostCourbeTreeModel)model, this, implementation); + TrReplayCurvesData.getInstance().getEvolTemporelleReplayData(this.source_,(TrPostCourbeTreeModel)model, this, implementation); } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeTreeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeTreeModel.java 2009-01-22 15:22:26 UTC (rev 4393) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeTreeModel.java 2009-01-22 21:40:12 UTC (rev 4394) @@ -836,7 +836,14 @@ final EGGroup gr = getGroupFor(H2dVariableType.SANS); final List<EGCourbeChild> childs = new ArrayList<EGCourbeChild>(_crb.length); for (int i = 0; i < _crb.length; i++) { - final EGCourbeChild child = new EGCourbeChild(gr, new FudaaCourbeModel(new EvolutionReguliere(_crb[i]))); + + EGModel modelCourbe=null; + if((_crb[i] instanceof EvolutionReguliere) && ((EvolutionReguliere)_crb[i]).isScope_){ + modelCourbe=new ScopeCourbeModel((EvolutionReguliere) _crb[i]); + }else + modelCourbe=new FudaaCourbeModel(new EvolutionReguliere(_crb[i])); + + final EGCourbeChild child = new EGCourbeChild(gr, modelCourbe); childs.add(child); //-- on met a jour si la courbe est un nuage de points ou non --// @@ -1140,6 +1147,8 @@ if(courbe.getModel()!=null && (courbe.getModel() instanceof TrPostCourbeModel)){ TrPostCourbeModel model=(TrPostCourbeModel) courbe.getModel(); varGroup_.put(model.var_, groupe); + }else if(courbe.getModel()!=null ){ + varGroup_.put(H2dVariableType.SANS, groupe); } } } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostVisuPanel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostVisuPanel.java 2009-01-22 15:22:26 UTC (rev 4393) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostVisuPanel.java 2009-01-22 21:40:12 UTC (rev 4394) @@ -44,6 +44,7 @@ import org.fudaa.ebli.commun.EbliActionPaletteAbstract; import org.fudaa.ebli.commun.EbliActionSimple; import org.fudaa.ebli.commun.EbliLib; +import org.fudaa.ebli.ressource.EbliResource; import org.fudaa.ebli.visuallibrary.EbliScene; import org.fudaa.ebli.visuallibrary.calque.CalqueLegendeWidgetAdapter; import org.fudaa.fudaa.meshviewer.MvSelectionNodeOrEltData; @@ -80,7 +81,7 @@ boolean rubar_; protected EvolutionAction(final boolean _rubar) { - super(TrResource.getS("Afficher les \xE9volutions"), null, "DISPLAY_EVOLS"); + super(TrResource.getS("Afficher les \xE9volutions"), EbliResource.EBLI.getIcon("curves"), "DISPLAY_EVOLS"); rubar_ = _rubar; if (rubar_) { setDefaultToolTip(TrResource.getS("Affiche les \xE9volutions temporelles sur l'\xE9l\xE9ment s\xE9lectionn\xE9")); @@ -174,7 +175,7 @@ final boolean _simplified, final BCalqueLegende _leg, final TrPostSource _src) { super(new TrPostActionController(_impl), _impl); - // -- mise a jour de l indice de ls source courante --// + // -- mise a jour de l indice de la source courante --// source_ = _src; projet_ = _controller; info_ = new TrPostInfoDelegate(source_, getEbliFormatter()); @@ -470,7 +471,7 @@ // _l.add(new MvProfileAction(getProjet(), getImpl(), this)); _l.add(new TrPostProfileAction(this)); - + _l.add(new EvolutionAction(getSource().isRubar())); _l.add(new TrPostVolumeAction(source_, this)); createAnimAction(); Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrReplayCurvesData.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrReplayCurvesData.java 2009-01-22 15:22:26 UTC (rev 4393) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrReplayCurvesData.java 2009-01-22 21:40:12 UTC (rev 4394) @@ -4,10 +4,16 @@ import java.awt.Checkbox; import java.awt.Color; import java.awt.Component; +import java.awt.Container; import java.awt.Dimension; import java.awt.FlowLayout; +import java.awt.Frame; import java.awt.GridLayout; import java.awt.Rectangle; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.beans.PropertyChangeListener; +import java.io.File; import java.text.DecimalFormat; import java.util.Arrays; import java.util.Collection; @@ -17,7 +23,9 @@ import java.util.Set; import java.util.Vector; +import javax.swing.AbstractAction; import javax.swing.AbstractButton; +import javax.swing.Action; import javax.swing.ButtonGroup; import javax.swing.JComponent; import javax.swing.JLabel; @@ -43,34 +51,44 @@ import org.fudaa.ebli.calque.ZCalqueSondeInteraction; import org.fudaa.ebli.calque.action.CalqueActionSonde; import org.fudaa.ebli.calque.action.EbliCalqueActionTimeChooser; +import org.fudaa.ebli.calque.edition.BPaletteEdition; +import org.fudaa.ebli.calque.edition.ZCalqueLigneBriseeEditable; +import org.fudaa.ebli.calque.edition.ZModeleLigneBriseeEditable; import org.fudaa.ebli.calque.edition.ZModelePointEditable; import org.fudaa.ebli.commun.EbliActionInterface; import org.fudaa.ebli.commun.EbliActionPaletteAbstract; import org.fudaa.ebli.commun.EbliComponentFactory; import org.fudaa.ebli.controle.BSelecteurListComboBox; +import org.fudaa.ebli.courbe.EGGrapheTreeModel; import org.fudaa.ebli.courbe.EGModel; import org.fudaa.ebli.palette.BPaletteInfo; import org.fudaa.ebli.trace.TraceIcon; import org.fudaa.ebli.trace.TraceIconModel; import org.fudaa.ebli.trace.TraceLigneModel; import org.fudaa.ebli.visuallibrary.calque.CalqueLegendeWidgetAdapter; +import org.fudaa.fudaa.commun.courbe.ScopeCourbeModel; +import org.fudaa.fudaa.commun.courbe.FudaaCourbeImporter.Target; import org.fudaa.fudaa.meshviewer.profile.MVProfileCourbeModel; import org.fudaa.fudaa.meshviewer.profile.MvProfileTreeModel; import org.fudaa.fudaa.sig.layer.FSigEditor; import org.fudaa.fudaa.sig.layer.FSigLayerGroup; +import org.fudaa.fudaa.sig.layer.FSigLayerLineEditable; import org.fudaa.fudaa.sig.layer.FSigLayerPointEditable; import org.fudaa.fudaa.tr.common.TrResource; import org.fudaa.fudaa.tr.data.TrGisProjectEditor; +import org.fudaa.fudaa.tr.post.dialogSpec.TrPostWizardImportScope; import org.openide.util.actions.Presenter.Toolbar; import com.memoire.bu.BuBorderLayout; import com.memoire.bu.BuBorders; +import com.memoire.bu.BuButton; import com.memoire.bu.BuLabel; import com.memoire.bu.BuList; import com.memoire.bu.BuPanel; import com.memoire.bu.BuRadioButton; import com.memoire.bu.BuScrollPane; import com.memoire.bu.BuToolBar; +import com.memoire.bu.BuWizardDialog; import com.memoire.fu.FuComparator; import com.sun.corba.se.impl.ior.NewObjectKeyTemplateBase; import com.vividsolutions.jts.geom.Coordinate; @@ -92,6 +110,9 @@ */ private static TrReplayCurvesData instance_; + + private BuButton rejouerSrc_=null; + /** * Vue 2d gardee en memoire si on fait plusieurs appels cons\xE9cutifs \xE0 des courbes qui ont le meme fichier source. */ @@ -239,9 +260,10 @@ pn.add(composantAdditionnel,BuBorderLayout.EAST); JPanel panelSouth=new JPanel(new FlowLayout(FlowLayout.LEFT)); + JPanel panelSouth2=new JPanel(new FlowLayout(FlowLayout.LEFT)); panelSouth.add(vue2d.getLabelSuiviSouris()); - JPanel panelTotalSouth=new JPanel(new GridLayout(2,1)); + JPanel panelTotalSouth=new JPanel(new GridLayout(3,1)); if(title!=null){ panelTotalSouth.add(new JLabel(title)); @@ -249,7 +271,7 @@ panelTotalSouth.add(new JLabel("")); panelTotalSouth.add(panelSouth); - + panelTotalSouth.add(panelSouth2); pn.add(panelTotalSouth,BuBorderLayout.SOUTH); @@ -261,6 +283,8 @@ //-- ajout de la palette d'infos --// final Collection<EbliActionPaletteAbstract> acts =vue2d.getController().getTabPaletteAction(); BPaletteInfo comp=null; + vue2d.getController().buildActions(); + JPanel compEast=new JPanel(new BorderLayout()); for (final EbliActionPaletteAbstract pals : acts) { final JComponent component = pals.buildContentPane(); if (component instanceof BCalquePaletteInfo) { @@ -271,19 +295,26 @@ pals.updateBeforeShow(); // comp.setMaximumSize(new Dimension(180,300)); // comp.setPreferredSize(new Dimension(180,300)); - pn.add(comp,BuBorderLayout.EAST); - + compEast.add(comp,BuBorderLayout.CENTER); + + }else if((modele instanceof MVProfileCourbeModel) && (component instanceof BPaletteEdition)){ + compEast.add(comp,BuBorderLayout.SOUTH); } } + pn.add(compEast,BuBorderLayout.EAST); panelSouth.add(this.ecraser_); panelSouth.add(this.ajouter_); //final JScrollPane arbreVue2d = new JScrollPane(new BArbreCalque(vue2d.getArbreCalqueModel())); //arbreVue2d.setPreferredSize(new Dimension(200,300)); //arbreVue2d.setMaximumSize(new Dimension(200,300)); //pn.add(arbreVue2d,BuBorderLayout.WEST); + if(this.rejouerSrc_!=null){ + + panelSouth2.add(new JLabel("Relancer pour un autre fichier r\xE9sultat")); + panelSouth2.add(rejouerSrc_); + } - } @@ -330,7 +361,7 @@ //calqueZ.setVisible(true); //calqueZ.setLineModel(0, new TraceLigneModel(1,2,Color.BLACK)); if(isInterpolated) - calqueZ.setIconModel(0, new TraceIconModel(TraceIcon.CROIX,3,Color.blue)); + calqueZ.setIconModel(0, new TraceIconModel(TraceIcon.PLUS,4,Color.blue)); else calqueZ.setIconModel(0, new TraceIconModel(TraceIcon.CARRE_SELECTION,3,Color.blue)); vue2d.addCalque(calqueZ, true); @@ -352,7 +383,7 @@ * @param modele * @param implementation */ - public void getProfilSpatialOrigine(MVProfileCourbeModel modele,TrPostCommonImplementation implementation){ + public void getProfilSpatialOrigine( MVProfileCourbeModel modele, TrPostCommonImplementation implementation){ if(modele.getData() instanceof TrPostSource){} else{ @@ -404,6 +435,9 @@ //pane.setMaximumSize(new Dimension(200,300)); pane.setPreferredSize(new Dimension(200,300)); + + + CtuluDialogPanel panel=constructDialog(vue2d, implementation, modele,pane,false,"<html><body>"+TrResource.getS("Origine ")+" "+modele.getTitle()+".<br />Les points de la polyligne sont encadr\xE9s en bleu </body></html>"); //-- on positionne la bonne variable et le bon pas de temps --// comboVar_.getCb().setSelectedItem(modele.getVariable()); @@ -411,19 +445,19 @@ } - + CtuluDialogPanel dialog_=null; /** * Constructeur d'une dialog qui affiche la vue 2d avec le point initial qui a servi a la creation du modele. * Ajoute \xE9galement la liste des variables \xE0 choisir. Il est possible dans la vue de s\xE9lectionner un autre point ou plusieurs. * LA validation de la frame permettra de r\xE9cup\xE9rer les nouveaux point ainsi que les variables qui seront utilis\xE9es pour refaire le calcul. * @param modele */ - public void getEvolTemporelleReplayData(TrPostCourbeTreeModel treeModel,TrPostCourbeModel modele,TrPostCommonImplementation implementation){ + public void getEvolTemporelleReplayData(TrPostSource srcChoisie,final TrPostCourbeTreeModel treeModel,final TrPostCourbeModel modele,final TrPostCommonImplementation implementation){ boolean isInterpolated=(modele instanceof TrPostCourbeModel.Interpolated); //-- on cree une vue 2d a partir du fichier source fourni et on le centre sur le point interpol\xE9 ou non --// - TrPostVisuPanel vue2d=constructVue2d(implementation,modele.source_); + TrPostVisuPanel vue2d=constructVue2d(implementation,srcChoisie); //-- on affiche sur la vue 2d les points initialement choisis --// GISZoneCollectionPoint collectionPoint=new GISZoneCollectionPoint(); @@ -433,7 +467,7 @@ //point reel int indiceNoeud=((Integer) point).intValue(); // recherche du point cot\xE9 grille - coordonneesPoint=modele.source_.getGrid().getCoor(indiceNoeud); + coordonneesPoint=srcChoisie.getGrid().getCoor(indiceNoeud); }else{ TrPostInterpolatePoint pt=(TrPostInterpolatePoint) point; @@ -449,7 +483,7 @@ FSigLayerPointEditable layer2=new FSigLayerPointEditable(modelePointEdit,vue2d.getGisEditor()); layer2.setVisible(true); if(isInterpolated) - layer2.setIconModel(0, new TraceIconModel(TraceIcon.CROIX,5,Color.RED)); + layer2.setIconModel(0, new TraceIconModel(TraceIcon.PLUS,4,Color.RED)); else layer2.setIconModel(0, new TraceIconModel(TraceIcon.CARRE_SELECTION,5,Color.RED)); layer2.setEnabled(true); @@ -461,22 +495,41 @@ vue2d.setCalqueActif(resultatsCalque); //vue2d.addCalque(layer2, true); - // ZCalquePoint calqueZ=new ZCalquePoint(modelePointEdit); - // //calqueZ.setVisible(true); - // //calqueZ.setLineModel(0, new TraceLigneModel(1,2,Color.BLACK)); - // calqueZ.setIconModel(0, new TraceIconModel(TraceIcon.CARRE_SELECTION,3,Color.blue)); - // vue2d.addCalque(calqueZ, true); - // calqueZ.setVisible(true); + //-- creation du panel de choix des variables a selectionner --// - + rejouerSrc_=new BuButton(); + rejouerSrc_.setAction(new AbstractAction("Fichier r\xE9sultat"){ + public void actionPerformed(ActionEvent e) { + final String[] values = implementation.getCurrentProject().formattageDonnees(false); + final int selectedSource = selectSource(values, (String) getValue(Action.NAME), implementation.getFrame()); + if(selectedSource !=-1){ + //-- on choisie le nouveau source --// + TrPostSource newSrc= implementation.getCurrentProject().getSource(selectedSource); + + //-- on ferme l'interface courante --// + + if(dialog_!=null ) + + dialog_.cancel(); + //-- on rappelle l'interface --// + getEvolTemporelleReplayData(newSrc, treeModel, modele, implementation); + + } + else return; + + } + + }); + + //-- on affiche le contenu dans une dialog--// //final Set var = new HashSet(Arrays.asList(modele.source_.getAllVariablesNonVec())); //final H2dVariableType[] vars = (H2dVariableType[]) var.toArray(new H2dVariableType[var.size()]); String title=TrResource.getS("<html><body>Choisir le point et la variable qui seront utilis\xE9s pour refaire le calcul(interpolation possible).<br /> Le point rouge d\xE9signe le point d'origine.</body></html>"); - CtuluDialogPanel dialog=constructDialog(vue2d, implementation, modele,/*constructSelectorVariable(vars)*/null,true,title); - dialog.setPreferredSize(new Dimension(600,400)); + dialog_=constructDialog(vue2d, implementation, modele,/*constructSelectorVariable(vars)*/null,true,title); + dialog_.setPreferredSize(new Dimension(600,400)); //-- on restaure la vue --// vue2d.setSize(300, 300); @@ -486,19 +539,64 @@ comboVar_.getCb().setSelectedItem(modele.var_); + //-- on cr\xE9e le bouton de rejoue de donn\xE9es pour un autre fichier r\xE9sultat --// + + //-- on affiche tant que l'utilisateur valide des r\xE9sultats faux --// - while(CtuluDialogPanel.isOkResponse(dialog.afficheModale(implementation.getParentComponent(), TrResource.getS("Rejouer ")+" "+modele.getTitle())) && !replayEvolutionFor(vue2d,treeModel,modele,implementation)){ + while(CtuluDialogPanel.isOkResponse(dialog_.afficheModale(implementation.getParentComponent(), TrResource.getS("Rejouer ")+" "+modele.getTitle())) && !replayEvolutionFor(srcChoisie,vue2d,treeModel,modele,implementation)){ } } + /** + * Constructeur d'une dialog qui affiche la vue 2d avec le point initial qui a servi a la creation du modele. + * Ajoute \xE9galement la liste des variables \xE0 choisir. Il est possible dans la vue de s\xE9lectionner un autre point ou plusieurs. + * LA validation de la frame permettra de r\xE9cup\xE9rer les nouveaux point ainsi que les variables qui seront utilis\xE9es pour refaire le calcul. + * @param modele + * + * WARNING: le treemodele pour un courbe scopegene peut etre a la fois: + * - un ScopGeneTeeModel + * - un trpostcourbeTreeModel (ajout de courbe scop dans une evol temporelle) + * - un MvTreeModel (ajout idem) + * Il faut donc traiter avec un EgGrapheTreeModel g\xE9n\xE9rique pour eviter les problemes de cast. + */ + public void getScopGeneReplayData(EGGrapheTreeModel treeModel,ScopeCourbeModel modele,TrPostCommonImplementation implementation){ + + + File fichierScop=modele.getFichierGenerateur(); + if(fichierScop==null || !fichierScop.canRead()){ + if(fichierScop!=null) + implementation.error("Impossible de r\xE9cup\xE9rer le fichier scop au cehmin suivant: \n "+fichierScop.getAbsolutePath()); + else + implementation.error("Impossible de r\xE9cup\xE9rer le fichier scop"); + + return; + } + + //-- pr\xE9chargement de l'interface avec les infos du fichier --// + + + + final TrPostWizardImportScope wizard = new TrPostWizardImportScope(implementation.getCurrentProject(), (Target) treeModel,true,fichierScop); + final BuWizardDialog DialogWizard = new BuWizardDialog(implementation.getFrame(), wizard); + // --affichage du wizard --// + DialogWizard.setSize(600, 600); + DialogWizard.setLocationRelativeTo(implementation.getFrame()); + DialogWizard.setVisible(true); + + + } + + + + /** * Methode qui v\xE9rifie les saisies sur la vue 2d et r\xE9alise les cr\xE9ations/ecrasements avec les nouveaut\xE9s * des profils temporels. */ - public boolean replayEvolutionFor(TrPostVisuPanel vue2d,TrPostCourbeTreeModel tree,TrPostCourbeModel modele,TrPostCommonImplementation implementation){ + public boolean replayEvolutionFor(TrPostSource srcChoisie,TrPostVisuPanel vue2d,TrPostCourbeTreeModel tree,TrPostCourbeModel modele,TrPostCommonImplementation implementation){ H2dVariableType newVariable=null; int newPointReel=-1; TrPostInterpolatePoint newPointInterpole=null; @@ -533,7 +631,7 @@ //-- on rejoue les donn\xE9es avec ou sans ecrasement --// - tree.replayPoints(modele,modele.source_,newPointReel, vue2d.getCmdMng(), implementation.getMainProgression(),newVariable ,this.ecraser_.isSelected()); + tree.replayPoints(modele,srcChoisie,newPointReel, vue2d.getCmdMng(), implementation.getMainProgression(),newVariable ,this.ecraser_.isSelected()); return true; @@ -550,7 +648,7 @@ implementation.message("Une nouvelle courbe \xE9volution temporelle va \xEAtre calcul\xE9e pour la variable: "+newVariable.getName()+", point interpol\xE9 ("+newPointInterpole.x_+";"+newPointInterpole.y_+")\n"+ "La courbe actuelle ne sera pas supprim\xE9e."); //-- on rejoue les donn\xE9es avec ou sans ecrasement --// - tree.replayPoints(modele,modele.source_,newPointInterpole, vue2d.getCmdMng(), implementation.getMainProgression(),newVariable ,this.ecraser_.isSelected()); + tree.replayPoints(modele,srcChoisie,newPointInterpole, vue2d.getCmdMng(), implementation.getMainProgression(),newVariable ,this.ecraser_.isSelected()); return true; @@ -569,13 +667,10 @@ * LA validation de la frame permettra de r\xE9cup\xE9rer les nouveaux point ainsi que les variables qui seront utilis\xE9es pour refaire le calcul. * @param modele */ - public void getProfilSpatialReplayData( MvProfileTreeModel treeModel,MVProfileCourbeModel modele,TrPostCommonImplementation implementation){ - if(!(modele.getData() instanceof TrPostSource)){ - implementation.error("Impossible de r\xE9cup\xE9rer le fichier r\xE9sulat depuis ce type de profil spatial."); - return; - } + public void getProfilSpatialReplayData( TrPostSource srcChoisie,final MvProfileTreeModel treeModel,final MVProfileCourbeModel modele,final TrPostCommonImplementation implementation){ + //-- on cree une vue 2d a partir du fichier source fourni et on le centre sur le point interpol\xE9 ou non --// - TrPostVisuPanel vue2d=constructVue2d(implementation,(TrPostSource) modele.getData()); + TrPostVisuPanel vue2d=constructVue2d(implementation,srcChoisie); //-- on affiche sur la vue 2d les points initialement choisis --// GISZoneCollectionPoint collectionPoint=new GISZoneCollectionPoint(); @@ -605,19 +700,51 @@ //-- creation du panel de choix des variables a selectionner --// String title=TrResource.getS("<html><body>Choisir les points, la variable et le pas de temps qui seront utilis\xE9s pour refaire le calcul(polyligne possible).<br /> Les points rouge d\xE9signent l'origine.</body></html>"); - CtuluDialogPanel dialog=constructDialog(vue2d, implementation, modele,/*constructSelectorVariable(vars)*/null,true,title); - dialog.setPreferredSize(new Dimension(600,400)); + //-- creation du panel de choix des variables a selectionner --// + rejouerSrc_=new BuButton(); + rejouerSrc_.setAction(new AbstractAction("Fichier r\xE9sultat"){ + public void actionPerformed(ActionEvent e) { + final String[] values = implementation.getCurrentProject().formattageDonnees(false); + final int selectedSource = selectSource(values, (String) getValue(Action.NAME), implementation.getFrame()); + if(selectedSource !=-1){ + //-- on choisie le nouveau source --// + TrPostSource newSrc= implementation.getCurrentProject().getSource(selectedSource); + + //-- on ferme l'interface courante --// + if(dialog_!=null ) + dialog_.cancel(); + + //-- on rappelle l'interface --// + getProfilSpatialReplayData(newSrc, treeModel, modele, implementation); + + } + else return; + + } + + }); + + dialog_=constructDialog(vue2d, implementation, modele,/*constructSelectorVariable(vars)*/null,true,title); + dialog_.setPreferredSize(new Dimension(600,400)); + //-- on restaure la vue --// vue2d.setSize(300, 300); vue2d.restaurer(); + + + //-- on positionne la bonne variable et le bon pas de temps --// comboVar_.getCb().setSelectedItem(modele.getVariable()); - + //-- ajout du calque ligne bris\xE9e pour r\xE9aliser une polyligne --// + //final FSigLayerLineEditable cq4 = new FSigLayerLineEditable(new ZModeleLigneBriseeEditable(), vue2d.getGisEditor()); + // cq4.setTitle("toto"); + //vue2d.addCalque(cq4, true); + //-- on affiche tant que l'utilisateur valide des r\xE9sultats faux --// - while(CtuluDialogPanel.isOkResponse(dialog.afficheModale(implementation.getParentComponent(), TrResource.getS("Rejouer ")+" "+modele.getTitle())) && !replayProfilSpatialFor(vue2d,treeModel,modele,implementation)){ + while(CtuluDialogPanel.isOkResponse(dialog_.afficheModale(implementation.getParentComponent(), TrResource.getS("Rejouer ")+" "+modele.getTitle())) && !replayProfilSpatialFor(srcChoisie,vue2d,treeModel,modele,implementation)){ } @@ -630,7 +757,7 @@ * Methode qui v\xE9rifie les saisies sur la vue 2d et r\xE9alise les cr\xE9ations/ecrasements avec les nouveaut\xE9s * des profils temporels. */ - public boolean replayProfilSpatialFor(TrPostVisuPanel vue2d,MvProfileTreeModel tree,MVProfileCourbeModel modele,TrPostCommonImplementation implementation){ + public boolean replayProfilSpatialFor( TrPostSource srcChoisie,TrPostVisuPanel vue2d,MvProfileTreeModel tree,MVProfileCourbeModel modele,TrPostCommonImplementation implementation){ H2dVariableType newVariable=null; int newTimeStep_=-1; int[] newPoints=null; @@ -655,15 +782,15 @@ String title=" [P1("+format(modele.getBuilder().getInitLine_().getCoordinateN(0).x,2)+";"+format(modele.getBuilder().getInitLine_().getCoordinateN(0).y,2)+")"+";"+ "P"+modele.getBuilder().getInitLine_().getNumPoints()+"("+format(modele.getBuilder().getInitLine_().getCoordinateN(modele.getBuilder().getInitLine_().getNumPoints()-1).x,2)+";"+format(modele.getBuilder().getInitLine_().getCoordinateN(modele.getBuilder().getInitLine_().getNumPoints()-1).y,2)+")]"; - String title2=" [P1("+format(((TrPostSource)modele.getData()).getGrid().getPtX(idx[0]),2)+";"+format(((TrPostSource)modele.getData()).getGrid().getPtX(idx[0]),2)+")"+";"+ - "P"+modele.getBuilder().getInitLine_().getNumPoints()+"("+format(((TrPostSource)modele.getData()).getGrid().getPtX(idx[idx.length-1]),2)+";"+format(((TrPostSource)modele.getData()).getGrid().getPtX(idx[idx.length-1]),2)+")]"; + String title2=" [P1("+format(srcChoisie.getGrid().getPtX(idx[0]),2)+";"+format(srcChoisie.getGrid().getPtX(idx[0]),2)+")"+";"+ + "P"+modele.getBuilder().getInitLine_().getNumPoints()+"("+format(srcChoisie.getGrid().getPtX(idx[idx.length-1]),2)+";"+format(srcChoisie.getGrid().getPtX(idx[idx.length-1]),2)+")]"; //-- on rejoue les donn\xE9es avec les nouvelles valeurs --// if(this.ecraser_.isSelected()){ - implementation.message("La courbe actuelle de mod\xE8le: variable:"+modele.getVariable()+", de pas de temps "+((TrPostSource)modele.getData()).getTimeStep(modele.getActiveTimeIdx())+" et de polyligne d'extr\xE9mit\xE9s "+title+"\n" + + implementation.message("La courbe actuelle de mod\xE8le: variable:"+modele.getVariable()+", de pas de temps "+srcChoisie.getTimeStep(modele.getActiveTimeIdx())+" et de polyligne d'extr\xE9mit\xE9s "+title+"\n" + " va \xEAtre recalcul\xE9e pour les donn\xE9es suivantes:\n" - +"Variable: "+newVariable.getName()+", de pas de temps "+((TrPostSource)modele.getData()).getTimeStep(vue2d.getSelectedTimeInCalqueActif())+" et de polyligne d'extr\xE9mit\xE9s "+title2); + +"Variable: "+newVariable.getName()+", de pas de temps "+srcChoisie.getTimeStep(vue2d.getSelectedTimeInCalqueActif())+" et de polyligne d'extr\xE9mit\xE9s "+title2); } else{ @@ -671,7 +798,7 @@ } //-- on rejoue les donn\xE9es avec ou sans ecrasement --// - tree.replayPoints(implementation,vue2d,modele,(TrPostSource)modele.getData(),newPoints, vue2d.getCmdMng(), implementation.getMainProgression(),newVariable ,newTimeStep_,this.ecraser_.isSelected()); + tree.replayPoints(implementation,vue2d,modele,srcChoisie,newPoints, vue2d.getCmdMng(), implementation.getMainProgression(),newVariable ,newTimeStep_,this.ecraser_.isSelected()); return true; @@ -683,10 +810,27 @@ } } + /** + * Genere une interface qui liste les fichiers disponibles et retourne l'entier correspondant au choix de l'utilisateur. + * Cet entier correspond a l'indice du fichier dans l'arrayliste des src du trpostprojet. + * @param _init + * @param _title + * @param _parent + * @return + */ + public static int selectSource(final Object[] _init, final String _title, final Component _parent) { + Arrays.sort(_init, FuComparator.STRING_COMPARATOR); + final BuList l = CtuluLibSwing.createBuList(_init); + final CtuluDialogPanel pn = new CtuluDialogPanel(false); + pn.setLayout(new BuBorderLayout()); + pn.setBorder(BuBorders.EMPTY3333); + pn.add(new BuLabel(CtuluLib.getS("S\xE9lectionner le fichier r\xE9sultat")), BuBorderLayout.NORTH); + pn.add(new BuScrollPane(l)); + if (CtuluDialogPanel.isOkResponse(pn.afficheModale(_parent, _title))) { return l.getSelectedIndex(); } + return -1; + } - - public String format(double value,int nbChiffresSignificatifs){ String forme="#."; for(int i=0;i<nbChiffresSignificatifs;i++) Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/dialogSpec/TrPostWizardImportScope.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/dialogSpec/TrPostWizardImportScope.java 2009-01-22 15:22:26 UTC (rev 4393) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/dialogSpec/TrPostWizardImportScope.java 2009-01-22 21:40:12 UTC (rev 4394) @@ -1,6 +1,7 @@ package org.fudaa.fudaa.tr.post.dialogSpec; import java.awt.event.ActionEvent; +import java.io.File; import org.fudaa.ebli.commun.EbliActionSimple; import org.fudaa.fudaa.commun.courbe.FudaaCourbeImporter; @@ -33,6 +34,13 @@ target_ = target; } + public ImportAction(final TrPostProjet projet, final FudaaCourbeImporter.Target target,boolean replayData) { + super(BuResource.BU.getString("Importer dans le graphe"), BuResource.BU.getIcon("IMPORTER"), "IMPORTER"); + ui_ = projet.impl_; + projet_ = projet; + target_ = target; + } + @Override public void actionPerformed(final ActionEvent _e) { final TrPostWizardImportScope wizard = new TrPostWizardImportScope(projet_, target_); @@ -44,6 +52,12 @@ } } + public TrPostWizardImportScope(final TrPostProjet projet_, final FudaaCourbeImporter.Target target,boolean replayData,File fileToReload) { + super(projet_.impl_, target,replayData,fileToReload); + this.projet_ = projet_; + } + + public TrPostWizardImportScope(final TrPostProjet projet_, final FudaaCourbeImporter.Target target) { super(projet_.impl_, target); this.projet_ = projet_; Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/persist/TrPostPersistenceManager.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/persist/TrPostPersistenceManager.java 2009-01-22 15:22:26 UTC (rev 4393) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/persist/TrPostPersistenceManager.java 2009-01-22 21:40:12 UTC (rev 4394) @@ -161,7 +161,27 @@ fileChooser.setDialogTitle(EbliResource.EBLI.getString("S\xE9lectionnez l'emplacement de votre projet")); fileChooser.setAcceptAllFileFilterUsed(false); fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); - fileChooser.addChoosableFileFilter(new TrPostFileFilter.DirectoryPOSTFilter()); + fileChooser.addChoosableFileFilter(new TrPostFileFilter.DirectoryPOSTFilter()); + + //-- par defaut on choisis le nom du fichier resultat + .POST --// + File fileDefaut=null; + boolean constrcutFileDefaut=false; + if(trprojet_.listeSrc_!=null && trprojet_.listeSrc_.size()>=1){ + String indice=""; + int i=1; + do{ + String path=fileChooser.getCurrentDirectory().getAbsolutePath()+File.separator+trprojet_.getSource(0).getFile().getName()+indice+EXTENSION; + fileDefaut=new File(path); + indice="_"+(i++); + }while(fileDefaut.exists()); + + + if(! fileDefaut.exists()){ + constrcutFileDefaut= fileDefaut.mkdir(); + } + fileChooser.setSelectedFile(fileDefaut); + + } if (projet_ != null){ // initialiser le saveas dans le meme rep // fileChooser.setSelectedFile(projet_); } @@ -169,6 +189,11 @@ if (reponse == JFileChooser.APPROVE_OPTION) { final File conteneurProjet = fileChooser.getSelectedFile(); + //-- si le fichier choisit en d\xE9finitif est diff\xE9rent du fichier d\xE9faut et qu'il a \xE9t\xE9t cr\xE9r pour rien, on le supprime --// + if(constrcutFileDefaut && fileDefaut!=null && !fileDefaut.getAbsolutePath().equals(conteneurProjet.getAbsolutePath())){ + fileDefaut.delete(); + ... [truncated message content] |
From: <emm...@us...> - 2009-01-22 15:22:29
|
Revision: 4393 http://fudaa.svn.sourceforge.net/fudaa/?rev=4393&view=rev Author: emmanuel_martin Date: 2009-01-22 15:22:26 +0000 (Thu, 22 Jan 2009) Log Message: ----------- Tache #135 : "Ordonner les sommets d'une g?\195?\169om?\195?\169trie, suivant X ou Y." Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneLinearisePolyligneAction.java Added Paths: ----------- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneOrganizePoint.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java 2009-01-22 13:43:18 UTC (rev 4392) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java 2009-01-22 15:22:26 UTC (rev 4393) @@ -32,9 +32,10 @@ import org.fudaa.fudaa.modeleur.action.SceneDecimationAction; import org.fudaa.fudaa.modeleur.action.SceneInterpolationAction; import org.fudaa.fudaa.modeleur.action.SceneInvertAction; +import org.fudaa.fudaa.modeleur.action.SceneLinearisePolyligneAction; import org.fudaa.fudaa.modeleur.action.SceneMoveInLayerAction; +import org.fudaa.fudaa.modeleur.action.SceneOrganizePoint; import org.fudaa.fudaa.modeleur.action.SceneProfilInterpolation; -import org.fudaa.fudaa.modeleur.action.SceneLinearisePolyligneAction; import org.fudaa.fudaa.modeleur.action.SceneProjectionAction; import org.fudaa.fudaa.modeleur.action.SceneRefinementAction; import org.fudaa.fudaa.sig.layer.FSigEditor; @@ -85,6 +86,8 @@ acts.add(new SceneProjectionAction((MdlSceneEditor)sceneEditor_)); acts.add(new SceneProfilInterpolation((MdlSceneEditor)sceneEditor_)); acts.add(new SceneLinearisePolyligneAction((MdlSceneEditor) sceneEditor_)); + acts.add(new SceneOrganizePoint((MdlSceneEditor) sceneEditor_, "x")); + acts.add(new SceneOrganizePoint((MdlSceneEditor) sceneEditor_, "y")); acts.add(null); acts.add(new SceneAbscisseCurviligneAction(this)); acts.add(null); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2009-01-22 13:43:18 UTC (rev 4392) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2009-01-22 15:22:26 UTC (rev 4393) @@ -7,21 +7,12 @@ */ package org.fudaa.fudaa.modeleur; -import java.awt.Frame; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; -import javax.swing.BorderFactory; -import javax.swing.JButton; -import javax.swing.JComponent; -import javax.swing.JDialog; -import javax.swing.JPanel; - import org.fudaa.ctulu.CtuluCommandComposite; import org.fudaa.ctulu.CtuluCommandContainer; import org.fudaa.ctulu.CtuluListSelection; @@ -31,6 +22,7 @@ import org.fudaa.ctulu.gis.GISAttributeInterface; import org.fudaa.ctulu.gis.GISAttributeModelDoubleArray; import org.fudaa.ctulu.gis.GISCoordinateSequenceContainerInterface; +import org.fudaa.ctulu.gis.GISCoordinateSequenceFactory; import org.fudaa.ctulu.gis.GISDataModel; import org.fudaa.ctulu.gis.GISGeometryFactory; import org.fudaa.ctulu.gis.GISLib; @@ -62,8 +54,6 @@ import org.fudaa.fudaa.modeleur.layer.MdlModel2dLine; import org.fudaa.fudaa.modeleur.layer.MdlModel2dMultiPoint; -import com.memoire.bu.BuBorderLayout; -import com.memoire.bu.BuLabel; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.CoordinateSequence; import com.vividsolutions.jts.geom.Geometry; @@ -393,6 +383,64 @@ } /** + * Sort the points of selected polylignes. This sorting is done on the + * _criterion. It can be 'x' or 'y'. + */ + public void organizePoint(String _criterion) { + /** This class contain needed data to sort points. */ + class DataPoint implements Comparable<DataPoint>{ + public Coordinate c; + private String criterion_; + public DataPoint(Coordinate coord, String _criterion) { + if(!_criterion.equals("x")&&!_criterion.equals("y")) + throw new IllegalArgumentException(FudaaLib.getS("Le crit\xE8re n'a pas \xE9t\xE9 reconnu.")); + criterion_=_criterion; + c=coord; + } + /** M\xE9thode pour utiliser les alorithmes de tris fournis par java. */ + public int compareTo(DataPoint o) { + if(criterion_.equals("x")) + return compareX(o); + else + return compareY(o); + } + public int compareX(DataPoint o) { + if (c.x<o.c.x) return -1; + else if (c.x==o.c.x) return 0; + else return 1; + } + public int compareY(DataPoint o) { + if (c.y<o.c.y) return -1; + else if (c.y==o.c.y) return 0; + else return 1; + } + } + CtuluCommandComposite cmd=new CtuluCommandComposite(FudaaLib.getS("R\xE9organisation de la g\xE9om\xE9trie")); + int[] geoms=getScene().getSelectionHelper().getSelectedIndexes(); + for (int i=0; i<geoms.length; i++) { + // Data retrieval + int idxGeom=getScene().sceneId2LayerId(geoms[i]); + ZCalqueAffichageDonneesInterface calque=getScene().getLayerForId(geoms[i]); + if (calque.modeleDonnees() instanceof ZModeleGeometry) { + GISZoneCollection zone=((ZModeleGeometry)calque.modeleDonnees()).getGeomData(); + CoordinateSequence seq=zone.getCoordinateSequence(idxGeom); + // Construction de la structure de tri + DataPoint[] points=new DataPoint[seq.size()]; + for(int j=0;j<points.length;j++) + points[j]=new DataPoint(seq.getCoordinate(j), _criterion); + Arrays.sort(points); + // R\xE9percution du tri + Coordinate[] coords=new Coordinate[points.length]; + for(int j=0;j<points.length;j++) + coords[j]=new Coordinate(points[j].c); + zone.setCoordinateSequence(idxGeom, new GISCoordinateSequenceFactory().create(coords), cmd); + } + } + if(getMng()!=null) + getMng().addCmd(cmd.getSimplify()); + } + + /** * Rend rectiligne une polyligne. */ public void linearisePolyligne() { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneLinearisePolyligneAction.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneLinearisePolyligneAction.java 2009-01-22 13:43:18 UTC (rev 4392) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneLinearisePolyligneAction.java 2009-01-22 15:22:26 UTC (rev 4393) @@ -10,15 +10,10 @@ import java.awt.event.ActionEvent; import org.fudaa.ctulu.CtuluLib; -import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ctulu.gis.GISPolyligne; -import org.fudaa.ctulu.gis.GISZoneCollection; -import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; -import org.fudaa.ebli.calque.ZModeleGeometry; import org.fudaa.ebli.calque.ZScene; import org.fudaa.ebli.calque.ZSelectionEvent; import org.fudaa.ebli.calque.ZSelectionListener; -import org.fudaa.ebli.calque.ZScene.SceneSelectionHelper; import org.fudaa.ebli.commun.EbliActionSimple; import org.fudaa.fudaa.modeleur.MdlSceneEditor; import org.fudaa.fudaa.ressource.FudaaResource; @@ -33,7 +28,6 @@ public SceneLinearisePolyligneAction(MdlSceneEditor _sceneEditor) { super(FudaaResource.FUDAA.getString("Rendre rectiligne des polylignes"), null, "RECTILIGNE_POLYLIGNE"); -// setDefaultToolTip(FudaaResource.FUDAA.getString("Rend rectiligne une ou plusieurs polyligne(s)")); sceneEditor_=_sceneEditor; sceneEditor_.getScene().addSelectionListener(this); } @@ -42,32 +36,25 @@ sceneEditor_.linearisePolyligne(); } - public void updateForSelectionChanged() { + public String getEnableCondition() { + return CtuluLib + .getS("<p>En mode sommet, s\xE9lectionner deux points pour chaque polyligne<p>En mode global, s\xE9lectionner une ou plusieurs polyligne(s)."); + } + + public void selectionChanged(ZSelectionEvent _evt) { ZScene scn=sceneEditor_.getScene(); - SceneSelectionHelper hlp=sceneEditor_.getScene().getSelectionHelper(); // Au moins une et seulement des polylignes de selectionn\xE9es. Et si en mode // atomique, deux sommets doivent \xEAtre selectionn\xE9s pour chacune d'entre // elles. int[] geomSelected=scn.getSelectionHelper().getSelectedIndexes(); boolean b=geomSelected.length>0; int i=0; - while(b&&i<geomSelected.length){ + while (b&&i<geomSelected.length) { b=scn.getObject(geomSelected[i]) instanceof GISPolyligne; - if(scn.isAtomicMode()) + if (scn.isAtomicMode()) b=b&&scn.getLayerSelectionMulti()!=null&&scn.getLayerSelectionMulti().getSelection(geomSelected[i]).getNbSelectedIndex()==2; i++; } setEnabled(b); } - - public String getEnableCondition() { - return CtuluLib.getS("<p>En mode sommet, s\xE9lectionner deux points pour chaque polyligne<p>En mode global, s\xE9lectionner une ou plusieurs polyligne(s)."); - } - - /* (non-Javadoc) - * @see org.fudaa.ebli.calque.ZSelectionListener#selectionChanged(org.fudaa.ebli.calque.ZSelectionEvent) - */ - public void selectionChanged(ZSelectionEvent _evt) { - updateForSelectionChanged(); - } } Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneOrganizePoint.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneOrganizePoint.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneOrganizePoint.java 2009-01-22 15:22:26 UTC (rev 4393) @@ -0,0 +1,61 @@ +/* + * @creation 22 janv. 2009 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2009 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.fudaa.modeleur.action; + +import java.awt.event.ActionEvent; + +import org.fudaa.ctulu.CtuluLib; +import org.fudaa.ebli.calque.ZSelectionEvent; +import org.fudaa.ebli.calque.ZSelectionListener; +import org.fudaa.ebli.commun.EbliActionSimple; +import org.fudaa.fudaa.commun.FudaaLib; +import org.fudaa.fudaa.modeleur.MdlSceneEditor; + +/** + * Allow to reorganize geometries with criterion. The criterions can be x or y. + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class SceneOrganizePoint extends EbliActionSimple implements ZSelectionListener { + + public static final String x="x"; + public static final String y="y"; + + /** The criterion used */ + protected String criterion_; + protected MdlSceneEditor sceneEditor_; + + /** + * @param _sceneEditor + * @param _criterion + * the criterion, can be x or y. Put directly the string "x" or + * SceneOrganizePoint.x. As you want. + */ + public SceneOrganizePoint(MdlSceneEditor _sceneEditor, String _criterion) { + super(FudaaLib.getS("R\xE9organisation sur ")+(_criterion==null?"":_criterion), null, "REORGANIZE_POLYLIGNE"); + sceneEditor_=_sceneEditor; + criterion_=_criterion; + if(sceneEditor_==null||criterion_==null) + throw new IllegalArgumentException(FudaaLib.getS("Les param\xE8tres ne doivent pas \xEAtre null")); + if(!criterion_.equals(x)&&!criterion_.equals(y)) + throw new IllegalArgumentException(FudaaLib.getS("Le crit\xE8re n'a pas \xE9t\xE9 reconnu.")); + sceneEditor_.getScene().addSelectionListener(this); + } + + public void selectionChanged(ZSelectionEvent _evt) { + setEnabled(!sceneEditor_.getScene().isSelectionEmpty()); + } + + public String getEnableCondition() { + return CtuluLib.getS("<p>S\xE9lectionner une ou plusieurs g\xE9om\xE9trie(s)."); + } + + public void actionPerformed(final ActionEvent _e) { + sceneEditor_.organizePoint(criterion_); + } +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/action/SceneOrganizePoint.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2009-01-22 13:43:21
|
Revision: 4392 http://fudaa.svn.sourceforge.net/fudaa/?rev=4392&view=rev Author: emmanuel_martin Date: 2009-01-22 13:43:18 +0000 (Thu, 22 Jan 2009) Log Message: ----------- Tache #134 : " Pouvoir exporter uniquement les objets s?\195?\169lectionn?\195?\169s." Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectExportPanel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerFilter.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java 2009-01-22 10:07:02 UTC (rev 4391) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlEditionManager.java 2009-01-22 13:43:18 UTC (rev 4392) @@ -124,26 +124,26 @@ MdlProjectExportPanel pn=new MdlProjectExportPanel(getUi()); if (CtuluDialogPanel.isCancelResponse(pn.afficheModale(getFrame(), FudaaLib.getS("Exporter les donn\xE9es de la fen\xEAtre active")))) return; - final FSigLayerFilter filter = new FSigLayerFilter(); - if (pn.isAllLayers()) { + final FSigLayerFilter filter=new FSigLayerFilter(); + if (pn.isAllLayers()) getPanel().getDonneesCalque().apply(filter); - } else if (pn.isSelectedLayers()) { - final BCalque[] parent = super.getPanel().getArbreCalqueModel().getSelection(); - if (parent!=null) { - for (int i = 0; i < parent.length; i++) { + final BCalque[] parent=getPanel().getArbreCalqueModel().getSelection(); + if (parent!=null) + for (int i=0; i<parent.length; i++) parent[i].apply(filter); - } - } } - else { + else if (pn.isVisibleLayers()) { filter.setTreatmentOnlyOnVisible(true); getPanel().getDonneesCalque().apply(filter); } + else { // Only selected geometries + filter.setTreatmentOnlySelectedGeometries(true); + getPanel().getDonneesCalque().apply(filter); + } - if (filter.isEmpty()) { + if (filter.isEmpty()) return; - } final File f=pn.getFile(); final FSigLayerExporter exporter=pn.getSelectedExporter(); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectExportPanel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectExportPanel.java 2009-01-22 10:07:02 UTC (rev 4391) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectExportPanel.java 2009-01-22 13:43:18 UTC (rev 4392) @@ -8,75 +8,33 @@ package org.fudaa.fudaa.modeleur; import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.Font; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.io.File; -import java.io.IOException; -import java.util.ArrayList; import java.util.HashMap; -import java.util.Iterator; -import java.util.List; import java.util.Map; -import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.JFileChooser; -import javax.swing.JLabel; import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.JTree; -import javax.swing.UIManager; -import javax.swing.border.Border; -import javax.swing.event.CaretEvent; -import javax.swing.event.CaretListener; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; -import javax.swing.filechooser.FileFilter; -import javax.swing.tree.TreeCellRenderer; -import javax.swing.tree.TreePath; -import com.memoire.bu.BuButton; -import com.memoire.bu.BuCheckBox; -import com.memoire.bu.BuFileFilter; -import com.memoire.bu.BuHorizontalLayout; -import com.memoire.bu.BuLabel; -import com.memoire.bu.BuRadioButton; -import com.memoire.bu.BuResource; -import com.memoire.bu.BuVerticalLayout; -import com.memoire.fu.FuLog; - -import org.fudaa.ctulu.CtuluArkLoader; import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.CtuluLibFile; -import org.fudaa.ctulu.CtuluLibString; import org.fudaa.ctulu.CtuluUI; -import org.fudaa.ctulu.gis.factory.GISExportDataStoreFactory; -import org.fudaa.ctulu.gui.CtuluCellRenderer; import org.fudaa.ctulu.gui.CtuluDialogPanel; -import org.fudaa.ctulu.gui.CtuluFileChooser; import org.fudaa.ctulu.gui.CtuluFileChooserPanel; import org.fudaa.dodico.dunes.io.DunesGEOFileFormat; import org.fudaa.dodico.rubar.io.RubarStCnFileFormat; import org.fudaa.dodico.telemac.io.SinusxFileFormat; - -import org.fudaa.ebli.calque.BCalquePersistenceGroupe; - import org.fudaa.fudaa.commun.FudaaLib; -import org.fudaa.fudaa.commun.impl.FudaaGuiLib; -import org.fudaa.fudaa.commun.save.FudaaSaveLib; -import org.fudaa.fudaa.commun.save.FudaaSaveZipLoader; -import org.fudaa.fudaa.modeleur.MdlImplementation.MdlFileFilter; -import org.fudaa.fudaa.modeleur.MdlProjectImportTreeModel.LayerNode; import org.fudaa.fudaa.sig.FSigLib; import org.fudaa.fudaa.sig.layer.FSigLayerExporter; -import org.fudaa.fudaa.tr.common.TrProjectPersistence; -import org.fudaa.fudaa.tr.common.TrResource; -import org.geotools.data.FileDataStoreFactorySpi; +import com.memoire.bu.BuFileFilter; +import com.memoire.bu.BuLabel; +import com.memoire.bu.BuRadioButton; +import com.memoire.bu.BuVerticalLayout; + /** * Un panneau pour exporter les donn\xE9es 2D. * @author Bertrand Marchand @@ -84,69 +42,19 @@ */ public class MdlProjectExportPanel extends CtuluDialogPanel implements DocumentListener { - -/* public static class CellRenderer extends JLabel implements TreeCellRenderer { - final Color selectedBackground_ = UIManager.getColor("Tree.selectionBackground"); - final Color selectedForground_ = UIManager.getColor("Tree.selectionForeground"); - final Border focusBorderColor_ = BorderFactory.createLineBorder(UIManager.getColor("Tree.selectionBorderColor"), 1); - - public CellRenderer() { - this.setOpaque(true); -// setPreferredSize(new Dimension(120, 25)); - } - - protected boolean isSelectable(final Object _value, final boolean _leaf) { - return true; - } - - public Component getTreeCellRendererComponent(final JTree _tree, final Object _value, final boolean _selected, - final boolean _expanded, final boolean _leaf, final int _row, final boolean _hasFocus) { - this.setFont(_tree.getFont()); - setIcon(BuResource.BU.getIcon("calque")); - setText(_value.toString()); - final boolean selectable = isSelectable(_value, _leaf); - if (_selected && selectable) { - setBackground(selectedBackground_); - setForeground(selectedForground_); - } else { - setBackground(_tree.getBackground()); - setForeground(_tree.getForeground()); - } - if (selectable) { - setToolTipText(getText()); - } else { - setToolTipText(getText() + ": " + CtuluLib.getS("Non s\xE9lectionnable")); - } - setBorder((selectable && _hasFocus) ? focusBorderColor_ : CtuluCellRenderer.BORDER_NO_FOCUS); - setEnabled(_tree.isEnabled()); - return this; - } - } -*/ CtuluFileChooserPanel pn_; String filename_=""; BuRadioButton rbAllLayers_; BuRadioButton rbSelectedLayers_; BuRadioButton rbVisibleLayers_; + protected BuRadioButton rbSelectedGeometries_; BuFileFilter[] filters_; CtuluUI ui_; BuFileFilter selectedFilter_=null; - Map filter2Exporter_; - -// JTree trLayers_; -// FudaaSaveZipLoader loader_=null; + Map<BuFileFilter, FSigLayerExporter> filter2Exporter_; public MdlProjectExportPanel(CtuluUI _ui) { ui_=_ui; -// ActionListener rbListener=new ActionListener() { -// public void actionPerformed(ActionEvent _evt) { -// if (rbSelectedLayers_.isSelected()) { -// if (isFileOK()) loadFile(); -// } -// trLayers_.setEnabled(rbSelectedLayers_.isSelected()); -// trLayers_.setModel(new MdlProjectImportTreeModel(loader_)); -// } -// }; filters_=buildFilter2Export(); @@ -165,50 +73,32 @@ pnFile.add(pn_, BorderLayout.CENTER); add(pnFile); - rbAllLayers_=new BuRadioButton("Exporter tous les calques"); -// rbAllLayers_.addActionListener(rbListener); + rbAllLayers_=new BuRadioButton(FudaaLib.getS("Exporter tous les calques")); + rbSelectedLayers_=new BuRadioButton(FudaaLib.getS("Exporter les calques s\xE9lectionn\xE9s (et leurs sous-calques)")); + rbVisibleLayers_=new BuRadioButton(FudaaLib.getS("Exporter les seuls calques visibles")); + rbSelectedGeometries_=new BuRadioButton(FudaaLib.getS("Exporter les g\xE9om\xE9tries selectionn\xE9es.")); add(rbAllLayers_); - - rbSelectedLayers_=new BuRadioButton("Exporter les calques s\xE9lectionn\xE9s (et leurs sous-calques)"); -// rbSelectedLayers_.addActionListener(rbListener); add(rbSelectedLayers_); - - rbVisibleLayers_=new BuRadioButton("Exporter les seuls calques visibles"); -// rbSelectedLayers_.addActionListener(rbListener); add(rbVisibleLayers_); -// + add(rbSelectedGeometries_); ButtonGroup bgLayers=new ButtonGroup(); bgLayers.add(rbAllLayers_); bgLayers.add(rbSelectedLayers_); bgLayers.add(rbVisibleLayers_); -// -// trLayers_=new JTree(); -// trLayers_.setShowsRootHandles(true); -// trLayers_.setRootVisible(false); -// trLayers_.setCellRenderer(new CellRenderer()); -// JScrollPane sp=new JScrollPane(trLayers_); -// sp.setPreferredSize(new Dimension(300,200)); -// add(sp); -// + bgLayers.add(rbSelectedGeometries_); + rbAllLayers_.doClick(); -// pn_.getTf().getDocument().addDocumentListener(this); -// } private BuFileFilter[] buildFilter2Export() { final BuFileFilter sx = SinusxFileFormat.getInstance().createFileFilter(); final BuFileFilter st = RubarStCnFileFormat.createStFilter(); final BuFileFilter dunes= DunesGEOFileFormat.getInstance().createFileFilter(); - filter2Exporter_ = new HashMap(5);// pour l'instant ..... + filter2Exporter_ = new HashMap<BuFileFilter, FSigLayerExporter>(5);// pour l'instant ..... filter2Exporter_.put(sx, new FSigLayerExporter.ToSinusX()); filter2Exporter_.put(st, new FSigLayerExporter.ToRubar()); filter2Exporter_.put(dunes, new FSigLayerExporter.ToDunes()); -// final Map dataStores = GISExportDataStoreFactory.buildFileFilterMap(false); -// for (final Iterator it = dataStores.entrySet().iterator(); it.hasNext();) { -// final Map.Entry e = (Map.Entry) it.next(); -// filter2Exporter_.put(e.getKey(), new FSigLayerExporter.DataStore((FileDataStoreFactorySpi) e.getValue())); -// } filters_ = new BuFileFilter[filter2Exporter_.size()]; filter2Exporter_.keySet().toArray(filters_); @@ -217,41 +107,9 @@ public boolean valide() { if (!isFileOK()) return false; -// -// // Mise a jour des \xE9tats des calques. Par defaut, les calques sopnt r\xE9cup\xE9r\xE9s. -// if (rbSelectedLayers_.isSelected()) { -// List<LayerNode> nds=getChildrenLeafs((LayerNode)trLayers_.getModel().getRoot()); -// -// TreePath[] paths=trLayers_.getSelectionPaths(); -// if (paths!=null) { -// for (TreePath path : paths) { -// nds.remove((LayerNode)path.getLastPathComponent()); -// } -// } -// -// for (LayerNode nd : nds) { -// loader_.setOption(CtuluArkLoader.OPTION_LAYER_IGNORE+nd.name_,CtuluLibString.toString(true)); -// } -// } return true; } -// private List<LayerNode> getChildrenLeafs(LayerNode _nd) { -// List<LayerNode> r=new ArrayList<LayerNode>(); -// int nb=_nd.getChildCount(); -// for (int i=0; i<nb; i++) { -// LayerNode nd=(LayerNode)_nd.getChildAt(i); -// if (nd.isLeaf()) { -// r.add(nd); -// } -// else { -// List<LayerNode> ls=getChildrenLeafs(nd); -// r.addAll(ls); -// } -// } -// return r; -// } - private boolean isFileOK() { final File f = pn_.getFile(); if (f == null) { @@ -319,31 +177,17 @@ public boolean isVisibleLayers() { return rbVisibleLayers_.isSelected(); } -// private FudaaSaveZipLoader loadFile() { -// if (loader_!=null) return loader_; -// -// try { -// loader_=new FudaaSaveZipLoader(pn_.getFile()); -// } -// catch (IOException _exc) { -// setErrorText(TrResource.getS("Le fichier n'est pas accessible")); -// } -// return loader_; -// } + + public boolean isSelectedGeometries() { + return rbSelectedGeometries_.isSelected(); + } public void changedUpdate(final DocumentEvent _e) { -// valide(); } public void insertUpdate(final DocumentEvent _e) { -// valide(); } public void removeUpdate(final DocumentEvent _e) { -// valide(); } - -// public FudaaSaveZipLoader getLoader() throws IOException { -// return loader_; -// } } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerFilter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerFilter.java 2009-01-22 10:07:02 UTC (rev 4391) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/layer/FSigLayerFilter.java 2009-01-22 13:43:18 UTC (rev 4392) @@ -13,20 +13,26 @@ import java.util.List; import java.util.Set; -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.MultiPoint; -import com.vividsolutions.jts.geom.Point; - import org.fudaa.ctulu.CtuluIOOperationSynthese; import org.fudaa.ctulu.CtuluUI; import org.fudaa.ctulu.ProgressionInterface; +import org.fudaa.ctulu.gis.GISAttributeModel; import org.fudaa.ctulu.gis.GISZoneCollection; - +import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; +import org.fudaa.ctulu.gis.GISZoneCollectionMultiPoint; +import org.fudaa.ctulu.gis.GISZoneCollectionPoint; import org.fudaa.ebli.calque.BCalque; import org.fudaa.ebli.calque.BCalqueVisitor; import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; +import org.fudaa.ebli.calque.ZCalqueGeometry; import org.fudaa.ebli.calque.ZModeleGeometry; +import org.fudaa.ebli.calque.edition.ZModeleGeometryDefault; +import org.fudaa.ebli.calque.edition.ZModelePointEditable; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.MultiPoint; +import com.vividsolutions.jts.geom.Point; + /** * Un filtre sur les calques a exporter. Les calques a exporter peuvent \xEAtre uniquement les calques visibles. * @author Fred Deniger @@ -34,11 +40,12 @@ */ public class FSigLayerFilter implements BCalqueVisitor { - final Set cqs_ = new HashSet(); - List pointCq_ = new ArrayList(); - List polyCq_ = new ArrayList(); - List mlptsCq_=new ArrayList(); + final Set<BCalque> cqs_ = new HashSet<BCalque>(); + List<BCalque> pointCq_ = new ArrayList<BCalque>(); + List<BCalque> polyCq_ = new ArrayList<BCalque>(); + List<BCalque> mlptsCq_=new ArrayList<BCalque>(); boolean bonlyVisible_=false; + protected boolean onlySelectedGeometries_=false; /** * @@ -85,22 +92,85 @@ bonlyVisible_=_b; } + /** + * Le traitement s'applique uniquement aux g\xE9om\xE9tries selectionn\xE9es. + */ + public void setTreatmentOnlySelectedGeometries(boolean _b) { + onlySelectedGeometries_=_b; + } + + /** + * Retourne les donn\xE9es de la g\xE9om\xE9tries de _zone. + * retourne null si _idxGeom est invalide. + */ + private Object[] getData(int _idxGeom, GISZoneCollection _zone) { + Object[] data=null; + if (_idxGeom>=0&&_idxGeom<_zone.getNbGeometries()) { + GISAttributeModel[] models=_zone.getModels(); + data=new Object[models.length]; + for (int i=0; i<data.length; i++) + data[i]=models[i].getObjectValueAt(_idxGeom); + } + return data; + } + + /** + * Ajout les attributs n\xE9c\xE9ssaires \xE0 _destination puis ajout les g\xE9om\xE9tries de + * la _source \xE0 la _destination. + */ + private void addGeoms(int[] _idx, GISZoneCollection _source, GISZoneCollection _destination) { + _destination.setAttributes(_source.getAttributes(), null); + for(int i=0;i<_idx.length;i++) + _destination.addGeometry(_source.getGeometry(_idx[i]), getData(_idx[i], _source), null); + } + + /** + * Cr\xE9e un nouveau calque dupliquant les g\xE9om\xE9ries selectionn\xE9es dans celui pass\xE9 en param\xE8tre. + */ + private BCalque duplicateCalque(ZCalqueAffichageDonneesInterface _calque) { + ZModeleGeometryDefault model=new ZModeleGeometryDefault(null); + addGeoms(_calque.getSelectedObjectInTable(), ((ZModeleGeometry)_calque.modeleDonnees()).getGeomData(), model.getGeomData()); + return new ZCalqueGeometry(model); + } + public boolean visit(final BCalque _cq) { // Calque non trait\xE9 si invisible. - if (bonlyVisible_ && !_cq.isVisible()) return true; - - if (!cqs_.contains(_cq) && _cq instanceof ZCalqueAffichageDonneesInterface - && ((ZCalqueAffichageDonneesInterface) _cq).modeleDonnees() instanceof ZModeleGeometry) { + if (bonlyVisible_&&!_cq.isVisible()) + return true; + + if (!cqs_.contains(_cq)&&_cq instanceof ZCalqueAffichageDonneesInterface + &&((ZCalqueAffichageDonneesInterface)_cq).modeleDonnees() instanceof ZModeleGeometry) { cqs_.add(_cq); - final ZModeleGeometry geom = (ZModeleGeometry) ((ZCalqueAffichageDonneesInterface) _cq).modeleDonnees(); - if (geom.getGeomData().getDataStoreClass().equals(Point.class)) { - pointCq_.add(_cq); - } else if (LineString.class.isAssignableFrom(geom.getGeomData().getDataStoreClass())) { - polyCq_.add(_cq); - } else if (MultiPoint.class.isAssignableFrom(geom.getGeomData().getDataStoreClass())) { - mlptsCq_.add(_cq); + ZCalqueAffichageDonneesInterface calque=(ZCalqueAffichageDonneesInterface)_cq; + final ZModeleGeometry geom=(ZModeleGeometry)calque.modeleDonnees(); + + if (onlySelectedGeometries_) { + if (!calque.isSelectionEmpty()) { + if (geom.getGeomData().getDataStoreClass().equals(Point.class)) { + ZModelePointEditable model=new ZModelePointEditable(new GISZoneCollectionPoint()); + addGeoms(calque.getSelectedObjectInTable(), geom.getGeomData(), model.getGeomData()); + pointCq_.add(new ZCalqueGeometry(model)); + } + else if (LineString.class.isAssignableFrom(geom.getGeomData().getDataStoreClass())) { + ZModeleGeometryDefault model=new ZModeleGeometryDefault(new GISZoneCollectionLigneBrisee()); + addGeoms(calque.getSelectedObjectInTable(), geom.getGeomData(), model.getGeomData()); + polyCq_.add(new ZCalqueGeometry(model)); + } + else if (MultiPoint.class.isAssignableFrom(geom.getGeomData().getDataStoreClass())) { + ZModeleGeometryDefault model=new ZModeleGeometryDefault(new GISZoneCollectionMultiPoint()); + addGeoms(calque.getSelectedObjectInTable(), geom.getGeomData(), model.getGeomData()); + mlptsCq_.add(new ZCalqueGeometry(model)); + } + } } - + else { + if (geom.getGeomData().getDataStoreClass().equals(Point.class)) + pointCq_.add(_cq); + else if (LineString.class.isAssignableFrom(geom.getGeomData().getDataStoreClass())) + polyCq_.add(_cq); + else if (MultiPoint.class.isAssignableFrom(geom.getGeomData().getDataStoreClass())) + mlptsCq_.add(_cq); + } } return true; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2009-01-22 10:07:06
|
Revision: 4391 http://fudaa.svn.sourceforge.net/fudaa/?rev=4391&view=rev Author: emmanuel_martin Date: 2009-01-22 10:07:02 +0000 (Thu, 22 Jan 2009) Log Message: ----------- Tache #132 "Export Rubar : Simplifier pour que l'utilisateur n'ait pas a rentrer l'extension" Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluFileChooserPanel.java branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStCnFileFormat.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectExportPanel.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluFileChooserPanel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluFileChooserPanel.java 2009-01-21 17:30:56 UTC (rev 4390) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gui/CtuluFileChooserPanel.java 2009-01-22 10:07:02 UTC (rev 4391) @@ -21,6 +21,11 @@ import javax.swing.filechooser.FileFilter; import javax.swing.text.BadLocationException; +import org.fudaa.ctulu.CtuluLib; +import org.fudaa.ctulu.CtuluLibFile; + +import com.memoire.bu.BuFileFilter; + import com.memoire.bu.BuBorderLayout; import com.memoire.bu.BuButton; import com.memoire.bu.BuLabel; @@ -28,9 +33,6 @@ import com.memoire.bu.BuTextField; import com.memoire.fu.FuLog; -import org.fudaa.ctulu.CtuluLib; -import org.fudaa.ctulu.CtuluLibFile; - /** * @author Fred Deniger * @version $Id: CtuluFileChooserPanel.java,v 1.8 2007-02-02 11:20:11 deniger Exp $ @@ -48,6 +50,9 @@ JTextField tf_; boolean writeMode_ = true; + + /** Le filtre selectionn\xE9. */ + protected FileFilter selectedFilter_; protected final int getFileSelectMode() { return fileSelectMode_; @@ -159,15 +164,23 @@ final int r = writeMode_ ? fileChooser.showSaveDialog(this) : fileChooser.showOpenDialog(this); if (r == JFileChooser.APPROVE_OPTION) { final File out = fileChooser.getSelectedFile(); - if ((initFile == null) || (!out.equals(initFile))) { - final String s = out.getAbsolutePath(); - tf_.setText(s); - } + selectedFilter_=fileChooser.getFileFilter(); + if(!selectedFilter_.accept(out)&&(selectedFilter_ instanceof BuFileFilter)) + tf_.setText(out.getAbsolutePath()+"."+((BuFileFilter)selectedFilter_).getFirstExt()); + else + tf_.setText(out.getAbsolutePath()); fileChooserAccepted(fileChooser); } } + /** + * Retourne le filtre selectionn\xE9. + */ + public FileFilter getSelectedFilter() { + return selectedFilter_; + } + protected void fileChooserAccepted(final CtuluFileChooser _fc){ } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStCnFileFormat.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStCnFileFormat.java 2009-01-21 17:30:56 UTC (rev 4390) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/rubar/io/RubarStCnFileFormat.java 2009-01-22 10:07:02 UTC (rev 4391) @@ -27,7 +27,7 @@ public RubarStCnFileFormat() { super(1); - extensions_ = new String[] { "st", "cn", "m" }; + extensions_ = new String[] { "st", "cn", "m", "sem" }; super.description_ = H2dResource.getS("Fichier de sections"); super.id_ = "RUBAR_ST"; super.nom_ = "Rubar st"; @@ -35,7 +35,7 @@ } public static BuFileFilter createStFilter() { - return new BuFileFilter(new String[] { "st" }, "Rubar st"); + return new BuFileFilter(new String[] { "st", "cn", "sem" }, "Rubar st"); } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectExportPanel.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectExportPanel.java 2009-01-21 17:30:56 UTC (rev 4390) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlProjectExportPanel.java 2009-01-22 10:07:02 UTC (rev 4391) @@ -258,17 +258,7 @@ setErrorText(CtuluLib.getS("Donnez un nom au fichier d'exportation")); return false; } - boolean bextok=false; - for (int i=0; i<filters_.length; i++) { - if (filters_[i].accept(f)) { - selectedFilter_=filters_[i]; - bextok=true; - } - } - if (!bextok) { - setErrorText(TrResource.getS("Le fichier choisi a une extension inconnue")); - return false; - } + selectedFilter_=(BuFileFilter) pn_.getSelectedFilter(); if (CtuluLibFile.getExtension(f.getName())==null) { setErrorText(CtuluLib.getS("Le fichier choisi doit avoir une extension.")); return false; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2009-01-21 17:31:02
|
Revision: 4390 http://fudaa.svn.sourceforge.net/fudaa/?rev=4390&view=rev Author: emmanuel_martin Date: 2009-01-21 17:30:56 +0000 (Wed, 21 Jan 2009) Log Message: ----------- Tache #128 "On aimerait pouvoir copier des g?\195?\169om?\195?\169tries/sommets vers un calque sans passer par une duplication" Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/commun/impl/FudaaCommonImplementation.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlFille2d.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java Added Paths: ----------- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/CutCopyPasteManager.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/ZDialog.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java 2009-01-21 16:06:25 UTC (rev 4389) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZSceneEditor.java 2009-01-21 17:30:56 UTC (rev 4390) @@ -11,7 +11,6 @@ import org.fudaa.ctulu.CtuluCommandContainer; import org.fudaa.ctulu.CtuluCommandManager; import org.fudaa.ctulu.CtuluUI; -import org.fudaa.ebli.calque.ZCalqueAffichageDonnees; import org.fudaa.ebli.calque.ZCalqueAffichageDonneesInterface; import org.fudaa.ebli.calque.ZEbliCalquesPanel; import org.fudaa.ebli.calque.ZScene; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/commun/impl/FudaaCommonImplementation.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/commun/impl/FudaaCommonImplementation.java 2009-01-21 16:06:25 UTC (rev 4389) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/commun/impl/FudaaCommonImplementation.java 2009-01-21 17:30:56 UTC (rev 4390) @@ -320,6 +320,16 @@ act=replaceItemByAction("DUPLIQUER"); act.setEnabled(false); if (act!=null) EbliActionMap.getInstance().addAction(act); + + act=replaceItemByAction("COUPER"); + act.setEnabled(false); + if (act!=null) EbliActionMap.getInstance().addAction(act); + act=replaceItemByAction("COLLER"); + act.setEnabled(false); + if (act!=null) EbliActionMap.getInstance().addAction(act); + act=replaceItemByAction("COPIER"); + act.setEnabled(false); + if (act!=null) EbliActionMap.getInstance().addAction(act); } /** Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/CutCopyPasteManager.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/CutCopyPasteManager.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/CutCopyPasteManager.java 2009-01-21 17:30:56 UTC (rev 4390) @@ -0,0 +1,309 @@ +/* + * @creation 21 janv. 2009 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2009 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.fudaa.modeleur; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.swing.event.InternalFrameAdapter; +import javax.swing.event.InternalFrameEvent; +import javax.swing.event.TreeSelectionEvent; +import javax.swing.event.TreeSelectionListener; + +import org.fudaa.ctulu.CtuluCommandComposite; +import org.fudaa.ctulu.gis.GISAttributeInterface; +import org.fudaa.ctulu.gis.GISAttributeModel; +import org.fudaa.ctulu.gis.GISCoordinateSequenceFactory; +import org.fudaa.ctulu.gis.GISGeometryFactory; +import org.fudaa.ctulu.gis.GISLib; +import org.fudaa.ctulu.gis.GISZoneCollection; +import org.fudaa.ebli.calque.ZModeleGeometry; +import org.fudaa.ebli.calque.ZScene; +import org.fudaa.ebli.calque.ZSelectionEvent; +import org.fudaa.ebli.calque.ZSelectionListener; +import org.fudaa.ebli.calque.dessin.DeForme; +import org.fudaa.ebli.calque.edition.ZCalqueEditable; +import org.fudaa.ebli.calque.edition.ZModeleEditable; +import org.fudaa.ebli.commun.EbliActionInterface; +import org.fudaa.ebli.commun.EbliActionMap; +import org.fudaa.fudaa.commun.FudaaLib; +import org.fudaa.fudaa.modeleur.layer.MdlModel2dLine; +import org.fudaa.fudaa.modeleur.layer.MdlModel2dMultiPoint; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.CoordinateSequence; +import com.vividsolutions.jts.geom.Geometry; + +/** + * G\xE8re les fonctions de couper/coller/copier de la fen\xEAtre 2d. + * + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class CutCopyPasteManager { + /** La fen\xEAtre 2d \xE0 g\xE9rer. */ + protected MdlFille2d mdlFille2d_; + /** La sc\xE8ne permettant l'acc\xE8s sur les g\xE9om\xE9tries et les selections. */ + protected ZScene zScene_; + /** L'editeur de sc\xE8ne contenant les m\xE9thodes pour le d\xE9placement des g\xE9om\xE9tries. */ + protected MdlSceneEditor zSceneEditor_; + /** Copy action interface */ + protected EbliActionInterface copyAction_; + /** Cut action interface */ + protected EbliActionInterface cutAction_; + /** Paste action interface */ + protected EbliActionInterface pasteAction_; + /** Les mod\xE8les contennant les g\xE9om\xE9tries en cours de copy. */ + protected List<ZModeleGeometry> models_=new ArrayList<ZModeleGeometry>(); + /** Les points selectionn\xE9s pour la copy en mode sommet. */ + protected List<Coordinate> coordinates_=new ArrayList<Coordinate>(); + // Les gestionnaires d'\xE9v\xE9nements \\ + protected EventFrameManager eventManager1_; + protected EventSelectedGeometriesManager eventManager2_; + protected EventSelectedCalquesManager eventManager3_; + + /** + * Mise \xE0 jour correcte de bouton copier/coller/couper lors des diff\xE9rente + * manipulation de la fen\xEAtre. + */ + protected class EventFrameManager extends InternalFrameAdapter { + public boolean blockPaste_=false; + public boolean blockCopy_=false; + public boolean blockCut_=false; + + public void internalFrameActivated(InternalFrameEvent e) { + blockPaste_=false; + blockCopy_=false; + blockCut_=false; + updateButtons(); + } + + public void internalFrameDeactivated(InternalFrameEvent e) { + blockPaste_=true; + blockCopy_=true; + blockCut_=true; + updateButtons(); + } + } + + /** + * Mise \xE0 jour des boutons en fonction de la selection qui est faite dans les + * calques. + */ + protected class EventSelectedGeometriesManager implements ZSelectionListener { + public boolean blockPaste_=false; + public boolean blockCopy_=false; + public boolean blockCut_=false; + + public void selectionChanged(ZSelectionEvent _evt) { + blockCopy_=zScene_.isSelectionEmpty(); + blockCut_=zScene_.isSelectionEmpty()||zScene_.isAtomicMode(); + updateButtons(); + } + } + + /** + * Mise \xE0 jour de du bouton 'coller' en fonction du calque selectionn\xE9 dans + * l'arbre des calques. + */ + protected class EventSelectedCalquesManager implements TreeSelectionListener { + public boolean blockPaste_=false; + public boolean blockCopy_=false; + public boolean blockCut_=false; + + public void valueChanged(TreeSelectionEvent e) { + blockCut_=!(mdlFille2d_.getArbreCalqueModel().getSelectedCalque() instanceof ZCalqueEditable); + blockCopy_=blockCut_; + blockPaste_=blockCut_; + updateButtons(); + } + } + + public CutCopyPasteManager(MdlFille2d _mdlFille2d, MdlSceneEditor _zSceneEditor) { + mdlFille2d_=_mdlFille2d; + zScene_=_zSceneEditor.getScene(); + zSceneEditor_=_zSceneEditor; + copyAction_=EbliActionMap.getInstance().getAction("COPIER"); + cutAction_=EbliActionMap.getInstance().getAction("COUPER"); + pasteAction_=EbliActionMap.getInstance().getAction("COLLER"); + // Verification de la pr\xE9sence des actions + if (copyAction_==null||cutAction_==null||pasteAction_==null) + throw new IllegalArgumentException(FudaaLib + .getS("Les actions n\xE9c\xE9ssaire aux fonctionnalit\xE9s de couper/copier/coller n'ont pas \xE9t\xE9 trouv\xE9s.")); + // Mise en place des diff\xE9rentes \xE9coutes + eventManager1_=new EventFrameManager(); + eventManager2_=new EventSelectedGeometriesManager(); + eventManager3_=new EventSelectedCalquesManager(); + mdlFille2d_.addInternalFrameListener(eventManager1_); + zScene_.addSelectionListener(eventManager2_); + mdlFille2d_.getArbreCalqueModel().addTreeSelectionListener(eventManager3_); + // Initialisation des valeurs de blockage des boutons. + eventManager2_.selectionChanged(null); + eventManager3_.valueChanged(null); + } + + /** + * Active les boutons qui doivent l'\xEAtre. + */ + protected void updateButtons() { + copyAction_.setEnabled(!eventManager1_.blockCopy_&&!eventManager2_.blockCopy_&&!eventManager3_.blockCopy_); + pasteAction_.setEnabled((models_.size()>0||coordinates_.size()>0)&&!eventManager1_.blockPaste_&&!eventManager2_.blockPaste_&&!eventManager3_.blockPaste_); + cutAction_.setEnabled(!eventManager1_.blockCut_&&!eventManager2_.blockCut_&&!eventManager3_.blockCut_); + } + + public void copy() { + models_.clear(); + coordinates_.clear(); + if (zScene_.isAtomicMode()) { + // Copy en mode atomic \\ + int[] idxScene=zScene_.getLayerSelectionMulti().getIdxSelected(); + if (idxScene!=null) { + for(int i=0;i<idxScene.length;i++) { + // Extraction des informations sur la zone + GISZoneCollection zone=((ZModeleEditable) zScene_.getLayerForId(idxScene[i]).modeleDonnees()).getGeomData(); + GISAttributeInterface attrZ=zone.getAttributeIsZ(); + int idxAttrZ=-1; + if(attrZ!=null) + idxAttrZ=zone.getIndiceOf(zone.getAttributeIsZ()); + // La g\xE9om\xE9trie \xE0 traiter + CoordinateSequence seqGeom=zone.getCoordinateSequence(zScene_.sceneId2LayerId(idxScene[i])); + int[] selectedIdx=zScene_.getLayerSelectionMulti().getSelection(idxScene[i]).getSelectedIndex(); + // Extraction des coordonn\xE9es + for(int j=0;j<selectedIdx.length;j++) { + Coordinate coord=seqGeom.getCoordinate(selectedIdx[j]); + if(attrZ!=null) { + if(attrZ.isAtomicValue()) + coord.z=(Double) ((GISAttributeModel) zone.getValue(idxAttrZ, zScene_.sceneId2LayerId(idxScene[i]))).getObjectValueAt(selectedIdx[j]); + else + coord.z=(Double) zone.getValue(selectedIdx[j], idxAttrZ); + } + coordinates_.add(coord); + } + } + } + } + else { + // Copy en mode global \\ + int[] idxScene=zScene_.getLayerSelection().getSelectedIndex(); + if (idxScene!=null) { + // Tri des g\xE9om\xE9tries en fonction de leur calque d'origine + Map<ZCalqueEditable, List<Integer>> selectedGeom=new HashMap<ZCalqueEditable, List<Integer>>(); + for (int i=0; i<idxScene.length; i++) { + ZCalqueEditable calque=(ZCalqueEditable)zScene_.getLayerForId(idxScene[i]); + if (!selectedGeom.containsKey(calque)) + selectedGeom.put(calque, new ArrayList<Integer>()); + selectedGeom.get(calque).add(zScene_.sceneId2LayerId(idxScene[i])); + } + // Cr\xE9ation des mod\xE8les de cache + for (Map.Entry<ZCalqueEditable, List<Integer>> entry : selectedGeom.entrySet()) { + // Cr\xE9ation du mod\xE8le + ZModeleEditable modelSource=entry.getKey().getModelEditable(); + ZModeleEditable modelCache=null; + if (modelSource instanceof MdlModel2dMultiPoint) + modelCache=new MdlModel2dMultiPoint(null); + else if (modelSource instanceof MdlModel2dLine) + modelCache=new MdlModel2dLine(null); + modelCache.getGeomData().setAttributes(modelSource.getGeomData().getAttributes(), null); + // Remplissage du mod\xE8le + for (int i=0; i<entry.getValue().size(); i++) { + int idxGeom=zScene_.sceneId2LayerId(entry.getValue().get(i)); + Geometry geom=modelSource.getGeomData().getGeometry(idxGeom); + GISAttributeModel[] models=modelSource.getGeomData().getModels(); + Object[] data=new Object[models.length]; + for (int j=0; j<data.length; j++) + data[j]=models[j].getObjectValueAt(idxGeom); + modelCache.getGeomData().addGeometry(geom, data, null); + } + // Ajout du mod\xE8le de cache + models_.add(modelCache); + } + } + } + updateButtons(); + } + + public void cut() { + copy(); + zSceneEditor_.removeSelectedObjects(mdlFille2d_.getCmdMng()); + } + + public void paste() { + try { + CtuluCommandComposite cmd; + // Collage de g\xE9om\xE9trie + if (models_.size()>0) { + cmd=new CtuluCommandComposite(FudaaLib.getS("Coller des g\xE9om\xE9tries")); + for (int i=0; i<models_.size(); i++) { + int[] idxSource=new int[models_.get(i).getNombre()]; + for (int j=0; j<idxSource.length; j++) + idxSource[j]=j; + zSceneEditor_.moveGeometries(models_.get(i), idxSource, (ZCalqueEditable)zScene_.getCalqueActif(), cmd); + } + } + // Collage de points + else { + cmd=new CtuluCommandComposite(FudaaLib.getS("Coller des points")); + ZCalqueEditable calque=((ZCalqueEditable)zScene_.getCalqueActif()); + ZModeleEditable modele=(ZModeleEditable)calque.modeleDonnees(); + GISZoneCollection zone=modele.getGeomData(); + GISAttributeInterface attrZ=zone.getAttributeIsZ(); + int idxAttrZ=-1; + if (attrZ!=null) + idxAttrZ=zone.getIndiceOf(attrZ); + // Cr\xE9ation de la g\xE9om\xE9trie + CoordinateSequence coordSeq=new GISCoordinateSequenceFactory().create(coordinates_.toArray(new Coordinate[0])); + Geometry geom=null; + if (modele instanceof MdlModel2dMultiPoint) + geom=GISGeometryFactory.INSTANCE.createMultiPoint(coordSeq); + else if (modele instanceof MdlModel2dLine) { + boolean isFerme=coordSeq.getCoordinate(0).equals(coordSeq.getCoordinate(coordSeq.size()-1)); + if ((calque.canAddForme(DeForme.LIGNE_BRISEE)&&!isFerme)||!calque.canAddForme(DeForme.POLYGONE)) { + if (coordSeq.size()<2) + throw new IllegalArgumentException(FudaaLib.getS("Il faut au moins deux points pour coller en temps que polyligne.")); + geom=GISLib.toPolyligne(coordSeq); + } + else { + if (coordSeq.size()<2) + throw new IllegalArgumentException(FudaaLib.getS("Il faut au moins trois points pour coller en temps que polygone.")); + geom=GISLib.toPolygone(coordSeq); + } + } + // Cr\xE9ation de l'attribut z + Object[] data=new Object[zone.getNbAttributes()]; + if (attrZ!=null) + if (attrZ.isAtomicValue()) { + data[idxAttrZ]=new double[coordSeq.size()]; + for (int i=0; i<coordSeq.size(); i++) + ((double[])data[idxAttrZ])[i]=coordSeq.getOrdinate(i, 2); + } + else { + boolean allSame=true; + int i=0; + while (allSame&&++i<coordSeq.size()) + allSame=coordSeq.getOrdinate(i-1, 2)==coordSeq.getOrdinate(i, 2); + if (allSame) + data[idxAttrZ]=coordSeq.getOrdinate(0, 2); + else { + ZDialog dialog =new ZDialog(mdlFille2d_.getVisuPanel().getEditor().getFrame(), FudaaLib.getS("Choisissez un Z")); + dialog.setVisible(true); + data[idxAttrZ]=dialog.getValue(); + } + } + // Ajout de la g\xE9om\xE9trie + zone.addGeometry(geom, data, cmd); + } + if (mdlFille2d_.getCmdMng()!=null) + mdlFille2d_.getCmdMng().addCmd(cmd.getSimplify()); + } + catch (IllegalArgumentException _exp) { + mdlFille2d_.getVisuPanel().getController().getUI().error(_exp.getMessage()); + } + } +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/CutCopyPasteManager.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlFille2d.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlFille2d.java 2009-01-21 16:06:25 UTC (rev 4389) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlFille2d.java 2009-01-21 17:30:56 UTC (rev 4390) @@ -9,11 +9,6 @@ import java.awt.Dimension; -import com.db4o.ObjectContainer; - -import com.memoire.bu.BuCutCopyPasteInterface; -import com.memoire.bu.BuUndoRedoInterface; - import org.fudaa.ctulu.CtuluCommandManager; import org.fudaa.ctulu.CtuluExportDataInterface; import org.fudaa.ctulu.CtuluUI; @@ -21,15 +16,17 @@ import org.fudaa.ctulu.ProgressionInterface; import org.fudaa.ctulu.image.CtuluImageImporter; import org.fudaa.ctulu.image.CtuluImageProducer; - import org.fudaa.ebli.calque.ZEbliFilleCalques; - import org.fudaa.fudaa.commun.impl.FudaaCommonImplementation; import org.fudaa.fudaa.commun.save.FudaaFilleVisuPersistence; import org.fudaa.fudaa.commun.save.FudaaSavable; import org.fudaa.fudaa.commun.save.FudaaSaveZipWriter; import org.fudaa.fudaa.sig.FSigResource; +import com.db4o.ObjectContainer; +import com.memoire.bu.BuCutCopyPasteInterface; +import com.memoire.bu.BuUndoRedoInterface; + /** * La fenetre interne vue 2D des donn\xE9es du modeleur. Elle construit le composant arbre de * calques {@link org.fudaa.ebli.calque.BArbreCalque}. La plupart des traitements est @@ -42,11 +39,15 @@ public class MdlFille2d extends ZEbliFilleCalques implements BuUndoRedoInterface, CtuluExportDataInterface, CtuluImageImporter, CtuluUndoRedoInterface, FudaaSavable, BuCutCopyPasteInterface { + /** Le gestionnaire de couper/coller/copier de la fen\xEAtre. */ + protected CutCopyPasteManager cutCopyPasteManager_; + public MdlFille2d(FudaaCommonImplementation _ui) { super(new MdlVisuPanel(_ui), _ui, null); setName("mdlMainFille"); setTitle(FSigResource.FSIG.getString("Vue 2D")); setPreferredSize(new Dimension(500, 400)); + cutCopyPasteManager_=new CutCopyPasteManager(this, (MdlSceneEditor) getMdlVisuPanel().getEditor().getSceneEditor()); } public void saveIn(final FudaaSaveZipWriter _writer, final ProgressionInterface _prog) { @@ -96,13 +97,20 @@ } - public void copy() {} + public void copy() { + cutCopyPasteManager_.copy(); + } - public void cut() {} + public void cut() { + cutCopyPasteManager_.cut(); + } public void duplicate() { getMdlVisuPanel().duplicate(); } - public void paste() {} + public void paste() { + cutCopyPasteManager_.paste(); + } + } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2009-01-21 16:06:25 UTC (rev 4389) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlSceneEditor.java 2009-01-21 17:30:56 UTC (rev 4390) @@ -23,6 +23,7 @@ import javax.swing.JPanel; import org.fudaa.ctulu.CtuluCommandComposite; +import org.fudaa.ctulu.CtuluCommandContainer; import org.fudaa.ctulu.CtuluListSelection; import org.fudaa.ctulu.CtuluListSelectionInterface; import org.fudaa.ctulu.collection.CtuluCollection; @@ -141,125 +142,99 @@ } /** - * D\xE9place les g\xE9om\xE9tries s\xE9lectionn\xE9es dans le calque cible. + * D\xE9place des g\xE9om\xE9tries d'un mod\xE8le vers un calque. */ - public void moveInLayerSelectedGeometries() { - ZModeleGeometry mdldest=(ZModeleGeometry)((ZCalqueAffichageDonneesInterface)getScene().getCalqueActif()).modeleDonnees(); - if(mdldest==null) - return; - GISZoneCollection coldest=mdldest.getGeomData(); - if(coldest==null) - return; + public void moveGeometries(ZModeleGeometry _mldSource, int[] _idxSource, ZCalqueEditable _calqueDestination, CtuluCommandContainer _cmd) { + if(_mldSource==null||_idxSource==null||_calqueDestination==null) + throw new IllegalArgumentException(FudaaLib.getS("Aucun des param\xE8tres ne doit \xEAtre null.")); - int[] idxGeom=getScene().getLayerSelection().getSelectedIndex(); - Geometry[] geoms=new Geometry[idxGeom.length]; - for (int i=0; i<idxGeom.length; i++) { - geoms[i]=(Geometry)getScene().getObject(idxGeom[i]); - } + GISZoneCollection zoneSource=_mldSource.getGeomData(); + GISZoneCollection zoneDestination=_calqueDestination.getModelEditable().getGeomData(); + + Geometry[] geoms=new Geometry[_idxSource.length]; + for (int i=0; i<_idxSource.length; i++) + geoms[i]=zoneSource.getGeometry(_idxSource[i]); - final CtuluCommandComposite cmp = new CtuluCommandComposite(FudaaLib.getS("D\xE9placer dans calque cible")); + final CtuluCommandComposite cmp = new CtuluCommandComposite(FudaaLib.getS("D\xE9placement de g\xE9om\xE9tries")); // Controle sur le nombre de point minimum - ZCalqueEditable calque=(ZCalqueEditable)getScene().getCalqueActif(); - if(calque.canAddForme(DeForme.POLYGONE)&&!calque.canAddForme(DeForme.LIGNE_BRISEE)) - for (Geometry g : geoms) { - if (g.getNumPoints()<3) { - ui_.error(FudaaLib.getS("Vous ne pouvez pas d\xE9placer ces g\xE9om\xE9tries.\nUne au moins est constitu\xE9e de moins de 3 points.")); - return; - } + if (_calqueDestination.canAddForme(DeForme.POLYGONE)&&!_calqueDestination.canAddForme(DeForme.LIGNE_BRISEE)) { + int nbProbGeom=0; + for (Geometry g : geoms) + if (g.getNumPoints()<3) + nbProbGeom++; + if (nbProbGeom>0) { + ui_.error(FudaaLib.getS("Vous ne pouvez pas d\xE9placer ces g\xE9om\xE9tries.\n")+Integer.toString(nbProbGeom) + +FudaaLib.getS(" g\xE9om\xE9trie(s) a/ont moins de 3 points.")); + return; } - else if(calque.canAddForme(DeForme.LIGNE_BRISEE)) - for (Geometry g : geoms) { - if (g.getNumPoints()<2) { - ui_.error(FudaaLib.getS("Vous ne pouvez pas d\xE9placer ces g\xE9om\xE9tries.\nUne au moins est constitu\xE9e de moins de 2 points.")); - return; - } + } + else if (_calqueDestination.canAddForme(DeForme.LIGNE_BRISEE)) { + int nbProbGeom=0; + for (Geometry g : geoms) + if (g.getNumPoints()<2) + nbProbGeom++; + if (nbProbGeom>0) { + ui_.error(FudaaLib.getS("Vous ne pouvez pas d\xE9placer ces g\xE9om\xE9tries.\n")+Integer.toString(nbProbGeom) + +FudaaLib.getS(" g\xE9om\xE9trie(s) a/ont moins de 2 points.")); + return; } + } // Nouveaux objets - Geometry[] newGeom=new Geometry[idxGeom.length]; - Object[][] newData=new Object[idxGeom.length][]; + Geometry[] newGeom=new Geometry[_idxSource.length]; + Object[][] newData=new Object[_idxSource.length][]; // Ajout des nouveaux objets. - for (int i=0; i<idxGeom.length; i++) { - + for (int i=0; i<_idxSource.length; i++) { // Les attributs - Object[] datadest=new Object[coldest.getNbAttributes()]; - GISZoneCollection colsrc=((ZModeleGeometry)getScene().getLayerForId(idxGeom[i]).modeleDonnees()).getGeomData(); + Object[] datadest=new Object[zoneDestination.getNbAttributes()]; for (int iatt=0; iatt<datadest.length; iatt++) { - int idxAtt=colsrc.getIndiceOf(coldest.getAttribute(iatt)); + int idxAtt=zoneSource.getIndiceOf(zoneDestination.getAttribute(iatt)); if (idxAtt!=-1) { - datadest[iatt]=colsrc.getValue(idxAtt, getScene().sceneId2LayerId(idxGeom[i])); + datadest[iatt]=zoneSource.getValue(idxAtt,_idxSource[i]); // Les nouvelles g\xE9om\xE9tries sont modifi\xE9s, pas d'origine - if (colsrc.getAttribute(idxAtt)==GISAttributeConstants.ETAT_GEOM) + if (zoneSource.getAttribute(idxAtt)==GISAttributeConstants.ETAT_GEOM) datadest[iatt]=GISAttributeConstants.ATT_VAL_ETAT_MODI; } // Cas particuliers de mapping entre les attributs Z et z \\ else{ // On va essayer de renseigner le Z global de destination - if(coldest.getAttribute(iatt).getID().equals("Z")){ + if(zoneDestination.getAttribute(iatt).getID().equals("Z")){ // Cas o\xF9 un z atomique existe dans la source et qu'il est constant boolean identique=true; - int indexBathy=colsrc.getIndiceOf(GISAttributeConstants.BATHY); + int indexBathy=zoneSource.getIndiceOf(GISAttributeConstants.BATHY); if(indexBathy!=-1){ - GISAttributeModelDoubleArray data=(GISAttributeModelDoubleArray) colsrc.getValue(indexBathy, getScene().sceneId2LayerId(idxGeom[i])); + GISAttributeModelDoubleArray data=(GISAttributeModelDoubleArray) zoneSource.getValue(indexBathy, _idxSource[i]); identique=data.getMin()==data.getMax(); } if(identique&&indexBathy!=-1) - datadest[iatt]=((GISAttributeModelDoubleArray) colsrc.getValue(indexBathy, getScene().sceneId2LayerId(idxGeom[i]))).getObjectValueAt(0); + datadest[iatt]=((GISAttributeModelDoubleArray) zoneSource.getValue(indexBathy, _idxSource[i])).getObjectValueAt(0); // Dans le cas contraire, on demande \xE0 l'utilisateur else{ - // Utilisation d'une fen\xEAtre modale pour l'obtension du Z. - class myDialogModal extends JDialog implements ActionListener{ - private JComponent text_; - public myDialogModal(Frame _frame, String _title){ - super(_frame, _title, true); - // Position & resizable - setLocation(_frame.getLocation().x+_frame.getSize().width/2, _frame.getLocation().y+_frame.getSize().height/2); - setResizable(false); - // Contenu - JPanel container=new JPanel(new BuBorderLayout(2, 2)); - container.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); - text_=GISAttributeConstants.BATHY.getEditor().createEditorComponent(); - JButton ok=new JButton(MdlResource.MDL.getString("Valider")); - ok.addActionListener(this); - container.add(new BuLabel(MdlResource.MDL.getString("Valeur de Z :")), BuBorderLayout.WEST); - container.add(text_, BuBorderLayout.EAST); - container.add(ok, BuBorderLayout.SOUTH); - add(container); - pack(); - } - public void actionPerformed(ActionEvent e) { - setVisible(false); - dispose(); - } - public Double getValue(){ - return (Double) GISAttributeConstants.BATHY.getEditor().getValue(text_); - } - } // Pour le titre de la popup, on met le titre de la geom si possible String titre=MdlResource.MDL.getString("Nom : "); - if(colsrc.getIndiceOf(GISAttributeConstants.TITRE)!=-1) - titre+=(String) colsrc.getValue(colsrc.getIndiceOf(GISAttributeConstants.TITRE), getScene().sceneId2LayerId(idxGeom[i])); + if(zoneSource.getIndiceOf(GISAttributeConstants.TITRE)!=-1) + titre+=(String) zoneSource.getValue(zoneSource.getIndiceOf(GISAttributeConstants.TITRE), _idxSource[i]); else titre+=MdlResource.MDL.getString("sans nom"); // Instanciation de la popup - myDialogModal dialog =new myDialogModal(calquePanel_.getEditor().getFrame(), titre); + ZDialog dialog =new ZDialog(calquePanel_.getEditor().getFrame(), titre); dialog.setVisible(true); datadest[iatt]=dialog.getValue(); } } - else if(coldest.getAttribute(iatt)==GISAttributeConstants.BATHY){ + else if(zoneDestination.getAttribute(iatt)==GISAttributeConstants.BATHY){ // Recherche d'un attribut ayant pour ID 'Z' pour pouvoir utiliser sa valeur boolean found=false; int j=-1; - while(!found&&++j<colsrc.getNbAttributes()) - found=colsrc.getAttribute(j).getID().equals("Z"); + while(!found&&++j<zoneSource.getNbAttributes()) + found=zoneSource.getAttribute(j).getID().equals("Z"); if(found){ // Duplication de la valeur Object[] values=new Object[geoms[i].getNumPoints()]; for(int k=0;k<values.length;k++) - values[k]=colsrc.getValue(j, getScene().sceneId2LayerId(idxGeom[i])); + values[k]=zoneSource.getValue(j, _idxSource[i]); datadest[iatt]=values; } } @@ -270,12 +245,12 @@ newData[i]=datadest; // La g\xE9om\xE9trie - if (mdldest instanceof MdlModel2dMultiPoint) + if (_mldSource instanceof MdlModel2dMultiPoint) newGeom[i]=GISGeometryFactory.INSTANCE.createMultiPoint(geoms[i].getCoordinates()); - else if (mdldest instanceof MdlModel2dLine) { + else if (_mldSource instanceof MdlModel2dLine) { CoordinateSequence coordSeq=((GISCoordinateSequenceContainerInterface) geoms[i]).getCoordinateSequence(); boolean isFerme=coordSeq.getCoordinate(0).equals(coordSeq.getCoordinate(coordSeq.size()-1)); - if((calque.canAddForme(DeForme.LIGNE_BRISEE)&&!isFerme)||!calque.canAddForme(DeForme.POLYGONE)) + if((_calqueDestination.canAddForme(DeForme.LIGNE_BRISEE)&&!isFerme)||!_calqueDestination.canAddForme(DeForme.POLYGONE)) newGeom[i]=GISLib.toPolyligne(coordSeq); else newGeom[i]=GISLib.toPolygone(coordSeq); @@ -284,13 +259,40 @@ // Ajout des nouvelles g\xE9om\xE9tries for (int i=0; i<newGeom.length; i++) - coldest.addGeometry(newGeom[i], newData[i], cmp); - - // Suppression des anciens. - removeSelectedObjects(cmp); + zoneDestination.addGeometry(newGeom[i], newData[i], cmp); - if (mng_ != null) { - mng_.addCmd(cmp.getSimplify()); + if (_cmd != null) + _cmd.addCmd(cmp.getSimplify()); + } + + /** + * D\xE9place les g\xE9om\xE9tries s\xE9lectionn\xE9es dans le calque cible. + */ + public void moveInLayerSelectedGeometries() { + // Rassemblement des informations + Map<ZCalqueEditable, List<Integer>> selectedGeom=new HashMap<ZCalqueEditable, List<Integer>>(); + int[] idxScene=getScene().getLayerSelection().getSelectedIndex(); + if (idxScene!=null) { + // Tri des g\xE9om\xE9tries en fonction de leur calque + for (int i=0; i<idxScene.length; i++) { + ZCalqueEditable calque=(ZCalqueEditable) getScene().getLayerForId(idxScene[i]); + if(!selectedGeom.containsKey(calque)) + selectedGeom.put(calque, new ArrayList<Integer>()); + selectedGeom.get(calque).add(getScene().sceneId2LayerId(idxScene[i])); + } + ZCalqueEditable calqueDestination=(ZCalqueEditable)getScene().getCalqueActif(); + final CtuluCommandComposite cmp=new CtuluCommandComposite(FudaaLib.getS("D\xE9placer dans calque cible")); + // D\xE9placement des g\xE9om\xE9tries + for(Map.Entry<ZCalqueEditable, List<Integer>> entry: selectedGeom.entrySet()) { + int[] idxSource=new int[entry.getValue().size()]; + for(int j=0;j<entry.getValue().size();j++) + idxSource[j]=entry.getValue().get(j); + moveGeometries(entry.getKey().getModelEditable(), idxSource, calqueDestination, cmp); + } + // Suppression des anciens. + removeSelectedObjects(cmp); + if (mng_!=null) + mng_.addCmd(cmp.getSimplify()); } } Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/ZDialog.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/ZDialog.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/ZDialog.java 2009-01-21 17:30:56 UTC (rev 4390) @@ -0,0 +1,59 @@ +/* + * @creation 21 janv. 2009 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2009 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.fudaa.modeleur; + +import java.awt.Frame; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.BorderFactory; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JPanel; + +import org.fudaa.ctulu.gis.GISAttributeConstants; + +import com.memoire.bu.BuBorderLayout; +import com.memoire.bu.BuLabel; + +/** + * Fen\xEAtre modale pour l'obtension d'un Z. + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class ZDialog extends JDialog implements ActionListener { + private JComponent text_; + + public ZDialog(Frame _frame, String _title) { + super(_frame, _title, true); + // Position & resizable + setLocation(_frame.getLocation().x+_frame.getSize().width/2, _frame.getLocation().y+_frame.getSize().height/2); + setResizable(false); + // Contenu + JPanel container=new JPanel(new BuBorderLayout(2, 2)); + container.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2)); + text_=GISAttributeConstants.BATHY.getEditor().createEditorComponent(); + JButton ok=new JButton(MdlResource.MDL.getString("Valider")); + ok.addActionListener(this); + container.add(new BuLabel(MdlResource.MDL.getString("Valeur de Z :")), BuBorderLayout.WEST); + container.add(text_, BuBorderLayout.EAST); + container.add(ok, BuBorderLayout.SOUTH); + add(container); + pack(); + } + + public void actionPerformed(ActionEvent e) { + setVisible(false); + dispose(); + } + + public Double getValue() { + return (Double)GISAttributeConstants.BATHY.getEditor().getValue(text_); + } +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/ZDialog.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jm_...@us...> - 2009-01-21 16:06:59
|
Revision: 4389 http://fudaa.svn.sourceforge.net/fudaa/?rev=4389&view=rev Author: jm_lacombe Date: 2009-01-21 16:06:25 +0000 (Wed, 21 Jan 2009) Log Message: ----------- DEBUG ecriture de la ligne d'eau initiale avec un entete contenant des intier sur plus de 4 caract?\195?\168res Modified Paths: -------------- trunk/fudaa_devel/dodico/src/org/fudaa/dodico/mascaret/Rubens1DPermWriter.java Modified: trunk/fudaa_devel/dodico/src/org/fudaa/dodico/mascaret/Rubens1DPermWriter.java =================================================================== --- trunk/fudaa_devel/dodico/src/org/fudaa/dodico/mascaret/Rubens1DPermWriter.java 2009-01-21 09:11:20 UTC (rev 4388) +++ trunk/fudaa_devel/dodico/src/org/fudaa/dodico/mascaret/Rubens1DPermWriter.java 2009-01-21 16:06:25 UTC (rev 4389) @@ -55,14 +55,14 @@ double[] abscisses = getAbscisse(sres.resultatsBiefs, imax); int nbVarSansX = sres.variables.length; int nbPasTemps= sres.pasTemps.length; - ligne4_ = " IMAX = "+to4Char(imax)+" NBBIEF= "+to4Char(nbBief); + ligne4_ = " IMAX = "+to5Char(imax)+" NBBIEF= "+to5Char(nbBief); lignesSections_ = new String[((nbBief-1) / 5)+1]; // 5 biefs par ligne for (int i = 0; i < lignesSections_.length; i++) { lignesSections_[i] = " I1,I2 ="; } for (int i = 0; i < nbBief; i++) { - lignesSections_[i / 5] +=" "+to4Char(numSectionOrigine[i])+" "+to4Char(numSectionFin[i]); + lignesSections_[i / 5] +=" "+to5Char(numSectionOrigine[i])+" "+to5Char(numSectionFin[i]); } DecimalFormat nf = (DecimalFormat)NumberFormat.getInstance(Locale.US); @@ -167,6 +167,10 @@ } if (nbColonne != 0) fw_.println(); } + private final static String to4ou5Char(int entier) { + if (entier <10000) return to4Char(entier); + else return to5Char(entier); + } private final static String to4Char(int entier) { String chaine = ""+entier; int nbChar = chaine.length(); @@ -184,6 +188,25 @@ return " NaN"; } } + private final static String to5Char(int entier) { + String chaine = ""+entier; + int nbChar = chaine.length(); + if (nbChar >5) { + return "*****"; + } else if (nbChar == 5) { + return chaine; + } else if (nbChar == 4) { + return " "+chaine; + } else if (nbChar == 3) { + return " "+chaine; + } else if (nbChar == 2) { + return " "+chaine; + } else if (nbChar == 1) { + return " "+chaine; + } else { + return " NaN"; + } + } /* private final static String to9Char(String chaine) { int nbChar = chaine.length(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2009-01-21 09:11:27
|
Revision: 4388 http://fudaa.svn.sourceforge.net/fudaa/?rev=4388&view=rev Author: emmanuel_martin Date: 2009-01-21 09:11:20 +0000 (Wed, 21 Jan 2009) Log Message: ----------- Tache 148 : "Ajouter une fonction "fusion de biefs"" Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerBief.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/Bief.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/UtilsProfil1d.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueModuleGestionBief.java Added Paths: ----------- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueFusionBief.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2009-01-20 23:25:33 UTC (rev 4387) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2009-01-21 09:11:20 UTC (rev 4388) @@ -323,6 +323,13 @@ public String getID() { return "ATTRIBUTE_INTERSECTIONS_LIGNES_DIRECTRICES"; } + @Override + protected Object createGlobalValues(Object _initValues) { + if (_initValues instanceof GISAttributeModelIntegerList) + return _initValues; + else + return getDefaultValue(); + }; }; /** Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerBief.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerBief.java 2009-01-20 23:25:33 UTC (rev 4387) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerBief.java 2009-01-21 09:11:20 UTC (rev 4388) @@ -9,6 +9,7 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.BitSet; import java.util.List; import javax.swing.DefaultListSelectionModel; @@ -17,17 +18,28 @@ import org.fudaa.ctulu.CtuluCommandComposite; import org.fudaa.ctulu.CtuluCommandContainer; import org.fudaa.ctulu.CtuluCommandManager; +import org.fudaa.ctulu.CtuluListSelection; +import org.fudaa.ctulu.gis.GISAttributeConstants; +import org.fudaa.ctulu.gis.GISCoordinateSequenceFactory; +import org.fudaa.ctulu.gis.GISPolyligne; +import org.fudaa.ctulu.gis.GISZoneCollection; import org.fudaa.ebli.calque.BCalque; import org.fudaa.ebli.calque.ZModeleLigneBrisee; +import org.fudaa.ebli.calque.edition.ZModeleLigneBriseeEditable; import org.fudaa.fudaa.commun.FudaaLib; import org.fudaa.fudaa.modeleur.modeleur1d.model.Bief; import org.fudaa.fudaa.modeleur.modeleur1d.model.BiefContainer; import org.fudaa.fudaa.modeleur.modeleur1d.model.BiefContainerAdapter; import org.fudaa.fudaa.modeleur.modeleur1d.model.BiefSet; +import org.fudaa.fudaa.modeleur.modeleur1d.model.UtilsProfil1d; import org.fudaa.fudaa.modeleur.modeleur1d.view.VueBief; +import org.fudaa.fudaa.modeleur.modeleur1d.view.VueFusionBief; import org.fudaa.fudaa.modeleur.modeleur1d.view.VueModuleGestionBief; import org.fudaa.fudaa.sig.layer.FSigLayerLineEditable; +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.CoordinateSequence; + /** * Controller permettant de g\xE9rer (cr\xE9er, modifier, supprimer, selectionner) les biefs. * @author Emmanuel MARTIN @@ -156,10 +168,176 @@ * Fusion de deux biefs. */ public void fusionnerBiefs(int _idxBief1, int _idxBief2){ - //TODO + // D\xE9termine le premier axe hydraulique et le second + double bief1BaseCurv; + double bief2BaseCurv; + { // Bloque r\xE9duisant artificiellement la port\xE9 des variables + String name1=biefSet_.getBiefName(_idxBief1); + String name2=biefSet_.getBiefName(_idxBief2); + Bief bief1=biefSet_.getBief(name1); + Bief bief2=biefSet_.getBief(name2); + GISZoneCollection zoneAxeHydrau1=bief1.axeHydraulique_.getGeomData(); + bief1BaseCurv=(Double)zoneAxeHydrau1.getValue(zoneAxeHydrau1.getIndiceOf(GISAttributeConstants.CURVILIGNE_DECALAGE), 0); + GISZoneCollection zoneAxeHydrau2=bief2.axeHydraulique_.getGeomData(); + bief2BaseCurv=(Double)zoneAxeHydrau2.getValue(zoneAxeHydrau2.getIndiceOf(GISAttributeConstants.CURVILIGNE_DECALAGE), 0); + + // Verifications + if(bief1==null||bief2==null) + throw new IllegalArgumentException(FudaaLib.getS("Au moins un des index ne correspond pas \xE0 un bief.")); + if(bief1.lignesDirectrices_.getNombre()!=bief2.lignesDirectrices_.getNombre()) + throw new IllegalArgumentException(FudaaLib.getS("Il doit y avoir le m\xEAme nombre de lignes directrices dans les deux biefs.")); + + // Inversion des biefs si n\xE9c\xE9ssaire + if (bief1BaseCurv>bief2BaseCurv) { + int idxTmp=_idxBief1; + _idxBief1=_idxBief2; + _idxBief2=idxTmp; + double valTmp=bief1BaseCurv; + bief1BaseCurv=bief2BaseCurv; + bief2BaseCurv=valTmp; + } + } + { // Bloque r\xE9duisant artificiellement la port\xE9 des variables + String name1=biefSet_.getBiefName(_idxBief1); + String name2=biefSet_.getBiefName(_idxBief2); + CoordinateSequence seqAxe1=biefSet_.getBief(name1).axeHydraulique_.getGeomData().getCoordinateSequence(0); + CoordinateSequence seqAxe2=biefSet_.getBief(name2).axeHydraulique_.getGeomData().getCoordinateSequence(0); + double bief1MaxCurvBrut=UtilsProfil1d.abscisseCurviligne(seqAxe1, seqAxe1.getCoordinate(seqAxe1.size()-1)); + double bief2MaxCurvBrut=UtilsProfil1d.abscisseCurviligne(seqAxe2, seqAxe2.getCoordinate(seqAxe2.size()-1)); + + if(bief1BaseCurv+bief1MaxCurvBrut>bief2BaseCurv) { + VueFusionBief vueFusionBief=new VueFusionBief(controller1d_.getFormater(), name1, bief1BaseCurv, bief1MaxCurvBrut, name2, bief2BaseCurv, bief2MaxCurvBrut); + if(!vueFusionBief.run()) + return; + bief1BaseCurv=vueFusionBief.getAbsCurvAxe1(); + bief2BaseCurv=vueFusionBief.getAbsCurvAxe2(); + } + + // Inversion des biefs si n\xE9c\xE9ssaire + if (bief1BaseCurv>bief2BaseCurv) { + int idxTmp=_idxBief1; + _idxBief1=_idxBief2; + _idxBief2=idxTmp; + double valTmp=bief1BaseCurv; + bief1BaseCurv=bief2BaseCurv; + bief2BaseCurv=valTmp; + } + } + + String name1=biefSet_.getBiefName(_idxBief1); + String name2=biefSet_.getBiefName(_idxBief2); + Bief bief1=biefSet_.getBief(name1); + Bief bief2=biefSet_.getBief(name2); + GISZoneCollection zoneAxeHydrau1=bief1.axeHydraulique_.getGeomData(); + GISZoneCollection zoneAxeHydrau2=bief2.axeHydraulique_.getGeomData(); + CoordinateSequence seqAxeHydraulique1=zoneAxeHydrau1.getCoordinateSequence(0); + CoordinateSequence seqAxeHydraulique2=zoneAxeHydrau2.getCoordinateSequence(0); + + Coordinate debutAxe2=UtilsProfil1d.getCoordinateXY(seqAxeHydraulique1, bief2BaseCurv-bief1BaseCurv); + Coordinate move=UtilsProfil1d.vec(seqAxeHydraulique2.getCoordinate(0), debutAxe2); + + // Construction du nouveau bief + Bief newBief=new Bief(); + String biefName=name1+"_"+name2; + int k=1; + while(biefSet_.getBief(biefName)!=null) + biefName=name1+"_"+name2+"#"+Integer.toString(++k); + // Racourcis + GISZoneCollection zoneAxeHydraulique=newBief.axeHydraulique_.getGeomData(); + GISZoneCollection zoneProfils=newBief.profils_.getGeomData(); + GISZoneCollection bief1ZoneProfil=bief1.profils_.getGeomData(); + GISZoneCollection bief2ZoneProfil=bief2.profils_.getGeomData(); + + // Ajout de g\xE9om\xE9tries au nouveau bief \\ + // Ajout des profils des biefs d'origines + for(int i=0;i<bief1.profils_.getNombre();i++) + zoneProfils.addGeometry(bief1ZoneProfil.getGeometry(i), UtilsProfil1d.getData(i, bief1ZoneProfil), null); + for(int i=0;i<bief2.profils_.getNombre();i++) + zoneProfils.addGeometry(bief2ZoneProfil.getGeometry(i), UtilsProfil1d.getData(i, bief2ZoneProfil), null); + // Ajout de l'axe hydraulique du second bief (utile pour la translation) + zoneAxeHydraulique.addGeometry(zoneAxeHydrau2.getGeometry(0), UtilsProfil1d.getData(0, zoneAxeHydrau2), null); + + // Translation du second bief \\ + // Cr\xE9ation d'une selection contenant le second axe hydraulique + BitSet bs=new BitSet(1); + bs.set(0); + CtuluListSelection selection=new CtuluListSelection(bs); + // Application de la translation sur le second axe hydraulique + ((ZModeleLigneBriseeEditable) newBief.axeHydraulique_).moveGlobal(selection, move.x, move.y, 0, null); + // Cr\xE9ation d'une selection contenant les profils du second axe hydraulique + bs=new BitSet(zoneProfils.getNbGeometries()); + bs.set(bief1.profils_.getNombre(), zoneProfils.getNbGeometries()); + selection=new CtuluListSelection(bs); + // Application de la translation sur les profils du second axe hydraulique + ((ZModeleLigneBriseeEditable) newBief.profils_).moveGlobal(selection, move.x, move.y, 0, null); + + // Fusion des deux axes Hydrauliques \\ + String newTitre=agregeTitres(0, zoneAxeHydrau1, zoneAxeHydrau2, -1, -1); + seqAxeHydraulique2=zoneAxeHydraulique.getCoordinateSequence(0); + Coordinate[] coords=new Coordinate[seqAxeHydraulique1.size()+seqAxeHydraulique2.size()]; + int i=0; + for(;i<seqAxeHydraulique1.size();i++) + coords[i]=seqAxeHydraulique1.getCoordinate(i); + for(;i<seqAxeHydraulique2.size()+seqAxeHydraulique1.size();i++) + coords[i]=seqAxeHydraulique2.getCoordinate(i-seqAxeHydraulique1.size()); + zoneAxeHydraulique.addGeometry(new GISPolyligne(new GISCoordinateSequenceFactory().create(coords)), null, null); + zoneAxeHydraulique.setAttributValue(zoneAxeHydraulique.getIndiceOf(GISAttributeConstants.TITRE), 1, newTitre, null); + zoneAxeHydraulique.setAttributValue(zoneAxeHydrau1.getIndiceOf(GISAttributeConstants.CURVILIGNE_DECALAGE), 1, bief1BaseCurv, null); + // suppression de l'axe hydraulique 2 du nouveau bief + zoneAxeHydraulique.removeGeometries(new int[]{0}, null); + + // Traitement des g\xE9om\xE9tries volatiles \\ + // Rives + calculateData(bief1.rives_.getGeomData(), bief2.rives_.getGeomData(), newBief.rives_.getGeomData()); + // Limite de stockage + calculateData(bief1.limitesStockages_.getGeomData(), bief2.limitesStockages_.getGeomData(), newBief.limitesStockages_.getGeomData()); + // Lignes directrices + calculateData(bief1.lignesDirectrices_.getGeomData(), bief2.lignesDirectrices_.getGeomData(), newBief.lignesDirectrices_.getGeomData()); + + // Ajout du nouveau bief \\ + newBief.enableSynchroniser(); + biefSet_.addBief(biefName, newBief, getCommandManager()); } + + /** + * Extrait les valeurs de titre des g\xE9om\xE9tries et en cr\xE9e une nouvelle + * g\xE9om\xE9trie avec ce titre dans _zone3. La nouvelle g\xE9om\xE9trie n'a pas de + * sommets. + */ + private void calculateData(GISZoneCollection _zone1, GISZoneCollection _zone2, GISZoneCollection _zone3) { + int idxAttrZone1=_zone1.getIndiceOf(GISAttributeConstants.TITRE); + int idxAttrZone2=_zone2.getIndiceOf(GISAttributeConstants.TITRE); + int idxAttrZone3=_zone3.getIndiceOf(GISAttributeConstants.TITRE); + for(int i=0;i<_zone1.getNbGeometries();i++) { + String newTitre=agregeTitres(i, _zone1, _zone2, idxAttrZone1, idxAttrZone2); + // Cr\xE9ation de la gom\xE9trie (elle sera correctement g\xE9n\xE9r\xE9 par le synchronizer du bief) + int idxGeom=_zone3.addGeometry(new GISPolyligne(), null, null); + // Valuation de l'attribut nom + _zone3.setAttributValue(idxAttrZone3, idxGeom, newTitre, null); + } + } /** + * Agregation de deux titres. + * Si les _idxAttrX sont \xE0 -1 il seront d\xE9termin\xE9 par la m\xE9thode. + */ + private String agregeTitres(int _idxGeom, GISZoneCollection _zone1, GISZoneCollection _zone2, int _idxAttr1, int _idxAttr2) { + if(_idxAttr1==-1) + _idxAttr1=_zone1.getIndiceOf(GISAttributeConstants.TITRE); + if(_idxAttr2==-1) + _idxAttr2=_zone1.getIndiceOf(GISAttributeConstants.TITRE); + String titre1=(String) _zone1.getValue(_idxAttr1, _idxGeom); + String titre2=(String) _zone2.getValue(_idxAttr2, _idxGeom); + String newTitre; + // Calcule du nouveau nom + if(titre1.equals(titre2)) + newTitre=titre1; + else + newTitre=titre1+'_'+titre2; + return newTitre; + } + + /** * Duplique le bief selectionn\xE9. */ public void dupliquerSelectedBief() { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/Bief.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/Bief.java 2009-01-20 23:25:33 UTC (rev 4387) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/Bief.java 2009-01-21 09:11:20 UTC (rev 4388) @@ -52,9 +52,51 @@ /** Le synchroniser de gis. */ private GisZoneSynchroniser gisSynchroniser_=new GisZoneSynchroniser(); - public Bief(){} + /** + * Les models de bases sont instanci\xE9s, le synchronizer n'est pas lanc\xE9. + */ + public Bief(){ + axeHydraulique_=new MdlModel1dAxe(null); + normalizeAxeHydrauliqueAttributes(axeHydraulique_.getGeomData()); + profils_=new MdlModel2dProfile(null, null); + normalizeProfilAttributes(profils_.getGeomData()); + rives_=new MdlModel1dBank(null, null); + limitesStockages_=new MdlModel2dConstraintLine(null, null); + lignesDirectrices_=new MdlModel2dDirectionLine(null, null); + } + + /** + * Ce constructeur permet de construire un bief a partir des mod\xE8les pr\xE9sents + * dans _models. Le param\xE8tre _rawData permet d'indiquer le type de traitement + * effectu\xE9 sur ces mod\xE8les. Si _rawData est \xE0 true, les donn\xE9es dans les + * mod\xE8les sont import\xE9s en partant du princique qu'ils sont potentiellement + * erron\xE9s. De plus dans cette importation toutes les donn\xE9es 1d sont g\xE9n\xE9r\xE9es + * pendant cette construction, si des donn\xE9es 2d exitaient avant cette + * construction, elles seront \xE9cras\xE9es. si _rawData est mise \xE0 false, les + * model\xE8s pass\xE9s en param\xE8tres sont consid\xE9r\xE9s comme venant du 1d et fiable. + * Dans ce cas si les donn\xE9es sp\xE9cifiques au 1d ne sont pas \xE9cras\xE9s. Une des + * grosses diff\xE9rences de traitement entre _rawData vrai et faux, finalement, + * est que pour le vrai les donn\xE9es sp\xE9cifiques au 1d sont g\xE9n\xE9r\xE9es \xE0 partir + * des g\xE9om\xE9tries volatiles, pas pour le faut. Le faux peut donc se passer des + * g\xE9om\xE9tries volatils du moment qu'elles sont d\xE9finies dans les attributs 1d. + */ + public Bief(ZModeleLigneBrisee[] _models, boolean _rawData) { + if(_rawData) + buildWithUntrustData(_models); + else + buildWithTrustData(_models); + } + + /** + * Correspond au constructeur Bief(ZModeleLigneBrisee[] _models, boolean + * _rawData) avec _rawData \xE0 true. Void le docstring de + * Bief(ZModeleLigneBrisee[] _models, boolean _rawData) pour plus de d\xE9tails. + */ + public Bief(ZModeleLigneBrisee[] _models){ + buildWithUntrustData(_models); + } - public Bief(ZModeleLigneBrisee[] _models){ + private void testAndValuateModels(ZModeleLigneBrisee[] _models) { if (_models==null) throw new IllegalArgumentException("_models ne peut pas \xEAtre null."); for (int i=0; i<_models.length; i++) { @@ -110,6 +152,16 @@ limitesStockages_=new MdlModel2dConstraintLine(null, null); if (lignesDirectrices_==null) lignesDirectrices_=new MdlModel2dDirectionLine(null, null); + } + + private void buildWithTrustData(ZModeleLigneBrisee[] _models) { + testAndValuateModels(_models); + // Activation du synchroniser + gisSynchroniser_.enable(); + } + + private void buildWithUntrustData(ZModeleLigneBrisee[] _models) { + testAndValuateModels(_models); // Valuation des attributs sp\xE9cifiques au 1d pour les profils \\ GISZoneCollection zone=profils_.getGeomData(); normalizeProfilAttributes(zone); @@ -276,7 +328,7 @@ // Inversion des attributs atomiques for(int i=0;i<zone.getNbAttributes();i++) if(zone.getAttribute(i).isAtomicValue()) { - GISAttributeModel model=((GISAttributeModel)zone.getDataModel(i)); + GISAttributeModel model=(GISAttributeModel)zone.getDataModel(i).getObjectValueAt(_idxProfil); Object valueTmp=model.getObjectValueAt(l); model.setObject(l, model.getObjectValueAt(coords.length-1-l), null); model.setObject(l, valueTmp, null); @@ -573,11 +625,6 @@ private ZModeleLigneBrisee limitesStockagsesModified_; /** Le model de lignes directrices modifi\xE9. */ private ZModeleLigneBrisee lignesDirectricesModified_; - // Les index des g\xE9om\xE9tries. \\ - private int idxRiveGauche_=-1; - private int idxRiveDroite_=-1; - private int idxLimiteStockageGauche_=-1; - private int idxLimiteStockageDroite_=-1; // Les index des attributs \\ private int idxAttRiveGauche_=-1; private int idxAttRiveDroite_=-1; @@ -589,8 +636,9 @@ * Active/met \xE0 jour le synchroniser. */ public void enable() { - if(profilsListen_!=null&&profilsListen_!=profils_) - profilsListen_.removeModelListener(this); + // Met tout au propre + disable(); + // R\xE9g\xE9n\xE8re tout if(profils_!=null) { profils_.addModelListener(this); profilsListen_=profils_; @@ -602,67 +650,86 @@ idxAttlsGauche_=profilsListen_.getGeomData().getIndiceOf(GISAttributeConstants.INTERSECTION_LIMITE_STOCKAGE_GAUCHE); idxAttlsDroite_=profilsListen_.getGeomData().getIndiceOf(GISAttributeConstants.INTERSECTION_LIMITE_STOCKAGE_DROITE); idxAttlignesDirectrices_=profilsListen_.getGeomData().getIndiceOf(GISAttributeConstants.INTERSECTIONS_LIGNES_DIRECTRICES); - // D\xE9termination des index de g\xE9om\xE9tries + // Normalisation de la position des g\xE9om\xE9tries et cr\xE9ation des g\xE9om\xE9tries manquantes \\ + /* + * Dans les zones de rives et de limites de stockages, les g\xE9om\xE9tries gauches sont \xE0 la + * position 0 et les g\xE9om\xE9tries droites sont \xE0 la position 1. + */ // Rives - if(rivesModified_.getNombre()>0) { - if(isDroite(rivesModified_.getGeomData().getGeometry(0))) - idxRiveDroite_=0; - else - idxRiveGauche_=0; + if(rivesModified_.getNombre()==0) { + rivesModified_.getGeomData().addGeometry(new GISPolyligne(), null, null); + rivesModified_.getGeomData().addGeometry(new GISPolyligne(), null, null); } - if(rivesModified_.getNombre()>1) { - if(isDroite(rivesModified_.getGeomData().getGeometry(1))) - idxRiveDroite_=1; - else - idxRiveGauche_=1; + else if(rivesModified_.getNombre()==1) { + rivesModified_.getGeomData().addGeometry(new GISPolyligne(), null, null); + if(position(rivesModified_.getGeomData().getGeometry(0))==1) + rivesModified_.getGeomData().switchGeometries(0, 1, null); + } + else if (rivesModified_.getNombre()==2) { + int pos=position(rivesModified_.getGeomData().getGeometry(0)); + if(pos==0) + if(position(rivesModified_.getGeomData().getGeometry(1))==-1) + rivesModified_.getGeomData().switchGeometries(0, 1, null); + if(pos==1) + rivesModified_.getGeomData().switchGeometries(0, 1, null); } - if(rivesModified_.getNombre()>2) - throw new IllegalArgumentException("Le nombre de rives est sup\xE9rieur \xE0 deux."); + else + throw new IllegalArgumentException(FudaaLib.getS("Le nombre de rives est sup\xE9rieur \xE0 deux.")); // Limites de stockages - if(limitesStockagsesModified_.getNombre()>0) { - if(isDroite(limitesStockagsesModified_.getGeomData().getGeometry(0))) - idxLimiteStockageDroite_=0; - else - idxLimiteStockageGauche_=0; + if(limitesStockagsesModified_.getNombre()==0) { + limitesStockagsesModified_.getGeomData().addGeometry(new GISPolyligne(), null, null); + limitesStockagsesModified_.getGeomData().addGeometry(new GISPolyligne(), null, null); } - if(limitesStockagsesModified_.getNombre()>1) { - if(isDroite(limitesStockagsesModified_.getGeomData().getGeometry(1))) - idxLimiteStockageDroite_=1; - else - idxLimiteStockageGauche_=1; + else if(limitesStockagsesModified_.getNombre()==1) { + limitesStockagsesModified_.getGeomData().addGeometry(new GISPolyligne(), null, null); + if(position(limitesStockagsesModified_.getGeomData().getGeometry(0))==1) + limitesStockagsesModified_.getGeomData().switchGeometries(0, 1, null); + } + else if (limitesStockagsesModified_.getNombre()==2) { + int pos=position(limitesStockagsesModified_.getGeomData().getGeometry(0)); + if(pos==0) + if(position(limitesStockagsesModified_.getGeomData().getGeometry(1))==-1) + limitesStockagsesModified_.getGeomData().switchGeometries(0, 1, null); + if(pos==1) + limitesStockagsesModified_.getGeomData().switchGeometries(0, 1, null); } - if(limitesStockagsesModified_.getNombre()>2) - throw new IllegalArgumentException("Le nombre de limite de stockage est sup\xE9rieur \xE0 deux."); + else + throw new IllegalArgumentException(FudaaLib.getS("Le nombre de limite de stockage est sup\xE9rieur \xE0 deux.")); + regenerateAll(); } - regenerateAll(); } /** - * D\xE9termine si la courbe est \xE0 gauche de l'axe hydraulique. + * D\xE9termine la position de la courbe par rapport \xE0 l'axe hydraulique en se basant sur les profils. + * Retourne -1 si \xE0 gauche, 0 si ind\xE9terminable, 1 si \xE0 droite. */ - private boolean isDroite(Geometry _geom) { + private int position(Geometry _geom) { // Recherche d'intersection de _geom avec un profil boolean found=false; int i=-1; - Coordinate intersectionRive=null; + Coordinate coordIntersection=null; while(!found&&++i<profilsListen_.getNombre()) { Geometry inter=_geom.intersection((Geometry) profilsListen_.getObject(i)); if(inter.getNumPoints()==1) { found=true; - intersectionRive=inter.getCoordinate(); + coordIntersection=inter.getCoordinate(); } } + if(!found) + return 0; // Calcul de l'abscisse curviligne de l'axe hydraulique sur le profil. Geometry axeHydraulique=(Geometry) axeHydraulique_.getObject(0); Geometry intersection=((Geometry) profilsListen_.getObject(i)).intersection(axeHydraulique); - // D\xE9termination de la gauche - if(found&&intersection.getNumPoints()==1) { + // D\xE9termination de la droite + if(intersection.getNumPoints()==1) { CoordinateSequence seqProfil=profilsListen_.getGeomData().getCoordinateSequence(i); double abscisseCurvIntersectionAxe=UtilsProfil1d.abscisseCurviligne(seqProfil, intersection.getCoordinate()); - if(abscisseCurvIntersectionAxe>UtilsProfil1d.abscisseCurviligne(seqProfil, intersectionRive)) - return true; + if(abscisseCurvIntersectionAxe>UtilsProfil1d.abscisseCurviligne(seqProfil, coordIntersection)) + return 1; + else + return -1; } - return false; + return 0; } /** @@ -676,10 +743,6 @@ rivesModified_=null; limitesStockagsesModified_=null; lignesDirectricesModified_=null; - idxRiveGauche_=-1; - idxRiveDroite_=-1; - idxLimiteStockageGauche_=-1; - idxLimiteStockageDroite_=-1; idxAttRiveGauche_=-1; idxAttRiveDroite_=-1; idxAttlsGauche_=-1; @@ -694,27 +757,9 @@ private void destroyGeometries() { // Suppression des anciennes g\xE9om\xE9tries \\ // Rives - int[] idxRives=new int[0]; - if(idxRiveGauche_!=-1&&idxRiveDroite_!=-1) - idxRives=new int[]{idxRiveGauche_, idxRiveDroite_}; - else if(idxRiveGauche_!=-1) - idxRives=new int[]{idxRiveGauche_}; - else if(idxRiveDroite_!=-1) - idxRives=new int[]{idxRiveDroite_}; - rivesModified_.getGeomData().removeGeometries(idxRives, null); - idxRiveGauche_=-1; - idxRiveDroite_=-1; + rivesModified_.getGeomData().removeGeometries(new int[]{0, 1}, null); // Limites stockages - int[] idxLimiteStockages=new int[0]; - if(idxLimiteStockageGauche_!=-1&&idxLimiteStockageDroite_!=-1) - idxLimiteStockages=new int[]{idxLimiteStockageGauche_, idxLimiteStockageDroite_}; - else if(idxLimiteStockageGauche_!=-1) - idxLimiteStockages=new int[]{idxLimiteStockageGauche_}; - else if(idxLimiteStockageDroite_!=-1) - idxLimiteStockages=new int[]{idxLimiteStockageDroite_}; - limitesStockagsesModified_.getGeomData().removeGeometries(idxLimiteStockages, null); - idxLimiteStockageGauche_=-1; - idxLimiteStockageDroite_=-1; + limitesStockagsesModified_.getGeomData().removeGeometries(new int[]{0, 1}, null); // Lignes directrices int[] idx=new int[lignesDirectricesModified_.getNombre()]; for(int i=0;i<idx.length;i++) @@ -733,23 +778,23 @@ public void attributeValueChangeAction(Object _source, int att, GISAttributeInterface _att, int _idxGeom, Object value) { if(_att==GISAttributeConstants.INTERSECTION_RIVE_GAUCHE) - updateGeom(_idxGeom, rivesModified_, idxRiveGauche_, idxAttRiveGauche_); + updateGeom(_idxGeom, rivesModified_, 0, idxAttRiveGauche_); else if(_att==GISAttributeConstants.INTERSECTION_RIVE_DROITE) - updateGeom(_idxGeom, rivesModified_, idxRiveDroite_, idxAttRiveDroite_); + updateGeom(_idxGeom, rivesModified_, 1, idxAttRiveDroite_); else if(_att==GISAttributeConstants.INTERSECTION_LIMITE_STOCKAGE_GAUCHE) - updateGeom(_idxGeom, limitesStockagsesModified_, idxLimiteStockageGauche_, idxAttlsGauche_); + updateGeom(_idxGeom, limitesStockagsesModified_, 0, idxAttlsGauche_); else if(_att==GISAttributeConstants.INTERSECTION_LIMITE_STOCKAGE_DROITE) - updateGeom(_idxGeom, limitesStockagsesModified_, idxLimiteStockageDroite_, idxAttlsDroite_); + updateGeom(_idxGeom, limitesStockagsesModified_, 1, idxAttlsDroite_); else if(_att==GISAttributeConstants.INTERSECTIONS_LIGNES_DIRECTRICES) updateLd(_idxGeom); } public void geometryAction(Object _source, int _idxGeom, Geometry _geom, int _action) { if(_action==ZModelGeometryListener.GEOMETRY_ACTION_MODIFY) { - updateGeom(_idxGeom, rivesModified_, idxRiveGauche_, idxAttRiveGauche_); - updateGeom(_idxGeom, rivesModified_, idxRiveDroite_, idxAttRiveDroite_); - updateGeom(_idxGeom, limitesStockagsesModified_, idxLimiteStockageGauche_, idxAttlsGauche_); - updateGeom(_idxGeom, limitesStockagsesModified_, idxLimiteStockageDroite_, idxAttlsDroite_); + updateGeom(_idxGeom, rivesModified_, 0, idxAttRiveGauche_); + updateGeom(_idxGeom, rivesModified_, 1, idxAttRiveDroite_); + updateGeom(_idxGeom, limitesStockagsesModified_, 0, idxAttlsGauche_); + updateGeom(_idxGeom, limitesStockagsesModified_, 1, idxAttlsDroite_); updateLd(_idxGeom); } } @@ -786,50 +831,38 @@ // Ajout des nouvelles g\xE9o\xE9mtries \\ // Extraction des anciennes donn\xE9es - Object[] dataRiveGauche=getData(idxRiveGauche_, rivesModified_.getGeomData()); - Object[] dataRiveDroite=getData(idxRiveDroite_, rivesModified_.getGeomData()); - Object[] dataLsGauche=getData(idxLimiteStockageGauche_, rivesModified_.getGeomData()); - Object[] dataLsDroite=getData(idxLimiteStockageDroite_, rivesModified_.getGeomData()); + Object[] dataRiveGauche=UtilsProfil1d.getData(0, rivesModified_.getGeomData()); + Object[] dataRiveDroite=UtilsProfil1d.getData(1, rivesModified_.getGeomData()); + Object[] dataLsGauche=UtilsProfil1d.getData(0, rivesModified_.getGeomData()); + Object[] dataLsDroite=UtilsProfil1d.getData(1, rivesModified_.getGeomData()); Object[][] dataLignesDirectrices=new Object[lignesDirectricesModified_.getNombre()][]; for(int i=0;i<lignesDirectricesModified_.getNombre();i++) - dataLignesDirectrices[i]=getData(i, lignesDirectricesModified_.getGeomData()); + dataLignesDirectrices[i]=UtilsProfil1d.getData(i, lignesDirectricesModified_.getGeomData()); // Destruction des g\xE9om\xE9tries destroyGeometries(); // Ajout des geometries \\ // Rives - if (riveGauche.length>1&&riveGauche[0]!=null&&rivesModified_!=null) - idxRiveGauche_=rivesModified_.getGeomData().addGeometry( - new GISPolyligne(new GISCoordinateSequenceFactory().create(riveGauche)), dataRiveGauche, null); - if (riveDroite.length>1&&riveDroite[0]!=null&&rivesModified_!=null) - idxRiveDroite_=rivesModified_.getGeomData().addGeometry( - new GISPolyligne(new GISCoordinateSequenceFactory().create(riveDroite)), dataRiveDroite, null); + if (riveGauche.length>1&&riveGauche[0]!=null&&rivesModified_!=null&&riveDroite.length>1&&riveDroite[0]!=null + &&rivesModified_!=null) { + rivesModified_.getGeomData().addGeometry(new GISPolyligne(new GISCoordinateSequenceFactory().create(riveGauche)), + dataRiveGauche, null); + rivesModified_.getGeomData().addGeometry(new GISPolyligne(new GISCoordinateSequenceFactory().create(riveDroite)), + dataRiveDroite, null); + } // Limites de stockages - if (lsGauche.length>1&&lsGauche[0]!=null&&limitesStockagsesModified_!=null) - idxLimiteStockageGauche_=limitesStockagsesModified_.getGeomData().addGeometry( - new GISPolyligne(new GISCoordinateSequenceFactory().create(lsGauche)), dataLsGauche, null); - if (lsDroite.length>1&&lsDroite[0]!=null&&limitesStockagsesModified_!=null) - idxLimiteStockageDroite_=limitesStockagsesModified_.getGeomData().addGeometry( - new GISPolyligne(new GISCoordinateSequenceFactory().create(lsDroite)), dataLsDroite, null); + if (lsGauche.length>1&&lsGauche[0]!=null&&limitesStockagsesModified_!=null&&lsDroite.length>1&&lsDroite[0]!=null + &&limitesStockagsesModified_!=null) { + limitesStockagsesModified_.getGeomData().addGeometry(new GISPolyligne(new GISCoordinateSequenceFactory().create(lsGauche)), + dataLsGauche, null); + limitesStockagsesModified_.getGeomData().addGeometry(new GISPolyligne(new GISCoordinateSequenceFactory().create(lsDroite)), + dataLsDroite, null); + } // Lignes directrices for (int i=0; i<ld.length; i++) - lignesDirectricesModified_.getGeomData().addGeometry(new GISPolyligne(new GISCoordinateSequenceFactory().create(ld[i])), + if(ld[i].length>1) + lignesDirectricesModified_.getGeomData().addGeometry(new GISPolyligne(new GISCoordinateSequenceFactory().create(ld[i])), dataLignesDirectrices[i], null); } - - /** - * Retourne les donn\xE9es. - * retourne null si _idxGeom est invalide. - */ - private Object[] getData(int _idxGeom, GISZoneCollection _zone) { - Object[] data=null; - if (_idxGeom>=0&&_idxGeom<_zone.getNbGeometries()) { - GISAttributeModel[] models=_zone.getModels(); - data=new Object[models.length]; - for (int i=0; i<data.length; i++) - data[i]=models[i].getObjectValueAt(_idxGeom); - } - return data; - } /** * Met \xE0 jour la geometrie volatile indiqu\xE9. Le param\xE8tre pass\xE9 est l'index du point \xE0 Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/UtilsProfil1d.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/UtilsProfil1d.java 2009-01-20 23:25:33 UTC (rev 4387) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/UtilsProfil1d.java 2009-01-21 09:11:20 UTC (rev 4388) @@ -7,6 +7,7 @@ */ package org.fudaa.fudaa.modeleur.modeleur1d.model; +import org.fudaa.ctulu.gis.GISAttributeModel; import org.fudaa.ctulu.gis.GISCoordinateSequenceContainerInterface; import org.fudaa.ctulu.gis.GISCoordinateSequenceFactory; import org.fudaa.ctulu.gis.GISGeometryFactory; @@ -422,4 +423,19 @@ found=_coll[i]==_in; return found; } + + /** + * Retourne les donn\xE9es de la g\xE9om\xE9tries de _zone. + * retourne null si _idxGeom est invalide. + */ + static public Object[] getData(int _idxGeom, GISZoneCollection _zone) { + Object[] data=null; + if (_idxGeom>=0&&_idxGeom<_zone.getNbGeometries()) { + GISAttributeModel[] models=_zone.getModels(); + data=new Object[models.length]; + for (int i=0; i<data.length; i++) + data[i]=models[i].getObjectValueAt(_idxGeom); + } + return data; + } } Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueFusionBief.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueFusionBief.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueFusionBief.java 2009-01-21 09:11:20 UTC (rev 4388) @@ -0,0 +1,125 @@ +/* + * @creation 20 janv. 2009 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2009 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.fudaa.modeleur.modeleur1d.view; + +import java.awt.Container; +import java.awt.GridLayout; + +import javax.swing.SwingUtilities; + +import org.fudaa.ctulu.CtuluLib; +import org.fudaa.ctulu.gui.CtuluDialogPanel; +import org.fudaa.ebli.commun.EbliFormatterInterface; +import org.fudaa.fudaa.commun.FudaaLib; + +import com.memoire.bu.BuBorderLayout; +import com.memoire.bu.BuCharValidator; +import com.memoire.bu.BuGridLayout; +import com.memoire.bu.BuLabel; +import com.memoire.bu.BuPanel; +import com.memoire.bu.BuTextField; + +/** + * Petite fen\xEAtre demandant des informations suppl\xE9mentaire \xE0 l'utilisateur + * concernant la fusion de deux biefs. + * + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class VueFusionBief extends CtuluDialogPanel { + + /* Donn\xE9es de base */ + private String name1_; + private double absCurv1_; + private double length1_; + private String name2_; + private double absCurv2_; + private double length2_; + /* Donn\xE9es de l'interface */ + private BuTextField tfAbsCurv1_; + private BuTextField tfAbsCurv2_; + + public VueFusionBief(EbliFormatterInterface _formater, String _name1, double _absCurv1, double _length1, String _name2, double _absCurv2, double _length2) { + name1_=_name1; + absCurv1_=_absCurv1; + length1_=_length1; + name2_=_name2; + absCurv2_=_absCurv2; + length2_=_length2; + + // Construction de la fen\xEAtre \\ + setLayout(new BuBorderLayout()); + // Titres + Container head=new Container(); + head.setLayout(new BuGridLayout(1)); + BuLabel titre1=new BuLabel(FudaaLib.getS("Les deux axes hydrauliques se superposes.")); + titre1.setHorizontalAlignment(SwingUtilities.CENTER); + head.add(titre1); + BuLabel titre2=new BuLabel(FudaaLib.getS("D\xE9finissez de nouvelles valeurs d'abscisses curviligne pour corriger ce probl\xE8me.")); + titre2.setHorizontalAlignment(SwingUtilities.CENTER); + head.add(titre2); + add(head, BuBorderLayout.NORTH); + // Corps + BuPanel body=new BuPanel(); + body.setLayout(new GridLayout(3, 2, 2, 2)); + BuLabel name1=new BuLabel(name1_); + name1.setHorizontalAlignment(SwingUtilities.CENTER); + body.add(name1); + BuLabel name2=new BuLabel(name2_); + name2.setHorizontalAlignment(SwingUtilities.CENTER); + body.add(name2); + tfAbsCurv1_=new BuTextField(_formater.getXYFormatter().format(absCurv1_)); + tfAbsCurv1_.setCharValidator(BuCharValidator.DOUBLE); + tfAbsCurv2_=new BuTextField(_formater.getXYFormatter().format(absCurv2_)); + tfAbsCurv2_.setCharValidator(BuCharValidator.DOUBLE); + body.add(tfAbsCurv1_); + body.add(tfAbsCurv2_); + body.add(new BuLabel(FudaaLib.getS("taille : " + _formater.getXYFormatter().format(length1_)))); + body.add(new BuLabel(FudaaLib.getS("taille : " + _formater.getXYFormatter().format(length2_)))); + add(body, BuBorderLayout.CENTER); + } + + public boolean valide() { + absCurv1_=Double.parseDouble(tfAbsCurv1_.getText()); + absCurv2_=Double.parseDouble(tfAbsCurv2_.getText()); + if(absCurv1_<=absCurv2_&&absCurv1_+length1_>absCurv2_) { + setErrorText(CtuluLib.getS(name1_ + FudaaLib.getS(" est toujours chevauch\xE9 par ") + name2_ +".")); + return false; + } + else if(absCurv2_<absCurv1_&&absCurv2_+length2_>absCurv1_) { + setErrorText(CtuluLib.getS(name2_ + FudaaLib.getS(" est toujours chevauch\xE9 par ") + name1_ +".")); + return false; + } + return true; + } + + /** + * Lance l'exporter dans une fen\xEAtre modale et retourne vrai si l'utilisateur + * clic sur 'ok' \xE0 la fin, faux si il clic sur 'annuler'. + * + * @return + */ + public boolean run(){ + return CtuluDialogPanel.isOkResponse(afficheModale(this, FudaaLib.getS("Fusion de deux biefs"))); + } + + /** + * Retourne l'abscisse curviligne de l'axe 1. + */ + public double getAbsCurvAxe1() { + return absCurv1_; + } + + /** + * Retourne l'abscisse curviligne de l'axe 2. + */ + public double getAbsCurvAxe2() { + return absCurv2_; + } + +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueFusionBief.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueModuleGestionBief.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueModuleGestionBief.java 2009-01-20 23:25:33 UTC (rev 4387) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueModuleGestionBief.java 2009-01-21 09:11:20 UTC (rev 4388) @@ -110,7 +110,7 @@ btFusionner_.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { ListSelectionModel sel=tableBiefs_.getSelectionModel(); - controllerBief_.fusionnerBiefs(sel.getMaxSelectionIndex(), sel.getMinSelectionIndex()); + controllerBief_.fusionnerBiefs(sel.getMinSelectionIndex(), sel.getMaxSelectionIndex()); } }); tableBiefs_.getSelectionModel().addListSelectionListener(new ListSelectionListener() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2009-01-20 23:25:38
|
Revision: 4387 http://fudaa.svn.sourceforge.net/fudaa/?rev=4387&view=rev Author: deniger Date: 2009-01-20 23:25:33 +0000 (Tue, 20 Jan 2009) Log Message: ----------- Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/BVueCalque.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZCalqueGrille.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/ressource/ebli_en.fr_txt branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EbliWidgetFusionCalques.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EbliWidgetVueCalque.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileCoordinatesModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/sig/layer/FSigGrillePalette.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeModel.java Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/BVueCalque.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/BVueCalque.java 2009-01-20 19:35:40 UTC (rev 4386) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/BVueCalque.java 2009-01-20 23:25:33 UTC (rev 4387) @@ -33,6 +33,7 @@ import com.memoire.fu.Fu; import com.memoire.fu.FuLog; +import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.CtuluLibArray; import org.fudaa.ctulu.image.CtuluLibImage; @@ -373,6 +374,7 @@ repere.ajouteTransformation(RepereEvent.ROT_Z, _rz, false); } repereModifie(repere); + // System.err.println(getViewBoite()+" == "+_boite); } /** @@ -485,7 +487,13 @@ * final GrBoite b = new GrBoite(new GrPoint(insets.left, insets.top, 0), new GrPoint(getWidth() - insets.left - * insets.right, getHeight() - insets.top - insets.bottom, 0)).; */ - final GrBoite b = new GrBoite(new GrPoint(0, 0, 0), new GrPoint(getWidth(), getHeight(), 0)); + final GrBoite b = new GrBoite(new GrPoint(0, getHeight(), 0), new GrPoint(getWidth(),0, 0)); + if (insets_ != null) { + b.o_.x_ += insets_.left; + b.o_.y_ = b.o_.y_-(insets_.bottom+insets_.top); + b.e_.x_ =b.e_.x_- (insets_.left + insets_.right); + b.e_.y_ += insets_.top ; + } b.autoApplique(getCalque().getVersReel()); return b; } @@ -681,7 +689,8 @@ */ public void reshape(final int _x, final int _y, final int _width, final int _height) { final Rectangle r = new Rectangle(_x, _y, _width, _height); - if (!r.equals(getBounds())) { + Rectangle bounds = getBounds(); + if (!r.equals(bounds)) { super.reshape(_x, _y, _width, _height); changeMorphismes(); } @@ -737,11 +746,16 @@ } public void setUserInsets(final Insets _insets) { + if (CtuluLib.isEquals(insets_, _insets)) return; Insets old = insets_; insets_ = _insets; firePropertyChange("insets", old, insets_); } + public Insets getUserInsets() { + return (Insets) (insets_ == null ? null : insets_.clone()); + } + public void translateXLeft(final boolean _largeTranslate, final boolean _rapide) { translateX(-getTranslateStep(_largeTranslate), _rapide); } Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZCalqueGrille.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZCalqueGrille.java 2009-01-20 19:35:40 UTC (rev 4386) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZCalqueGrille.java 2009-01-20 23:25:33 UTC (rev 4387) @@ -25,12 +25,12 @@ import org.fudaa.ctulu.CtuluListSelection; import org.fudaa.ctulu.iterator.NumberIterator; import org.fudaa.ebli.commun.EbliLib; +import org.fudaa.ebli.commun.EbliUIProperties; import org.fudaa.ebli.geometrie.GrBoite; import org.fudaa.ebli.geometrie.GrMorphisme; import org.fudaa.ebli.geometrie.GrPoint; import org.fudaa.ebli.trace.TraceLigne; -import com.vividsolutions.jts.geom.Envelope; import com.vividsolutions.jts.geom.LineString; import com.vividsolutions.jts.geom.LinearRing; @@ -46,28 +46,29 @@ boolean drawGrid_; boolean drawX_ = true; boolean drawY_ = true; - Envelope customBounds_; - boolean useCustom_; + // Envelope customBounds_; + // boolean useCustom_; int nbGraduationX_ = 10; int nbGraduationY_ = 10; final BVueCalque vue_; - public void paintAllInImage(final Graphics2D _g, final GrMorphisme _versEcran, final GrMorphisme _versReel, - final GrBoite _clipReel) { - // super.paintAllInImage(_g, _versEcran, _versReel, _clipReel); - } - public ZCalqueGrille(final BVueCalque _vue) { super(); vue_ = _vue; setDestructible(false); + setName("cqGrille"); setTitle(EbliLib.getS("Grille")); // setForeground(new Color(204, 153, 0)); setForeground(Color.BLACK); } + public void paintAllInImage(final Graphics2D _g, final GrMorphisme _versEcran, final GrMorphisme _versReel, + final GrBoite _clipReel) { + // super.paintAllInImage(_g, _versEcran, _versReel, _clipReel); + } + public void changeZoom(double minx, double miny, double maxx, double maxy) { vue_.changeViewBoite(this, new GrBoite(new GrPoint(minx, miny, 0), new GrPoint(maxx, maxy, 0)), false); } @@ -103,7 +104,7 @@ // } // return r; } - + public GrBoite getDomaineOnSelected() { return getDomaine(); } @@ -122,7 +123,7 @@ final GrBoite zv = _clipReel.intersectionXY(domaine); if (zv == null) { return; } - updateBounds(zv); + // updateBounds(zv); final GrBoite targetBoite = new GrBoite(); targetBoite.ajuste(0, 0, 0); // la boite d'affichage @@ -319,26 +320,26 @@ int minYDraw = _ordxAxe; int maxYDraw = (int) _minYForAxe; - if (useCustom_) { - tmp_.y_ = _zv.getMinY(); - if (_yValue.size() > 0) { - tmp_.y_ = Math.min(_yValue.get(0), tmp_.y_); - } - tmp_.autoApplique(_versEcran); - tmp_.y_ = Math.floor(tmp_.y_); - if (tmp_.y_ > minYDraw) { - minYDraw = (int) tmp_.y_; - } - tmp_.y_ = _zv.getMaxY(); - if (_yValue.size() > 1) { - tmp_.y_ = Math.max(_yValue.get(_yValue.size() - 1), tmp_.y_); - } - tmp_.autoApplique(_versEcran); - tmp_.y_ = Math.ceil(tmp_.y_); - if (tmp_.y_ < maxYDraw) { - maxYDraw = (int) tmp_.y_; - } - } + // if (useCustom_) { + // tmp_.y_ = _zv.getMinY(); + // if (_yValue.size() > 0) { + // tmp_.y_ = Math.min(_yValue.get(0), tmp_.y_); + // } + // tmp_.autoApplique(_versEcran); + // tmp_.y_ = Math.floor(tmp_.y_); + // if (tmp_.y_ > minYDraw) { + // minYDraw = (int) tmp_.y_; + // } + // tmp_.y_ = _zv.getMaxY(); + // if (_yValue.size() > 1) { + // tmp_.y_ = Math.max(_yValue.get(_yValue.size() - 1), tmp_.y_); + // } + // tmp_.autoApplique(_versEcran); + // tmp_.y_ = Math.ceil(tmp_.y_); + // if (tmp_.y_ < maxYDraw) { + // maxYDraw = (int) tmp_.y_; + // } + // } tl_.setCouleur(getDrawColor()); tl_.setTypeTrait(TraceLigne.LISSE); tl_.dessineTrait(_g, _absyAxe, minYDraw, _absyAxe, maxYDraw); @@ -351,26 +352,26 @@ int minXDraw = _absyAxe; int maxXDraw = (int) _maxXForAxe; - if (useCustom_) { - tmp_.x_ = _zv.getMinX(); - if (_xValue.size() > 0) { - tmp_.x_ = Math.min(_xValue.get(0), tmp_.x_); - } - tmp_.autoApplique(_versEcran); - tmp_.x_ = Math.floor(tmp_.x_); - if (tmp_.x_ < minXDraw) { - minXDraw = (int) tmp_.x_; - } - tmp_.x_ = _zv.getMaxX(); - if (_xValue.size() > 1) { - tmp_.x_ = Math.max(_xValue.get(_xValue.size() - 1), tmp_.x_); - } - tmp_.autoApplique(_versEcran); - tmp_.x_ = Math.ceil(tmp_.x_); - if (tmp_.x_ < maxXDraw) { - maxXDraw = (int) tmp_.x_; - } - } + // if (useCustom_) { + // tmp_.x_ = _zv.getMinX(); + // if (_xValue.size() > 0) { + // tmp_.x_ = Math.min(_xValue.get(0), tmp_.x_); + // } + // tmp_.autoApplique(_versEcran); + // tmp_.x_ = Math.floor(tmp_.x_); + // if (tmp_.x_ < minXDraw) { + // minXDraw = (int) tmp_.x_; + // } + // tmp_.x_ = _zv.getMaxX(); + // if (_xValue.size() > 1) { + // tmp_.x_ = Math.max(_xValue.get(_xValue.size() - 1), tmp_.x_); + // } + // tmp_.autoApplique(_versEcran); + // tmp_.x_ = Math.ceil(tmp_.x_); + // if (tmp_.x_ < maxXDraw) { + // maxXDraw = (int) tmp_.x_; + // } + // } tl_.setCouleur(getDrawColor()); tl_.setTypeTrait(TraceLigne.LISSE); @@ -433,14 +434,14 @@ return yMax; } - private void updateBounds(final GrBoite _zv) { - if (useCustom_ && customBounds_ != null) { - _zv.o_.x_ = Math.max(_zv.o_.x_, customBounds_.getMinX()); - _zv.e_.x_ = Math.min(_zv.e_.x_, customBounds_.getMaxX()); - _zv.o_.y_ = Math.max(_zv.o_.y_, customBounds_.getMinY()); - _zv.e_.y_ = Math.min(_zv.e_.y_, customBounds_.getMaxY()); - } - } + // private void updateBounds(final GrBoite _zv) { + // if (useCustom_ && customBounds_ != null) { + // _zv.o_.x_ = Math.max(_zv.o_.x_, customBounds_.getMinX()); + // _zv.e_.x_ = Math.min(_zv.e_.x_, customBounds_.getMaxX()); + // _zv.o_.y_ = Math.max(_zv.o_.y_, customBounds_.getMinY()); + // _zv.e_.y_ = Math.min(_zv.e_.y_, customBounds_.getMaxY()); + // } + // } // Icon /** @@ -504,6 +505,7 @@ } else { super.setVisible(_v); } + firePropertyChange("grille", true, false); } @@ -514,32 +516,32 @@ public void setDrawGrid(final boolean _drawGrid) { if (_drawGrid != drawGrid_) { drawGrid_ = _drawGrid; - repaint(); + grilleChanged(); } } - public boolean isUseCustom() { - return useCustom_; - } + // public boolean isUseCustom() { + // return useCustom_; + // } + // + // public void setUseCustom(final boolean _useCustom) { + // if (useCustom_ != _useCustom) { + // useCustom_ = _useCustom; + // repaint(); + // } + // } + // + // public Envelope getCustomBounds() { + // return customBounds_ == null ? null : new Envelope(customBounds_); + // } + // + // public void setCustomBounds(final Envelope _customBounds) { + // if (customBounds_ != _customBounds) { + // customBounds_ = _customBounds; + // repaint(); + // } + // } - public void setUseCustom(final boolean _useCustom) { - if (useCustom_ != _useCustom) { - useCustom_ = _useCustom; - repaint(); - } - } - - public Envelope getCustomBounds() { - return customBounds_ == null ? null : new Envelope(customBounds_); - } - - public void setCustomBounds(final Envelope _customBounds) { - if (customBounds_ != _customBounds) { - customBounds_ = _customBounds; - repaint(); - } - } - public boolean isDrawX() { return drawX_; } @@ -547,7 +549,7 @@ public void setDrawX(final boolean _drawX) { if (drawX_ != _drawX) { drawX_ = _drawX; - repaint(); + grilleChanged(); } } @@ -558,21 +560,59 @@ public void setDrawY(final boolean _drawY) { if (drawY_ != _drawY) { drawY_ = _drawY; - repaint(); + grilleChanged(); } } + private void grilleChanged() { + repaint(); + firePropertyChange("grille", true, false); + } + + + + @Override + public EbliUIProperties saveUIProperties() { + final EbliUIProperties res = super.saveUIProperties(); + res.put("graduation.x.nb", getNbXGraduations()); + res.put("graduation.y.nb", getNbYGraduations()); + res.put("graduation.x.visible", isDrawX()); + res.put("graduation.y.visible", isDrawY()); + res.put("grille.visible", isDrawGrid()); + return res; + } + + @Override + public void initFrom(EbliUIProperties _p) { + super.initFrom(_p); + if (_p.isDefined("graduation.x.nb")) { + setNbGraduationX(_p.getInteger("graduation.x.nb")); + } + if (_p.isDefined("graduation.y.nb")) { + setNbGraduationX(_p.getInteger("graduation.y.nb")); + } + if (_p.isDefined("graduation.y.visible")) { + setDrawY(_p.getBoolean("graduation.y.visible")); + } + if (_p.isDefined("graduation.x.visible")) { + setDrawX(_p.getBoolean("graduation.x.visible")); + } + if (_p.isDefined("grille.visible")) { + setDrawGrid(_p.getBoolean("grille.visible")); + } + } + public void setNbGraduationX(final int _nbGraduationX) { if (_nbGraduationX > 0 && nbGraduationX_ != _nbGraduationX) { nbGraduationX_ = _nbGraduationX; - repaint(); + grilleChanged(); } } public void setNbGraduationY(final int _nbGraduationY) { if (_nbGraduationY > 0 && nbGraduationY_ != _nbGraduationY) { nbGraduationY_ = _nbGraduationY; - repaint(); + grilleChanged(); } } Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/ressource/ebli_en.fr_txt =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/ressource/ebli_en.fr_txt 2009-01-20 19:35:40 UTC (rev 4386) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/ressource/ebli_en.fr_txt 2009-01-20 23:25:33 UTC (rev 4387) @@ -3,6 +3,8 @@ Centrer horizontalement=Center horizontally Centrer verticalement=Center vertically Dessiner l'axe=Draw axis +Dessiner l'axe Y=Draw Y axis +Dessiner l'axe X=Draw X axis Nombre de graduation=Number of Scale marks Changer le zoom=Change zoom Appliquer le zoom=Apply zoom Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EbliWidgetFusionCalques.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EbliWidgetFusionCalques.java 2009-01-20 19:35:40 UTC (rev 4386) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EbliWidgetFusionCalques.java 2009-01-20 23:25:33 UTC (rev 4387) @@ -1,17 +1,22 @@ package org.fudaa.ebli.visuallibrary.calque; +import java.awt.Insets; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; +import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Map; +import org.fudaa.ebli.calque.BCalque; import org.fudaa.ebli.calque.BVueCalque; +import org.fudaa.ebli.calque.ZCalqueGrille; import org.fudaa.ebli.calque.ZCalqueSondeInteraction; import org.fudaa.ebli.calque.ZCalqueSondeSynchroniserFusion; import org.fudaa.ebli.calque.ZEbliCalquesPanel; +import org.fudaa.ebli.commun.EbliUIProperties; import org.fudaa.ebli.geometrie.GrBoite; -import org.fudaa.ebli.repere.RepereEvent; import org.fudaa.ebli.visuallibrary.EbliScene; import org.fudaa.ebli.visuallibrary.EbliWidget; import org.fudaa.ebli.visuallibrary.EbliWidgetGroup; @@ -55,38 +60,64 @@ // -- on met a jour le modele de zoom pour toutes les filles en prenant le // dernier widget (= la widget temoin) - ZEbliCalquesPanel pn = listeWidgetCalque_.get(listeWidgetCalque_.size() - 1).calquePanel_; + final ZEbliCalquesPanel pn = listeWidgetCalque_.get(listeWidgetCalque_.size() - 1).calquePanel_; + // le zoom changeAllZoomFrom(pn.getVueCalque()); + // les espaces + changeAllInsetsFrom(pn.getVueCalque()); + // les grilles + registerGrilles(); + changeAllGrilleFrom(pn.getVueCalque()); for (int i = listeWidgetCalque_.size() - 1; i >= 0; i--) { - EbliWidgetVueCalque vue = listeWidgetCalque_.get(i); + final EbliWidgetVueCalque vue = listeWidgetCalque_.get(i); vue.calquePanel_.getVueCalque().addPropertyChangeListener("repere", this); + vue.calquePanel_.getVueCalque().addPropertyChangeListener("insets", this); } + getEbliScene().refresh(); - } - private final Object sync = new Object(); + // private final Object sync = new Object(); public void propertyChange(final PropertyChangeEvent _evt) { -// synchronized (sync) { - - if (!noCyclePropertieChange) return; - noCyclePropertieChange = false; - // listeWidgetCalque_.get(0).calquePanel_.getVueCalque().changeViewBoite( - // _source, _boite, _rapide) - final BVueCalque vueCalque = (BVueCalque) _evt.getSource(); - if (getVueInEdition() != vueCalque) { - noCyclePropertieChange = true; - return; - } - // RepereEvent newRepere = (RepereEvent) _evt.getNewValue(); - changeAllZoomFrom(vueCalque); + // synchronized (sync) { + final boolean isRepere = "repere".equals(_evt.getPropertyName()); + // pour eviter de boucler indefiniment + if (!noCyclePropertieChange) return; + noCyclePropertieChange = false; + final BVueCalque vueCalque = (BVueCalque) _evt.getSource(); + if (getVueInEdition() != vueCalque) { noCyclePropertieChange = true; - getEbliScene().refresh(); -// } + return; + } + // RepereEvent newRepere = (RepereEvent) _evt.getNewValue(); + if (isRepere) changeAllZoomFrom(vueCalque); + else changeAllInsetsFrom(vueCalque); + noCyclePropertieChange = true; + getEbliScene().refresh(); + // } } + private PropertyChangeListener grillePropertyChangeListener = new PropertyChangeListener() { + + public void propertyChange(PropertyChangeEvent _evt) { + propertyChangeFromGrille(_evt); + + } + }; + + public void propertyChangeFromGrille(final PropertyChangeEvent _evt) { + // synchronized (sync) { + // pour eviter de boucler indefiniment + final BVueCalque vueCalque = getVueCalque((ZCalqueGrille) _evt.getSource()); + if (getVueInEdition() != vueCalque) { return; } + // RepereEvent newRepere = (RepereEvent) _evt.getNewValue(); + changeAllGrilleFrom(vueCalque); + getEbliScene().refresh(); + // } + } + private BVueCalque getVueInEdition() { for (final Iterator<Widget> it = getChildren().iterator(); it.hasNext();) { final EbliWidgetVueCalque widget = (EbliWidgetVueCalque) ((EbliWidget) it.next()).getIntern(); @@ -95,16 +126,69 @@ return null; } + ZCalqueGrille getGrille(final ZEbliCalquesPanel _panel) { + final BCalque calqueParNom = _panel.getCqInfos().getCalqueParNom("cqGrille"); + return (ZCalqueGrille) (calqueParNom instanceof ZCalqueGrille ? calqueParNom : null); + } + + Map<BVueCalque, ZCalqueGrille> grilles_ = new HashMap<BVueCalque, ZCalqueGrille>(); + + private BVueCalque getVueCalque(ZCalqueGrille _grille) { + for (Map.Entry<BVueCalque, ZCalqueGrille> entry : grilles_.entrySet()) { + if (entry.getValue() == _grille) { return entry.getKey(); } + + } + return null; + } + + private void registerGrilles() { + for (int i = listeWidgetCalque_.size() - 1; i >= 0; i--) { + final EbliWidgetVueCalque vue = listeWidgetCalque_.get(i); + final ZCalqueGrille grille = getGrille(vue.calquePanel_); + if (grille != null) { + grilles_.put(vue.calquePanel_.getVueCalque(), grille); + grille.addPropertyChangeListener("grille", grillePropertyChangeListener); + } + } + } + + private void changeAllGrilleFrom(final BVueCalque vueCalque) { + ZCalqueGrille grille = grilles_.get(vueCalque); + if (grille == null) return; + final EbliUIProperties ui = grille.saveUIProperties(); + for (Map.Entry<BVueCalque, ZCalqueGrille> entry : grilles_.entrySet()) { + if (entry.getKey() != vueCalque) { + entry.getValue().initFrom(ui); + } + + } + + } + private void changeAllZoomFrom(final BVueCalque vueCalque) { + final GrBoite viewBoite = vueCalque.getViewBoite(); for (final Iterator<Widget> it = getChildren().iterator(); it.hasNext();) { final EbliWidgetVueCalque widget = (EbliWidgetVueCalque) ((EbliWidget) it.next()).getIntern(); if (widget.calquePanel_.getVueCalque() != vueCalque) { - widget.setZoom(vueCalque.getViewBoite()); + widget.setZoom(viewBoite); } } } + private void changeAllInsetsFrom(final BVueCalque vueCalque) { + final Insets init = vueCalque.getUserInsets(); + for (final Iterator<Widget> it = getChildren().iterator(); it.hasNext();) { + final EbliWidgetVueCalque widget = (EbliWidgetVueCalque) ((EbliWidget) it.next()).getIntern(); + if (widget.calquePanel_.getVueCalque() != vueCalque) { + widget.calquePanel_.getVueCalque().setUserInsets(init); + widget.clearCacheImage(); + + } + + } + } + /** * Surcharge de la methode de ebli, utilisse pour virer les property change listener */ @@ -113,8 +197,13 @@ EbliWidgetVueCalque widgetCalque; if (child instanceof EbliWidgetVueCalque) widgetCalque = (EbliWidgetVueCalque) child; else widgetCalque = (EbliWidgetVueCalque) ((EbliWidget) child.getChildren().get(0)).getIntern(); - widgetCalque.calquePanel_.getVueCalque().getAbstractCalque().removePropertyChangeListener("repere", this); - + BVueCalque vueCalque = widgetCalque.calquePanel_.getVueCalque(); + vueCalque.getAbstractCalque().removePropertyChangeListener("repere", this); + vueCalque.getAbstractCalque().removePropertyChangeListener("insets", this); + ZCalqueGrille remove = grilles_.remove(vueCalque); + if (remove != null) { + remove.removePropertyChangeListener("grille", grillePropertyChangeListener); + } } ZCalqueSondeSynchroniserFusion managerSondesFusion_; @@ -159,18 +248,20 @@ managerSondesFusion_.removeAllListenningSonde(); } + @Override public boolean hasSattelite() { return true; } + @Override public List<EbliWidget> getSattelite() { - List<EbliWidget> liste = new ArrayList<EbliWidget>(); + final List<EbliWidget> liste = new ArrayList<EbliWidget>(); for (int i = listeWidgetCalque_.size() - 1; i >= 0; i--) { - EbliWidgetVueCalque vue = listeWidgetCalque_.get(i); + final EbliWidgetVueCalque vue = listeWidgetCalque_.get(i); if (vue.hasSattelite()) liste.addAll(vue.getSattelite()); } return liste; Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EbliWidgetVueCalque.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EbliWidgetVueCalque.java 2009-01-20 19:35:40 UTC (rev 4386) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/calque/EbliWidgetVueCalque.java 2009-01-20 23:25:33 UTC (rev 4387) @@ -3,6 +3,7 @@ import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics2D; +import java.awt.Insets; import java.awt.Rectangle; import java.awt.Window; import java.awt.image.BufferedImage; @@ -103,6 +104,8 @@ final Widget widget, final BuPanel editor, final boolean commit) { editingStop(); setZoom(calquePanel_.getVueCalque().getViewBoite()); + //le zoom n'a pas chang\xE9. +// zoomChanged_=false; getEbliScene().refresh(); } @@ -121,6 +124,8 @@ } private void initSize(final Rectangle rec) { + calquePanel_.setSize(rec.width, rec.height); + calquePanel_.setPreferredSize(new Dimension(rec.width, rec.height)); final BCalque[] tousCalques = calquePanel_.getVueCalque().getCalque().getTousCalques(); calquePanel_.getVueCalque().setSize(rec.width, rec.height); // calquePanel_.setPreferredSize(new Dimension(rec.width, rec.height)); @@ -139,6 +144,7 @@ } boolean zoomChanged_ = true; + @Override protected void paintWidget() { Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileCoordinatesModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileCoordinatesModel.java 2009-01-20 19:35:40 UTC (rev 4386) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileCoordinatesModel.java 2009-01-20 23:25:33 UTC (rev 4387) @@ -15,6 +15,7 @@ import org.fudaa.ctulu.ProgressionInterface; import org.fudaa.dodico.ef.operation.EfLineIntersectionsResultsBuilder; import org.fudaa.dodico.ef.operation.EfLineIntersectionsResultsI; +import org.fudaa.ebli.courbe.EGGrapheTreeModel; import org.fudaa.ebli.courbe.EGModel; import org.fudaa.ebli.palette.BPaletteInfo.InfoData; @@ -40,6 +41,8 @@ updateRes(); } + + public void replayData(EGGrapheTreeModel _model, Map _infos, CtuluUI _impl) {} public int getActiveTimeIdx() { return 0; Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/sig/layer/FSigGrillePalette.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/sig/layer/FSigGrillePalette.java 2009-01-20 19:35:40 UTC (rev 4386) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/sig/layer/FSigGrillePalette.java 2009-01-20 23:25:33 UTC (rev 4387) @@ -95,12 +95,6 @@ return r; } - private void addXYLAbels(final BuPanel pnXY) { - pnXY.add(new BuLabel("")); - pnXY.add(new BuLabel("X")); - pnXY.add(new BuLabel("Y")); - } - @Override public JComponent buildContentPane() { final BuPanel content = new BuPanel(new BuVerticalLayout(2)); @@ -110,9 +104,12 @@ return content; } - private void buildDrawAxes(final BuPanel _pn) { - _pn.add(new BuLabel(EbliLib.getS("Dessiner l'axe"))); - final BuCheckBox cbX = new BuCheckBox(); + private BuPanel createAxis() { + final BuPanel pnXY = new BuPanel(new BuGridLayout(2, 3, 3, false, false, false, false, false)); + pnXY.setBorder(CtuluLibSwing.createTitleBorder(EbliLib.getS("Axes"))); + pnXY.add(new BuLabel("")); + pnXY.add(new BuLabel(EbliLib.getS("Nombre de graduation"))); + final BuCheckBox cbX = new BuCheckBox(EbliLib.getS("Dessiner l'axe X")); cbX.setSelected(target_.isDrawX()); cbX.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent _e) { @@ -120,23 +117,10 @@ } }); - _pn.add(cbX); - final BuCheckBox cbY = new BuCheckBox(); - cbY.setSelected(target_.isDrawY()); - cbY.addActionListener(new ActionListener() { - public void actionPerformed(final ActionEvent _e) { - target_.setDrawY(cbY.isSelected()); - } - - }); - _pn.add(cbY); - } - - private void buildGraduation(final BuPanel _pn) { + pnXY.add(cbX); final BuTextField btGraduationX = BuTextField.createIntegerField(); - _pn.add(new BuLabel(EbliLib.getS("Nombre de graduation"))); btGraduationX.setValue(new Integer(target_.getNbXGraduations())); - _pn.add(btGraduationX); + pnXY.add(btGraduationX); btGraduationX.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent _e) { @@ -150,9 +134,20 @@ } }); + + final BuCheckBox cbY = new BuCheckBox(EbliLib.getS("Dessiner l'axe Y")); + cbY.setSelected(target_.isDrawY()); + cbY.addActionListener(new ActionListener() { + public void actionPerformed(final ActionEvent _e) { + target_.setDrawY(cbY.isSelected()); + } + + }); + pnXY.add(cbY); + final BuTextField btGraduationY = BuTextField.createIntegerField(); btGraduationY.setValue(new Integer(target_.getNbYGraduations())); - _pn.add(btGraduationY); + pnXY.add(btGraduationY); btGraduationY.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent _e) { @@ -166,14 +161,6 @@ } }); - } - - private BuPanel createAxis() { - final BuPanel pnXY = new BuPanel(new BuGridLayout(3, 3, 3, false, false, false, false, false)); - pnXY.setBorder(CtuluLibSwing.createTitleBorder(EbliLib.getS("Axes"))); - addXYLAbels(pnXY); - buildDrawAxes(pnXY); - buildGraduation(pnXY); return pnXY; } @@ -235,12 +222,14 @@ private BuPanel createZoom() { final BuPanel select = new BuPanel(new BuGridLayout(3, 3, 3, false, false, false, false, false)); - addXYLAbels(select); + select.add(new BuLabel(EbliLib.getS(""))); select.add(new BuLabel(EbliLib.getS("Min"))); - final BuTextField tfMinX = addDoubleText(select); - final BuTextField tfMinY = addDoubleText(select); select.add(new BuLabel(EbliLib.getS("Max"))); + select.add(new BuLabel(EbliLib.getS("X"))); + final BuTextField tfMinX = addDoubleText(select); final BuTextField tfMaxX = addDoubleText(select); + select.add(new BuLabel(EbliLib.getS("Y"))); + final BuTextField tfMinY = addDoubleText(select); final BuTextField tfMaxY = addDoubleText(select); final BuPanel zoom = new BuPanel(new BuVerticalLayout(3, false, false)); zoom.setBorder(CtuluLibSwing.createTitleBorder(EbliLib.getS("Changer le zoom"))); Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeModel.java 2009-01-20 19:35:40 UTC (rev 4386) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeModel.java 2009-01-20 23:25:33 UTC (rev 4387) @@ -7,44 +7,29 @@ */ package org.fudaa.fudaa.tr.post; -import java.awt.Dimension; -import java.awt.Rectangle; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; -import javax.swing.JScrollPane; - import org.fudaa.ctulu.CtuluCommandContainer; -import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.CtuluLibArray; import org.fudaa.ctulu.CtuluLibString; import org.fudaa.ctulu.CtuluListSelectionInterface; import org.fudaa.ctulu.CtuluRange; import org.fudaa.ctulu.CtuluUI; -import org.fudaa.ctulu.collection.CtuluArrayDouble; -import org.fudaa.ctulu.gui.CtuluDialogPanel; import org.fudaa.dodico.ef.EfData; import org.fudaa.dodico.h2d.type.H2dVariableType; -import org.fudaa.ebli.calque.BArbreCalque; -import org.fudaa.ebli.calque.BCalque; -import org.fudaa.ebli.calque.BCalqueLegende; import org.fudaa.ebli.courbe.EGCourbeChild; import org.fudaa.ebli.courbe.EGGroup; import org.fudaa.ebli.courbe.EGModel; import org.fudaa.ebli.palette.BPaletteInfo.InfoData; import org.fudaa.ebli.visuallibrary.EbliWidget; - import org.fudaa.fudaa.commun.courbe.FudaaCourbeTime; import org.fudaa.fudaa.commun.courbe.FudaaCourbeTimeModel; import org.fudaa.fudaa.tr.common.TrResource; -import com.memoire.bu.BuBorderLayout; -import com.memoire.bu.BuBorders; -import com.memoire.bu.BuLabel; -import com.memoire.bu.BuScrollPane; import com.memoire.fu.FuLog; import com.vividsolutions.jts.geom.Coordinate; @@ -104,13 +89,15 @@ @Override protected void updateY() { createY(); - for (int i = 0; i < y_.length; i++) { - final EfData data = source_.getData(var_, i); + //pour chaque pas de temps + for (int tIdx = 0; tIdx < y_.length; tIdx++) { + //on recupere la valeur + final EfData data = source_.getData(var_, tIdx); if (data == null) { FuLog.warning("TRP: data is null for " + var_); - }else - super.y_[i] = ptIdx_.getInterpolateValue(getVar(), data, i, source_); + //on interpole + super.y_[tIdx] = ptIdx_.getInterpolateValue(var_, data, tIdx, source_); } } @@ -208,7 +195,7 @@ // if (data == null) { // FuLog.warning("TRP: data is null for " + var_); try { - super.y_[i] = source_.getData(var_, i, ptIdx_); + y_[i] = source_.getData(var_, i, ptIdx_); } catch (final IOException e) { FuLog.error(e); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <had...@us...> - 2009-01-20 19:35:51
|
Revision: 4386 http://fudaa.svn.sourceforge.net/fudaa/?rev=4386&view=rev Author: hadouxad Date: 2009-01-20 19:35:40 +0000 (Tue, 20 Jan 2009) Log Message: ----------- Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MVProfileCourbeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileBuilder.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileTreeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeTreeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostVisuPanel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrReplayCurvesData.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/dialogSpec/TrPostWizardProfilSpatial.java Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MVProfileCourbeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MVProfileCourbeModel.java 2009-01-20 19:33:53 UTC (rev 4385) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MVProfileCourbeModel.java 2009-01-20 19:35:40 UTC (rev 4386) @@ -26,10 +26,12 @@ import org.fudaa.dodico.ef.operation.EfLineIntersectionsResultsI; import org.fudaa.dodico.h2d.type.H2dVariableType; import org.fudaa.ebli.calque.BCalqueLegende; +import org.fudaa.ebli.courbe.EGGrapheTreeModel; import org.fudaa.ebli.palette.BPaletteInfo.InfoData; import org.fudaa.ebli.visuallibrary.EbliWidget; import org.fudaa.fudaa.tr.common.TrResource; import org.fudaa.fudaa.tr.post.TrPostCommonImplementation; +import org.fudaa.fudaa.tr.post.TrPostCourbeTreeModel; import org.fudaa.fudaa.tr.post.TrPostProjet; import org.fudaa.fudaa.tr.post.TrPostSource; import org.fudaa.fudaa.tr.post.TrPostVisuPanel; @@ -234,8 +236,9 @@ return res_.getIntersect(_i).isRealIntersection(); } + public boolean isRemovable_=false; public boolean isRemovable() { - return false; + return isRemovable_; } public boolean isSegmentDrawn(final int _i) { @@ -402,7 +405,7 @@ TrPostCommonImplementation implementation=(TrPostCommonImplementation)impl; //-- on cree une vue 2d a partir du fichier source fourni et on le centre sur le point interpol\xE9 ou non --// - TrReplayCurvesData.getInstance().constructProfilSpatialOrigine(this, implementation); + TrReplayCurvesData.getInstance().getProfilSpatialOrigine(this, implementation); } @@ -421,7 +424,20 @@ public void setBuilder(EfLineIntersectionsResultsBuilder _builder) { this.builder_ = _builder; } + + + public void replayData(org.fudaa.ebli.courbe.EGGrapheTreeModel model,Map infos, CtuluUI impl) { + if(!(impl instanceof TrPostCommonImplementation)){ + impl.error(TrResource.getS("Impossible de r\xE9cup\xE9rer la bonne interface fudaa")); + return; + } + TrPostCommonImplementation implementation=(TrPostCommonImplementation)impl; + + //-- on cree une vue 2d a partir du fichier source fourni et on le centre sur le point interpol\xE9 ou non --// + TrReplayCurvesData.getInstance().getProfilSpatialReplayData((MvProfileTreeModel)model, this, implementation); + + } } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileBuilder.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileBuilder.java 2009-01-20 19:33:53 UTC (rev 4385) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileBuilder.java 2009-01-20 19:35:40 UTC (rev 4386) @@ -246,18 +246,10 @@ public String format(double value,int nbChiffresSignificatifs){ - - double val=0; - String forme="#."; - for(int i=0;i<nbChiffresSignificatifs;i++) forme+="0"; - DecimalFormat df = new DecimalFormat(forme); - - - return df.format(value); } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileTreeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileTreeModel.java 2009-01-20 19:33:53 UTC (rev 4385) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileTreeModel.java 2009-01-20 19:35:40 UTC (rev 4386) @@ -10,6 +10,7 @@ import java.awt.Color; import java.awt.Component; import java.awt.EventQueue; +import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -31,6 +32,7 @@ import org.fudaa.ctulu.CtuluVariable; import org.fudaa.ctulu.ProgressionInterface; import org.fudaa.ctulu.gis.GISGeometryFactory; +import org.fudaa.ctulu.gis.GISZoneCollectionPoint; import org.fudaa.ctulu.gui.CtuluLibSwing; import org.fudaa.dodico.commun.DodicoLib; import org.fudaa.dodico.ef.operation.EfLineIntersection; @@ -42,6 +44,7 @@ import org.fudaa.dodico.h2d.type.H2dVariableType; import org.fudaa.dodico.mesure.EvolutionReguliere; import org.fudaa.dodico.mesure.EvolutionReguliereInterface; +import org.fudaa.ebli.calque.BCalqueLegende; import org.fudaa.ebli.commun.EbliActionInterface; import org.fudaa.ebli.courbe.EGActionReplayDataCourbe; import org.fudaa.ebli.courbe.EGAxeVertical; @@ -53,6 +56,7 @@ import org.fudaa.ebli.courbe.EGGrapheTreeModel; import org.fudaa.ebli.courbe.EGGroup; import org.fudaa.ebli.courbe.EGObject; +import org.fudaa.ebli.visuallibrary.EbliWidget; import org.fudaa.fudaa.commun.courbe.FudaaCourbeModel; import org.fudaa.fudaa.commun.courbe.FudaaCourbeTimeListModel; import org.fudaa.fudaa.commun.courbe.ScopeCourbeModel; @@ -61,15 +65,19 @@ import org.fudaa.fudaa.meshviewer.export.MvExportChooseVarAndTime; import org.fudaa.fudaa.tr.post.ScopCourbeTreeModel; +import org.fudaa.fudaa.tr.post.TrPostCommonImplementation; import org.fudaa.fudaa.tr.post.TrPostCourbeModel; import org.fudaa.fudaa.tr.post.TrPostProjet; import org.fudaa.fudaa.tr.post.TrPostSource; +import org.fudaa.fudaa.tr.post.TrPostVisuPanel; import org.fudaa.fudaa.tr.post.actions.TrPostProfileAction; import com.memoire.bu.BuLib; import com.memoire.bu.BuResource; import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.CoordinateSequence; +import com.vividsolutions.jts.geom.GeometryFactory; import com.vividsolutions.jts.geom.LineString; /** @@ -83,17 +91,17 @@ EfLineIntersectionsResultsBuilder builderMesh_; EfLineIntersectionsResultsMng resMesh_; - EfLineIntersectionsCorrectionTester tester_; - - /** - * Ligne initialement utilis\xE9e pour la creation de la courbe - */ - LineString initLineNode; - LineString initLineMesh; - - - public MvProfileTarget target_; + EfLineIntersectionsCorrectionTester tester_; + /** + * Ligne initialement utilis\xE9e pour la creation de la courbe + */ + LineString initLineNode; + LineString initLineMesh; + + + public MvProfileTarget target_; + public MvProfileTreeModel(final MvProfileTarget _target, final EfLineIntersectionsCorrectionTester _tester) { super(); timeModel_ = _target.getTimeModel(); @@ -123,8 +131,8 @@ builderNode_ = _builderNode; if(builderNode_!=null ) initLineNode=builderNode_.getInitLine_(); - - + + } public EfLineIntersectionsResultsBuilder getBuilderFor(final CtuluVariable _v) { @@ -192,6 +200,105 @@ } + /** + * Rejoue les donn\xE9es de la polyligne avec les nouvelles infos. + * Si boolean ecraser est a false, Cree sune nouvelle courbe avec le mod\xE8le qui convient. + * Dans le cas ou ecraser est \xE0 true, on ecrase les infos du modele par ceux des param d'entree. + * Version r\xE9serv\xE9s aux points r\xE9els + * @param _model + * @param _src + * @param _idxToAdd + * @param _cmd + * @param _prog + * @param newVariable + * @param ecraser + */ + public void replayPoints(TrPostCommonImplementation impl,TrPostVisuPanel vue2d,MVProfileCourbeModel _model,final TrPostSource _src, final int[] _idxToAdd, final CtuluCommandContainer _cmd, + final ProgressionInterface _prog, H2dVariableType newVariable,int newTimeStep, boolean ecraser) { + + //-- ajout de la variable --// + final MvProfileCourbeGroup groupVar = getGroup(newVariable, true); + + + //-- creation de la polyligne --// + GISZoneCollectionPoint points=new GISZoneCollectionPoint(); + for(int i=0;i<_idxToAdd.length;i++) + points.add(_src.getGrid().getPtX(_idxToAdd[i]),_src.getGrid().getPtY(_idxToAdd[i]),0); + LineString polyligne=new LineString(points,new GeometryFactory()); + + + //-- on cree la nouvelle courbe pour la variable correspondante --// + MvProfileTarget target=new TrPostProfileAction.ProfileAdapter(_src,impl.getCurrentProject()); + MvProfileBuilder builder=new MvProfileBuilderFromLine(target,impl,polyligne,vue2d,new MvProfileCoteTester()); + //-- intersectionResultI --// + EfLineIntersectionsResultsI res=builder.getDefaultRes(_model.variable_, impl.getMainProgression()); + //-- EfLineIntersectionsResultsBuilder --// + EfLineIntersectionsResultsBuilder efbuilder=new EfLineIntersectionsResultsBuilder(polyligne,_model.res_,new MvProfileCoteTester()); + MVProfileCourbeModel newModele=new MVProfileCourbeModel(newVariable,_src,newTimeStep,efbuilder,impl.getMainProgression()); + + //-- titre --// + String title=newVariable.toString() + CtuluLibString.ESPACE ; + if(newVariable.getCommonUnit()!=null) + title+="("+newVariable.getCommonUnit()+")"+ CtuluLibString.ESPACE ; + title+=_src.getTimeStep(newTimeStep); + //-- on ajoute les extremites du segment choisi --// + title+=", P1("+format(polyligne.getCoordinateN(0).x,2)+";"+format(polyligne.getCoordinateN(0).y,2)+")"+";"+"P"+polyligne.getNumPoints()+"("+format(polyligne.getCoordinateN(polyligne.getNumPoints()-1).x,2)+";"+format(polyligne.getCoordinateN(polyligne.getNumPoints()-1).y,2)+")"; + newModele.setTitle(title); + + //-- creation de la nouvelle courbe --// + MvProfileCourbeTime newchild = new MvProfileCourbeTime(groupVar, newModele, target.getTimeModel()); + groupVar.addEGComponent(newchild); + + + //-- si ecraser, on supprime la courbe --// + if(ecraser){ + this.removeModele(_model,_cmd); + + } + + + fireStructureChanged(); + + } + + /** + * Methode qui supprime la courbe pour son modele du profil spatial. + * Supprime \xE9galement le groupe de variable si ce dernier ne contient pas d'autres courbes. + * @param model de la courbe a supprimer + * @param mng + */ + public void removeModele(MVProfileCourbeModel model,CtuluCommandContainer mng){ + model.isRemovable_=true; + //-- on recupere le groupe du modele --// + final MvProfileCourbeGroup groupVar = getGroup(model.getVariable(), false); + EGCourbeChild[] liste=new EGCourbeChild[1]; + boolean trouve=false; + for (int i = groupVar.getChildCount() - 1;!trouve && i >= 0; i--) { + final MVProfileCourbeModel res = (MVProfileCourbeModel) groupVar.getCourbeAt(i).getModel(); + if (res==model) { + liste[0]=groupVar.getCourbeAt(i); + trouve=true; + } + } + if(trouve) + removeCurves(liste,mng ); + + //-- test si le groupe ne contient rien, on le degage --// + if(groupVar.getEGChilds()==null || groupVar.getEGChilds().length==0){ + this.remove(groupVar); + + } + } + + public String format(double value,int nbChiffresSignificatifs){ + String forme="#."; + for(int i=0;i<nbChiffresSignificatifs;i++) + forme+="0"; + DecimalFormat df = new DecimalFormat(forme); + return df.format(value); + } + + MvProfileGridPalette paletteGrid_; public EfLineIntersectionsResultsI[] getDefaultRes() { @@ -646,7 +753,7 @@ } - + /** * Methode qui permet de fusionner le model courant avec un autre model. Utilsier poru la fusion de courbes spatiales * et l ajout dans d autres courbes. @@ -656,31 +763,31 @@ */ public void mergeWithAnotherScopeTreeModel(final ScopCourbeTreeModel anotherModel) { // -- parcours de la liste des variables du graphe a fusionner --// - - - // -- on recherche le group associe a la variale dans l autre graphe - // sinon on le cree --// - final MvProfileCourbeGroup group = this.getGroup(H2dVariableType.SANS, true); - - // -- on recupere toutes les courbes associees a la var pour le - // graphe merges - - final EGGroup g = anotherModel.getGroupFor(H2dVariableType.SANS); - for (int i = g.getChildCount() - 1; i >= 0; i--) { - if (g.getCourbeAt(i).getModel() instanceof ScopeCourbeModel) { - - group.addEGComponent((EGCourbeChild) g.getCourbeAt(i).duplicate(group, new EGGrapheDuplicator())); - - } + // -- on recherche le group associe a la variale dans l autre graphe + // sinon on le cree --// + final MvProfileCourbeGroup group = this.getGroup(H2dVariableType.SANS, true); - } + + // -- on recupere toutes les courbes associees a la var pour le + // graphe merges + + final EGGroup g = anotherModel.getGroupFor(H2dVariableType.SANS); + for (int i = g.getChildCount() - 1; i >= 0; i--) { + if (g.getCourbeAt(i).getModel() instanceof ScopeCourbeModel) { + + + group.addEGComponent((EGCourbeChild) g.getCourbeAt(i).duplicate(group, new EGGrapheDuplicator())); + + } + + } this.fireStructureChanged(); } - + protected MvProfileGridPalette getPaletteGrid() { return paletteGrid_; } @@ -698,10 +805,10 @@ final List<EGCourbeChild> childs = new ArrayList<EGCourbeChild>(_crb.length); for (int i = 0; i < _crb.length; i++) { final EGCourbeChild child = new EGCourbeChild(gr, new FudaaCourbeModel(new EvolutionReguliere(_crb[i]))); - + //-- on met a jour si la courbe est un nuage de points ou non --// child.setNuagePoints_(_crb[i].isNuagePoints()); - + childs.add(child); gr.addEGComponent(child); } @@ -713,66 +820,67 @@ } - - public void finalizePersistance(){ - - //-- recupere les groupes de la persistance qui doivent etre supprim\xE9 car ne sont pas des liens directs avec les variables H2dVariableType du projet--// + + public void finalizePersistance(){ + + //-- recupere les groupes de la persistance qui doivent etre supprim\xE9 car ne sont pas des liens directs avec les variables H2dVariableType du projet--// ArrayList<EGGroup> listeGroupeAsupprimer=new ArrayList<EGGroup>(); - - - for(int i=0;i<this.getNbEGObject();i++){ - EGObject eg=this.getEGObject(i); - if((this.getEGObject(i) instanceof EGGroup) && !(this.getEGObject(i) instanceof MvProfileCourbeGroup)){ - - EGGroup groupe=(EGGroup) this.getEGObject(i); - ArrayList<EGCourbeChild> listeCourbeToAdd=new ArrayList<EGCourbeChild>(); - MvProfileCourbeGroup nvGroupe=null; - for(int k=0;k<groupe.getChildCount();k++){ + + + for(int i=0;i<this.getNbEGObject();i++){ + EGObject eg=this.getEGObject(i); + if((this.getEGObject(i) instanceof EGGroup) && !(this.getEGObject(i) instanceof MvProfileCourbeGroup)){ + + EGGroup groupe=(EGGroup) this.getEGObject(i); + ArrayList<EGCourbeChild> listeCourbeToAdd=new ArrayList<EGCourbeChild>(); + MvProfileCourbeGroup nvGroupe=null; + for(int k=0;k<groupe.getChildCount();k++){ if(groupe.getCourbeAt(k)!=null){ EGCourbeChild courbe=groupe.getCourbeAt(k); - + if(courbe.getModel()!=null && (courbe.getModel() instanceof MVProfileCourbeModel)){ // List childrens=groupe.getChildren(); MVProfileCourbeModel model=(MVProfileCourbeModel) courbe.getModel(); //-- recherche ou creation du bon groupe correspondant--// - nvGroupe=getGroup(model.variable_,true); + nvGroupe=getGroup(model.variable_,true); //nvGroupe.addEGComponent(courbe); - + listeCourbeToAdd.add(courbe); - - + + }else{ //-- on cree le groupe sans car la courbe n'est pas profil spatioal, elel peut etre socpgen--// - nvGroupe=getGroup(H2dVariableType.SANS,true); + nvGroupe=getGroup(H2dVariableType.SANS,true); //nvGroupe.addEGComponent(courbe); //listeVar.put(groupe, MvProfileFillePanel.createGroupFor(H2dVariableType.SANS)); listeCourbeToAdd.add(courbe); } - - } - + } - - //-- ajout de la liste des children dans le bon groupe --// + + } + + //-- ajout de la liste des children dans le bon groupe --// + if(nvGroupe!=null) nvGroupe.addEGComponent(listeCourbeToAdd); - - //-- ajout du groupe dans la liste a supprimer --// - listeGroupeAsupprimer.add(groupe); - } + + //-- ajout du groupe dans la liste a supprimer --// + listeGroupeAsupprimer.add(groupe); } - - this.fireStructureChanged(); - //-- ensuite on vire tout les eggroup et on les remplies dans les goup --// - for(EGGroup groupe:listeGroupeAsupprimer){ + } + this.fireStructureChanged(); + //-- ensuite on vire tout les eggroup et on les remplies dans les goup --// + for(EGGroup groupe:listeGroupeAsupprimer){ + super.remove(groupe); - - } - - - - } - + + } + + + + } + @Override public EGGrapheModel duplicate(final EGGrapheDuplicator _duplicator) { final MvProfileTreeModel duplic = new MvProfileTreeModel(); @@ -792,7 +900,7 @@ //-- duplication du target --// duplic.target_=this.target_; - + return duplic; } @@ -822,21 +930,22 @@ MvProfileTreeModelPersist dataPersistante=(MvProfileTreeModelPersist) sepcPersitData; //-- remplissage du model avec les datas--// dataPersistante.fillModelWithData(this,Params); -} - - + } + + /** - * Les actions des courbes specifiques: l'ajout de variable. - */ - public List<EbliActionInterface> getSpecificsActionsCurvesOnly(EGGraphe _target,CtuluUI ui) { - List<EbliActionInterface> listeActions=new ArrayList<EbliActionInterface>(); - - - //-- action replay data --// + * Les actions des courbes specifiques: l'ajout de variable. + */ + public List<EbliActionInterface> getSpecificsActionsCurvesOnly(EGGraphe _target,CtuluUI ui) { + List<EbliActionInterface> listeActions=new ArrayList<EbliActionInterface>(); + + if(EbliWidget.AMELIO_LOT_VISIBLE){ + //-- action replay data --// listeActions.add(new EGActionReplayDataCourbe.CourbeOnly(this,this.getSelectedComponent().getModel(),ui)); - return listeActions; - } - + return listeActions; + } + + } \ No newline at end of file Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeModel.java 2009-01-20 19:33:53 UTC (rev 4385) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeModel.java 2009-01-20 19:35:40 UTC (rev 4386) @@ -108,8 +108,9 @@ final EfData data = source_.getData(var_, i); if (data == null) { FuLog.warning("TRP: data is null for " + var_); + + }else super.y_[i] = ptIdx_.getInterpolateValue(getVar(), data, i, source_); - } } } @@ -534,7 +535,7 @@ TrPostCommonImplementation implementation=(TrPostCommonImplementation)impl; //-- on cree une vue 2d a partir du fichier source fourni et on le centre sur le point interpol\xE9 ou non --// - TrReplayCurvesData.getInstance().constructEvolTemporelleOrigine(this, implementation); + TrReplayCurvesData.getInstance().getEvolTemporelleOrigine(this, implementation); } @@ -546,7 +547,7 @@ TrPostCommonImplementation implementation=(TrPostCommonImplementation)impl; //-- on cree une vue 2d a partir du fichier source fourni et on le centre sur le point interpol\xE9 ou non --// - TrReplayCurvesData.getInstance().constructEvolTemporelleReplayData((TrPostCourbeTreeModel)model, this, implementation); + TrReplayCurvesData.getInstance().getEvolTemporelleReplayData((TrPostCourbeTreeModel)model, this, implementation); } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeTreeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeTreeModel.java 2009-01-20 19:33:53 UTC (rev 4385) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeTreeModel.java 2009-01-20 19:35:40 UTC (rev 4386) @@ -25,6 +25,7 @@ import org.fudaa.ctulu.CtuluCommandContainer; import org.fudaa.ctulu.CtuluCommandManager; import org.fudaa.ctulu.CtuluLibArray; +import org.fudaa.ctulu.CtuluRange; import org.fudaa.ctulu.CtuluUI; import org.fudaa.ctulu.ProgressionInterface; import org.fudaa.ctulu.ProgressionUpdater; @@ -45,6 +46,7 @@ import org.fudaa.ebli.courbe.EGGroup; import org.fudaa.ebli.courbe.EGModel; import org.fudaa.ebli.geometrie.GrPoint; +import org.fudaa.ebli.visuallibrary.EbliWidget; import org.fudaa.fudaa.commun.courbe.FudaaCourbeModel; import org.fudaa.fudaa.commun.courbe.ScopeCourbeModel; import org.fudaa.fudaa.commun.courbe.FudaaCourbeImporter.Target; @@ -59,1029 +61,1152 @@ public class TrPostCourbeTreeModel extends EGGrapheTreeModel implements TrPostTimeContentListener, Target { - FudaaCommonImplementation impl_; + FudaaCommonImplementation impl_; - Set intepolPt_; + Set intepolPt_; -// private final boolean isAllTimeStep_; + // private final boolean isAllTimeStep_; - int[] objIdx_; + int[] objIdx_; - // private int[] tidx_; + // private int[] tidx_; - TrPostProjet projet_; + TrPostProjet projet_; - protected EGGroup updating_; + protected EGGroup updating_; - final Map varGroup_; + final Map varGroup_; - Set varSupported_; + Set varSupported_; - /** - * NE PAS UTILISER POUR L'INSTANT SAUVEGARDE. - */ - public TrPostCourbeTreeModel() { - // src_ = null; - varGroup_ = new HashMap(); - impl_ = null; -// isAllTimeStep_ = true; - } + /** + * NE PAS UTILISER POUR L'INSTANT SAUVEGARDE. + */ + public TrPostCourbeTreeModel() { + // src_ = null; + varGroup_ = new HashMap(); + impl_ = null; + // isAllTimeStep_ = true; + } - // les sources devront etre affectees au CourbeModel - // final TrPostSource src_; + // les sources devront etre affectees au CourbeModel + // final TrPostSource src_; - // double[] timeSteps_; + // double[] timeSteps_; - public TrPostCourbeTreeModel(final FudaaCommonImplementation _impl, final TrPostSource _src, final int[] _timeIdx, - final TrPostInterpolatePoint _interpol, final H2dVariableType[] _vars, final TrPostProjet _projet) { - this(_vars, _projet); - intepolPt_.add(_interpol); - } + public TrPostCourbeTreeModel(final FudaaCommonImplementation _impl, final TrPostSource _src, final int[] _timeIdx, + final TrPostInterpolatePoint _interpol, final H2dVariableType[] _vars, final TrPostProjet _projet) { + this(_vars, _projet); + intepolPt_.add(_interpol); + } - /** - * Constructeur permettant de creer un treemodel avec plusieurs point interpol\xE9s - * - * @param _impl - * @param _src - * @param _timeIdx - * @param _interpol : le tableau de points interpoles - * @param _vars - * @param _projet - * @author Adrien Hadoux - */ - public TrPostCourbeTreeModel(final FudaaCommonImplementation _impl, final TrPostSource _src, final int[] _timeIdx, - final TrPostInterpolatePoint[] _interpol, final H2dVariableType[] _vars, final TrPostProjet _projet) { - this(_vars, _projet); + /** + * Constructeur permettant de creer un treemodel avec plusieurs point interpol\xE9s + * + * @param _impl + * @param _src + * @param _timeIdx + * @param _interpol : le tableau de points interpoles + * @param _vars + * @param _projet + * @author Adrien Hadoux + */ + public TrPostCourbeTreeModel(final FudaaCommonImplementation _impl, final TrPostSource _src, final int[] _timeIdx, + final TrPostInterpolatePoint[] _interpol, final H2dVariableType[] _vars, final TrPostProjet _projet) { + this(_vars, _projet); - for (int i = 0; i < _interpol.length; i++) - intepolPt_.add(_interpol[i]); - } + for (int i = 0; i < _interpol.length; i++) + intepolPt_.add(_interpol[i]); + } - /** - * @param _src - */ - public TrPostCourbeTreeModel(final H2dVariableType[] _vars, final TrPostProjet _projet) { - // src_ = _src; - varGroup_ = new HashMap(); - // tidx_ = _timeIdx; - // Arrays.sort(tidx_); - objIdx_ = FuEmptyArrays.INT0; - intepolPt_ = new HashSet(); - varSupported_ = new HashSet(Arrays.asList(_vars)); - projet_ = _projet; - impl_ = projet_.getImpl(); -// isAllTimeStep_ = true;// tidx_.length == _src.getNbTimeStep(); + /** + * @param _src + */ + public TrPostCourbeTreeModel(final H2dVariableType[] _vars, final TrPostProjet _projet) { + // src_ = _src; + varGroup_ = new HashMap(); + // tidx_ = _timeIdx; + // Arrays.sort(tidx_); + objIdx_ = FuEmptyArrays.INT0; + intepolPt_ = new HashSet(); + varSupported_ = new HashSet(Arrays.asList(_vars)); + projet_ = _projet; + impl_ = projet_.getImpl(); + // isAllTimeStep_ = true;// tidx_.length == _src.getNbTimeStep(); - } + } - public TrPostCourbeTreeModel(final int[] _objIdx, final H2dVariableType[] _vars, final TrPostProjet _projet) { - this(/* _src , _timeIdx */_vars, _projet); - objIdx_ = _objIdx; - Arrays.sort(objIdx_); - } + public TrPostCourbeTreeModel(final int[] _objIdx, final H2dVariableType[] _vars, final TrPostProjet _projet) { + this(/* _src , _timeIdx */_vars, _projet); + objIdx_ = _objIdx; + Arrays.sort(objIdx_); + } - protected void addAllCourbes(final TrPostSource _src, final ProgressionInterface _prog, - final CtuluCommandContainer _cmd) { - // buildTimeSteps(); - startUpdating(); - final List modelToUpdate = new ArrayList(); - final List courbeToMem = _cmd == null ? null : new ArrayList(); - final List groupToMem = _cmd == null ? null : new ArrayList(); - // double[] timesInSec = _src.getTime().getTimeListModel().getTimesInSec(); - for (final Iterator it = varSupported_.iterator(); it.hasNext();) { - final H2dVariableType t = (H2dVariableType) it.next(); - final EGGroup g = getGroupFor(t); - final int nb = objIdx_.length; - for (int i = 0; i < nb; i++) { - final int idx = objIdx_[i]; - final TrPostCourbeModel c = containsCourbeFor(t, g, idx); - if (c == null) { + protected void addAllCourbes(final TrPostSource _src, final ProgressionInterface _prog, + final CtuluCommandContainer _cmd) { + // buildTimeSteps(); + startUpdating(); + final List modelToUpdate = new ArrayList(); + final List courbeToMem = _cmd == null ? null : new ArrayList(); + final List groupToMem = _cmd == null ? null : new ArrayList(); + // double[] timesInSec = _src.getTime().getTimeListModel().getTimesInSec(); + for (final Iterator it = varSupported_.iterator(); it.hasNext();) { + final H2dVariableType t = (H2dVariableType) it.next(); + final EGGroup g = getGroupFor(t); + final int nb = objIdx_.length; + for (int i = 0; i < nb; i++) { + final int idx = objIdx_[i]; + final TrPostCourbeModel c = containsCourbeFor(t, g, idx); + if (c == null) { - final EGCourbeChild courbe = TrPostCourbeModel.buildCourbeModel(t, idx, g, _src); - if (courbeToMem != null) { - courbeToMem.add(courbe); - groupToMem.add(g); - } - modelToUpdate.add(courbe.getModel()); - } else if (c.isYNull()) { - modelToUpdate.add(c); - } - } - for (final Iterator iter = intepolPt_.iterator(); iter.hasNext();) { - final TrPostInterpolatePoint element = (TrPostInterpolatePoint) iter.next(); - final TrPostCourbeModel c = containsCourbeFor(t, g, element); - if (c == null) { - final EGCourbeChild courbe = TrPostCourbeModel.buildCourbeModel(t, element, g, _src); - if (courbeToMem != null) { - courbeToMem.add(courbe); - groupToMem.add(g); - } - modelToUpdate.add(courbe.getModel()); - } else if (c.isYNull()) { - modelToUpdate.add(c); - } - } - } - if (courbeToMem != null && _cmd != null) { - _cmd.addCmd(new CommandAddCourbesMulti((EGCourbeChild[]) courbeToMem - .toArray(new EGCourbeChild[courbeToMem.size()]), (EGGroup[]) groupToMem - .toArray(new EGGroup[groupToMem.size()]))); - } - updateCurves((TrPostCourbeModel[]) modelToUpdate.toArray(new TrPostCourbeModel[modelToUpdate.size()]), _prog); - reupdateGroup(); + final EGCourbeChild courbe = TrPostCourbeModel.buildCourbeModel(t, idx, g, _src); + if (courbeToMem != null) { + courbeToMem.add(courbe); + groupToMem.add(g); + } + modelToUpdate.add(courbe.getModel()); + } else if (c.isYNull()) { + modelToUpdate.add(c); + } + } + for (final Iterator iter = intepolPt_.iterator(); iter.hasNext();) { + final TrPostInterpolatePoint element = (TrPostInterpolatePoint) iter.next(); + final TrPostCourbeModel c = containsCourbeFor(t, g, element); + if (c == null) { + final EGCourbeChild courbe = TrPostCourbeModel.buildCourbeModel(t, element, g, _src); + if (courbeToMem != null) { + courbeToMem.add(courbe); + groupToMem.add(g); + } + modelToUpdate.add(courbe.getModel()); + } else if (c.isYNull()) { + modelToUpdate.add(c); + } + } + } + if (courbeToMem != null && _cmd != null) { + _cmd.addCmd(new CommandAddCourbesMulti((EGCourbeChild[]) courbeToMem + .toArray(new EGCourbeChild[courbeToMem.size()]), (EGGroup[]) groupToMem + .toArray(new EGGroup[groupToMem.size()]))); + } + updateCurves((TrPostCourbeModel[]) modelToUpdate.toArray(new TrPostCourbeModel[modelToUpdate.size()]), _prog); + reupdateGroup(); - } + } - /** - * Refonte de la methode addpoints pour gerer les fusions de graphes. fusionne les variables des 2 graphes model afin - * de recuperer toutes les variabels. - * - * @author Adrien Hadoux - * @param _idxToAdd - * @param _cmd - * @param _prog - * @param variablesGrapheMerge - */ - public void addPoints(final TrPostSource _src, final int[] _idxToAdd, final CtuluCommandContainer _cmd, - final ProgressionInterface _prog, final Set variablesGrapheMerge) { - // pour le undo - final int[] old = CtuluLibArray.copy(objIdx_); - final TIntHashSet hasset = new TIntHashSet(objIdx_); - hasset.addAll(_idxToAdd); - objIdx_ = hasset.toArray(); - Arrays.sort(objIdx_); - Arrays.sort(_idxToAdd); - // buildTimeSteps(); - startUpdating(); - final List modelToUpdate = new ArrayList(); - final List courbeToMem = _cmd == null ? null : new ArrayList(); - final List groupToMem = _cmd == null ? null : new ArrayList(); + /** + * Refonte de la methode addpoints pour gerer les fusions de graphes. fusionne les variables des 2 graphes model afin + * de recuperer toutes les variabels. + * + * @author Adrien Hadoux + * @param _idxToAdd + * @param _cmd + * @param _prog + * @param variablesGrapheMerge + */ + public void addPoints(final TrPostSource _src, final int[] _idxToAdd, final CtuluCommandContainer _cmd, + final ProgressionInterface _prog, final Set variablesGrapheMerge) { + // pour le undo + final int[] old = CtuluLibArray.copy(objIdx_); + final TIntHashSet hasset = new TIntHashSet(objIdx_); + hasset.addAll(_idxToAdd); + objIdx_ = hasset.toArray(); + Arrays.sort(objIdx_); + Arrays.sort(_idxToAdd); + // buildTimeSteps(); + startUpdating(); + final List modelToUpdate = new ArrayList(); + final List courbeToMem = _cmd == null ? null : new ArrayList(); + final List groupToMem = _cmd == null ? null : new ArrayList(); - // -- completer les variables du graphe avec celles du graphe merg\xE9 --// - if (variablesGrapheMerge != null) { - for (final Iterator it = variablesGrapheMerge.iterator(); it.hasNext();) { - final H2dVariableType t = (H2dVariableType) it.next(); - varSupported_.add(t); - } - } + // -- completer les variables du graphe avec celles du graphe merg\xE9 --// + if (variablesGrapheMerge != null) { + for (final Iterator it = variablesGrapheMerge.iterator(); it.hasNext();) { + final H2dVariableType t = (H2dVariableType) it.next(); + varSupported_.add(t); + } + } - for (final Iterator it = varSupported_.iterator(); it.hasNext();) { - final H2dVariableType t = (H2dVariableType) it.next(); - final EGGroup g = getGroupFor(t); - final int nb = _idxToAdd.length; - for (int i = 0; i < nb; i++) { - final int idx = _idxToAdd[i]; - final TrPostCourbeModel c = containsCourbeFor(t, g, idx); - if (c == null) { - final EGCourbeChild courbe = TrPostCourbeModel.buildCourbeModel(t, idx, g, _src); - if (courbeToMem != null) { - courbeToMem.add(courbe); - groupToMem.add(g); - } - modelToUpdate.add(courbe.getModel()); - } else if (c.isYNull()) { - modelToUpdate.add(c); - } - } - } - if (courbeToMem != null && _cmd != null) { - _cmd.addCmd(new CommandAddCourbesMulti((EGCourbeChild[]) courbeToMem - .toArray(new EGCourbeChild[courbeToMem.size()]), (EGGroup[]) groupToMem - .toArray(new EGGroup[groupToMem.size()])) { + for (final Iterator it = varSupported_.iterator(); it.hasNext();) { + final H2dVariableType t = (H2dVariableType) it.next(); + final EGGroup g = getGroupFor(t); + final int nb = _idxToAdd.length; + for (int i = 0; i < nb; i++) { + final int idx = _idxToAdd[i]; + final TrPostCourbeModel c = containsCourbeFor(t, g, idx); + if (c == null) { + final EGCourbeChild courbe = TrPostCourbeModel.buildCourbeModel(t, idx, g, _src); + if (courbeToMem != null) { + courbeToMem.add(courbe); + groupToMem.add(g); + } + modelToUpdate.add(courbe.getModel()); + } else if (c.isYNull()) { + modelToUpdate.add(c); + } + } + } + if (courbeToMem != null && _cmd != null) { + _cmd.addCmd(new CommandAddCourbesMulti((EGCourbeChild[]) courbeToMem + .toArray(new EGCourbeChild[courbeToMem.size()]), (EGGroup[]) groupToMem + .toArray(new EGGroup[groupToMem.size()])) { - @Override - public void redo() { - super.redo(); - final TIntHashSet hassetRedo = new TIntHashSet(objIdx_); - hassetRedo.addAll(_idxToAdd); - objIdx_ = hassetRedo.toArray(); - Arrays.sort(objIdx_); - reupdateGroup(); - } + @Override + public void redo() { + super.redo(); + final TIntHashSet hassetRedo = new TIntHashSet(objIdx_); + hassetRedo.addAll(_idxToAdd); + objIdx_ = hassetRedo.toArray(); + Arrays.sort(objIdx_); + reupdateGroup(); + } - @Override - public void undo() { - super.undo(); - objIdx_ = old; - reupdateGroup(); - } - }); - } - updateCurves((TrPostCourbeModel[]) modelToUpdate.toArray(new TrPostCourbeModel[modelToUpdate.size()]), _prog); - reupdateGroup(); + @Override + public void undo() { + super.undo(); + objIdx_ = old; + reupdateGroup(); + } + }); + } + updateCurves((TrPostCourbeModel[]) modelToUpdate.toArray(new TrPostCourbeModel[modelToUpdate.size()]), _prog); + reupdateGroup(); - } + } - /** - * Refonte de la methode addpoints pour gerer les fusions de graphes. fusionne les variables des 2 graphes model afin - * de recuperer toutes les variabels. - * - * @author Adrien Hadoux - */ - public void addPoints(final TrPostSource _src, final TrPostInterpolatePoint _idxToAdd, - final CtuluCommandContainer _cmd, final ProgressionInterface _prog, final Set variablesGrapheMerge) { - startUpdating(); - // pour le undo - final List modelToUpdate = new ArrayList(); - final List courbeToMem = _cmd == null ? null : new ArrayList(); - final List groupToMem = _cmd == null ? null : new ArrayList(); - this.intepolPt_.add(_idxToAdd); - // -- completer les variables du graphe avec celles du graphe merg\xE9 --// - if (variablesGrapheMerge != null) { - for (final Iterator it = variablesGrapheMerge.iterator(); it.hasNext();) { - final H2dVariableType t = (H2dVariableType) it.next(); - varSupported_.add(t); - } - } - for (final Iterator it = varSupported_.iterator(); it.hasNext();) { - final H2dVariableType t = (H2dVariableType) it.next(); - final EGGroup g = getGroupFor(t); - final TrPostCourbeModel c = containsCourbeFor(t, g, _idxToAdd); - if (c == null) { - final EGCourbeChild courbe = TrPostCourbeModel.buildCourbeModel(t, _idxToAdd, g, _src); - if (courbeToMem != null) { - courbeToMem.add(courbe); - groupToMem.add(g); - } - modelToUpdate.add(courbe.getModel()); - } else if (c.isYNull()) { - modelToUpdate.add(c); - } - } - if (courbeToMem != null && _cmd != null) { - _cmd.addCmd(new CommandAddCourbesMulti((EGCourbeChild[]) courbeToMem - .toArray(new EGCourbeChild[courbeToMem.size()]), (EGGroup[]) groupToMem - .toArray(new EGGroup[groupToMem.size()])) { + /** + * Rejoue les donn\xE9es du point avec les nouvelles infos. + * Cree syst\xE9matiquement une nouvelle courbe avec le mod\xE8le qui convient. + * Dans le cas ou ecraser est \xE0 true, on supprime le modele pass\xE9 en paramtere. + * Version r\xE9serv\xE9s aux points r\xE9els + * @param _model + * @param _src + * @param _idxToAdd + * @param _cmd + * @param _prog + * @param newVariable + * @param ecraser + */ + public void replayPoints(TrPostCourbeModel _model,final TrPostSource _src, final int _idxToAdd, final CtuluCommandContainer _cmd, + final ProgressionInterface _prog, H2dVariableType newVariable, boolean ecraser) { - @Override - public void redo() { - super.redo(); - intepolPt_.add(_idxToAdd); - reupdateGroup(); - } + //-- ajout de la variable --// + varSupported_.add(newVariable); + final EGGroup g = getGroupFor(newVariable); + final TrPostCourbeModel c = containsCourbeFor(newVariable, g, _idxToAdd); + EGCourbeChild courbe = null; + if (c == null) { + courbe = TrPostCourbeModel.buildCourbeModel(newVariable, _idxToAdd, g, _src); + } - @Override - public void undo() { - super.undo(); - intepolPt_.remove(_idxToAdd); - reupdateGroup(); - } - }); - } - updateCurves((TrPostCourbeModel[]) modelToUpdate.toArray(new TrPostCourbeModel[modelToUpdate.size()]), _prog); - reupdateGroup(); - } + - /** - * Ajoute une variable par rapport a une courbe evolution temporelle selectionnee. - * La variable a ete choisie ainsi que le fichier source. - * @param modelCourbe - * @param _src - * @param _var - * @param _prog - * @param _cmd - */ - protected void addVariables(TrPostCourbeModel modelCourbe,final TrPostSource _src, final List _var, final ProgressionInterface _prog, - final CtuluCommandContainer _cmd) { - // buildTimeSteps(); - - - //-- Attention cas particulier, il faut conserver le groupe sans variable pour le rajouter a la fin --// -// EGGroup groupeSansVariables =null; -// if(existGroupFor(H2dVariableType.SANS)) -// groupeSansVariables=getGroupFor(H2dVariableType.SANS); - - startUpdating(); - - if(varSupported_==null) - varSupported_= new HashSet(); - - - // fusion graphes - _var.removeAll(varSupported_); - //final int nbPt = objIdx_.length; - final double[] timesInSec = _src.getTime().getTimeListModel().getTimesInSec(); - final TrPostCourbeModel[] model = new TrPostCourbeModel[_var.size()];//_var.size() * (nbPt + intepolPt_.size())]; - int idx = 0; - final List courbeToMem = _cmd == null ? null : new ArrayList(); - final List groupToMem = _cmd == null ? null : new ArrayList(); - for (int i = 0; i < _var.size(); i++) { - final H2dVariableType var = (H2dVariableType) _var.get(i); - final EGGroup g = getGroupFor(var); - // for (int idxPt = 0; idxPt < nbPt; idxPt++) { - - //-- cas reel --// - if(modelCourbe instanceof TrPostCourbeModel.Node){ - final EGCourbeChild c = TrPostCourbeModel.buildCourbeModel(var, ((Integer)modelCourbe.getSelectionPoint()).intValue(), g, _src); - courbeToMem.add(c); - groupToMem.add(g); - model[idx++] = (TrPostCourbeModel) c.getModel(); - } - else{ - //for (final Iterator iter = intepolPt_.iterator(); iter.hasNext();) { - //-- cas point interpol\xE9 --// - - final TrPostInterpolatePoint element = (TrPostInterpolatePoint)modelCourbe.getSelectionPoint(); - final EGCourbeChild c = TrPostCourbeModel.buildCourbeModel(var, element, g, _src); - courbeToMem.add(c); - groupToMem.add(g); - model[idx++] = (TrPostCourbeModel) c.getModel(); - } - } - updateCurves(model, _prog); - varSupported_.addAll(_var); - reupdateCourbes(); - if (courbeToMem != null && _cmd != null) { - final CtuluCommandComposite cmp = new CtuluCommandComposite() { + TrPostCourbeModel[] listeUpdate=new TrPostCourbeModel[1]; + listeUpdate[0]=((TrPostCourbeModel)courbe.getModel()); + updateCurves(listeUpdate, _prog); + + //-- on reajuste les y --// + CtuluRange range=new CtuluRange(courbe.getModel().getYMin(),courbe.getModel().getYMax()); + g.ajusteY(range); + // reupdateGroup(); + + if(ecraser){ + //-- il faut supprimer le modele initial --// + this.removeModele(_model,_cmd); - @Override - protected void actionToDoAfterUndoOrRedo() { - reupdateGroup(); - }; + } + + fireStructureChanged(); + fireAxeAspectChanged(courbe.getAxeY()); + } - @Override - protected boolean isActionToDoAfterUndoOrRedo() { - return true; - }; - }; - cmp.addCmd(new CommandAddCourbesMulti((EGCourbeChild[]) courbeToMem - .toArray(new EGCourbeChild[courbeToMem.size()]), (EGGroup[]) groupToMem - .toArray(new EGGroup[groupToMem.size()]))); - cmp.addCmd(new CtuluCommand() { + /** + * Rejoue les donn\xE9es du point avec les nouvelles infos. + * Cree syst\xE9matiquement une nouvelle courbe avec le mod\xE8le qui convient. + * Dans le cas ou ecraser est \xE0 true, on supprime le modele pass\xE9 en paramtere. + * Version r\xE9serv\xE9s aux points r\xE9els + * @param _model + * @param _src + * @param _idxToAdd + * @param _cmd + * @param _prog + * @param newVariable + * @param ecraser + */ + public void replayPoints(TrPostCourbeModel _model,final TrPostSource _src, final TrPostInterpolatePoint _idxToAdd, final CtuluCommandContainer _cmd, + final ProgressionInterface _prog, H2dVariableType newVariable, boolean ecraser) { - public void redo() { - varSupported_.addAll(_var); - } + //-- ajout de la variable --// + varSupported_.add(newVariable); + final EGGroup g = getGroupFor(newVariable); + final TrPostCourbeModel c = containsCourbeFor(newVariable, g, _idxToAdd); + EGCourbeChild courbe = null; + if (c == null) { + courbe = TrPostCourbeModel.buildCourbeModel(newVariable, _idxToAdd, g, _src); + } - public void undo() { - varSupported_.removeAll(_var); - } - }); + - _cmd.addCmd(cmp); - } - - - //-- on ajoute de le groupe sans variable si il existait avant les modif: --// -// if(groupeSansVariables!=null){ -// add(groupeSansVariables); -// fireStructureChanged(); -// } + TrPostCourbeModel[] listeUpdate=new TrPostCourbeModel[1]; + listeUpdate[0]=((TrPostCourbeModel)courbe.getModel()); + updateCurves(listeUpdate, _prog); + // reupdateGroup(); + + if(ecraser){ + //-- il faut supprimer le modele initial --// + this.removeModele(_model,_cmd); - } + } + fireStructureChanged(); + fireAxeAspectChanged(courbe.getAxeY()); + + + } - - - - private void buildUpdating() { - if (updating_ == null) { - updating_ = new EGGroup(); - updating_.setTitle(TrResource.getS("Mise \xE0 jour")); - } - } + /** + * Methode qui supprime la courbe pour son modele du profil spatial. + * Supprime \xE9galement le groupe de variable si ce dernier ne contient pas d'autres courbes. + * @param model + * @param mng + */ + public void removeModele(TrPostCourbeModel model,CtuluCommandContainer mng){ - @Override - public boolean canDeleteCourbes() { - return true; - } + //-- on recupere le groupe du modele --// + EGGroup group = (EGGroup) varGroup_.get(model.var_); + EGCourbeChild[] liste=new EGCourbeChild[1]; + boolean trouve=false; + for (int i = group.getChildCount() - 1;!trouve && i >= 0; i--) { + final TrPostCourbeModel res = (TrPostCourbeModel) group.getCourbeAt(i).getModel(); + if (res==model) { + liste[0]=group.getCourbeAt(i); + trouve=true; + } + } + if(trouve) + removeCurves(liste,mng ); - protected TrPostCourbeModel containsCourbeFor(final H2dVariableType _t, final EGGroup _g, final int _idx) { - for (int i = _g.getChildCount() - 1; i >= 0; i--) { - final TrPostCourbeModel res = (TrPostCourbeModel) _g.getCourbeAt(i).getModel(); - if (_t == res.getVar() && res.isCourbeForObject(_idx)) { return res; } - } - return null; - } + //-- test si le groupe ne contient rien, on le degage --// + if(group.getEGChilds()==null || group.getEGChilds().length==0){ + this.remove(group); + this.varGroup_.remove(model.var_); + } + } - protected TrPostCourbeModel containsCourbeFor(final H2dVariableType _t, final EGGroup _g, - final TrPostInterpolatePoint _idx) { - for (int i = _g.getChildCount() - 1; i >= 0; i--) { - final TrPostCourbeModel res = (TrPostCourbeModel) _g.getCourbeAt(i).getModel(); - if (_t == res.getVar() && res.isCourbeForInterpolation(_idx)) { return res; } - } - return null; - } + /** + * Refonte de la methode addpoints pour gerer les fusions de graphes. fusionne les variables des 2 graphes model afin + * de recuperer toutes les variabels. + * + * @author Adrien Hadoux + */ + public void addPoints(final TrPostSource _src, final TrPostInterpolatePoint _idxToAdd, + final CtuluCommandContainer _cmd, final ProgressionInterface _prog, final Set variablesGrapheMerge) { + startUpdating(); + // pour le undo + final List modelToUpdate = new ArrayList(); + final List courbeToMem = _cmd == null ? null : new ArrayList(); + final List groupToMem = _cmd == null ? null : new ArrayList(); + this.intepolPt_.add(_idxToAdd); - /** - * Il n'y a rien a faire. - */ - public void dataAdded(final boolean _isFleche) {} + // -- completer les variables du graphe avec celles du graphe merg\xE9 --// + if (variablesGrapheMerge != null) { + for (final Iterator it = variablesGrapheMerge.iterator(); it.hasNext();) { + final H2dVariableType t = (H2dVariableType) it.next(); + varSupported_.add(t); + } + } - public void dataChanged(final H2dVariableType _old, final H2dVariableType _new, final boolean _contentChanged, - final boolean _isFleche, final Set _varsUsing, final ProgressionInterface _prog) { - if (_isFleche) { return; } - varSupported_.remove(_old); - varSupported_.add(_new); - // si le contenu n'est pas modifie, il faut juste changer les pointeurs des variables - if (_contentChanged || _old == _new) { - final EGCourbe[] cs = getCourbes(); - if (cs == null) { return; } - // rebuild a true si on doit reconstruire le tout - final List modelToUpdate = new ArrayList(); - for (int i = cs.length - 1; i >= 0; i--) { - final TrPostCourbeModel model = (TrPostCourbeModel) cs[i].getModel(); - if (model.getVar() == _old) { - model.setY(null); - model.setVar(_new); - modelToUpdate.add(model); - } else if (_varsUsing != null && _varsUsing.contains(model.getVar())) { - model.setY(null); - modelToUpdate.add(model); - startUpdating(); - } + for (final Iterator it = varSupported_.iterator(); it.hasNext();) { + final H2dVariableType t = (H2dVariableType) it.next(); + final EGGroup g = getGroupFor(t); + final TrPostCourbeModel c = containsCourbeFor(t, g, _idxToAdd); + if (c == null) { + final EGCourbeChild courbe = TrPostCourbeModel.buildCourbeModel(t, _idxToAdd, g, _src); + if (courbeToMem != null) { + courbeToMem.add(courbe); + groupToMem.add(g); + } + modelToUpdate.add(courbe.getModel()); + } else if (c.isYNull()) { + modelToUpdate.add(c); + } + } + if (courbeToMem != null && _cmd != null) { + _cmd.addCmd(new CommandAddCourbesMulti((EGCourbeChild[]) courbeToMem + .toArray(new EGCourbeChild[courbeToMem.size()]), (EGGroup[]) groupToMem + .toArray(new EGGroup[groupToMem.size()])) { - } - // mise a jour des modeles dans un thread s\xE9par\xE9. - if (modelToUpdate.size() > 0) { + @Override + public void redo() { + super.redo(); + intepolPt_.add(_idxToAdd); + reupdateGroup(); + } - updateCurves((TrPostCourbeModel[]) modelToUpdate.toArray(new TrPostCourbeModel[modelToUpdate.size()]), _prog); - reupdateGroup(); - } - } else { - final ArrayList crbUsingOld = new ArrayList(); - getCourbeFor(_old, crbUsingOld); - for (final Iterator iter = crbUsingOld.iterator(); iter.hasNext();) { - final TrPostCourbeModel model = (TrPostCourbeModel) ((EGCourbe) iter.next()).getModel(); - // on change le pointeur - model.setVar(_new); - } - } - } + @Override + public void undo() { + super.undo(); + intepolPt_.remove(_idxToAdd); + reupdateGroup(); + } + }); + } + updateCurves((TrPostCourbeModel[]) modelToUpdate.toArray(new TrPostCourbeModel[modelToUpdate.size()]), _prog); + reupdateGroup(); - // protected void buildTimeSteps() { - // if (timeSteps_ == null) { - // timeSteps_ = new double[this.src_.getNbTimeStep()/* - // * tidx_.length - // */]; - // // mise a jour des pas de temps - // for (int i = this.src_.getNbTimeStep() - 1; i >= 0; i--) { - // // timeSteps_[i] = src_.getTimeStep(tidx_[i]); - // timeSteps_[i] = src_.getTimeStep(i); - // } - // } - // } + } - public void dataRemoved(final H2dVariableType[] _vars, final boolean _isFleche) { - if (_isFleche || _vars == null) { return; } - varSupported_.removeAll(Arrays.asList(_vars)); - final List courbeToRemove = new ArrayList(); - for (int i = _vars.length - 1; i >= 0; i--) { - getCourbeFor(_vars[i], courbeToRemove); - } - removeCurves((EGCourbeChild[]) courbeToRemove.toArray(new EGCourbeChild[courbeToRemove.size()]), null); + /** + * Ajoute une variable par rapport a une courbe evolution temporelle selectionnee. + * La variable a ete choisie ainsi que le fichier source. + * @param modelCourbe + * @param _src + * @param _var + * @param _prog + * @param _cmd + */ + protected void addVariables(TrPostCourbeModel modelCourbe,final TrPostSource _src, final List _var, final ProgressionInterface _prog, + final CtuluCommandContainer _cmd) { + // buildTimeSteps(); - } - @Override - protected EGCourbeChild duplicateCourbe(final EGCourbeChild _c) { - return null; - } + //-- Attention cas particulier, il faut conserver le groupe sans variable pour le rajouter a la fin --// + // EGGroup groupeSansVariables =null; + // if(existGroupFor(H2dVariableType.SANS)) + // groupeSansVariables=getGroupFor(H2dVariableType.SANS); - /** - * OVERIDE. methode qui demande a l user de choisir sa courbe puis genere une copie avec la source en cours. - * - * @param _child - * @return - */ - @Override - protected EGCourbeChild duplicateWithChooseSrc(final EGCourbeChild _child) { + startUpdating(); - // -- mise en place du chooser des projets sources disponibles --// + if(varSupported_==null) + varSupported_= new HashSet(); - // -- recuperation du source voulu --// - // -- recuperation de la liste des src sous forme de liste --// - final String[] values = formattageDonnees(); - // -- ouverture du chooser --// - final BuDialogChoice chooser = new BuDialogChoice(projet_.impl_.getApp(), projet_.impl_.getInformationsSoftware(), - TrResource.getS("Cr\xE9ation d'un calque"), TrResource.getS("S\xE9lectionnez le jeux de donn\xE9es "), values); + // fusion graphes + _var.removeAll(varSupported_); + //final int nbPt = objIdx_.length; + final double[] timesInSec = _src.getTime().getTimeListModel().getTimesInSec(); + final TrPostCourbeModel[] model = new TrPostCourbeModel[_var.size()];//_var.size() * (nbPt + intepolPt_.size())]; + int idx = 0; + final List courbeToMem = _cmd == null ? null : new ArrayList(); + final List groupToMem = _cmd == null ? null : new ArrayList(); + for (int i = 0; i < _var.size(); i++) { + final H2dVariableType var = (H2dVariableType) _var.get(i); + final EGGroup g = getGroupFor(var); + // for (int idxPt = 0; idxPt < nbPt; idxPt++) { - final int response = chooser.activate(); + //-- cas reel --// + if(modelCourbe instanceof TrPostCourbeModel.Node){ + final EGCourbeChild c = TrPostCourbeModel.buildCourbeModel(var, ((Integer)modelCourbe.getSelectionPoint()).intValue(), g, _src); + courbeToMem.add(c); + groupToMem.add(g); + model[idx++] = (TrPostCourbeModel) c.getModel(); + } + else{ + //for (final Iterator iter = intepolPt_.iterator(); iter.hasNext();) { + //-- cas point interpol\xE9 --// - if (response == 0) { + final TrPostInterpolatePoint element = (TrPostInterpolatePoint)modelCourbe.getSelectionPoint(); + final EGCourbeChild c = TrPostCourbeModel.buildCourbeModel(var, element, g, _src); + courbeToMem.add(c); + groupToMem.add(g); + model[idx++] = (TrPostCourbeModel) c.getModel(); + } + } + updateCurves(model, _prog); + varSupported_.addAll(_var); + reupdateCourbes(); + if (courbeToMem != null && _cmd != null) { + final CtuluCommandComposite cmp = new CtuluCommandComposite() { - final int indiceSOURCESelect = chooser.getSelectedIndex(); + @Override + protected void actionToDoAfterUndoOrRedo() { + reupdateGroup(); + }; - final TrPostSource srcChoisie = projet_.getSource(indiceSOURCESelect); + @Override + protected boolean isActionToDoAfterUndoOrRedo() { + return true; + }; + }; + cmp.addCmd(new CommandAddCourbesMulti((EGCourbeChild[]) courbeToMem + .toArray(new EGCourbeChild[courbeToMem.size()]), (EGGroup[]) groupToMem + .toArray(new EGGroup[groupToMem.size()]))); + cmp.addCmd(new CtuluCommand() { - EGCourbeChild newCurve = null; + public void redo() { + varSupported_.addAll(_var); + } - // -- recuperation du point interpol\xE9 ou non selon le cas --// - // if(_child.getModel() instanceof TrPostCourbeModel.Node){ + public void undo() { + varSupported_.removeAll(_var); + } - // -- CAS COURBE REELLE --// - final TrPostCourbeModel modelBase = (TrPostCourbeModel) _child.getModel(); - final H2dVariableType var = modelBase.getVar(); + }); - // -- verification si le point du model choisi est reel ou interpol\xE9 - // dans la nouvelle source --// - // if (srcChoisie.getGrid().contientPoint(modelBase.getPtX(), modelBase.getPtY())) { - // - // // -- CREATION DE LA COURBE REELE DEPUIS COURBE REELLE --// - // newCurve = TrPostCourbeModel.buildCourbeModel(var, ((TrPostCourbeModel.Node) modelBase).ptIdx_, _child - // .getParentGroup(), srcChoisie); - // } else { - // -- on recupere le point le plus proche pour interpoler --// - final GrPoint pointAInterpole = new GrPoint(modelBase.getPtX(), modelBase.getPtY(), 0); - final int newPtIdx = TrIsoLayerDefault.sondeSelection(pointAInterpole, srcChoisie.getGrid()); + _cmd.addCmd(cmp); + } - if (newPtIdx != -1) { - final TrPostInterpolatePoint interpolatePoint = new TrPostInterpolatePoint(newPtIdx, pointAInterpole.x_, - pointAInterpole.y_, new GISPrecision()); + //-- on ajoute de le groupe sans variable si il existait avant les modif: --// + // if(groupeSansVariables!=null){ + // add(groupeSansVariables); + // fireStructureChanged(); + // } - // -- CREATION DE LA COURBE INTERPOLEE DEPUIS COURBE REELLE --// - newCurve = TrPostCourbeModel.buildCourbeModel(modelBase.getVar(), interpolatePoint, _child.getParentGroup(), - srcChoisie); - // } - } + } - // -- recuperation des y de son duplicata --// - ((TrPostCourbeModel) newCurve.getModel()).setY(new double[modelBase.getY().length]); - final double[] ds = modelBase.getTime(); - for (int i = 0; i < ds.length; i++) { - ((TrPostCourbeModel) newCurve.getModel()).updateY(); - } - newCurve.setTitle(newCurve.getTitle() + " " - + projet_.formatName(projet_.getSource(indiceSOURCESelect).getTitle())); - return newCurve; - } - return null; - } + private void buildUpdating() { + if (updating_ == null) { + updating_ = new EGGroup(); + updating_.setTitle(TrResource.getS("Mise \xE0 jour")); + } + } - String[] formattageDonnees() { + @Override + public boolean canDeleteCourbes() { + return true; + } - final String[] listeSimul = new String[projet_.listeSrc_.size()]; - int cpt = 0; - for (final Iterator<TrPostSource> it = projet_.listeSrc_.iterator(); it.hasNext();) { + protected TrPostCourbeModel containsCourbeFor(final H2dVariableType _t, final EGGroup _g, final int _idx) { + for (int i = _g.getChildCount() - 1; i >= 0; i--) { + final TrPostCourbeModel res = (TrPostCourbeModel) _g.getCourbeAt(i).getModel(); + if (_t == res.getVar() && res.isCourbeForObject(_idx)) { return res; } + } + return null; + } - final TrPostSource src = it.next(); + protected TrPostCourbeModel containsCourbeFor(final H2dVariableType _t, final EGGroup _g, + final TrPostInterpolatePoint _idx) { + for (int i = _g.getChildCount() - 1; i >= 0; i--) { + final TrPostCourbeModel res = (TrPostCourbeModel) _g.getCourbeAt(i).getModel(); + if (_t == res.getVar() && res.isCourbeForInterpolation(_idx)) { return res; } + } + return null; + } - // --ajout dans la liste des titres --// - listeSimul[cpt++] = projet_.formatInfoSource(src); - } + /** + * Il n'y a rien a faire. + */ + public void dataAdded(final boolean _isFleche) {} - return listeSimul; - } + public void dataChanged(final H2dVariableType _old, final H2dVariableType _new, final boolean _contentChanged, + final boolean _isFleche, final Set _varsUsing, final ProgressionInterface _prog) { + if (_isFleche) { return; } + varSupported_.remove(_old); + varSupported_.add(_new); + // si le contenu n'est pas modifie, il faut juste changer les pointeurs des variables + if (_contentChanged || _old == _new) { + final EGCourbe[] cs = getCourbes(); + if (cs == null) { return; } + // rebuild a true si on doit reconstruire le tout + final List modelToUpdate = new ArrayList(); + for (int i = cs.length - 1; i >= 0; i--) { + final TrPostCourbeModel model = (TrPostCourbeModel) cs[i].getModel(); + if (model.getVar() == _old) { + model.setY(null); + model.setVar(_new); + modelToUpdate.add(model); + } else if (_varsUsing != null && _varsUsing.contains(model.getVar())) { + model.setY(null); + modelToUpdate.add(model); + startUpdating(); + } - /** - * Determine les courbes qui correspondent a la variable et les stocke dans la liste _l. - * - * @param _var - * @param _l contient toutes les courbes qui appartiennent a la variable - */ - void getCourbeFor(final H2dVariableType _var, final List _l) { - final EGGroup g = getGroupFor(_var); - for (int i = g.getChildCount() - 1; i >= 0; i--) { - if (((TrPostCourbeModel) g.getCourbeAt(i).getModel()).getVar() == _var) { - _l.add(g.getCourbeAt(i)); - } - } - } + } + // mise a jour des modeles dans un thread s\xE9par\xE9. + if (modelToUpdate.size() > 0) { - /** - * Recherche ou cree un groupe correspondant a la variable pour eviter les doublons. - * - * @param _t - * @return - */ - public EGGroup getGroupFor(final H2dVariableType _t) { - i... [truncated message content] |
From: <had...@us...> - 2009-01-20 19:33:56
|
Revision: 4385 http://fudaa.svn.sourceforge.net/fudaa/?rev=4385&view=rev Author: hadouxad Date: 2009-01-20 19:33:53 +0000 (Tue, 20 Jan 2009) Log Message: ----------- Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGActionReplayDataCourbe.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGrapheTreeModel.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGSpecificActions.java Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGActionReplayDataCourbe.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGActionReplayDataCourbe.java 2009-01-20 09:46:41 UTC (rev 4384) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGActionReplayDataCourbe.java 2009-01-20 19:33:53 UTC (rev 4385) @@ -67,6 +67,9 @@ modelSelectionne.replayData(treemodel_,new HashMap(),impl_); + //-- on restore les donn\xE9es --// + panelGraphe_.getGraphe().restore(); + panelGraphe_.getGraphe().axeUpdated(); } Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGrapheTreeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGrapheTreeModel.java 2009-01-20 09:46:41 UTC (rev 4384) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGrapheTreeModel.java 2009-01-20 19:33:53 UTC (rev 4385) @@ -998,6 +998,9 @@ } return r.indexOf(_o) > 0; } + + + public void removeCurves(final EGCourbeChild[] _cs, final CtuluCommandContainer _mng) { if (!canDeleteCourbes()) { Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGSpecificActions.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGSpecificActions.java 2009-01-20 09:46:41 UTC (rev 4384) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGSpecificActions.java 2009-01-20 19:33:53 UTC (rev 4385) @@ -22,6 +22,7 @@ import org.fudaa.ebli.commun.EbliActionInterface; import org.fudaa.ebli.commun.EbliLib; import org.fudaa.ebli.ressource.EbliResource; +import org.fudaa.ebli.visuallibrary.EbliWidget; import com.memoire.bu.BuResource; import com.memoire.bu.BuSeparator; @@ -134,13 +135,14 @@ menu_.addMenuItem(EbliResource.EBLI.getString("Courbe classique"), "NUAGE_POINTS", BuResource.BU .getIcon("crystal_oscilloscope"), true, this); + if(EbliWidget.AMELIO_LOT_VISIBLE){ //-- action origine de la courbe. --// menu_.add(new EGActionAfficheOrigineCourbe.CourbeOnly(courbe.getModel(),ui_)); //-- action replay data --// // menu_.add(new EGActionReplayDataCourbe.CourbeOnly(courbe.getModel(),ui_)); + } - if(target_.getModel().getSpecificsActionsCurvesOnly(target_,ui_)!=null) for(EbliActionInterface action:target_.getModel().getSpecificsActionsCurvesOnly(target_,ui_)) menu_.add(action); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2009-01-20 09:46:46
|
Revision: 4384 http://fudaa.svn.sourceforge.net/fudaa/?rev=4384&view=rev Author: emmanuel_martin Date: 2009-01-20 09:46:41 +0000 (Tue, 20 Jan 2009) Log Message: ----------- Changement du comportement du module de gestion des biefs. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerBief.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/Bief.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/BiefSet.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueContainerModules.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueModuleGestionBief.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerBief.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerBief.java 2009-01-19 19:40:40 UTC (rev 4383) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerBief.java 2009-01-20 09:46:41 UTC (rev 4384) @@ -8,15 +8,18 @@ package org.fudaa.fudaa.modeleur.modeleur1d.controller; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import javax.swing.DefaultListSelectionModel; import javax.swing.event.ListSelectionListener; +import org.fudaa.ctulu.CtuluCommandComposite; import org.fudaa.ctulu.CtuluCommandContainer; import org.fudaa.ctulu.CtuluCommandManager; import org.fudaa.ebli.calque.BCalque; import org.fudaa.ebli.calque.ZModeleLigneBrisee; +import org.fudaa.fudaa.commun.FudaaLib; import org.fudaa.fudaa.modeleur.modeleur1d.model.Bief; import org.fudaa.fudaa.modeleur.modeleur1d.model.BiefContainer; import org.fudaa.fudaa.modeleur.modeleur1d.model.BiefContainerAdapter; @@ -139,25 +142,20 @@ } /** - * Supprime le bief selectionn\xE9. + * Supprime les biefs donn\xE9es en param\xE8tre. */ - public void removeSelectedBief(){ - String name=biefSelectionModel_.getSelectedName(); - if(name!=null) - biefSet_.removeBief(name, controller1d_.getCommandManager()); + public void removeBief(int[] _idx){ + Arrays.sort(_idx); + CtuluCommandComposite cmd=new CtuluCommandComposite(FudaaLib.getS("Suppression de biefs")); + for(int i=_idx.length-1;i>=0;i--) + biefSet_.removeBief(biefSet_.getBiefName(_idx[i]), cmd); + getCommandManager().addCmd(cmd.getSimplify()); } /** - * Importation d'un bief. - */ - public void importBief(){ - //TODO - } - - /** * Fusion de deux biefs. */ - public void fusionnerBiefs(){ + public void fusionnerBiefs(int _idxBief1, int _idxBief2){ //TODO } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/Bief.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/Bief.java 2009-01-19 19:40:40 UTC (rev 4383) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/Bief.java 2009-01-20 09:46:41 UTC (rev 4384) @@ -455,7 +455,7 @@ cmd_=_cmd; } public void redo() { - boolean synchroniserEnable=isSynchroniserActived(); + boolean synchroniserEnable=isSynchronizerActived(); if(synchroniserEnable) gisSynchroniser_.disable(); cmd_.redo(); @@ -463,7 +463,7 @@ gisSynchroniser_.enable(); } public void undo() { - boolean synchroniserEnable=isSynchroniserActived(); + boolean synchroniserEnable=isSynchronizerActived(); if(synchroniserEnable) gisSynchroniser_.disable(); cmd_.undo(); @@ -475,7 +475,7 @@ } } CtuluCommandComposite cmd=new CtuluCommandComposite("R\xE9ordonnancement des profils"); - boolean synchroniserEnable=isSynchroniserActived(); + boolean synchroniserEnable=isSynchronizerActived(); if(synchroniserEnable) gisSynchroniser_.disable(); Geometry axeHydraulique=(Geometry)axeHydraulique_.getObject(0); @@ -529,7 +529,7 @@ /** * Retourne vrai si le synchroniser est activ\xE9. */ - public boolean isSynchroniserActived() { + public boolean isSynchronizerActived() { return gisSynchroniser_.isActived(); } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/BiefSet.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/BiefSet.java 2009-01-19 19:40:40 UTC (rev 4383) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/BiefSet.java 2009-01-20 09:46:41 UTC (rev 4384) @@ -23,7 +23,7 @@ * g\xE9om\xE9tries manipul\xE9es dans tout le 1d. * * @author Emmanuel MARTIN - * @version $Id:$ + * @version $Id$ */ public class BiefSet { @@ -103,16 +103,28 @@ class removeBiefCtuluCommand implements CtuluCommand, CtuluNamedCommand { public String nom_; public Bief bief_; - public removeBiefCtuluCommand(String _nom, Bief _bief){nom_=_nom;bief_=_bief;} - public void redo() {removeBief(nom_, null);} - public void undo() {addBief(nom_, bief_, null);} + public boolean isSyn_; + public removeBiefCtuluCommand(String _nom, Bief _bief, boolean _isSyn) { + nom_=_nom;bief_=_bief;isSyn_=_isSyn; + } + public void redo() { + removeBief(nom_, null); + bief_.disableSynchroniser(); + } + public void undo() { + addBief(nom_, bief_, null); + if(isSyn_) + bief_.enableSynchroniser(); + } public String getName() {return FudaaLib.getS("supprimer bief");} }; Bief bief=biefs_.get(_nomBief); + boolean isSynchronise=bief.isSynchronizerActived(); + bief.disableSynchroniser(); biefs_.remove(_nomBief); listNoms_.remove(_nomBief); if(_cmd!=null) - _cmd.addCmd(new removeBiefCtuluCommand(_nomBief, bief)); + _cmd.addCmd(new removeBiefCtuluCommand(_nomBief, bief, isSynchronise)); fireRemovedBief(_nomBief); } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueContainerModules.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueContainerModules.java 2009-01-19 19:40:40 UTC (rev 4383) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueContainerModules.java 2009-01-20 09:46:41 UTC (rev 4384) @@ -9,7 +9,6 @@ import java.awt.Container; -import javax.swing.BoxLayout; import javax.swing.JComponent; import javax.swing.ListModel; import javax.swing.event.ListDataEvent; Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueModuleGestionBief.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueModuleGestionBief.java 2009-01-19 19:40:40 UTC (rev 4383) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueModuleGestionBief.java 2009-01-20 09:46:41 UTC (rev 4384) @@ -10,10 +10,15 @@ import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.List; import javax.swing.JButton; import javax.swing.JScrollPane; import javax.swing.JTable; +import javax.swing.ListSelectionModel; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; import javax.swing.table.DefaultTableModel; import org.fudaa.ctulu.gui.CtuluTable; @@ -21,6 +26,7 @@ import org.fudaa.fudaa.modeleur.modeleur1d.controller.ControllerBief; import org.fudaa.fudaa.modeleur.modeleur1d.model.BiefSet; import org.fudaa.fudaa.modeleur.modeleur1d.model.BiefSetListener; +import org.fudaa.fudaa.modeleur.modeleur1d.model.UtilsProfil1d; import com.memoire.bu.BuBorderLayout; import com.memoire.bu.BuButton; @@ -39,6 +45,10 @@ protected ControllerBief controllerBief_; /** Tableau d'affichage des biefs. */ protected JTable tableBiefs_; + /** Bouton d'ouverture d'un bief. */ + protected BuButton btOuvrir_; + /** bouton de fusion de bief. */ + protected BuButton btFusionner_; public VueModuleGestionBief(ControllerBief _controllerBief){ controllerBief_=_controllerBief; @@ -53,34 +63,71 @@ add(body, BuBorderLayout.CENTER); // Tableau de noms tableBiefs_=new CtuluTable(new TableBiefModel()); - tableBiefs_.setSelectionModel(controllerBief_.getBiefSelectionModel()); body.add(new JScrollPane(tableBiefs_), BuBorderLayout.CENTER); - // Boutons + // Boutons \\ + // Ouvrir Container btContainer=new Container(); btContainer.setLayout(new BuGridLayout(1, 5, 5)); - JButton btOuvrir=new BuButton(FudaaLib.getS("Ouvrir")); - btOuvrir.addActionListener(new ActionListener(){ + btOuvrir_=new BuButton(FudaaLib.getS("Ouvrir")); + btOuvrir_.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { - controllerBief_.importBief(); + controllerBief_.getBiefSelectionModel().setSelectedBief(tableBiefs_.getSelectionModel().getMinSelectionIndex()); } }); - btOuvrir.setEnabled(false); - btContainer.add(btOuvrir); + tableBiefs_.getSelectionModel().addListSelectionListener(new ListSelectionListener() { + public void valueChanged(ListSelectionEvent e) { + ListSelectionModel sel=tableBiefs_.getSelectionModel(); + if(sel.getMaxSelectionIndex()!=sel.getMinSelectionIndex()||sel.getMaxSelectionIndex()==-1) + btOuvrir_.setEnabled(false); + else + btOuvrir_.setEnabled(true); + } + }); + btOuvrir_.setEnabled(false); + btContainer.add(btOuvrir_); + // Supprimer JButton btSupprimer=new BuButton(FudaaLib.getS("supprimer")); btSupprimer.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { - controllerBief_.removeSelectedBief(); + // R\xE9cup\xE9ration des biefs selectionn\xE9s + List<Integer> idxSupp=new ArrayList<Integer>(); + for(int i=tableBiefs_.getModel().getRowCount()-1;i>=0;i--) + if(tableBiefs_.getSelectionModel().isSelectedIndex(i)) + idxSupp.add(i); + int[] idx=new int[idxSupp.size()]; + for(int i=0;i<idx.length;i++) + idx[i]=idxSupp.get(i); + // D\xE9selection si besoin du bief en cours de manipulation + if(UtilsProfil1d.in(controllerBief_.getBiefSelectionModel().getMaxSelectionIndex(), idx)) + controllerBief_.getBiefSelectionModel().clearSelection(); + // Suppression des biefs + controllerBief_.removeBief(idx); } }); btContainer.add(btSupprimer); - JButton btFusionner=new BuButton(FudaaLib.getS("Fusionner")); - btFusionner.addActionListener(new ActionListener(){ + // Fusionner + btFusionner_=new BuButton(FudaaLib.getS("Fusionner")); + btFusionner_.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { - controllerBief_.fusionnerBiefs(); + ListSelectionModel sel=tableBiefs_.getSelectionModel(); + controllerBief_.fusionnerBiefs(sel.getMaxSelectionIndex(), sel.getMinSelectionIndex()); } }); - btFusionner.setEnabled(false); - btContainer.add(btFusionner); + tableBiefs_.getSelectionModel().addListSelectionListener(new ListSelectionListener() { + public void valueChanged(ListSelectionEvent e) { + int nbSel=0; + for(int i=tableBiefs_.getModel().getRowCount();i>=0;i--) + if(tableBiefs_.getSelectionModel().isSelectedIndex(i)) + nbSel++; + if(nbSel!=2) + btFusionner_.setEnabled(false); + else + btFusionner_.setEnabled(true); + } + }); + btFusionner_.setEnabled(false); + btContainer.add(btFusionner_); + // Dupliquer JButton btDupliquer=new BuButton(FudaaLib.getS("Dupliquer")); btDupliquer.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <had...@us...> - 2009-01-19 19:40:46
|
Revision: 4383 http://fudaa.svn.sourceforge.net/fudaa/?rev=4383&view=rev Author: hadouxad Date: 2009-01-19 19:40:40 +0000 (Mon, 19 Jan 2009) Log Message: ----------- am?\195?\169liorations lot 3, am?\195?\169liorations Modified Paths: -------------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZEbliCalquePanelController.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/commun/EbliEditorArrow.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGActionAfficheOrigineCourbe.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGCourbeModelDefault.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGrapheModel.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGrapheSimpleModel.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGrapheTreeModel.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGModel.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGSpecificActions.java branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/graphe/EbliWidgetControllerGraphe.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/FudaaCourbeDefautModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/FudaaCourbeTimeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileTreeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/ScopCourbeTreeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeTreeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrReplayCurvesData.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/telemac/TrTelemacBoundaryCourbeModel.java branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/telemac/TrTelemacWeirCourbeModel.java Added Paths: ----------- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGActionReplayDataCourbe.java Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZEbliCalquePanelController.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZEbliCalquePanelController.java 2009-01-19 17:45:43 UTC (rev 4382) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/calque/ZEbliCalquePanelController.java 2009-01-19 19:40:40 UTC (rev 4383) @@ -764,4 +764,27 @@ return pn_; } +public List<EbliActionInterface> getSelectedNavigationAndStandardActionGroup() { + final List<EbliActionInterface> actions = new ArrayList<EbliActionInterface>(); + if(this.selectedActionGroup_==null) + buildButtonGroupSelection(); + if(this.navigationActionGroup_==null) + buildButtonGroupNavigation(); + if(this.standardActionGroup_==null) + buildButtonGroupStandard(); + + actions.addAll(Arrays.asList(selectedActionGroup_)); + actions.add(null); + actions.addAll(Arrays.asList(navigationActionGroup_)); + actions.add(null); + if (!CtuluLibArray.isEmpty(standardActionGroup_)) { + actions.addAll(Arrays.asList(standardActionGroup_)); + } + + + return actions; } + + + +} Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/commun/EbliEditorArrow.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/commun/EbliEditorArrow.java 2009-01-19 17:45:43 UTC (rev 4382) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/commun/EbliEditorArrow.java 2009-01-19 19:40:40 UTC (rev 4383) @@ -112,6 +112,22 @@ public void modifieExtremite(Point newPoint, int position){ if(position>ExtremiteDroite || points_==null)return; + //-- cas particulier si on deplace la queue --// + if(position==ExtremiteQueue && points_[position]!=null && points_[ExtremiteGauche]!=null && points_[ExtremiteDroite]!=null && points_[position]!=points_[ExtremiteQueue]){ + //-- on deplace les arcs selon la meme translation + int translationX=points_[ExtremiteQueue].x-newPoint.x; + int translationY=points_[ExtremiteQueue].y-newPoint.y; + + //-- on applique la translation aux arretes --// + points_[ExtremiteGauche].x+=translationX; + points_[ExtremiteGauche].y+=translationY; + points_[ExtremiteDroite].x+=translationX; + points_[ExtremiteDroite].y+=translationY; + + + } + + points_[position]=newPoint; repaint(); } @@ -188,8 +204,8 @@ } //-- on trace le segment tete/gauche --// - if(getExtremiteTete()!=null && getExtremiteGauche()!=null){ - traceligne.dessineTrait(g2d, getExtremiteTete().x, getExtremiteTete().y, getExtremiteGauche().x,getExtremiteGauche().y); + if(getExtremiteQueue()!=null && getExtremiteGauche()!=null){ + traceligne.dessineTrait(g2d, getExtremiteQueue().x, getExtremiteQueue().y, getExtremiteGauche().x,getExtremiteGauche().y); }else{ // pas de segment complet, on trace juste les points existants if(getExtremiteGauche()!=null) @@ -197,8 +213,8 @@ } //-- on trace le segment tete/droite --// - if(getExtremiteTete()!=null && getExtremiteDroite()!=null){ - traceligne.dessineTrait(g2d, getExtremiteTete().x, getExtremiteTete().y, getExtremiteDroite().x,getExtremiteDroite().y); + if(getExtremiteQueue()!=null && getExtremiteDroite()!=null){ + traceligne.dessineTrait(g2d, getExtremiteQueue().x, getExtremiteQueue().y, getExtremiteDroite().x,getExtremiteDroite().y); }else{ // pas de segment complet, on trace juste les points existants if(getExtremiteDroite()!=null) @@ -231,6 +247,21 @@ _g.setColor(Color.GREEN); _g.fillRect(positionDeplacement_.x-3,positionDeplacement_.y-3,6,6); + //-- on dessine la droite qui va etre deplac\xE9e + int positionDroite=-1; + if(positionPointToMove_==ExtremiteTete) + positionDroite=ExtremiteQueue; + if(positionPointToMove_==ExtremiteQueue) + positionDroite=ExtremiteTete; + if(positionPointToMove_==ExtremiteDroite) + positionDroite=ExtremiteQueue; + if(positionPointToMove_==ExtremiteGauche) + positionDroite=ExtremiteQueue; + + + _g.drawLine(points_[positionDroite].x, points_[positionDroite].y, positionDeplacement_.x, positionDeplacement_.y); + + } @@ -446,8 +477,8 @@ model_=new TraceLigneModel(); modifieExtremite(new Point((int)(getWidth()-model_.getEpaisseur()),(int)(getHeight()/2.0-model_.getEpaisseur()/2.0)), ExtremiteTete); modifieExtremite(new Point((int)(0+model_.getEpaisseur()),(int)(getHeight()/2.0-model_.getEpaisseur()/2.0)), ExtremiteQueue); - modifieExtremite(new Point((int)(2.0/3.0*getWidth()),(int)(model_.getEpaisseur())), ExtremiteDroite); - modifieExtremite(new Point((int)(2.0/3.0*getWidth()),(int)(getHeight()-model_.getEpaisseur())), ExtremiteGauche); + modifieExtremite(new Point((int)(1.0/3.0*getWidth()),(int)(model_.getEpaisseur())), ExtremiteDroite); + modifieExtremite(new Point((int)(1.0/3.0*getWidth()),(int)(getHeight()-model_.getEpaisseur())), ExtremiteGauche); repaint(); } Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGActionAfficheOrigineCourbe.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGActionAfficheOrigineCourbe.java 2009-01-19 17:45:43 UTC (rev 4382) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGActionAfficheOrigineCourbe.java 2009-01-19 19:40:40 UTC (rev 4383) @@ -20,7 +20,7 @@ /** * Action utilis\xE9e uniquement pour les courbes unitaires (accessible via clic droit sur la courbe). - * @author genesis + * @author Adrien Hadoux * */ public static class CourbeOnly extends EGActionAfficheOrigineCourbe{ Added: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGActionReplayDataCourbe.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGActionReplayDataCourbe.java (rev 0) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGActionReplayDataCourbe.java 2009-01-19 19:40:40 UTC (rev 4383) @@ -0,0 +1,73 @@ +package org.fudaa.ebli.courbe; + +import java.awt.event.ActionEvent; +import java.util.HashMap; + +import org.fudaa.ctulu.CtuluResource; +import org.fudaa.ctulu.CtuluUI; +import org.fudaa.ebli.commun.EbliActionSimple; +import org.fudaa.ebli.ressource.EbliResource; + +/** + * Classe qui permet de rejouer els actions pour une courbe s\xE9lectionn\xE9e. + * Cette action est automatiquement ajout\xE9e dans le EGspecificAction qui liste les actions des courbes (asscessible via clic droit). + * Permet de rejouer les donn\xE9es des courbes. + * Il suffit de surcharger la methode replayData() de EGModel dans le model de courbe d\xE9sir\xE9. + * @author Adrien Hadoux + * + */ +public class EGActionReplayDataCourbe extends EbliActionSimple{ + + /** + * Action utilis\xE9e uniquement pour les courbes unitaires (accessible via clic droit sur la courbe). + * @author Adrien Hadoux + * + */ + public static class CourbeOnly extends EGActionReplayDataCourbe{ + EGModel model_; + EGGrapheTreeModel treemodel_; + public CourbeOnly(EGGrapheTreeModel treemodel,EGModel model,CtuluUI _impl){ + super(); + model_=model; + impl_=_impl; + treemodel_=treemodel; + } + public void actionPerformed(ActionEvent _e) { + if(model_!=null) + model_.replayData( treemodel_,new HashMap(),impl_); + } + } + + EGFillePanel panelGraphe_; + CtuluUI impl_; + EGGrapheTreeModel treemodel_; + public EGActionReplayDataCourbe(EGFillePanel _panel,CtuluUI _impl) { + this(); + panelGraphe_=_panel; + impl_=_impl; + treemodel_=(EGGrapheTreeModel)_panel.getModel(); + } + public EGActionReplayDataCourbe() { + super(EbliResource.EBLI.getString("Rejouer"),EbliResource.EBLI.getIcon("restore"), "REPLAYDATA"); + } + @Override + public void actionPerformed(ActionEvent _e) { + + if(panelGraphe_.getGraphe().getSelectedComponent()==null || !(panelGraphe_.getGraphe().getSelectedComponent() instanceof EGCourbe)){ + impl_.error(EbliResource.EBLI.getString("Aucune courbe s\xE9lectionn\xE9e"),EbliResource.EBLI.getString("Aucune courbe s\xE9lectionn\xE9e"),true); + return; + }else if(panelGraphe_.getGraphe().getSelectedComponent().getModel()==null || !(panelGraphe_.getGraphe().getSelectedComponent().getModel() instanceof EGModel)){ + impl_.error(EbliResource.EBLI.getString("Aucune courbe s\xE9lectionn\xE9e"),EbliResource.EBLI.getString("Aucune courbe s\xE9lectionn\xE9e"),true); + return; + } + + //-- on recupere la courbe selectionnee dans le graphe --// + + EGModel modelSelectionne=panelGraphe_.getGraphe().getSelectedComponent().getModel(); + + modelSelectionne.replayData(treemodel_,new HashMap(),impl_); + + + } + +} Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGCourbeModelDefault.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGCourbeModelDefault.java 2009-01-19 17:45:43 UTC (rev 4382) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGCourbeModelDefault.java 2009-01-19 19:40:40 UTC (rev 4383) @@ -16,6 +16,7 @@ import org.fudaa.ctulu.CtuluUI; import org.fudaa.ebli.palette.BPaletteInfo.InfoData; + /** * @author Fred Deniger * @version $Id: EGCourbeModelDefault.java,v 1.17 2007-05-22 14:19:04 deniger Exp $ @@ -232,6 +233,12 @@ public void setPersistSpecificDatas(Object _data, Map _infos) {} + +public void replayData(EGGrapheTreeModel model,Map infos, CtuluUI impl) { + // TODO Auto-generated method stub + +} + //@Override //public String getUnite() { // // TODO Auto-generated method stub Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGrapheModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGrapheModel.java 2009-01-19 17:45:43 UTC (rev 4382) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGrapheModel.java 2009-01-19 19:40:40 UTC (rev 4383) @@ -13,6 +13,7 @@ import javax.swing.JComboBox; import org.fudaa.ctulu.CtuluCommandManager; +import org.fudaa.ctulu.CtuluUI; import org.fudaa.ebli.commun.EbliActionInterface; import java.util.List; @@ -186,7 +187,7 @@ * Par exemple dans tr, le TrPostCourbeTreeModel retourne des actions d'ajout de variables pour les \xE9volutions temporelles. * @return */ - public List<EbliActionInterface> getSpecificsActionsCurvesOnly(EGGraphe _target); + public List<EbliActionInterface> getSpecificsActionsCurvesOnly(EGGraphe _target,CtuluUI ui); } \ No newline at end of file Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGrapheSimpleModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGrapheSimpleModel.java 2009-01-19 17:45:43 UTC (rev 4382) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGrapheSimpleModel.java 2009-01-19 19:40:40 UTC (rev 4383) @@ -29,6 +29,7 @@ import org.fudaa.ctulu.CtuluCommand; import org.fudaa.ctulu.CtuluCommandManager; import org.fudaa.ctulu.CtuluLibString; +import org.fudaa.ctulu.CtuluUI; import org.fudaa.ebli.commun.EbliActionInterface; import org.fudaa.ebli.commun.EbliLib; @@ -811,7 +812,7 @@ } -public List<EbliActionInterface> getSpecificsActionsCurvesOnly(EGGraphe _target) { +public List<EbliActionInterface> getSpecificsActionsCurvesOnly(EGGraphe _target,CtuluUI ui) { // TODO Auto-generated method stub return null; } Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGrapheTreeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGrapheTreeModel.java 2009-01-19 17:45:43 UTC (rev 4382) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGGrapheTreeModel.java 2009-01-19 19:40:40 UTC (rev 4383) @@ -32,6 +32,7 @@ import org.fudaa.ctulu.CtuluCommand; import org.fudaa.ctulu.CtuluCommandContainer; import org.fudaa.ctulu.CtuluCommandManager; +import org.fudaa.ctulu.CtuluUI; import org.fudaa.ctulu.gui.CtuluTreeComboboxModel; import org.fudaa.ctulu.gui.CtuluTreeComboboxRenderer; import org.fudaa.ebli.commun.EbliActionInterface; @@ -1133,7 +1134,7 @@ } -public List<EbliActionInterface> getSpecificsActionsCurvesOnly(EGGraphe _target) { +public List<EbliActionInterface> getSpecificsActionsCurvesOnly(EGGraphe _target,CtuluUI ui) { // TODO Auto-generated method stub return null; } Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGModel.java 2009-01-19 17:45:43 UTC (rev 4382) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGModel.java 2009-01-19 19:40:40 UTC (rev 4383) @@ -200,7 +200,17 @@ */ void viewGenerationSource(Map infos, CtuluUI impl); + + /** + * Methode qui une fois appel\xE9e se charge de creer un module ou interface qui permet de rejouer les donn\xE9es de la courbe. + * @param infos + * @param CtuluUI: l'implementation dans laquelle afficher les informations + */ + void replayData(EGGrapheTreeModel model, Map infos, CtuluUI impl); + + + /** * retourner les infos persistantes de la courbe du mod\xE8le. */ Object getPersistSpecificDatas(); Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGSpecificActions.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGSpecificActions.java 2009-01-19 17:45:43 UTC (rev 4382) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/courbe/EGSpecificActions.java 2009-01-19 19:40:40 UTC (rev 4383) @@ -137,8 +137,12 @@ //-- action origine de la courbe. --// menu_.add(new EGActionAfficheOrigineCourbe.CourbeOnly(courbe.getModel(),ui_)); - if(target_.getModel().getSpecificsActionsCurvesOnly(target_)!=null) - for(EbliActionInterface action:target_.getModel().getSpecificsActionsCurvesOnly(target_)) + //-- action replay data --// + // menu_.add(new EGActionReplayDataCourbe.CourbeOnly(courbe.getModel(),ui_)); + + + if(target_.getModel().getSpecificsActionsCurvesOnly(target_,ui_)!=null) + for(EbliActionInterface action:target_.getModel().getSpecificsActionsCurvesOnly(target_,ui_)) menu_.add(action); } Modified: branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/graphe/EbliWidgetControllerGraphe.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/graphe/EbliWidgetControllerGraphe.java 2009-01-19 17:45:43 UTC (rev 4382) +++ branches/Prepro-0.92-SNAPSHOT/ebli/src/org/fudaa/ebli/visuallibrary/graphe/EbliWidgetControllerGraphe.java 2009-01-19 19:40:40 UTC (rev 4383) @@ -29,6 +29,7 @@ import org.fudaa.ebli.commun.EbliActionSimple; import org.fudaa.ebli.commun.EbliComponentFactory; import org.fudaa.ebli.courbe.EGActionAfficheOrigineCourbe; +import org.fudaa.ebli.courbe.EGActionReplayDataCourbe; import org.fudaa.ebli.courbe.EGCourbe; import org.fudaa.ebli.courbe.EGFillePanel; import org.fudaa.ebli.courbe.EGGraphe; @@ -515,6 +516,8 @@ BuPanel panelBoutons=new BuPanel(new FlowLayout(FlowLayout.LEFT)); EGActionAfficheOrigineCourbe origine=new EGActionAfficheOrigineCourbe(getGraphePanel(),getWidget().getEbliScene().getCtuluUi()); panelBoutons.add(origine.buildButton(EbliComponentFactory.INSTANCE)); + EGActionReplayDataCourbe replayData=new EGActionReplayDataCourbe(getGraphePanel(),getWidget().getEbliScene().getCtuluUi()); + panelBoutons.add(replayData.buildButton(EbliComponentFactory.INSTANCE)); BuPanel miseEnPage=new BuPanel(new BorderLayout()); Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/FudaaCourbeDefautModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/FudaaCourbeDefautModel.java 2009-01-19 17:45:43 UTC (rev 4382) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/FudaaCourbeDefautModel.java 2009-01-19 19:40:40 UTC (rev 4383) @@ -15,6 +15,7 @@ import org.fudaa.ctulu.CtuluListSelectionInterface; import org.fudaa.ctulu.CtuluUI; import org.fudaa.dodico.mesure.EvolutionReguliereInterface; +import org.fudaa.ebli.courbe.EGGrapheTreeModel; import org.fudaa.ebli.courbe.EGModel; import org.fudaa.ebli.palette.BPaletteInfo.InfoData; import org.fudaa.fudaa.commun.FudaaLib; @@ -180,4 +181,8 @@ public void viewGenerationSource(Map infos, CtuluUI impl){ } + public void replayData(EGGrapheTreeModel model,Map infos, CtuluUI impl) { + // TODO Auto-generated method stub + + } } \ No newline at end of file Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/FudaaCourbeTimeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/FudaaCourbeTimeModel.java 2009-01-19 17:45:43 UTC (rev 4382) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/commun/courbe/FudaaCourbeTimeModel.java 2009-01-19 19:40:40 UTC (rev 4383) @@ -14,6 +14,7 @@ import org.fudaa.ctulu.CtuluListSelectionInterface; import org.fudaa.ctulu.CtuluRange; import org.fudaa.ctulu.CtuluUI; +import org.fudaa.ebli.courbe.EGGrapheTreeModel; import org.fudaa.ebli.courbe.EGModel; import org.fudaa.ebli.palette.BPaletteInfo.InfoData; @@ -223,4 +224,8 @@ public void viewGenerationSource(Map infos, CtuluUI impl){ } + public void replayData(EGGrapheTreeModel model,Map infos, CtuluUI impl) { + // TODO Auto-generated method stub + + } } \ No newline at end of file Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileTreeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileTreeModel.java 2009-01-19 17:45:43 UTC (rev 4382) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/meshviewer/profile/MvProfileTreeModel.java 2009-01-19 19:40:40 UTC (rev 4383) @@ -42,6 +42,8 @@ import org.fudaa.dodico.h2d.type.H2dVariableType; import org.fudaa.dodico.mesure.EvolutionReguliere; import org.fudaa.dodico.mesure.EvolutionReguliereInterface; +import org.fudaa.ebli.commun.EbliActionInterface; +import org.fudaa.ebli.courbe.EGActionReplayDataCourbe; import org.fudaa.ebli.courbe.EGAxeVertical; import org.fudaa.ebli.courbe.EGCourbe; import org.fudaa.ebli.courbe.EGCourbeChild; @@ -58,6 +60,7 @@ import org.fudaa.fudaa.meshviewer.MvResource; import org.fudaa.fudaa.meshviewer.export.MvExportChooseVarAndTime; import org.fudaa.fudaa.tr.post.ScopCourbeTreeModel; + import org.fudaa.fudaa.tr.post.TrPostCourbeModel; import org.fudaa.fudaa.tr.post.TrPostProjet; import org.fudaa.fudaa.tr.post.TrPostSource; @@ -820,5 +823,20 @@ //-- remplissage du model avec les datas--// dataPersistante.fillModelWithData(this,Params); } + + + /** + * Les actions des courbes specifiques: l'ajout de variable. + */ + public List<EbliActionInterface> getSpecificsActionsCurvesOnly(EGGraphe _target,CtuluUI ui) { + List<EbliActionInterface> listeActions=new ArrayList<EbliActionInterface>(); + + + //-- action replay data --// + listeActions.add(new EGActionReplayDataCourbe.CourbeOnly(this,this.getSelectedComponent().getModel(),ui)); + return listeActions; + + } + } \ No newline at end of file Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/ScopCourbeTreeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/ScopCourbeTreeModel.java 2009-01-19 17:45:43 UTC (rev 4382) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/ScopCourbeTreeModel.java 2009-01-19 19:40:40 UTC (rev 4383) @@ -5,12 +5,16 @@ import java.util.List; import org.fudaa.ctulu.CtuluCommandManager; +import org.fudaa.ctulu.CtuluUI; import org.fudaa.ctulu.ProgressionInterface; import org.fudaa.dodico.h2d.type.H2dVariableType; import org.fudaa.dodico.mesure.EvolutionReguliere; import org.fudaa.dodico.mesure.EvolutionReguliereInterface; +import org.fudaa.ebli.commun.EbliActionInterface; +import org.fudaa.ebli.courbe.EGActionReplayDataCourbe; import org.fudaa.ebli.courbe.EGCourbe; import org.fudaa.ebli.courbe.EGCourbeChild; +import org.fudaa.ebli.courbe.EGGraphe; import org.fudaa.ebli.courbe.EGGrapheDuplicator; import org.fudaa.ebli.courbe.EGGrapheModel; import org.fudaa.ebli.courbe.EGGroup; @@ -137,5 +141,18 @@ public String getSelectedSpecificCourbeInfos(){ return null; } + + /** + * Les actions des courbes specifiques: l'ajout de variable. + */ + public List<EbliActionInterface> getSpecificsActionsCurvesOnly(EGGraphe _target,CtuluUI ui) { + List<EbliActionInterface> listeActions=new ArrayList<EbliActionInterface>(); + + + //-- action replay data --// + listeActions.add(new EGActionReplayDataCourbe.CourbeOnly(this,this.getSelectedComponent().getModel(),ui)); + return listeActions; + + } } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeModel.java 2009-01-19 17:45:43 UTC (rev 4382) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeModel.java 2009-01-19 19:40:40 UTC (rev 4383) @@ -36,6 +36,7 @@ import org.fudaa.ebli.courbe.EGModel; import org.fudaa.ebli.palette.BPaletteInfo.InfoData; import org.fudaa.ebli.visuallibrary.EbliWidget; + import org.fudaa.fudaa.commun.courbe.FudaaCourbeTime; import org.fudaa.fudaa.commun.courbe.FudaaCourbeTimeModel; import org.fudaa.fudaa.tr.common.TrResource; @@ -446,6 +447,8 @@ */ public abstract boolean replayData(TrPostSource src,H2dVariableType var,EGGroup groupe,Map infos); + + public void setPersistSpecificDatas(Object data, Map infos) { if(data ==null || !(data instanceof ArrayList))return; @@ -534,4 +537,17 @@ TrReplayCurvesData.getInstance().constructEvolTemporelleOrigine(this, implementation); } + + public void replayData(org.fudaa.ebli.courbe.EGGrapheTreeModel model,Map infos, CtuluUI impl) { + if(!(impl instanceof TrPostCommonImplementation)){ + impl.error(TrResource.getS("Impossible de r\xE9cup\xE9rer la bonne interface fudaa")); + return; + } + TrPostCommonImplementation implementation=(TrPostCommonImplementation)impl; + + //-- on cree une vue 2d a partir du fichier source fourni et on le centre sur le point interpol\xE9 ou non --// + TrReplayCurvesData.getInstance().constructEvolTemporelleReplayData((TrPostCourbeTreeModel)model, this, implementation); + + + } } \ No newline at end of file Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeTreeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeTreeModel.java 2009-01-19 17:45:43 UTC (rev 4382) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrPostCourbeTreeModel.java 2009-01-19 19:40:40 UTC (rev 4383) @@ -25,6 +25,7 @@ import org.fudaa.ctulu.CtuluCommandContainer; import org.fudaa.ctulu.CtuluCommandManager; import org.fudaa.ctulu.CtuluLibArray; +import org.fudaa.ctulu.CtuluUI; import org.fudaa.ctulu.ProgressionInterface; import org.fudaa.ctulu.ProgressionUpdater; import org.fudaa.ctulu.gis.GISPrecision; @@ -32,6 +33,7 @@ import org.fudaa.dodico.mesure.EvolutionReguliere; import org.fudaa.dodico.mesure.EvolutionReguliereInterface; import org.fudaa.ebli.commun.EbliActionInterface; +import org.fudaa.ebli.courbe.EGActionReplayDataCourbe; import org.fudaa.ebli.courbe.EGAxeHorizontal; import org.fudaa.ebli.courbe.EGAxeVertical; import org.fudaa.ebli.courbe.EGCourbe; @@ -1071,12 +1073,13 @@ /** * Les actions des courbes specifiques: l'ajout de variable. */ - public List<EbliActionInterface> getSpecificsActionsCurvesOnly(EGGraphe _target) { + public List<EbliActionInterface> getSpecificsActionsCurvesOnly(EGGraphe _target,CtuluUI ui) { List<EbliActionInterface> listeActions=new ArrayList<EbliActionInterface>(); //-- action d'ajout des variables --// listeActions.add(new TrPostCourbeAddVariableAction(projet_.impl_, _target)); - + //-- action replay data --// + listeActions.add(new EGActionReplayDataCourbe.CourbeOnly(this,this.getSelectedComponent().getModel(),ui)); return listeActions; } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrReplayCurvesData.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrReplayCurvesData.java 2009-01-19 17:45:43 UTC (rev 4382) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/post/TrReplayCurvesData.java 2009-01-19 19:40:40 UTC (rev 4383) @@ -1,35 +1,74 @@ package org.fudaa.fudaa.tr.post; +import java.awt.BorderLayout; +import java.awt.Checkbox; import java.awt.Color; +import java.awt.Component; import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.GridLayout; import java.awt.Rectangle; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; import java.util.Vector; +import javax.swing.AbstractButton; import javax.swing.JComponent; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; +import javax.swing.JToolBar; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; +import org.fudaa.ctulu.CtuluLib; import org.fudaa.ctulu.gis.GISZoneCollectionPoint; import org.fudaa.ctulu.gui.CtuluDialogPanel; +import org.fudaa.ctulu.gui.CtuluLibSwing; +import org.fudaa.dodico.h2d.type.H2dVariableType; import org.fudaa.ebli.calque.BArbreCalque; import org.fudaa.ebli.calque.BCalque; import org.fudaa.ebli.calque.BCalqueLegende; +import org.fudaa.ebli.calque.BCalquePaletteInfo; +import org.fudaa.ebli.calque.ZCalqueAffichageDonnees; import org.fudaa.ebli.calque.ZCalquePoint; +import org.fudaa.ebli.calque.ZCalqueSondeInteraction; +import org.fudaa.ebli.calque.action.CalqueActionSonde; +import org.fudaa.ebli.calque.action.EbliCalqueActionTimeChooser; import org.fudaa.ebli.calque.edition.ZModelePointEditable; +import org.fudaa.ebli.commun.EbliActionInterface; +import org.fudaa.ebli.commun.EbliActionPaletteAbstract; +import org.fudaa.ebli.commun.EbliComponentFactory; +import org.fudaa.ebli.controle.BSelecteurListComboBox; import org.fudaa.ebli.courbe.EGModel; +import org.fudaa.ebli.palette.BPaletteInfo; import org.fudaa.ebli.trace.TraceIcon; import org.fudaa.ebli.trace.TraceIconModel; import org.fudaa.ebli.trace.TraceLigneModel; import org.fudaa.ebli.visuallibrary.calque.CalqueLegendeWidgetAdapter; import org.fudaa.fudaa.meshviewer.profile.MVProfileCourbeModel; import org.fudaa.fudaa.sig.layer.FSigEditor; +import org.fudaa.fudaa.sig.layer.FSigLayerGroup; import org.fudaa.fudaa.sig.layer.FSigLayerPointEditable; import org.fudaa.fudaa.tr.common.TrResource; +import org.fudaa.fudaa.tr.data.TrGisProjectEditor; +import org.openide.util.actions.Presenter.Toolbar; import com.memoire.bu.BuBorderLayout; import com.memoire.bu.BuBorders; +import com.memoire.bu.BuLabel; +import com.memoire.bu.BuList; +import com.memoire.bu.BuPanel; +import com.memoire.bu.BuScrollPane; +import com.memoire.bu.BuToolBar; +import com.memoire.fu.FuComparator; +import com.sun.corba.se.impl.ior.NewObjectKeyTemplateBase; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.LineString; @@ -56,6 +95,8 @@ private TrPostSource srcMemoire_; + private Checkbox ecraser_=new Checkbox("Ecraser la courbe cible",true); + public static TrReplayCurvesData getInstance(){ if(instance_==null) @@ -71,7 +112,7 @@ * @param src * @return */ - private TrPostVisuPanel createVue2d(TrPostCommonImplementation implementation,TrPostSource src){ + private TrPostVisuPanel constructVue2d(TrPostCommonImplementation implementation,TrPostSource src){ //-- petite optimisation --// if(srcMemoire_!=null && memoire_!=null && srcMemoire_==src) return memoire_; @@ -79,7 +120,7 @@ BCalqueLegende legende=new BCalqueLegende(); TrPostVisuPanel vue2d=new TrPostVisuPanel(implementation,implementation.c_,legende,src); vue2d.removeCalqueLegend(); - + vue2d.restaurer(); Rectangle rec=new Rectangle(300,300); vue2d.setPreferredSize(new Dimension(300,300)); @@ -94,28 +135,140 @@ return vue2d; } + BSelecteurListComboBox comboVar_=null; + + + + public JToolBar constructToolBarVue2d(TrPostVisuPanel vue2d){ + JToolBar toolbarCalque = new BuToolBar(); + AbstractButton boutonSelection=null; + //final EbliActionInterface[] actions =vue2d.getController().getSelectedNavigationAndStandardActionGroup(); + final List actions = vue2d.getController().getSelectedNavigationAndStandardActionGroup(); + int i=0; + for (final Iterator iterator = actions.iterator(); iterator.hasNext();) { + // for (int i=0;i<actions.length;i++) { + final EbliActionInterface object = (EbliActionInterface) iterator.next();//actions[i]; + if (object == null) { + toolbarCalque.addSeparator(); + } else { + + if(i==0){ + boutonSelection=object.buildToolButton(EbliComponentFactory.INSTANCE); + toolbarCalque.add(boutonSelection); + }else + toolbarCalque.add(object.buildToolButton(EbliComponentFactory.INSTANCE)); + } + i++; + } + + //-- ajout de l'action sonde --// + final ZCalqueSondeInteraction sonde = vue2d.getController().addCalqueSondeInteraction(); + toolbarCalque.add(new CalqueActionSonde(sonde, vue2d.getArbreCalqueModel())); + + //-- activer par d\xE9faut l'action selection de points --// + if(boutonSelection!=null) + boutonSelection.doClick(); + + + + //-- ajout des variables + pas de temps --// + if(comboVar_!=null) + vue2d.getArbreCalqueModel().getTreeSelectionModel().removeTreeSelectionListener(comboVar_); + comboVar_ = new BSelecteurListComboBox(); + vue2d.getArbreCalqueModel().getTreeSelectionModel().addTreeSelectionListener(comboVar_); + comboVar_.setPalettePanelTarget(vue2d.getArbreCalqueModel().getSelectedCalque()); + comboVar_.setPreferredSize(new Dimension(Math.max(comboVar_.getPreferredSize().width,100),comboVar_.getPreferredSize().height)); + comboVar_.getCb().setMaximumSize(new Dimension(Math.max(comboVar_.getPreferredSize().width,100),comboVar_.getPreferredSize().height)); + comboVar_.getCb().setMinimumSize(new Dimension(Math.max(comboVar_.getPreferredSize().width,100),comboVar_.getPreferredSize().height)); + toolbarCalque.add(comboVar_); + + //-- construction de la liste des pas de temps --// + final EbliCalqueActionTimeChooser chooserT = new EbliCalqueActionTimeChooser(vue2d.getArbreCalqueModel() + .getTreeSelectionModel(), true); + // pour activer l'action + chooserT.setSelected(true); + final BSelecteurListComboBox combo = (BSelecteurListComboBox) chooserT.buildContentPane(); + chooserT.updateBeforeShow(); + combo.setPreferredSize(new Dimension(Math.max(comboVar_.getPreferredSize().width,100),comboVar_.getPreferredSize().height)); + combo.getCb().setMaximumSize(new Dimension(Math.max(comboVar_.getPreferredSize().width,100),comboVar_.getPreferredSize().height)); + combo.getCb().setMinimumSize(new Dimension(Math.max(comboVar_.getPreferredSize().width,100),comboVar_.getPreferredSize().height)); + + toolbarCalque.add(combo); + + return toolbarCalque; + + } + /** * Cree la dialog qui affiche tout le contenu d'origine du graphe. * @param vue2d * @param implementation * @param modele */ - private void createDialogOrigine(TrPostVisuPanel vue2d, TrPostCommonImplementation implementation, EGModel modele,JComponent composantAdditionnel){ - //final JScrollPane arbreVue2d = new JScrollPane(new BArbreCalque(vue2d.getArbreCalqueModel())); + private CtuluDialogPanel constructDialog(TrPostVisuPanel vue2d, TrPostCommonImplementation implementation, EGModel modele,JComponent composantAdditionnel,boolean modeEdition,String title){ implementation.createTask(TrResource.getS("Origine ")+" "+modele.getTitle()); final CtuluDialogPanel pn = new CtuluDialogPanel(false); pn.setLayout(new BuBorderLayout()); pn.setBorder(BuBorders.EMPTY3333); //pn.add(new BuLabel(CtuluLib.getS("S\xE9lectionner le fichier r\xE9sultat")), BuBorderLayout.NORTH); pn.add(vue2d,BuBorderLayout.CENTER); + + + if(composantAdditionnel!=null) pn.add(composantAdditionnel,BuBorderLayout.EAST); - //pn.add(arbreVue2d,BuBorderLayout.EAST); - pn.add(vue2d.getLabelSuiviSouris(),BuBorderLayout.SOUTH); - pn.afficheModale(implementation.getParentComponent(), TrResource.getS("Origine ")+" "+modele.getTitle()); + JPanel panelSouth=new JPanel(new FlowLayout(FlowLayout.LEFT)); + panelSouth.add(vue2d.getLabelSuiviSouris()); - implementation.clearMainProgression(); + JPanel panelTotalSouth=new JPanel(new GridLayout(2,1)); + + if(title!=null){ + panelTotalSouth.add(new JLabel(title)); + }else + panelTotalSouth.add(new JLabel("")); + + panelTotalSouth.add(panelSouth); + + pn.add(panelTotalSouth,BuBorderLayout.SOUTH); + + if(modeEdition){ + + //-- ajout de la toolbar --// + pn.add(constructToolBarVue2d(vue2d),BorderLayout.NORTH); + + //-- ajout de la palette d'infos --// + final Collection<EbliActionPaletteAbstract> acts =vue2d.getController().getTabPaletteAction(); + BPaletteInfo comp=null; + for (final EbliActionPaletteAbstract pals : acts) { + final JComponent component = pals.buildContentPane(); + if (component instanceof BCalquePaletteInfo) { + comp=(BPaletteInfo) component; + comp.setAvailable(true); + comp.updateState(); + pals.setEnabled(true); + pals.updateBeforeShow(); + // comp.setMaximumSize(new Dimension(180,300)); + // comp.setPreferredSize(new Dimension(180,300)); + pn.add(comp,BuBorderLayout.EAST); + + } + } + panelSouth.add(this.ecraser_); + //final JScrollPane arbreVue2d = new JScrollPane(new BArbreCalque(vue2d.getArbreCalqueModel())); + //arbreVue2d.setPreferredSize(new Dimension(200,300)); + //arbreVue2d.setMaximumSize(new Dimension(200,300)); + //pn.add(arbreVue2d,BuBorderLayout.WEST); + + + + } + + + + return pn; + + } /** @@ -125,7 +278,7 @@ public void constructEvolTemporelleOrigine(TrPostCourbeModel modele,TrPostCommonImplementation implementation){ //-- on cree une vue 2d a partir du fichier source fourni et on le centre sur le point interpol\xE9 ou non --// - TrPostVisuPanel vue2d=createVue2d(implementation,modele.source_); + TrPostVisuPanel vue2d=constructVue2d(implementation,modele.source_); //-- on affiche sur la vue 2d les points initialement choisis --// GISZoneCollectionPoint collectionPoint=new GISZoneCollectionPoint(); @@ -135,29 +288,29 @@ //point reel int indiceNoeud=((Integer) point).intValue(); // recherche du point cot\xE9 grille - coordonneesPoint=modele.source_.getGrid().getCoor(indiceNoeud); - + coordonneesPoint=modele.source_.getGrid().getCoor(indiceNoeud); + }else{ TrPostInterpolatePoint pt=(TrPostInterpolatePoint) point; coordonneesPoint=new Coordinate(pt.x_,pt.y_,0); } //-- ajout des coordonnees --// collectionPoint.add(coordonneesPoint.x, coordonneesPoint.y,0); - - + + ZModelePointEditable modelePointEdit=new ZModelePointEditable(collectionPoint); //-- creation du calque -// FSigEditor editeur=new FSigEditor(vue2d,vue2d.getCmdMng()); -// FSigLayerPointEditable layer=new FSigLayerPointEditable(modelePointEdit,editeur); -// editeur.getFrame().setVisible(true); - - -// FSigLayerPointEditable layer2=new FSigLayerPointEditable(); -// layer2.addAtome((int)coordonneesPoint.x, (int)coordonneesPoint.y, vue2d.getCmdMng(), implementation); -// layer2.setVisible(true); -// vue2d.addCalque(layer2, true); - + // FSigEditor editeur=new FSigEditor(vue2d,vue2d.getCmdMng()); + // FSigLayerPointEditable layer=new FSigLayerPointEditable(modelePointEdit,editeur); + // editeur.getFrame().setVisible(true); + + + // FSigLayerPointEditable layer2=new FSigLayerPointEditable(); + // layer2.addAtome((int)coordonneesPoint.x, (int)coordonneesPoint.y, vue2d.getCmdMng(), implementation); + // layer2.setVisible(true); + // vue2d.addCalque(layer2, true); + ZCalquePoint calqueZ=new ZCalquePoint(modelePointEdit); //calqueZ.setVisible(true); //calqueZ.setLineModel(0, new TraceLigneModel(1,2,Color.BLACK)); @@ -165,12 +318,16 @@ vue2d.addCalque(calqueZ, true); calqueZ.setVisible(true); //-- on affiche le contenu dans une dialog--// - createDialogOrigine(vue2d, implementation, modele,null); + constructDialog(vue2d, implementation, modele,null,false,TrResource.getS("Origine ")+" "+modele.getTitle()+". Le point est encadr\xE9 en bleu").afficheModale(implementation.getParentComponent(), TrResource.getS("Origine ")+" "+modele.getTitle());; } - + /** + * Affiche une dialog avec une vue 2d qui affiche l'ensemble des points de la polyligne utilis\xE9e pour la construction du graphe. + * @param modele + * @param implementation + */ public void constructProfilSpatialOrigine(MVProfileCourbeModel modele,TrPostCommonImplementation implementation){ if(modele.getData() instanceof TrPostSource){} @@ -182,9 +339,9 @@ implementation.error(TrResource.getS("Erreur"), TrResource.getS("Impossible de r\xE9cup\xE9rer la polyligne"), true); return; } - + //-- on cree une vue 2d a partir du fichier source fourni et on le centre sur le point interpol\xE9 ou non --// - TrPostVisuPanel vue2d=createVue2d(implementation,(TrPostSource)modele.getData()); + TrPostVisuPanel vue2d=constructVue2d(implementation,(TrPostSource)modele.getData()); //-- on affiche sur la vue 2d les points initialement choisis --// GISZoneCollectionPoint collectionPoint=new GISZoneCollectionPoint(); @@ -195,11 +352,11 @@ collectionPoint.add(listePoints.getCoordinateN(i).x,listePoints.getCoordinateN(i).y,0); dataP[i][0]=listePoints.getCoordinateN(i).x; dataP[i][1]=listePoints.getCoordinateN(i).y; - + } ZModelePointEditable modelePointEdit=new ZModelePointEditable(collectionPoint); - + ZCalquePoint calqueZ=new ZCalquePoint(modelePointEdit); //calqueZ.setVisible(true); //calqueZ.setLineModel(0, new TraceLigneModel(1,2,Color.BLACK)); @@ -221,13 +378,164 @@ JScrollPane pane=new JScrollPane(tableauVal); //pane.setMaximumSize(new Dimension(200,300)); pane.setPreferredSize(new Dimension(200,300)); + + constructDialog(vue2d, implementation, modele,pane,false,TrResource.getS("Origine ")+" "+modele.getTitle()+". Les points de la polyligne sont encadr\xE9s en bleu").afficheModale(implementation.getParentComponent(), TrResource.getS("Origine ")+" "+modele.getTitle());; + + } + + + + /** + * Constructeur d'une dialog qui affiche la vue 2d avec le point initial qui a servi a la creation du modele. + * Ajoute \xE9galement la liste des variables \xE0 choisir. Il est possible dans la vue de s\xE9lectionner un autre point ou plusieurs. + * LA validation de la frame permettra de r\xE9cup\xE9rer les nouveaux point ainsi que les variables qui seront utilis\xE9es pour refaire le calcul. + * @param modele + */ + public void constructEvolTemporelleReplayData(TrPostCourbeTreeModel treeModel,TrPostCourbeModel modele,TrPostCommonImplementation implementation){ + + //-- on cree une vue 2d a partir du fichier source fourni et on le centre sur le point interpol\xE9 ou non --// + TrPostVisuPanel vue2d=constructVue2d(implementation,modele.source_); + + //-- on affiche sur la vue 2d les points initialement choisis --// + GISZoneCollectionPoint collectionPoint=new GISZoneCollectionPoint(); + Object point=modele.getSelectionPoint(); + Coordinate coordonneesPoint=null; + if(point instanceof Integer){ + //point reel + int indiceNoeud=((Integer) point).intValue(); + // recherche du point cot\xE9 grille + coordonneesPoint=modele.source_.getGrid().getCoor(indiceNoeud); + + }else{ + TrPostInterpolatePoint pt=(TrPostInterpolatePoint) point; + coordonneesPoint=new Coordinate(pt.x_,pt.y_,0); + } + //-- ajout des coordonnees --// + collectionPoint.add(coordonneesPoint.x, coordonneesPoint.y,0); + + + ZModelePointEditable modelePointEdit=new ZModelePointEditable(collectionPoint); + + //-- creation du calque + FSigLayerPointEditable layer2=new FSigLayerPointEditable(modelePointEdit,vue2d.getGisEditor()); + layer2.setVisible(true); + layer2.setIconModel(0, new TraceIconModel(TraceIcon.CARRE_SELECTION,5,Color.RED)); + layer2.setEnabled(true); + + + //groupeCalque.addPointLayerAct("Origine", new GISZoneCollectionPoint()); + BCalque resultatsCalque=vue2d.getCalqueActif(); + vue2d.addCalque(layer2, true); + vue2d.setCalqueActif(resultatsCalque); + //vue2d.addCalque(layer2, true); + + // ZCalquePoint calqueZ=new ZCalquePoint(modelePointEdit); + // //calqueZ.setVisible(true); + // //calqueZ.setLineModel(0, new TraceLigneModel(1,2,Color.BLACK)); + // calqueZ.setIconModel(0, new TraceIconModel(TraceIcon.CARRE_SELECTION,3,Color.blue)); + // vue2d.addCalque(calqueZ, true); + // calqueZ.setVisible(true); + + //-- creation du panel de choix des variables a selectionner --// + + //-- on affiche le contenu dans une dialog--// + //final Set var = new HashSet(Arrays.asList(modele.source_.getAllVariablesNonVec())); + //final H2dVariableType[] vars = (H2dVariableType[]) var.toArray(new H2dVariableType[var.size()]); + String title=TrResource.getS("Choisir le point et la variable qui seront utilis\xE9s pour refaire le calcul(interpolation possible). Le point rouge d\xE9signe le point d'origine."); - createDialogOrigine(vue2d, implementation, modele,pane); + CtuluDialogPanel dialog=constructDialog(vue2d, implementation, modele,/*constructSelectorVariable(vars)*/null,true,title); + + //-- on restaure la vue --// + vue2d.setSize(300, 300); + vue2d.restaurer(); + + //-- on affiche tant que l'utilisateur valide des r\xE9sultats faux --// + while(CtuluDialogPanel.isOkResponse(dialog.afficheModale(implementation.getParentComponent(), TrResource.getS("Rejouer ")+" "+modele.getTitle())) && !replayEvolutionFor(vue2d,treeModel,modele,implementation)){ + + } + + } - + /** + * Methode qui v\xE9rifie et remplit les bons parametres d'entree avec les nouveaut\xE9s + */ + public boolean replayEvolutionFor(TrPostVisuPanel vue2d,TrPostCourbeTreeModel tree,TrPostCourbeModel modele,TrPostCommonImplementation implementation){ + H2dVariableType newVariable=null; + int newPointReel=-1; + TrPostInterpolatePoint newPointInterpole=null; + if (vue2d.isSelectionOkForEvolution()) { + final ZCalqueAffichageDonnees calque = (ZCalqueAffichageDonnees) vue2d.getCalqueActif(); + final int[] idx = calque.getLayerSelection().getSelectedIndex(); + H2dVariableType selectedVar = null; + if (calque instanceof TrIsoLayer) { + selectedVar = ((TrIsoLayer) calque).getIsoModel().getVariableSelected(); + } else if (calque instanceof TrPostFlecheLayer) { + selectedVar = ((TrPostFlecheLayer) calque).getSelectedVar(); + } + //-- cas point reel + newVariable=selectedVar; + newPointReel=idx[0]; + //-- on rejoue les donn\xE9es avec les nouvelles valeurs --// + if(this.ecraser_.getState()){ + implementation.message("La courbe actuelle de mod\xE8le: variable:"+modele.getVar()+", point N\xB0 "+modele.getSelectionPoint()+" va \xEAtre recalcul\xE9e pour les donn\xE9es suivantes:\n" + +"Variable: "+newVariable.getName()+", point N\xB0 "+newPointReel); + + modele.var_=newVariable; + //modele. + + }else{ + implementation.message("Une nouvelle courbe \xE9volution temporelle va \xEAtre calcul\xE9e pour la variable: "+newVariable.getName()+", et le point N\xB0 "+newPointReel+"La courbe actuelle ne sera pas \xE9cras\xE9e.\n"); + Set varToadd=new HashSet<H2dVariableType>(); + varToadd.add(newVariable); + int[] listeInt=new int[1]; + listeInt[0]=newPointReel; + tree.addPoints(modele.source_,listeInt, vue2d.getCmdMng(), implementation.getMainProgression(),varToadd ); + } + + return true; + + } else if (vue2d.isSelectionOkForEvolutionSonde()) { + //-- cas point interpol\xE9 --// + newVariable=vue2d.getSelectedVarInCalqueActif(); + newPointInterpole=vue2d.getInterpolePointForEvol(); + + //-- on rejoue les donn\xE9es avec les nouvelles valeurs --// + implementation.message("La courbe actuelle de mod\xE8le: variable:"+modele.getVar()+", point N\xB0 "+modele.getSelectionPoint()+" va \xEAtre recalcul\xE9e pour les donn\xE9es suivantes:\n" + +"Variable: "+newVariable.getName()+", point interpol\xE9 ("+newPointInterpole.x_+";"+newPointInterpole.y_+")"); + return true; + } else { + JOptionPane.showMessageDialog(null, "Erreur il faut choisir un seul point afin de recalculer les donn\xE9es de la courbe","erreur",JOptionPane.ERROR_MESSAGE); + return false; + + + } + } + + + /** + * Construit le selecteur de variable en utilisant un BuList. + * Pour r\xE9cup\xE9rer les variables, il suffit de faire l.getSelectedValues(); + * @param listeVar + * @param _title + * @param _parent + * @return + */ + public static JComponent constructSelectorVariable(final Object[] listeVar) { + Arrays.sort(listeVar, FuComparator.STRING_COMPARATOR); + final BuList l = CtuluLibSwing.createBuList(listeVar); + final BuPanel pn = new BuPanel(); + pn.setLayout(new BuBorderLayout()); + pn.setBorder(BuBorders.EMPTY3333); + pn.add(new BuLabel(CtuluLib.getS("S\xE9lectionner les variables \xE0 ajouter")), BuBorderLayout.NORTH); + pn.add(new BuScrollPane(l)); + // if (CtuluDialogPanel.isOkResponse(pn.afficheModale(_parent, _title))) { return l.getSelectedValues(); } + return pn; + } + + } Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/telemac/TrTelemacBoundaryCourbeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/telemac/TrTelemacBoundaryCourbeModel.java 2009-01-19 17:45:43 UTC (rev 4382) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/telemac/TrTelemacBoundaryCourbeModel.java 2009-01-19 19:40:40 UTC (rev 4383) @@ -18,9 +18,11 @@ import org.fudaa.dodico.h2d.telemac.H2dTelemacBoundaryCondition; import org.fudaa.dodico.h2d.type.H2dVariableType; import org.fudaa.ebli.courbe.EGCourbeModelDefault; +import org.fudaa.ebli.courbe.EGGrapheTreeModel; import org.fudaa.ebli.courbe.EGModel; import org.fudaa.ebli.palette.BPaletteInfo.InfoData; + /** * @author Fred Deniger * @version $Id: TrTelemacBoundaryCourbeModel.java,v 1.20 2007-05-22 14:20:38 deniger Exp $ @@ -257,4 +259,8 @@ public void viewGenerationSource(Map infos, CtuluUI impl){ } + public void replayData(EGGrapheTreeModel model,Map infos, CtuluUI impl) { + // TODO Auto-generated method stub + + } } \ No newline at end of file Modified: branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/telemac/TrTelemacWeirCourbeModel.java =================================================================== --- branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/telemac/TrTelemacWeirCourbeModel.java 2009-01-19 17:45:43 UTC (rev 4382) +++ branches/Prepro-0.92-SNAPSHOT/fudaa/src/org/fudaa/fudaa/tr/telemac/TrTelemacWeirCourbeModel.java 2009-01-19 19:40:40 UTC (rev 4383) @@ -20,6 +20,7 @@ import org.fudaa.ebli.courbe.EGModel; import org.fudaa.ebli.palette.BPaletteInfo.InfoData; + /** * @author Fred Deniger * @version $Id: TrTelemacWeirCourbeModel.java,v 1.14 2007-05-22 14:20:38 deniger Exp $ @@ -179,4 +180,8 @@ public void viewGenerationSource(Map infos, CtuluUI impl){ } + public void replayData(org.fudaa.ebli.courbe.EGGrapheTreeModel model,Map infos, CtuluUI impl) { + // TODO Auto-generated method stub + + } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2009-01-19 17:45:48
|
Revision: 4382 http://fudaa.svn.sourceforge.net/fudaa/?rev=4382&view=rev Author: emmanuel_martin Date: 2009-01-19 17:45:43 +0000 (Mon, 19 Jan 2009) Log Message: ----------- Tache #150 : "D?\195?\169caler l'abscisse de l'axe hydraulique" Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/Controller1d.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerBief.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerProfil.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/Bief.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/ProfilContainerAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueContainerModules.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueModuleGestionProfil.java Added Paths: ----------- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueModuleGestionAxeHydraulique.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2009-01-19 16:20:26 UTC (rev 4381) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2009-01-19 17:45:43 UTC (rev 4382) @@ -324,4 +324,14 @@ return "ATTRIBUTE_INTERSECTIONS_LIGNES_DIRECTRICES"; } }; + + /** + * Attribut contenant le d\xE9calage curviligne de l'axe hydraulique. + */ + public final static GISAttribute CURVILIGNE_DECALAGE=new GISAttributeDouble(CtuluLib.getS("D\xE9calage curviligne"), false) { + @Override + public String getID() { + return "ATTRIBUTE_CURVILIGNE_DECALAGE"; + } + }; } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/Controller1d.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/Controller1d.java 2009-01-19 16:20:26 UTC (rev 4381) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/Controller1d.java 2009-01-19 17:45:43 UTC (rev 4382) @@ -53,6 +53,7 @@ import org.fudaa.fudaa.modeleur.modeleur1d.view.VueContainerModules; import org.fudaa.fudaa.modeleur.modeleur1d.view.VueCourbe; import org.fudaa.fudaa.modeleur.modeleur1d.view.VueExport; +import org.fudaa.fudaa.modeleur.modeleur1d.view.VueModuleGestionAxeHydraulique; import org.fudaa.fudaa.modeleur.modeleur1d.view.VueTableau; import com.memoire.bu.BuDesktop; @@ -123,6 +124,7 @@ // Modules vueContainerModules_=new VueContainerModules(modelContainerModules_); addVueModule(controllerBief_.getVueModuleGestionBief()); + addVueModule(new VueModuleGestionAxeHydraulique(controllerBief_)); addVueModule(controllerProfil_.getVueModuleGestionProfil()); // Vue Bief controllerBief_.getVueBief().getScene().addSelectionListener(this); Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerBief.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerBief.java 2009-01-19 16:20:26 UTC (rev 4381) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerBief.java 2009-01-19 17:45:43 UTC (rev 4382) @@ -14,6 +14,7 @@ import javax.swing.event.ListSelectionListener; import org.fudaa.ctulu.CtuluCommandContainer; +import org.fudaa.ctulu.CtuluCommandManager; import org.fudaa.ebli.calque.BCalque; import org.fudaa.ebli.calque.ZModeleLigneBrisee; import org.fudaa.fudaa.modeleur.modeleur1d.model.Bief; @@ -117,6 +118,13 @@ } /** + * Retourne le Commande manager utilis\xE9 dans la partie 1d + */ + public CtuluCommandManager getCommandManager(){ + return controller1d_.getCommandManager(); + } + + /** * Retourne la vue du module de gestion des biefs. */ public VueModuleGestionBief getVueModuleGestionBief(){ Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerProfil.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerProfil.java 2009-01-19 16:20:26 UTC (rev 4381) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/controller/ControllerProfil.java 2009-01-19 17:45:43 UTC (rev 4382) @@ -11,6 +11,7 @@ import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; +import org.fudaa.ctulu.CtuluCommandManager; import org.fudaa.fudaa.modeleur.modeleur1d.controller.ControllerBief.BiefSelectionModel; import org.fudaa.fudaa.modeleur.modeleur1d.model.BiefContainer; import org.fudaa.fudaa.modeleur.modeleur1d.model.ProfilContainer; @@ -57,6 +58,13 @@ } /** + * Retourne le Commande manager utilis\xE9 dans la partie 1d + */ + public CtuluCommandManager getCommandManager(){ + return controller1d_.getCommandManager(); + } + + /** * Retourne la vue du module de gestion des profils. */ public VueModuleGestionProfil getVueModuleGestionProfil(){ Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/Bief.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/Bief.java 2009-01-19 16:20:26 UTC (rev 4381) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/Bief.java 2009-01-19 17:45:43 UTC (rev 4382) @@ -110,48 +110,15 @@ limitesStockages_=new MdlModel2dConstraintLine(null, null); if (lignesDirectrices_==null) lignesDirectrices_=new MdlModel2dDirectionLine(null, null); - // Valuation des attributs sp\xE9cifiques au 1d \\ - // Verification de la pr\xE9sences des attributs + // Valuation des attributs sp\xE9cifiques au 1d pour les profils \\ GISZoneCollection zone=profils_.getGeomData(); - int attToAdd=0; - int idxIlsd=zone.getIndiceOf(GISAttributeConstants.INTERSECTION_LIMITE_STOCKAGE_DROITE); - if (idxIlsd==-1) - attToAdd++; - int idxIlsg=zone.getIndiceOf(GISAttributeConstants.INTERSECTION_LIMITE_STOCKAGE_GAUCHE); - if (idxIlsg==-1) - attToAdd++; - int idxRd=zone.getIndiceOf(GISAttributeConstants.INTERSECTION_RIVE_DROITE); - if (idxRd==-1) - attToAdd++; - int idxRg=zone.getIndiceOf(GISAttributeConstants.INTERSECTION_RIVE_GAUCHE); - if (idxRg==-1) - attToAdd++; - int idxLd=zone.getIndiceOf(GISAttributeConstants.INTERSECTIONS_LIGNES_DIRECTRICES); - if(idxLd==-1) - attToAdd++; - // Ajout des attributs manquant \\ - if (attToAdd>0) { - GISAttributeInterface[] atts=new GISAttributeInterface[zone.getNbAttributes()+attToAdd]; - int k=0; - for (k=0; k<zone.getNbAttributes(); k++) - atts[k]=zone.getAttribute(k); - if (idxIlsd==-1) - atts[k++]=GISAttributeConstants.INTERSECTION_LIMITE_STOCKAGE_DROITE; - if (idxIlsg==-1) - atts[k++]=GISAttributeConstants.INTERSECTION_LIMITE_STOCKAGE_GAUCHE; - if (idxRd==-1) - atts[k++]=GISAttributeConstants.INTERSECTION_RIVE_DROITE; - if (idxRg==-1) - atts[k++]=GISAttributeConstants.INTERSECTION_RIVE_GAUCHE; - if(idxLd==-1) - atts[k++]=GISAttributeConstants.INTERSECTIONS_LIGNES_DIRECTRICES; - zone.setAttributes(atts, null); - } + normalizeProfilAttributes(zone); int idxAttRiveGauche=zone.getIndiceOf(GISAttributeConstants.INTERSECTION_RIVE_GAUCHE); int idxAttRiveDroite=zone.getIndiceOf(GISAttributeConstants.INTERSECTION_RIVE_DROITE); int idxAttlsGauche=zone.getIndiceOf(GISAttributeConstants.INTERSECTION_LIMITE_STOCKAGE_GAUCHE); int idxAttlsDroite=zone.getIndiceOf(GISAttributeConstants.INTERSECTION_LIMITE_STOCKAGE_DROITE); int idxAttLignesDirectrices=zone.getIndiceOf(GISAttributeConstants.INTERSECTIONS_LIGNES_DIRECTRICES); + if (axeHydraulique_.getNombre()==0) for (int i=0; i<profils_.getNombre(); i++) { profils_.getGeomData().setAttributValue(idxAttRiveGauche, i, null, null); @@ -232,11 +199,70 @@ // Lignes directrices \\ valuateProfilIntersection(idxAttLignesDirectrices); } + // Valuation des attributs sp\xE9cifique au 1d pour l'axe hydraulique \\ + normalizeAxeHydrauliqueAttributes(axeHydraulique_.getGeomData()); // Activation du synchroniser gisSynchroniser_.enable(); } /** + * Ajout les attributs manquant \xE0 la zone de l'axe hydraulique. + */ + private void normalizeAxeHydrauliqueAttributes(GISZoneCollection _zone) { + if(_zone.getIndiceOf(GISAttributeConstants.CURVILIGNE_DECALAGE)==-1) { + GISAttributeInterface[] atts=new GISAttributeInterface[_zone.getNbAttributes()+1]; + for (int k=0; k<_zone.getNbAttributes(); k++) + atts[k]=_zone.getAttribute(k); + atts[atts.length-1]=GISAttributeConstants.CURVILIGNE_DECALAGE; + _zone.setAttributes(atts, null); + int idxAttrDecCurv=_zone.getIndiceOf(GISAttributeConstants.CURVILIGNE_DECALAGE); + for(int i=0;i<_zone.getNbGeometries();i++) + _zone.setAttributValue(idxAttrDecCurv, i, 0.0, null); + } + } + + /** + * Ajout les attributs manquant \xE0 la zone des profils. + */ + private void normalizeProfilAttributes(GISZoneCollection _zone) { + // Verification de la pr\xE9sences des attributs + int attToAdd=0; + int idxIlsd=_zone.getIndiceOf(GISAttributeConstants.INTERSECTION_LIMITE_STOCKAGE_DROITE); + if (idxIlsd==-1) + attToAdd++; + int idxIlsg=_zone.getIndiceOf(GISAttributeConstants.INTERSECTION_LIMITE_STOCKAGE_GAUCHE); + if (idxIlsg==-1) + attToAdd++; + int idxRd=_zone.getIndiceOf(GISAttributeConstants.INTERSECTION_RIVE_DROITE); + if (idxRd==-1) + attToAdd++; + int idxRg=_zone.getIndiceOf(GISAttributeConstants.INTERSECTION_RIVE_GAUCHE); + if (idxRg==-1) + attToAdd++; + int idxLd=_zone.getIndiceOf(GISAttributeConstants.INTERSECTIONS_LIGNES_DIRECTRICES); + if(idxLd==-1) + attToAdd++; + // Ajout des attributs manquant \\ + if (attToAdd>0) { + GISAttributeInterface[] atts=new GISAttributeInterface[_zone.getNbAttributes()+attToAdd]; + int k=0; + for (k=0; k<_zone.getNbAttributes(); k++) + atts[k]=_zone.getAttribute(k); + if (idxIlsd==-1) + atts[k++]=GISAttributeConstants.INTERSECTION_LIMITE_STOCKAGE_DROITE; + if (idxIlsg==-1) + atts[k++]=GISAttributeConstants.INTERSECTION_LIMITE_STOCKAGE_GAUCHE; + if (idxRd==-1) + atts[k++]=GISAttributeConstants.INTERSECTION_RIVE_DROITE; + if (idxRg==-1) + atts[k++]=GISAttributeConstants.INTERSECTION_RIVE_GAUCHE; + if(idxLd==-1) + atts[k++]=GISAttributeConstants.INTERSECTIONS_LIGNES_DIRECTRICES; + _zone.setAttributes(atts, null); + } + } + + /** * Inverse le sens du profil dont l'index est pass\xE9 en param\xE8tre. */ private void inverseProfil(int _idxProfil) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/ProfilContainerAdapter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/ProfilContainerAdapter.java 2009-01-19 16:20:26 UTC (rev 4381) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/model/ProfilContainerAdapter.java 2009-01-19 17:45:43 UTC (rev 4382) @@ -106,6 +106,7 @@ // Caches \\ private int idxZMax_; private int idxZMin_; + private double curviligneDecalage_; // d\xE9calage de l'axe hydraulique. // Le profil est potentiellement coup\xE9 en trois, les deux indices qui suivent // indique l'index de chacune de ces ruptures. private int idxRupture1_; @@ -211,9 +212,12 @@ if (idxProfilSelected_==-1) { z_=null; curv_=null; + curviligneDecalage_=0; } else if (biefContainer_.getZoneProfils()!=null&&idxProfilSelected_>=0&&idxProfilSelected_<biefContainer_.getZoneProfils().getNbGeometries()&&biefContainer_.getZoneProfils().getAttributeIsZ()!=null) { try { + int idxAttrDecCurv=biefContainer_.getZoneAxeHydraulique().getIndiceOf(GISAttributeConstants.CURVILIGNE_DECALAGE); + curviligneDecalage_=(Double) biefContainer_.getZoneAxeHydraulique().getValue(idxAttrDecCurv, 0); z_=(CtuluCollection)biefContainer_.getZoneProfils().getValue(biefContainer_.getZoneProfils().getIndiceOf(biefContainer_.getZoneProfils().getAttributeIsZ()), idxProfilSelected_); curv_=new ArrayList<Double>(); CoordinateSequence seq=((GISCoordinateSequenceContainerInterface)biefContainer_.getZoneProfils().getGeometry(idxProfilSelected_)).getCoordinateSequence(); @@ -302,6 +306,7 @@ idxProfilSelected_=-1; z_=null; curv_=null; + curviligneDecalage_=0; fireProfilContainerDataModified(); // Propagation de l'exception throw _exp; @@ -369,7 +374,7 @@ if (idxProfilSelected_==-1||biefContainer_.getZoneAxeHydraulique().getNbGeometries()==0) return -1; return UtilsProfil1d.abscisseCurviligne(((GISCoordinateSequenceContainerInterface)biefContainer_.getZoneAxeHydraulique() - .getGeometry(0)).getCoordinateSequence(), getCoordSeq()); + .getGeometry(0)).getCoordinateSequence(), getCoordSeq())+curviligneDecalage_; } public int getNbLignesDirectrices() { @@ -541,12 +546,13 @@ } public boolean setAbsCurvProfilOnAxeHydraulique(double _value, CtuluCommandContainer _cmd) throws ProfilContainerException { + _value=_value-curviligneDecalage_; CoordinateSequence axeHydrau=((GISCoordinateSequenceContainerInterface)biefContainer_.getZoneAxeHydraulique().getGeometry(0)) .getCoordinateSequence(); Geometry geomAxeHydrau=biefContainer_.getZoneAxeHydraulique().getGeometry(0); if (_value<0||_value>UtilsProfil1d.abscisseCurviligne(axeHydrau, axeHydrau.getCoordinate(axeHydrau.size()-1))) - throw new IllegalArgumentException(FudaaLib.getS("L'abscisse curviligne doit \xEAtre entre 0 et " - +UtilsProfil1d.abscisseCurviligne(axeHydrau, axeHydrau.getCoordinate(axeHydrau.size()-1))+" inclus.")); + throw new IllegalArgumentException(FudaaLib.getS("L'abscisse curviligne doit \xEAtre entre " +curviligneDecalage_+" et " + +(UtilsProfil1d.abscisseCurviligne(axeHydrau, axeHydrau.getCoordinate(axeHydrau.size()-1))+curviligneDecalage_)+" inclus.")); CtuluCommandComposite cmd=new CtuluCommandComposite(FudaaLib.getS("D\xE9placement d'un profil")); // Calcul de la coordonn\xE9e actuelle de croisement entre l'axe et le profil Geometry intersection=geomAxeHydrau.intersection( Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueContainerModules.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueContainerModules.java 2009-01-19 16:20:26 UTC (rev 4381) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueContainerModules.java 2009-01-19 17:45:43 UTC (rev 4382) @@ -7,7 +7,8 @@ */ package org.fudaa.fudaa.modeleur.modeleur1d.view; -import javax.swing.Box; +import java.awt.Container; + import javax.swing.BoxLayout; import javax.swing.JComponent; import javax.swing.ListModel; @@ -15,23 +16,25 @@ import javax.swing.event.ListDataListener; import com.memoire.bu.BuBorderLayout; +import com.memoire.bu.BuVerticalLayout; /** * @author Emmanuel MARTIN - * @version $Id:$ + * @version $Id$ */ public class VueContainerModules extends JComponent implements ListDataListener { /** le model */ private ListModel model_; - /** La boite contenant la visualisation des modules. */ - private Box box_; + /** Container contenant la visualisation des modules. */ + private Container container_; public VueContainerModules(ListModel _model){ model_=_model; setLayout(new BuBorderLayout()); - box_=new Box(BoxLayout.Y_AXIS); - add(box_, BuBorderLayout.CENTER); + container_=new Container(); + container_.setLayout(new BuVerticalLayout()); + add(container_, BuBorderLayout.CENTER); model_.addListDataListener(this); updateBox(); } @@ -40,10 +43,10 @@ * R\xE9g\xE9n\xE8re le contenu de la box. */ protected void updateBox(){ - box_.removeAll(); + container_.removeAll(); for(int i=0;i<model_.getSize();i++) if(model_.getElementAt(i) instanceof JComponent) - box_.add((JComponent) model_.getElementAt(i)); + container_.add((JComponent) model_.getElementAt(i)); } public void contentsChanged(ListDataEvent e) { Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueModuleGestionAxeHydraulique.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueModuleGestionAxeHydraulique.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueModuleGestionAxeHydraulique.java 2009-01-19 17:45:43 UTC (rev 4382) @@ -0,0 +1,90 @@ +/* + * @creation 19 janv. 2009 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2009 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.fudaa.modeleur.modeleur1d.view; + +import java.awt.Container; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import org.fudaa.ctulu.gis.GISAttributeConstants; +import org.fudaa.ctulu.gis.GISZoneCollection; +import org.fudaa.fudaa.commun.FudaaLib; +import org.fudaa.fudaa.modeleur.modeleur1d.controller.ControllerBief; +import org.fudaa.fudaa.modeleur.modeleur1d.model.BiefContainerListener; + +import com.memoire.bu.BuBorderLayout; +import com.memoire.bu.BuCharValidator; +import com.memoire.bu.BuGridLayout; +import com.memoire.bu.BuLabel; +import com.memoire.bu.BuPanel; +import com.memoire.bu.BuTextField; + +/** + * Petit module permettant de modifier les propri\xE9t\xE9s de l'axe hydraulique. + * @author Emmanuel MARTIN + * @version $Id:$ + */ +public class VueModuleGestionAxeHydraulique extends BuPanel{ + + /** Le controller des biefs. */ + protected ControllerBief controllerBief_; + /** D\xE9calage curviligne */ + protected BuTextField btDecalageCurviligne_; + + public VueModuleGestionAxeHydraulique(ControllerBief _controllerBief){ + controllerBief_=_controllerBief; + setLayout(new BuBorderLayout()); + // Mise \xE0 jour lors du changement de bief selectionn\xE9 + controllerBief_.getBiefContainer().addBiefContainerListener(new BiefContainerListener() { + public void biefSelectedChanged(String name) { + btDecalageCurviligne_.setText(getDecalageCurviligne()); + } + public void biefSelectedRenamed(String name, String name2) {} + public void profilAdded(int profil) {} + public void profilRemoved(int profil) {} + public void profilRenamed(int profil, String name, String name2) {} + }); + // Titre + BuLabel lblTitre=new BuLabel("<html><b>"+FudaaLib.getS("Axe hydraulique")+"</b></html>"); + lblTitre.setHorizontalAlignment(BuLabel.CENTER); + add(lblTitre, BuBorderLayout.NORTH); + // Body \\ + Container body=new Container(); + body.setLayout(new BuGridLayout(2, 2, 2)); + // D\xE9calage curviligne + body.add(new BuLabel(FudaaLib.getS("Abscisse Curviligne : "))); + btDecalageCurviligne_=new BuTextField(); + btDecalageCurviligne_.setCharValidator(BuCharValidator.DOUBLE); + btDecalageCurviligne_.setText(getDecalageCurviligne()); + btDecalageCurviligne_.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e) { + try { + double value=Double.parseDouble(btDecalageCurviligne_.getText()); + GISZoneCollection zone=controllerBief_.getBiefContainer().getZoneAxeHydraulique(); + int idxAttr=zone.getIndiceOf(GISAttributeConstants.CURVILIGNE_DECALAGE); + zone.setAttributValue(idxAttr, 0, value, controllerBief_.getCommandManager()); + } + catch(NumberFormatException _ex) {} + } + }); + body.add(btDecalageCurviligne_); + add(body, BuBorderLayout.CENTER); + } + + /** + * Retourne la valeur du d\xE9calage sous forme de string. + */ + private String getDecalageCurviligne() { + GISZoneCollection zone=controllerBief_.getBiefContainer().getZoneAxeHydraulique(); + if(zone==null) + return ""; + int idxAttr=zone.getIndiceOf(GISAttributeConstants.CURVILIGNE_DECALAGE); + return Double.toString((Double) zone.getValue(idxAttr, 0)); + } + +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueModuleGestionAxeHydraulique.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueModuleGestionProfil.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueModuleGestionProfil.java 2009-01-19 16:20:26 UTC (rev 4381) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/modeleur1d/view/VueModuleGestionProfil.java 2009-01-19 17:45:43 UTC (rev 4382) @@ -8,6 +8,7 @@ package org.fudaa.fudaa.modeleur.modeleur1d.view; import java.awt.Container; +import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -82,7 +83,7 @@ btFusionner.setEnabled(false); btContainer.add(btFusionner); body.add(btContainer, BuBorderLayout.EAST); - body.setPreferredSize(body.getMinimumSize()); + body.setPreferredSize(new Dimension(body.getMinimumSize().width, 350)); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <emm...@us...> - 2009-01-19 16:20:31
|
Revision: 4381 http://fudaa.svn.sourceforge.net/fudaa/?rev=4381&view=rev Author: emmanuel_martin Date: 2009-01-19 16:20:26 +0000 (Mon, 19 Jan 2009) Log Message: ----------- bugfix : importation de polygone venant des fichiers rubars Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelFilterAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelSelectionAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarSt.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelFilterAdapter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelFilterAdapter.java 2009-01-19 15:49:15 UTC (rev 4380) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelFilterAdapter.java 2009-01-19 16:20:26 UTC (rev 4381) @@ -98,7 +98,7 @@ } /** - * Cr\xE9ation d'un filtre ne conservant que les lignes ferm\xE9es et les d'attributs donn\xE9s. + * Cr\xE9ation d'un filtre ne conservant que les lignes ouvertes et les d'attributs donn\xE9s. */ public static GISDataModelFilterAdapter buildLigneOuverteAdapter(final GISDataModel _collection, final GISAttributeInterface[] _att) { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelSelectionAdapter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelSelectionAdapter.java 2009-01-19 15:49:15 UTC (rev 4380) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelSelectionAdapter.java 2009-01-19 16:20:26 UTC (rev 4381) @@ -19,10 +19,10 @@ * r\xE9pondant \xE0 des conditions donn\xE9es sur les attributs. Par exemple on peut * dire que seul les g\xE9om\xE9tries d'une certaine nature sont visbles. * Plusieurs conditions peuvent \xEAtre donn\xE9es. Elles seront g\xE9r\xE9es avec un OU - * logique. Pour simuler un ET logique entre des conditions, il suffi d'empiler - * plusieurs fois cette adapter sur le model. + * logique. Pour simuler un ET logique entre des conditions, il suffit d'empiler + * plusieurs fois cet adapter sur le model. * @author Emmanuel MARTIN - * @version $Id:$ + * @version $Id$ */ public class GISDataModelSelectionAdapter implements GISDataModel { Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarSt.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarSt.java 2009-01-19 15:49:15 UTC (rev 4380) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/sig/wizard/FSigFileLoaderRubarSt.java 2009-01-19 16:20:26 UTC (rev 4381) @@ -17,7 +17,9 @@ import org.fudaa.ctulu.gis.GISAttributeConstants; import org.fudaa.ctulu.gis.GISAttributeInterface; import org.fudaa.ctulu.gis.GISDataModelAttributeAdapter; +import org.fudaa.ctulu.gis.GISDataModelFilterAdapter; import org.fudaa.ctulu.gis.GISDataModelListPtAdapter; +import org.fudaa.ctulu.gis.GISDataModelSelectionAdapter; import org.fudaa.ctulu.gis.GISVisitorCount; import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee; @@ -62,16 +64,25 @@ if (res[i]==null||res[i].getNumGeometries()==0) continue; blines=true; res[i].accept(counter); - _r.nbPoint_+=counter.nbPt_; _r.nbPointTotal_+=counter.nbPt_; - _r.nbPolygones_+=counter.nbPolygone_; - _r.nbPolylignes_+=counter.nbPolyligne_; // Ajout de l'attribut ETAT_GEOM _r.findOrCreateAttribute(GISAttributeConstants.ETAT_GEOM.getID(), String.class, false); GISDataModelAttributeAdapter adapter = new GISDataModelAttributeAdapter(res[i]); adapter.addAttribut(GISAttributeConstants.ETAT_GEOM, _fileOrigine); // - _r.ligneModel_.add(adapter); + GISAttributeInterface[] attrs=res[i].getAttributes(); + if(counter.nbPt_>0) { + _r.nbPoint_+=counter.nbPt_; + _r.pointModel_.add(GISDataModelFilterAdapter.buildPointAdapter(adapter, attrs)); + } + if(counter.nbPolyligne_>0) { + _r.nbPolylignes_+=counter.nbPolyligne_; + _r.ligneModel_.add(GISDataModelFilterAdapter.buildLigneOuverteAdapter(adapter, attrs)); + } + if(counter.nbPolygone_>0) { + _r.nbPolygones_+=counter.nbPolygone_; + _r.polygoneModel_.add(GISDataModelFilterAdapter.buildLigneFermeeAdapter(adapter, attrs)); + } } if (blines) _r.addUsedAttributes(new GISAttributeInterface[]{GISAttributeConstants.BATHY, GISAttributeConstants.TITRE}); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |